Commit Graph

7728 Commits

Author SHA1 Message Date
Davis King b817bc1ea9 fixed check range to match the comment 2020-01-05 08:19:08 -05:00
Davis King 5557577c95 Even the newest CUDA runtime has a buggy cudaStreamSynchronize. 2020-01-05 08:17:25 -05:00
Davis King 3d5a3d7b9a fixed spelling error 2020-01-05 08:09:32 -05:00
Davis King 471c3d30e1 fix formatting 2019-12-28 08:31:31 -05:00
Davis King a4bf6e1e6a cleanup cv_image code. This also fixes a build error with the very latest version of OpenCV. 2019-12-28 08:29:22 -05:00
Davis King 34dc730304 Fix opencv version check to work on all opencv versions 2019-12-22 07:52:08 -05:00
Davis King 131e459809 Update to work with latest version of OpenCV 2019-12-21 09:48:56 -05:00
Davis King 2c7e625a15 Record last changeset and set PATCH version to 99 2019-12-14 14:10:30 -05:00
Davis King d71497d466 Created release v19.19 2019-12-14 14:08:33 -05:00
Davis King 591331f941 updated docs 2019-12-14 14:07:20 -05:00
Davis King b0e3c36020 deleted old, wrong, and duplicative function docs 2019-12-04 21:50:01 -05:00
Davis King e88e166e98 slightly nicer default behavior 2019-11-29 07:45:50 -05:00
Davis King f2cd9e3b1d use a time based exeuction limit in example 2019-11-28 10:48:02 -05:00
Davis King 501d17f693 Made find_max_global() and its overloads measure the execution speed of
the user provided objective function.  If it's faster than the LIPO
upper bounding Monte Carlo model then we skip or limit the Monte Carlo
stuff and just fun the objective function more often.  Previously,
find_max_global() simply assumed the objective functions were really
expensive to invoke.

