Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv_contrib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv_contrib
Commits
e43ad495
Commit
e43ad495
authored
Jul 01, 2015
by
Vladimir
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Merge Fix #1
parent
74c01253
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 addition
and
190 deletions
+1
-190
tldDetector.cpp
modules/tracking/src/tldDetector.cpp
+1
-190
No files found.
modules/tracking/src/tldDetector.cpp
View file @
e43ad495
...
...
@@ -286,192 +286,6 @@ namespace cv
//printf("Sr GPU: %f\n\n", t);
}
<<<<<<<
HEAD
double
TLDDetector
::
ocl_Sr
(
const
Mat_
<
uchar
>&
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_<uchar> 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<float>(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<float>(500+i), NCC(modelSample, patch));
//}
for
(
int
i
=
0
;
i
<
*
posNum
;
i
++
)
splus
=
std
::
max
(
splus
,
0.5
*
(
resNCC
.
at
<
float
>
(
i
)
+
1.0
));
for
(
int
i
=
0
;
i
<
*
negNum
;
i
++
)
sminus
=
std
::
max
(
sminus
,
0.5
*
(
resNCC
.
at
<
float
>
(
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_
<
uchar
>&
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
<
float
>
(
id
*
500
+
i
)
+
1.0
));
if
((
int
)(
*
timeStampsPositive
)[
i
]
<=
med
)
spc
=
std
::
max
(
spr
,
0.5
*
(
posNCC
.
at
<
float
>
(
id
*
500
+
i
)
+
1.0
));
}
for
(
int
i
=
0
;
i
<
*
negNum
;
i
++
)
smc
=
smr
=
std
::
max
(
smr
,
0.5
*
(
negNCC
.
at
<
float
>
(
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_<uchar> modelSample(STANDARD_PATCH_SIZE, STANDARD_PATCH_SIZE);
Mat_<uchar> 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<float>(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_
<
uchar
>&
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
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment