From e43ad495ca3393dac77eadce829ea976bae37c77 Mon Sep 17 00:00:00 2001 From: Vladimir Date: Thu, 2 Jul 2015 08:37:46 +0900 Subject: [PATCH] Merge Fix #1 --- modules/tracking/src/tldDetector.cpp | 191 +-------------------------- 1 file changed, 1 insertion(+), 190 deletions(-) diff --git a/modules/tracking/src/tldDetector.cpp b/modules/tracking/src/tldDetector.cpp index 6a8d9e285..927deaec4 100644 --- a/modules/tracking/src/tldDetector.cpp +++ b/modules/tracking/src/tldDetector.cpp @@ -286,192 +286,6 @@ namespace cv //printf("Sr GPU: %f\n\n", t); } -<<<<<<< HEAD - double TLDDetector::ocl_Sr(const Mat_& patch) - { - //int64 e1, e2, e3, e4; - //double t; - //e1 = getTickCount(); - //e3 = getTickCount(); - double splus = 0.0, sminus = 0.0; - - - UMat devPatch = patch.getUMat(ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devPositiveSamples = posExp->getUMat(ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devNegativeSamples = negExp->getUMat(ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devNCC(1, 2*MAX_EXAMPLES_IN_MODEL, CV_32FC1, ACCESS_RW, USAGE_ALLOCATE_DEVICE_MEMORY); - - - ocl::Kernel k; - ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc; - String error; - ocl::Program prog(src, NULL, error); - k.create("NCC", prog); - if (k.empty()) - printf("Kernel create failed!!!\n"); - k.args( - ocl::KernelArg::PtrReadOnly(devPatch), - ocl::KernelArg::PtrReadOnly(devPositiveSamples), - ocl::KernelArg::PtrReadOnly(devNegativeSamples), - ocl::KernelArg::PtrWriteOnly(devNCC), - posNum, - negNum); - - //e4 = getTickCount(); - //t = (e4 - e3) / getTickFrequency()*1000.0; - //printf("Mem Cpy GPU: %f\n", t); - - size_t globSize = 1000; - size_t localSize = 128; - //e3 = getTickCount(); - if (!k.run(1, &globSize, &localSize, true)) - printf("Kernel Run Error!!!"); - //e4 = getTickCount(); - //t = (e4 - e3) / getTickFrequency()*1000.0; - //printf("Kernel Run GPU: %f\n", t); - - //e3 = getTickCount(); - Mat resNCC = devNCC.getMat(ACCESS_READ); - //e4 = getTickCount(); - //t = (e4 - e3) / getTickFrequency()*1000.0; - //printf("Read Mem GPU: %f\n", t); - - ////Compare - //Mat_ modelSample(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE); - //for (int i = 0; i < 200; i+=17) - //{ - // modelSample.data = &(posExp->data[i * 225]); - // printf("%f\t%f\n\n", resNCC.at(i), NCC(modelSample, patch)); - //} - - //for (int i = 0; i < 200; i+=23) - //{ - // modelSample.data = &(negExp->data[i * 225]); - // printf("%f\t%f\n", resNCC.at(500+i), NCC(modelSample, patch)); - //} - - - for (int i = 0; i < *posNum; i++) - splus = std::max(splus, 0.5 * (resNCC.at(i) + 1.0)); - - for (int i = 0; i < *negNum; i++) - sminus = std::max(sminus, 0.5 * (resNCC.at(i+500) +1.0)); - - //e2 = getTickCount(); - //t = (e2 - e1) / getTickFrequency()*1000.0; - //printf("Sr GPU: %f\n\n", t); - - if (splus + sminus == 0.0) - return 0.0; - return splus / (sminus + splus); - } - - void TLDDetector::ocl_batchSrSc(const Mat_& patches, double *resultSr, double *resultSc, int numOfPatches) - { - //int64 e1, e2, e3, e4; - //double t; - //e1 = getTickCount(); - //e3 = getTickCount(); - - UMat devPatches = patches.getUMat(ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devPositiveSamples = posExp->getUMat(ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devNegativeSamples = negExp->getUMat(ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devPosNCC(MAX_EXAMPLES_IN_MODEL, numOfPatches, CV_32FC1, ACCESS_RW, USAGE_ALLOCATE_DEVICE_MEMORY); - UMat devNegNCC(MAX_EXAMPLES_IN_MODEL, numOfPatches, CV_32FC1, ACCESS_RW, USAGE_ALLOCATE_DEVICE_MEMORY); - - ocl::Kernel k; - ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc; - String error; - ocl::Program prog(src, NULL, error); - k.create("batchNCC", prog); - if (k.empty()) - printf("Kernel create failed!!!\n"); - k.args( - ocl::KernelArg::PtrReadOnly(devPatches), - ocl::KernelArg::PtrReadOnly(devPositiveSamples), - ocl::KernelArg::PtrReadOnly(devNegativeSamples), - ocl::KernelArg::PtrWriteOnly(devPosNCC), - ocl::KernelArg::PtrWriteOnly(devNegNCC), - posNum, - negNum, - numOfPatches); - - //e4 = getTickCount(); - //t = (e4 - e3) / getTickFrequency()*1000.0; - //printf("Mem Cpy GPU: %f\n", t); - - // 2 -> Pos&Neg - size_t globSize = 2 * numOfPatches*MAX_EXAMPLES_IN_MODEL; - size_t localSize = 1024; - //e3 = getTickCount(); - if (!k.run(1, &globSize, &localSize, true)) - printf("Kernel Run Error!!!"); - //e4 = getTickCount(); - //t = (e4 - e3) / getTickFrequency()*1000.0; - //printf("Kernel Run GPU: %f\n", t); - - //e3 = getTickCount(); - Mat posNCC = devPosNCC.getMat(ACCESS_READ); - Mat negNCC = devNegNCC.getMat(ACCESS_READ); - //e4 = getTickCount(); - //t = (e4 - e3) / getTickFrequency()*1000.0; - //printf("Read Mem GPU: %f\n", t); - - //Calculate Srs - for (int id = 0; id < numOfPatches; id++) - { - double spr = 0.0, smr = 0.0, spc = 0.0, smc = 0; - int med = getMedian((*timeStampsPositive)); - for (int i = 0; i < *posNum; i++) - { - spr = std::max(spr, 0.5 * (posNCC.at(id * 500 + i) + 1.0)); - if ((int)(*timeStampsPositive)[i] <= med) - spc = std::max(spr, 0.5 * (posNCC.at(id * 500 + i) + 1.0)); - } - for (int i = 0; i < *negNum; i++) - smc = smr = std::max(smr, 0.5 * (negNCC.at(id * 500 + i) + 1.0)); - - if (spr + smr == 0.0) - resultSr[id] = 0.0; - else - resultSr[id] = spr / (smr + spr); - - if (spc + smc == 0.0) - resultSc[id] = 0.0; - else - resultSc[id] = spc / (smc + spc); - } - - ////Compare positive NCCs - /*Mat_ modelSample(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE); - Mat_ patch(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE); - for (int j = 0; j < numOfPatches; j++) - { - for (int i = 0; i < 1; i++) - { - modelSample.data = &(posExp->data[i * 225]); - patch.data = &(patches.data[j * 225]); - printf("%f\t%f\n", resultSr[j], Sr(patch)); - printf("%f\t%f\n", resultSc[j], Sc(patch)); - } - }*/ - - //for (int i = 0; i < 200; i+=23) - //{ - // modelSample.data = &(negExp->data[i * 225]); - // printf("%f\t%f\n", resNCC.at(500+i), NCC(modelSample, patch)); - //} - - - - //e2 = getTickCount(); - //t = (e2 - e1) / getTickFrequency()*1000.0; - //printf("Sr GPU: %f\n\n", t); - } - -======= ->>>>>>> origin/TLD_OpenCL_Support - // Calculate Conservative similarity of the patch (NN-Model) double TLDDetector::Sc(const Mat_& patch) { @@ -662,11 +476,8 @@ namespace cv //double t; //e1 = getTickCount(); - //Detection part -<<<<<<< HEAD -======= ->>>>>>> origin/TLD_OpenCL_Support + //Detection part //Generate windows and filter by variance scaleID = 0; resized_imgs.push_back(img);