TLDR: this change makes find_max_global() run a lot faster on objective
functions that are themselves very fast to execute, since it will skip
the expensive Monte Carlo modeling and just call the objective function
a bunch instead.
2019-11-28 10:42:27 -05:00
Davis E. King e82e2ceb2b
Fix build error in some versions of visual studio 2019-11-15 00:24:27 -05:00
Juha Reunanen d175c35074 Instance segmentation (#1918)
* Add instance segmentation example - first version of training code

* Add MMOD options; get rid of the cache approach, and instead load all MMOD rects upfront

* Improve console output

* Set filter count

* Minor tweaking

* Inference - first version, at least compiles!

* Ignore overlapped boxes

* Ignore even small instances

* Set overlaps_ignore

* Add TODO remarks

* Revert "Set overlaps_ignore"

This reverts commit 65adeff1f8.

* Set result size

* Set label image size

* Take ignore-color into account

* Fix the cropping rect's aspect ratio; also slightly expand the rect

* Draw the largest findings last

* Improve masking of the current instance

* Add some perturbation to the inputs

* Simplify ground-truth reading; fix random cropping

* Read even class labels

* Tweak default minibatch size

* Learn only one class

* Really train only instances of the selected class

* Remove outdated TODO remark

* Automatically skip images with no detections

* Print to console what was found

* Fix class index problem

* Fix indentation

* Allow to choose multiple classes

* Draw rect in the color of the corresponding class

* Write detector window classes to ostream; also group detection windows by class (when ostreaming)

* Train a separate instance segmentation network for each classlabel

* Use separate synchronization file for each seg net of each class

* Allow more overlap

* Fix sorting criterion

* Fix interpolating the predicted mask

* Improve bilinear interpolation: if output type is an integer, round instead of truncating

* Add helpful comments

* Ignore large aspect ratios; refactor the code; tweak some network parameters

* Simplify the segmentation network structure; make the object detection network more complex in turn

* Problem: CUDA errors not reported properly to console
Solution: stop and join data loader threads even in case of exceptions

* Minor parameters tweaking

* Loss may have increased, even if prob_loss_increasing_thresh > prob_loss_increasing_thresh_max_value

* Add previous_loss_values_dump_amount to previous_loss_values.size() when deciding if loss has been increasing

* Improve behaviour when loss actually increased after disk sync

* Revert some of the earlier change

* Disregard dumped loss values only when deciding if learning rate should be shrunk, but *not* when deciding if loss has been going up since last disk sync

* Revert "Revert some of the earlier change"

This reverts commit 6c852124ef.

* Keep enough previous loss values, until the disk sync

* Fix maintaining the dumped (now "effectively disregarded") loss values count

* Detect cats instead of aeroplanes

* Add helpful logging

* Clarify the intention and the code

* Review fixes

* Add operator== for the other pixel types as well; remove the inline

* If available, use constexpr if

* Revert "If available, use constexpr if"

This reverts commit 503d4dd335.

* Simplify code as per review comments

* Keep estimating steps_without_progress, even if steps_since_last_learning_rate_shrink < iter_without_progress_thresh

* Clarify console output

* Revert "Keep estimating steps_without_progress, even if steps_since_last_learning_rate_shrink < iter_without_progress_thresh"

This reverts commit 9191ebc776.

* To keep the changes to a bare minimum, revert the steps_since_last_learning_rate_shrink change after all (at least for now)

* Even empty out some of the previous test loss values

* Minor review fixes

* Can't use C++14 features here

* Do not use the struct name as a variable name
2019-11-14 22:53:16 -05:00
Davis King 7f2be82e33 rename top level cmake project to avoid possible cmake issues 2019-11-13 22:46:33 -05:00
Davis King bd6dcc0b49 Fix find_max() going into an infinite loop in some cases when a non-differentiable function is given. 2019-10-31 20:23:15 -04:00
Davis King 1eccfbc99a fix cmake warning 2019-10-31 20:03:03 -04:00
Davis King 36703f696f Improve check that the system version of libjpeg is usable. 2019-10-31 20:03:03 -04:00
Morwenn e30f5e2fe8 Propagate CMake flags to try_compile (fixes #1900) (#1905)
* Forward CMake environment flags to libjpeg tests

* Forward CMake environment flags to libpng tests
2019-10-24 20:21:50 -04:00
Davis King 1b83016abd update docs 2019-10-24 20:15:34 -04:00
Davis King 39327e71b7 Added note about using cmake's new fetch content feature. 2019-10-24 07:50:30 -04:00
Adrià Arrufat 9d3e086477 fix signed/unsigned warning (#1899) 2019-10-15 08:02:15 -04:00
Juha Reunanen a41e0cdb0f Primarily match to truth rects that haven't been hit already (#1897) 2019-10-14 07:11:32 -04:00
Davis King 1264521e0c more comments 2019-10-13 08:25:14 -04:00
Juha Reunanen 8e622e9f4a Ignore truth rects that overlap too much (have same index in feature coordinates) (#1896)
* Add test case that makes MMOD loss go negative with certain ignore-rect configuration

* Disregard duplicate truth boxes

* Minor optimization

* Remove possibly outdated comment

* Clarify the detection count test criterion a little

* Review fix

* Review fixes:
- for perf reasons, keep only the first rect for each truth idx
- fix warning message grammar
2019-10-13 08:22:11 -04:00
Davis King cff605add5 fix warnings 2019-10-01 21:08:22 -04:00
Davis King df2bbd8a2c Record last changeset and set PATCH version to 99 2019-09-22 14:59:28 -04:00
Davis King 1ac1756923 Created release v19.18 2019-09-22 14:57:37 -04:00
Davis King f4a3d09a9d updated docs and release notes 2019-09-22 14:57:02 -04:00
Julien Schueller 2e5cf2e8e4 Add an option to force static runtime (#1847)
* dos2unix tell_visual_studio_to_use_static_runtime.cmake

* Add an option to force static runtime
2019-09-01 09:06:38 -04:00
Juha Reunanen e89e28b94e Clear truth_idxs between samples (#1870)
* Clear truth_idxs between samples

* Move truth_idxs inside loop body after all

* Push to truth_idxs even when the box can't be detected; improve formatting
2019-08-31 13:10:05 -04:00
Adrià Arrufat 170877da88 add loss_mean_squared_per_channel (#1863)
add loss_mean_squared_per_channel_and_pixel
2019-08-28 07:25:08 -04:00
Mischan Toosarani-Hausberger efd4e27488 dpoint mutates x-coord in y-property (see #1794) (#1866) 2019-08-24 11:13:00 -04:00
Thomas Peters a81fd0c651 don't cast away constness (#1865) 2019-08-23 14:00:24 -04:00
Davis King e8d2407611 Simplified the device_global_buffer() code and API. 2019-08-17 11:27:48 -04:00
Juha Reunanen d7fb51e60b Fix #1849 by calling device_global_buffer() unconditionally (#1862)
* Hold on to the CUDA buffer - second try
see: https://github.com/davisking/dlib/pull/1855#discussion_r314666348

* Fix #1849 by calling device_global_buffer() unconditionally
2019-08-17 11:01:00 -04:00
guydavid b02be8c734 Const-correct a LAPACK declaration and add aarch64 as a 64-bit architecture (#1859)
* Added aarch64 to list of 64-bit architechtures

* Const-corrected declaration of ssyevr
2019-08-14 19:29:04 -04:00
notoriousPig 7e70a92765 pybind11: cmake: ignore the check between host-python and cross-compiler (#1848)
When dlib is compiling, cmake will compare python architecture and target
architecture. So in cross-compiling case, it is irrevelant because host and
target architecture often differs. The main problem come from checking python
architecture on host and not on target.

Here is an error when compiling dlib from x86_64 to arm 32-bit target :
```
Python config failure: Python is 64-bit, chosen compiler is 32-bit
```

So :
- Skipping the comparation when cross-compiling is enabled.

Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Alexandre PAYEN <alexandre.payen@smile.fr>
2019-07-29 06:57:50 -04:00
Davis King 05cbfc6d64 Fix the CMake BUILDING_PYTHON_IN_MSVC variable not getting picked up where it should. 2019-07-27 09:42:36 -04:00
Davis King fced3587f1 fixing grammar 2019-07-27 09:03:14 -04:00
Davis King 48b9bf3f93 Fixed cmake warning 2019-07-19 07:12:27 -04:00
Paul Dreik 8a2963d758 fix mismatch between documentation and implementation (#1835) 2019-07-19 06:38:56 -04:00
Davis King 2704f3e26d fixed typo in docs 2019-07-12 07:30:18 -04:00
Davis King 6dec9abffe Added missing include 2019-07-05 11:46:32 -04:00
Davis King f15e4e58d6 Fixed grammar in comments 2019-07-04 13:54:35 -04:00
Davis King aee97d9d1d Fixed incorrect return type 2019-06-25 21:33:31 -04:00
Davis King e2293e5cd1 Push all include and link options needed for dlib to pkg-config. We do this by getting them from the same list cmake uses. 2019-06-09 10:36:15 -04:00
mchelem 5d64de24b3 Fix setting a point's y coordinate changes x instead (Python bindings) (#1795)
* Add point assignment test

* Fix setting points y coordinate changes x instead (issue #1794)
2019-06-08 06:08:45 -04:00