* kcf use float data type rather than double.
In our practice, float is good enough and could get better performance.
With this patch, one of my benchmark could get about 20% performance gain.
Signed-off-by: Zhigang Gong <zhigang.gong@intel.com>
* Offload transpose matrix multiplication to ocl.
The matrix multiplication in updateProjectMatrix is one of the
hotspot. And because of the matrix shape is special, say the
m is very short but the n is very large. The GEMM implementation
in neither the clBLAS nor the in trunk implementation are very
inefficient, I implement an standalone transpose matrix mulplication
kernel here. It can get about 10% performance gain on Intel
desktop platform or 20% performance gain on a braswell platform.
And in the mean time, the CPU utilization will be lower.
Signed-off-by: Zhigang Gong <zhigang.gong@intel.com>
* Add verification code for kcf ocl transpose mm kernel.
Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
* tracking: show FPS in traker sample
* tracking: fix MSVC warnings in KCF
* tracking: move OCL kernel initialization to constructor in KCF
This contribution includes the following logical components into
tracking module:
.) Change Rect to Rect2d into headers for Tracker's methods;
This contribution includes the following logical components into
tracking module:
.) Change Rect to Rect2d into headers for Tracker's methods;
.) MedianFlow tracker;
.) extensible benchmark to compare trackers interactively and
assess them quantitatively;
.) TLD tracker (work-in-progress);
Work was funded by Google Summer of Code 2014 initiative. Mentors:
Gary
Bradski and Vadim Pisarevsky.
I've changed Rect to Rect2d in Tracker::update(), Tracker::init() and
all related methods (including documentation). This allows to initialize
trackers with double-valued rectangles, thus adding versality. Besides,
trackers also can output double-valued rectangles, which may be
beneficial in some scenarios.
However, it remains to change UML diagrams in documentation to tracker
module, as they still display methods above with old signatures.
Now initial bounding frame can be given in command-line, as an alternative
to manual selection via mouse. Bounding frame is given as optional last
argument in the format "x1,y1,x2,y2" where x's and y's are integers,
symbolizing bounding box with opposite vertices (x1,y1) and (x2,y2).
Added OPE tests tracking
- Reinitialized random number generator (TrackerMIL and TrackerBoosting)
- Removed unused meanSigmaPair
Changed sample tracker.cpp with a list of images instead the video file
Modified OPE tests tracking
- The overlap threshold varies from 0.0 to 1.0
- The location error threshold varies from 0 to 50
Changed name for the tests
Removed unused field
Enlarged first rect of 10% respect the ground truth
Added TRE test
TRE test for the temporal robustness evaluation
Added SRE Test (spatial robustness evaluation)
- Removed the enlargment of the first frame
- TRE corrected the computation of the distance and the overlap
- TrackerBoosting changed the search factor
Fixed last segment in test TRE
First stub for regression test
Added test for faceocc2
Added perf_test for mil and boosting trackers
Modified SANITY_CHECK with ERROR_RELATIVE
In xml generated added the ratio between of the correct bounding box (based on dynamic threshold)
OPE Test: works with video and not with sequence of images
TRE Test: works with video and not with sequence of images
SRE Test: works with video and not with sequence of images
Perf test: works with video and not with sequence of images
Removed unused file
sample tracker.cpp: works with video and not with sequence of images