@@ -286,192 +286,6 @@ namespace cv
286286 // printf("Sr GPU: %f\n\n", t);
287287 }
288288
289- <<<<<<< HEAD
290- double TLDDetector::ocl_Sr (const Mat_<uchar>& patch)
291- {
292- // int64 e1, e2, e3, e4;
293- // double t;
294- // e1 = getTickCount();
295- // e3 = getTickCount();
296- double splus = 0.0 , sminus = 0.0 ;
297-
298-
299- UMat devPatch = patch.getUMat (ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY);
300- UMat devPositiveSamples = posExp->getUMat (ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY);
301- UMat devNegativeSamples = negExp->getUMat (ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY);
302- UMat devNCC (1 , 2 *MAX_EXAMPLES_IN_MODEL, CV_32FC1, ACCESS_RW, USAGE_ALLOCATE_DEVICE_MEMORY);
303-
304-
305- ocl::Kernel k;
306- ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc;
307- String error;
308- ocl::Program prog (src, NULL , error);
309- k.create (" NCC" , prog);
310- if (k.empty ())
311- printf (" Kernel create failed!!!\n " );
312- k.args (
313- ocl::KernelArg::PtrReadOnly (devPatch),
314- ocl::KernelArg::PtrReadOnly (devPositiveSamples),
315- ocl::KernelArg::PtrReadOnly (devNegativeSamples),
316- ocl::KernelArg::PtrWriteOnly (devNCC),
317- posNum,
318- negNum);
319-
320- // e4 = getTickCount();
321- // t = (e4 - e3) / getTickFrequency()*1000.0;
322- // printf("Mem Cpy GPU: %f\n", t);
323-
324- size_t globSize = 1000 ;
325- size_t localSize = 128 ;
326- // e3 = getTickCount();
327- if (!k.run (1 , &globSize, &localSize, true ))
328- printf (" Kernel Run Error!!!" );
329- // e4 = getTickCount();
330- // t = (e4 - e3) / getTickFrequency()*1000.0;
331- // printf("Kernel Run GPU: %f\n", t);
332-
333- // e3 = getTickCount();
334- Mat resNCC = devNCC.getMat (ACCESS_READ);
335- // e4 = getTickCount();
336- // t = (e4 - e3) / getTickFrequency()*1000.0;
337- // printf("Read Mem GPU: %f\n", t);
338-
339- // //Compare
340- // Mat_<uchar> modelSample(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE);
341- // for (int i = 0; i < 200; i+=17)
342- // {
343- // modelSample.data = &(posExp->data[i * 225]);
344- // printf("%f\t%f\n\n", resNCC.at<float>(i), NCC(modelSample, patch));
345- // }
346-
347- // for (int i = 0; i < 200; i+=23)
348- // {
349- // modelSample.data = &(negExp->data[i * 225]);
350- // printf("%f\t%f\n", resNCC.at<float>(500+i), NCC(modelSample, patch));
351- // }
352-
353-
354- for (int i = 0 ; i < *posNum; i++)
355- splus = std::max (splus, 0.5 * (resNCC.at <float >(i) + 1.0 ));
356-
357- for (int i = 0 ; i < *negNum; i++)
358- sminus = std::max (sminus, 0.5 * (resNCC.at <float >(i+500 ) +1.0 ));
359-
360- // e2 = getTickCount();
361- // t = (e2 - e1) / getTickFrequency()*1000.0;
362- // printf("Sr GPU: %f\n\n", t);
363-
364- if (splus + sminus == 0.0 )
365- return 0.0 ;
366- return splus / (sminus + splus);
367- }
368-
369- void TLDDetector::ocl_batchSrSc (const Mat_<uchar>& patches, double *resultSr, double *resultSc, int numOfPatches)
370- {
371- // int64 e1, e2, e3, e4;
372- // double t;
373- // e1 = getTickCount();
374- // e3 = getTickCount();
375-
376- UMat devPatches = patches.getUMat (ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY);
377- UMat devPositiveSamples = posExp->getUMat (ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY);
378- UMat devNegativeSamples = negExp->getUMat (ACCESS_READ, USAGE_ALLOCATE_DEVICE_MEMORY);
379- UMat devPosNCC (MAX_EXAMPLES_IN_MODEL, numOfPatches, CV_32FC1, ACCESS_RW, USAGE_ALLOCATE_DEVICE_MEMORY);
380- UMat devNegNCC (MAX_EXAMPLES_IN_MODEL, numOfPatches, CV_32FC1, ACCESS_RW, USAGE_ALLOCATE_DEVICE_MEMORY);
381-
382- ocl::Kernel k;
383- ocl::ProgramSource src = ocl::tracking::tldDetector_oclsrc;
384- String error;
385- ocl::Program prog (src, NULL , error);
386- k.create (" batchNCC" , prog);
387- if (k.empty ())
388- printf (" Kernel create failed!!!\n " );
389- k.args (
390- ocl::KernelArg::PtrReadOnly (devPatches),
391- ocl::KernelArg::PtrReadOnly (devPositiveSamples),
392- ocl::KernelArg::PtrReadOnly (devNegativeSamples),
393- ocl::KernelArg::PtrWriteOnly (devPosNCC),
394- ocl::KernelArg::PtrWriteOnly (devNegNCC),
395- posNum,
396- negNum,
397- numOfPatches);
398-
399- // e4 = getTickCount();
400- // t = (e4 - e3) / getTickFrequency()*1000.0;
401- // printf("Mem Cpy GPU: %f\n", t);
402-
403- // 2 -> Pos&Neg
404- size_t globSize = 2 * numOfPatches*MAX_EXAMPLES_IN_MODEL;
405- size_t localSize = 1024 ;
406- // e3 = getTickCount();
407- if (!k.run (1 , &globSize, &localSize, true ))
408- printf (" Kernel Run Error!!!" );
409- // e4 = getTickCount();
410- // t = (e4 - e3) / getTickFrequency()*1000.0;
411- // printf("Kernel Run GPU: %f\n", t);
412-
413- // e3 = getTickCount();
414- Mat posNCC = devPosNCC.getMat (ACCESS_READ);
415- Mat negNCC = devNegNCC.getMat (ACCESS_READ);
416- // e4 = getTickCount();
417- // t = (e4 - e3) / getTickFrequency()*1000.0;
418- // printf("Read Mem GPU: %f\n", t);
419-
420- // Calculate Srs
421- for (int id = 0 ; id < numOfPatches; id++)
422- {
423- double spr = 0.0 , smr = 0.0 , spc = 0.0 , smc = 0 ;
424- int med = getMedian ((*timeStampsPositive));
425- for (int i = 0 ; i < *posNum; i++)
426- {
427- spr = std::max (spr, 0.5 * (posNCC.at <float >(id * 500 + i) + 1.0 ));
428- if ((int )(*timeStampsPositive)[i] <= med)
429- spc = std::max (spr, 0.5 * (posNCC.at <float >(id * 500 + i) + 1.0 ));
430- }
431- for (int i = 0 ; i < *negNum; i++)
432- smc = smr = std::max (smr, 0.5 * (negNCC.at <float >(id * 500 + i) + 1.0 ));
433-
434- if (spr + smr == 0.0 )
435- resultSr[id] = 0.0 ;
436- else
437- resultSr[id] = spr / (smr + spr);
438-
439- if (spc + smc == 0.0 )
440- resultSc[id] = 0.0 ;
441- else
442- resultSc[id] = spc / (smc + spc);
443- }
444-
445- // //Compare positive NCCs
446- /* Mat_<uchar> modelSample(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE);
447- Mat_<uchar> patch(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE);
448- for (int j = 0; j < numOfPatches; j++)
449- {
450- for (int i = 0; i < 1; i++)
451- {
452- modelSample.data = &(posExp->data[i * 225]);
453- patch.data = &(patches.data[j * 225]);
454- printf("%f\t%f\n", resultSr[j], Sr(patch));
455- printf("%f\t%f\n", resultSc[j], Sc(patch));
456- }
457- }*/
458-
459- // for (int i = 0; i < 200; i+=23)
460- // {
461- // modelSample.data = &(negExp->data[i * 225]);
462- // printf("%f\t%f\n", resNCC.at<float>(500+i), NCC(modelSample, patch));
463- // }
464-
465-
466-
467- // e2 = getTickCount();
468- // t = (e2 - e1) / getTickFrequency()*1000.0;
469- // printf("Sr GPU: %f\n\n", t);
470- }
471-
472- =======
473- >>>>>>> origin/TLD_OpenCL_Support
474-
475289 // Calculate Conservative similarity of the patch (NN-Model)
476290 double TLDDetector::Sc (const Mat_<uchar>& patch)
477291 {
@@ -662,11 +476,8 @@ namespace cv
662476 // double t;
663477
664478 // e1 = getTickCount();
665- // Detection part
666- <<<<<<< HEAD
667479
668- =======
669- >>>>>>> origin/TLD_OpenCL_Support
480+ // Detection part
670481 // Generate windows and filter by variance
671482 scaleID = 0 ;
672483 resized_imgs.push_back (img);
0 commit comments