Release convolution weightsMat after usage#25181
Conversation
d92d6e9 to
c531352
Compare
c531352 to
c776227
Compare
|
BTW, We need 2 entities of DL model at least:
|
|
@opencv-alalek, agree. For now something intermediate is used - we clean buffers during the import trying not to store two instances of the weights (protobuf does not let more memory ownership). If you mean current OpenVINO workflow with model/compiled_model - they have an advantage with offline IR converter. But yes, after the compilation (CompiledModel) a model reference (Model) can be removed. Not sure if we need introduce two instances in public API, maybe add two private implementations: LayerProto (with original weights, shapes logic, backends initialization) and LayerOCV, which is a separate "default backend" implementation. And need an agreement or option to let us clean original weights (means after OpenCV forward user won't set a different backend). |
4558e6d to
b34ec6e
Compare
|
Gemm, MatMul and Attention layers also have this problem as constant weight needs to be prepacked and stored while leaving the original one unused. |
Release convolution weightsMat after usage opencv#25181 ### Pull Request Readiness Checklist related (but not resolved): opencv#24134 Minor memory footprint improvement. Also, adds a test for VmHWM. RAM top memory usage (-230MB) | YOLOv3 (237MB file) | 4.x | PR | |---------------------|---------|---------| | no winograd | 808 MB | 581 MB | | winograd | 1985 MB | 1750 MB | See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [x] There is a reference to the original bug report and related work - [x] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [x] The feature is well documented and sample code can be built with the project CMake
Pull Request Readiness Checklist
related (but not resolved): #24134
Minor memory footprint improvement. Also, adds a test for VmHWM.
RAM top memory usage (-230MB)
See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request
Patch to opencv_extra has the same branch name.