Skip to content

Commit e43ad49

Browse files
committed
Merge Fix #1
1 parent 74c0125 commit e43ad49

File tree

1 file changed

+1
-190
lines changed

1 file changed

+1
-190
lines changed

modules/tracking/src/tldDetector.cpp

Lines changed: 1 addition & 190 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)