-
Notifications
You must be signed in to change notification settings - Fork 1
Description
cvfind performs pair-wise image processing tasks in parallel, by default starting one thread per core. The instantaneous memory requirements are higher for this detector. This can cause several GB of RAM to be allocated instantly which triggers an OOM condition. In addition, when AKAZE ( or another highly productive detector ) is selected, the memory requirements of cvfind are increased owing to that detector returning many more features and matches which are stored for later analysis.
Adding additional swap space to offload fallow data structures eliminates the latter issue. Using the --ncores ootion to reduce the number of parallel jobs also eliminates the former.
The AKAZE detector does not seem to abide by the limits on the number of features requested, but this is not a root cause in most cases as AKAZE is used as a "rescue" detector for images that produce too few features with other methods. Also some detectors are already take advantage of multiple cores, as AKAZE does, so the benefit of parallelism is reduced. It may be possible to reduce the number of threads when these detectors are used.