Difference between revisions of "Validation:Algorithms"
m |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
= | = Validation and Regression = | ||
Correctly implementing algorithms and producing the expected performance is difficult. | Correctly implementing algorithms and producing the expected performance is difficult. BoofCV contains thousands internal tests to help ensure correctness of its algorithms, but it is nearly impossible to be 100% sure that the implementation is correct. This is especially true since often academic papers leave out important implementations needed to reproduce their work!. In the best case scenario an implementation will be compared against the author's original implementation. This page contains a list of important algorithms inside of BoofCV and if they have been validated against external libraries or not. | ||
BoofCV contains | Source code used to validate BoofCV can be found at the [https://github.com/lessthanoptimal/ValidationBoof| ValidationBoof project on GitHub]. ValidationBoof also contains regression tests designed to check for changes in stability/performance of different algorithms. It is entirely possible for all the unit tests to pass and have a 20% drop in performance due to a minor change. Regression tests are designed to catch those problems. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 25: | Line 25: | ||
|- | |- | ||
| SURF || Validated || Original authors reference binary and others. http://boofcv.org/index.php?title=Performance:SURF | | SURF || Validated || Original authors reference binary and others. http://boofcv.org/index.php?title=Performance:SURF | ||
|- | |||
| SIFT || Validated || Scale-space is computed significantly different from original. Out performs reference binary, possibly due to more tuning options. | |||
|- | |- | ||
| KLT || || | | KLT || || | ||
|- | |- | ||
| BRIEF || || | | BRIEF || || | ||
|} | |} | ||
Line 62: | Line 62: | ||
| EPnP || || Pending verification against author's code | | EPnP || || Pending verification against author's code | ||
|- | |- | ||
| | | 8+ pt Fundamental || || | ||
|- | |||
| 8+ pt Essential || || | |||
|- | |||
| 7 pt Fundamental || || | |||
|- | |||
| 7 pt Essential || || | |||
|- | |||
| 5 pt Essential Nister || || Pending validation against author's Matlab code | |||
|- | |- | ||
| Linear H || || | | Linear H || || | ||
|- | |||
| Linear Trifocal 7 || Validated || [http://www.csse.uwa.edu.au/~wongt/matlab.html Compared to matlab code found online that was based off the same source.] [https://github.com/lessthanoptimal/ValidationBoof/tree/master/fast Validation Code] | |||
|} | |||
== Object Tracking == | |||
{| class="wikitable" border="1" | |||
! scope="col" width="75" | Algorithm | |||
! scope="col" width="50" | Status | |||
! scope="col" width="600" | Comments | |||
|- | |||
| TLD || Validated || Comparable to slightly less stable than original. TLD is less stable than it at first appears, making scoring difficult. | |||
|- | |||
| Circulant || Validated || Improved over original. Much faster and slightly more stable. | |||
|- | |||
| MeanShiftComaniciu2003 || || | |||
|} | |||
== Dense Optical Flow == | |||
{| class="wikitable" border="1" | |||
! scope="col" width="75" | Algorithm | |||
! scope="col" width="50" | Status | |||
! scope="col" width="600" | Comments | |||
|- | |||
| Brox Warping || || | |||
|- | |||
| HornSchunck || || | |||
|- | |||
| HornSchunck Pyramid || || | |||
|- | |||
| KLT || || Common technique. | |||
|- | |||
| Block || || Nothing to validate against. Not based off any specific paper. | |||
|} | |} | ||
== Image Segmentation == | |||
{| class="wikitable" border="1" | |||
! scope="col" width="75" | Algorithm | |||
! scope="col" width="50" | Status | |||
! scope="col" width="600" | Comments | |||
|- | |||
| FelzenHutten04 || || | |||
|- | |||
| Mean-Shift || || | |||
|- | |||
| SLIC || || | |||
|- | |||
| Watershed || || | |||
|} | |||
== Image Processing == | == Image Processing == |
Latest revision as of 11:07, 11 June 2014
Validation and Regression
Correctly implementing algorithms and producing the expected performance is difficult. BoofCV contains thousands internal tests to help ensure correctness of its algorithms, but it is nearly impossible to be 100% sure that the implementation is correct. This is especially true since often academic papers leave out important implementations needed to reproduce their work!. In the best case scenario an implementation will be compared against the author's original implementation. This page contains a list of important algorithms inside of BoofCV and if they have been validated against external libraries or not.
Source code used to validate BoofCV can be found at the ValidationBoof project on GitHub. ValidationBoof also contains regression tests designed to check for changes in stability/performance of different algorithms. It is entirely possible for all the unit tests to pass and have a 20% drop in performance due to a minor change. Regression tests are designed to catch those problems.
Status | Meaning |
---|---|
Validated | As good or better than original code or test data |
Needs Work | Producing results which are not as good as expected |
NA | Significantly different from original. See comments in code |
Blank means that it has not been externally validated |
Region Descriptors
Algorithm | Status | Comments |
---|---|---|
SURF | Validated | Original authors reference binary and others. http://boofcv.org/index.php?title=Performance:SURF |
SIFT | Validated | Scale-space is computed significantly different from original. Out performs reference binary, possibly due to more tuning options. |
KLT | ||
BRIEF |
Feature Detectors
Algorithm | Status | Comments |
---|---|---|
Fast Hessian | Validated | Original authors reference binary and others. http://boofcv.org/index.php?title=Performance:SURF |
FAST | Validated | Original author's source code. Validation Code |
Harris Corner | ||
KLT Corner | ||
Hough Line |
3D Vision
Algorithm | Status | Comments |
---|---|---|
Zhang99 | Validated | More accurate than parameters found in paper. Given same points it produces same results as OpenCV. More accurate calibration point detector then OpenCV. |
EPnP | Pending verification against author's code | |
8+ pt Fundamental | ||
8+ pt Essential | ||
7 pt Fundamental | ||
7 pt Essential | ||
5 pt Essential Nister | Pending validation against author's Matlab code | |
Linear H | ||
Linear Trifocal 7 | Validated | Compared to matlab code found online that was based off the same source. Validation Code |
Object Tracking
Algorithm | Status | Comments |
---|---|---|
TLD | Validated | Comparable to slightly less stable than original. TLD is less stable than it at first appears, making scoring difficult. |
Circulant | Validated | Improved over original. Much faster and slightly more stable. |
MeanShiftComaniciu2003 |
Dense Optical Flow
Algorithm | Status | Comments |
---|---|---|
Brox Warping | ||
HornSchunck | ||
HornSchunck Pyramid | ||
KLT | Common technique. | |
Block | Nothing to validate against. Not based off any specific paper. |
Image Segmentation
Algorithm | Status | Comments |
---|---|---|
FelzenHutten04 | ||
Mean-Shift | ||
SLIC | ||
Watershed |
Image Processing
Algorithm | Status | Comments |
---|---|---|
Convolution |
Interpolation
Algorithm | Status | Comments |
---|---|---|
Nearest Neighbour | ||
Bilinear |
Image Transformation
Algorithm | Status | Comments |
---|---|---|
Wavelet |