]>
rtime.felk.cvut.cz Git - hercules2020/kcf.git/log
Michal Sojka [Fri, 14 Sep 2018 13:01:54 +0000 (15:01 +0200)]
Pass CUDA_ARCH_LIST to CMake only for CUDA build
This avoids a cmake warning in other builds.
Michal Sojka [Fri, 14 Sep 2018 12:53:51 +0000 (14:53 +0200)]
Always run tests with ninja and fix few problems
Michal Sojka [Fri, 14 Sep 2018 10:32:57 +0000 (12:32 +0200)]
Do not run cmake during `ninja test` when not necessary
Michal Sojka [Fri, 14 Sep 2018 09:59:47 +0000 (11:59 +0200)]
Allow generating build.ninja also with GNU make 3.81
This version is on Travis and does not support file function.
Michal Sojka [Fri, 14 Sep 2018 09:01:00 +0000 (11:01 +0200)]
Run tests with ninja
To run them faster and to have nice progress report.
Michal Sojka [Fri, 14 Sep 2018 04:46:14 +0000 (06:46 +0200)]
Fix indentation
Michal Sojka [Thu, 13 Sep 2018 23:22:03 +0000 (01:22 +0200)]
Define big_batch variables only in BIG_BATCH mode
Michal Sojka [Thu, 13 Sep 2018 23:08:44 +0000 (01:08 +0200)]
Replace Kcf::m_use_big_batch with a preprocessor symbol
Michal Sojka [Thu, 13 Sep 2018 22:56:40 +0000 (00:56 +0200)]
Remove patch_feats from ThreadCtx
It does not belong there. Also revert get_features to the original
implementation.
Michal Sojka [Thu, 13 Sep 2018 22:53:17 +0000 (00:53 +0200)]
Remove void statement
Michal Sojka [Thu, 13 Sep 2018 22:44:03 +0000 (00:44 +0200)]
fft: Do not pass big_batch_mode as a parameter
One can determine the mode from the BIG_BATCH preprocessor symbol even
without the parameter.
Michal Sojka [Thu, 13 Sep 2018 22:44:36 +0000 (00:44 +0200)]
Remove unnecessary typecasting
Michal Sojka [Thu, 13 Sep 2018 21:30:41 +0000 (23:30 +0200)]
Shorten code by using ctx instead of p_htreadctxs.front()
Michal Sojka [Thu, 13 Sep 2018 21:20:35 +0000 (23:20 +0200)]
travis: Build only for one GPU architecture
This makes travis builds faster.
Michal Sojka [Thu, 13 Sep 2018 20:40:32 +0000 (22:40 +0200)]
Use clamp function to clamp variables to a range
Michal Sojka [Thu, 13 Sep 2018 17:18:17 +0000 (19:18 +0200)]
Unify init messages and add FFT size message
Michal Sojka [Thu, 13 Sep 2018 17:11:04 +0000 (19:11 +0200)]
Use fixed format for output numbers
Michal Sojka [Thu, 13 Sep 2018 16:47:58 +0000 (18:47 +0200)]
test: Show logs when not running on Travis CI
Michal Sojka [Thu, 13 Sep 2018 16:27:28 +0000 (18:27 +0200)]
Add book sequence to tests
Michal Sojka [Thu, 13 Sep 2018 16:24:05 +0000 (18:24 +0200)]
Add useful settings into Makefile (as comments)
Michal Sojka [Thu, 13 Sep 2018 15:36:52 +0000 (17:36 +0200)]
Allow CUDA autodetection with cmake < 3.7
Michal Sojka [Thu, 13 Sep 2018 15:01:23 +0000 (17:01 +0200)]
Autodetect CUDA architecture
Michal Sojka [Thu, 13 Sep 2018 04:40:35 +0000 (06:40 +0200)]
Do not require ifdefs when using sqr_norm()
Michal Sojka [Wed, 12 Sep 2018 21:57:06 +0000 (23:57 +0200)]
Revert FHoG::extract changes
It's not necessary for this function to know about our threads etc.
Michal Sojka [Wed, 12 Sep 2018 21:15:37 +0000 (23:15 +0200)]
Simpify init
Michal Sojka [Wed, 12 Sep 2018 21:11:20 +0000 (23:11 +0200)]
Simplify sub_grid_scale
Michal Sojka [Wed, 12 Sep 2018 20:49:58 +0000 (22:49 +0200)]
Remove unnecessary typecasting
Michal Sojka [Wed, 12 Sep 2018 20:20:10 +0000 (22:20 +0200)]
Replace (p_windows_size.* / p_cell_size) with p_roi and remove useless typecasting
Michal Sojka [Wed, 12 Sep 2018 20:09:56 +0000 (22:09 +0200)]
Use cv::Size for p_roi
Michal Sojka [Wed, 12 Sep 2018 19:55:53 +0000 (21:55 +0200)]
Fix scaling condition
"Or" makes more sense than "and".
Michal Sojka [Wed, 12 Sep 2018 19:54:58 +0000 (21:54 +0200)]
Simplify fit scale computation, cleanup
Michal Sojka [Wed, 12 Sep 2018 18:56:09 +0000 (20:56 +0200)]
Fix scale initialization
Without this, estimation of tracked object scale doesn't work
correctly.
This should have been done in commit
495214a ("Move scale and
async_res variables to ThreadCtx", 2018-09-12).
Michal Sojka [Wed, 12 Sep 2018 18:23:43 +0000 (20:23 +0200)]
Allow compiling all variants with ninja
It is faster - see the comment in the Makefile.
Michal Sojka [Wed, 12 Sep 2018 12:48:45 +0000 (14:48 +0200)]
Travis complains about long logs
Michal Sojka [Wed, 12 Sep 2018 10:26:52 +0000 (12:26 +0200)]
travis: Run tests
We run them only with clang. This has two reasons:
1) We cannot run CUDA and this job does not build cuda.
2) It is the fastest job, so tests will be run while other jobs will
still compile.
Michal Sojka [Wed, 12 Sep 2018 10:16:05 +0000 (12:16 +0200)]
Test improvements
- we test --fit flag
- we do not rerun tests if the log is up to date
- vot2016.zip is not downloaded in vot2016 directory already exists
Michal Sojka [Wed, 12 Sep 2018 10:00:44 +0000 (12:00 +0200)]
Allow getting filter response
It roughly corresponds to tracker's view of tracking accuracy. This value
is produced even when ground truth data is not available.
PITOM wanted to have this for their drone use case.
Fixes #19.
Michal Sojka [Wed, 12 Sep 2018 07:59:32 +0000 (09:59 +0200)]
Add automated testing
Michal Sojka [Wed, 12 Sep 2018 05:16:35 +0000 (07:16 +0200)]
Merge README update
Michal Sojka [Wed, 12 Sep 2018 05:14:54 +0000 (07:14 +0200)]
Update README
Michal Sojka [Tue, 11 Sep 2018 23:01:58 +0000 (01:01 +0200)]
Move scale and async_res variables to ThreadCtx
Michal Sojka [Tue, 11 Sep 2018 22:31:25 +0000 (00:31 +0200)]
Change p_threadctxs from list to vector
Michal Sojka [Tue, 11 Sep 2018 21:51:47 +0000 (23:51 +0200)]
Use list of thread contexts rather than list of pointers to thread contexts
This simplifies some constructs in the code.
Michal Sojka [Tue, 11 Sep 2018 19:54:53 +0000 (21:54 +0200)]
Remove useless typecasting
Michal Sojka [Tue, 11 Sep 2018 19:49:12 +0000 (21:49 +0200)]
Reformat
Michal Sojka [Tue, 11 Sep 2018 19:47:35 +0000 (21:47 +0200)]
Improve error message
Michal Sojka [Tue, 11 Sep 2018 19:44:29 +0000 (21:44 +0200)]
clang-format: Always move "if" body to a separate line
Michal Sojka [Tue, 11 Sep 2018 19:38:09 +0000 (21:38 +0200)]
Merge branch 'cuda-streams'
Shanigen [Sun, 9 Sep 2018 17:41:33 +0000 (19:41 +0200)]
Fix clang warnings
Mostly unused variable/function.
Shanigen [Sun, 9 Sep 2018 04:33:44 +0000 (06:33 +0200)]
Added comments to variables in ThreadCtx + renamed p_scale_vars in kcf
This commit adresses issue #11.
Shanigen [Sun, 9 Sep 2018 04:22:34 +0000 (06:22 +0200)]
Correction for CUFFT Big batch OpenMP
Shanigen [Sat, 8 Sep 2018 10:31:11 +0000 (12:31 +0200)]
Corrected warnings and errors in CUFFT version
These problems were found by Travis CL.
Shanigen [Sat, 8 Sep 2018 10:09:19 +0000 (12:09 +0200)]
Corrected warnings in CPU ComplexMat
This fixes #15.
Michal Sojka [Sat, 8 Sep 2018 09:12:03 +0000 (11:12 +0200)]
Do not force CUDA_HOST_COMPILER to g++
cmake sets CUDA_HOST_COMPILER automatically based on CC environment
variable. If one uses custom CC variable and CUDA_HOST_COMPILER is set
this way, build usually fails. This happens, for example, when one
needs to use an older compiler (e.g. gcc-5), because the newer default
compiler is not supported by CUDA.
This fixes #10.
Shanigen [Fri, 7 Sep 2018 10:06:51 +0000 (12:06 +0200)]
Streamlined ThreadCtx
Removed obsolete variables and variables that were
only used in zero index and moved them to kcf.
Shanigen [Thu, 6 Sep 2018 10:57:19 +0000 (12:57 +0200)]
Minor CMake correction for CUDA versions
Shanigen [Thu, 6 Sep 2018 10:52:12 +0000 (12:52 +0200)]
Removed obsolete include in CUFFT
CUDA version of the tracker no longer uses OpenCV's CUDA
API.
Shanigen [Thu, 6 Sep 2018 10:42:16 +0000 (12:42 +0200)]
Added DynMem class
DynMem class streamlines dynamic memory allocation for both CUDA
and CPU version of the tracker. Also some minor changes in fft_cufft.hpp
were made, because there was a problem with order of header includes.
Shanigen [Wed, 5 Sep 2018 12:52:09 +0000 (14:52 +0200)]
Made dynamic memory allocation more readable
Michal Sojka [Sun, 9 Sep 2018 11:23:07 +0000 (13:23 +0200)]
travis: Also Build with clang-5
Michal Sojka [Sun, 9 Sep 2018 09:26:32 +0000 (11:26 +0200)]
travis: Also build with clang-3.8
Michal Sojka [Sun, 9 Sep 2018 07:28:22 +0000 (09:28 +0200)]
travis: Build with -Werror
Michal Sojka [Sun, 9 Sep 2018 08:58:05 +0000 (10:58 +0200)]
travis: Compile with gcc-5
TX2 has also gcc-5. The advantage is that this gcc version does not
produce some (false?) warnings about uninitialized variables.
Michal Sojka [Sun, 9 Sep 2018 07:08:15 +0000 (09:08 +0200)]
travis: Use APT addon rather than a bunch of sudo commands
This looks like a cleaner approach.
Michal Sojka [Sun, 9 Sep 2018 06:34:15 +0000 (08:34 +0200)]
travis: Use less CUDA packages in dependencies
This makes Travis checks faster (from 5:00 to 3:30)
Michal Sojka [Sat, 8 Sep 2018 09:10:50 +0000 (11:10 +0200)]
Add markers to compile output
With this, it will be easier to figure in which build variant an error
happens.
Michal Sojka [Sat, 8 Sep 2018 07:12:12 +0000 (09:12 +0200)]
Enable Travis CI
Shanigen [Wed, 5 Sep 2018 12:26:17 +0000 (14:26 +0200)]
Changed variables in ThreadCtx to uint
Variables which are always positive were changed to uint.
This meant that some changes had to be made to ComplexMat
to reduce the number of typecasts.
Shanigen [Wed, 5 Sep 2018 11:42:32 +0000 (13:42 +0200)]
Changed p_windows_size and windows_size type to cv::Size
Shanigen [Wed, 5 Sep 2018 11:25:49 +0000 (13:25 +0200)]
CUFFT now uses ThreadCtx and also pragmas from pragmas.h
Shanigen [Wed, 5 Sep 2018 11:22:50 +0000 (13:22 +0200)]
Renamed Scale_Vars to ThreadCtx
Also part of this commit is deletion of forward declaration of
Scale_Vars (now ThreadCtx) in fft_fftw.h, fft_opencv.h and fhog.hpp.
Shanigen [Wed, 5 Sep 2018 11:02:57 +0000 (13:02 +0200)]
Moved omp pragmas declaration to seperate file
Definition of omp pragmas have nothing to do with Scale_vars,
for that reason pragmas.h was created with all of the definitions.
Shanigen [Wed, 5 Sep 2018 10:54:07 +0000 (12:54 +0200)]
Revert "Removed obsolete method set_stream"
This reverts commit
a22c75434c0db289b63de882fc1677108882b445 .
Shanigen [Wed, 5 Sep 2018 10:32:15 +0000 (12:32 +0200)]
Removed obsolete method set_stream
In CUDA version of ComplexMat class was unused set_stream method.
Shanigen [Wed, 5 Sep 2018 10:24:13 +0000 (12:24 +0200)]
CMake cleanup
Shanigen [Wed, 5 Sep 2018 07:57:47 +0000 (09:57 +0200)]
Removed redundant forward declaration.
This commit fixes #13.
Shanigen [Wed, 5 Sep 2018 07:54:21 +0000 (09:54 +0200)]
Formatted files with Clang Format.
Michal Sojka [Wed, 5 Sep 2018 06:44:39 +0000 (08:44 +0200)]
Reformat some parts with clang-format
Shanigen [Wed, 15 Aug 2018 09:22:16 +0000 (11:22 +0200)]
Big Batch mode now support OpenMP
Big batch mode now can use OpenMP, while using
the Scale_vars structure.
Shanigen [Fri, 10 Aug 2018 11:20:02 +0000 (13:20 +0200)]
CUDA streams works
This commit adds support for CUDA streams and also corrects issue
with CUFFTW version of the tracker. All version now works without
any problem. CUDA streams version currently does not support C++
async directive and only OpenMP.
TODO: Implement correct use of OpenMP in big batch mode.
Shanigen [Thu, 9 Aug 2018 13:42:18 +0000 (15:42 +0200)]
Work done so far on CUDA streams
This commit contains not only workd done to implement CUDA streams,
but also some changes to correct warnings and make the naming little
bit more consistent.
Shanigen [Tue, 7 Aug 2018 14:54:08 +0000 (16:54 +0200)]
Big batch mode now works for all versions
Shanigen [Tue, 7 Aug 2018 08:45:21 +0000 (10:45 +0200)]
Removed OpenCV_CuFFT version
Removed obsolete version of the tracker, which does not exist, but
was still available in CMake.
Shanigen [Tue, 7 Aug 2018 08:26:35 +0000 (10:26 +0200)]
FFT does not take whole Scale_vars struct
FFT class now does not need to know anything about the tracker. It only gets as
input parameters objects and variables on which to perform FFT. Also Scale_vars
constructor was added, which allocates memory for variables.
Shanigen [Fri, 3 Aug 2018 13:44:53 +0000 (15:44 +0200)]
Removed obsolete variable
Shanigen [Fri, 3 Aug 2018 13:34:45 +0000 (15:34 +0200)]
Cleaned OpenCV version
All version now uses same minimal FFT API and workflow.
TODO Clean the scale_var and scale_vars_init, add support for big_batch
mode for FFTW and CUFFT, implement cuda streams.
Shanigen [Fri, 3 Aug 2018 12:49:21 +0000 (14:49 +0200)]
Cleaned FFTW version
FFTW version now same as CUFFT version uses minimized API of FFT and has minimal number
of memory copies.
Shanigen [Fri, 3 Aug 2018 12:21:47 +0000 (14:21 +0200)]
Remove memory copying from host to device
Cufft version no longer copies data from host to device in forward_window function.
TODO add support for big_batch mode to CUFFT.
Shanigen [Fri, 3 Aug 2018 11:00:12 +0000 (13:00 +0200)]
Smaller FFT API
FFT API now only consist these functions: forward, forward_window and inverse.
All of them take Scale_vars structure as the sole input parameter. This API
currently works only with CuFFT if I remember correctly. I will have to test it
with OpenCV and FFTW.
Shanigen [Fri, 3 Aug 2018 10:32:23 +0000 (12:32 +0200)]
KCF_Tracker::init now uses Scale_vars FFT API
Shanigen [Fri, 3 Aug 2018 08:55:15 +0000 (10:55 +0200)]
CuFFT uses only inverse(Scale_vars & vars)
CuFFT version of the tracker now only uses one inverse function.
The next goal is to do the same for forward FFT function.
Shanigen [Fri, 3 Aug 2018 08:09:42 +0000 (10:09 +0200)]
All versions now use same FFT API
Added CUFFT support for inverse(Scale_vars &vars) function. So the scale_track function
is now same for OpenCV, FFTW and CuFFT versions of the tracke.
Shanigen [Wed, 1 Aug 2018 14:02:35 +0000 (16:02 +0200)]
Added CUFFT support
CUFFT now works with Scale_vars struct but priority now will be for
all versions of the tracker to use same API in FFT class.
Shanigen [Wed, 1 Aug 2018 12:04:17 +0000 (14:04 +0200)]
Added KCF_Tracker::init_scale_vars method
Added KCF_Tracker::init scale_vars method so the KCF_Tracker::init
is not so bloated and easier to read.
Shanigen [Wed, 1 Aug 2018 11:42:13 +0000 (13:42 +0200)]
Scale_vars version now supports FFTW
Added support for FFTW in Scale_vars version of the tracker.
The nondeterminism problem with FFTW version seems to be corrected
for single threaded version of the tracker (In this version the FFTW
uses 2 threads for its plans). But for the std::async version and OpenMP
version of the tracker the problem persists. But when tested the nondeter-
minism is smaller than in the original implementation.
Shanigen [Wed, 1 Aug 2018 09:34:39 +0000 (11:34 +0200)]
Added support for std::async and OpenMP
Added support for std::async and OpenMP. All parallel and
single threaded options only works with OpenCV currently.
Shanigen [Wed, 1 Aug 2018 08:51:08 +0000 (10:51 +0200)]
Removed memory allocation in tracker update
Added xf to Scale_vars, which is used during tracker updating and was allocated every frame.
Now it is allocated only once in KCF_Tracker::init in scale_vars[0] and is reused every frame.
Shanigen [Tue, 31 Jul 2018 22:29:12 +0000 (00:29 +0200)]
Added linear kernel support
Added linear kernel option to the scale_track method.
Shanigen [Tue, 31 Jul 2018 09:03:44 +0000 (11:03 +0200)]
Modified CMAKE
Modified CMAKE to correctly show scale_vars.hpp as one of the source files.
Shanigen [Tue, 31 Jul 2018 08:32:18 +0000 (10:32 +0200)]
Corrected the tracking issue
Correction of commit
f5fe586e979629ba757f245e5ecdf9e6bbdf6c05 ,
in which I substantialy changed the whole tracker workflow.
This is a patch that corrects the issue with wrong tracking,
which happened because I used wrong value of scale to
compute weighted max response in response map.