项目里用caffe进行人脸检测。验证集为2000张图片时,存在内存泄漏。调用opencv的convertTo和subtract函数都会减少6200KB的内存。
经过多次安装验证,使用以下的编译选项组合可以避免内存泄漏。
在opencv安装包解压后的目录中,编辑脚本opencv_build.sh
#/bash/bin
cd build
rm * -fr
cmake -D CMAKE_BUILD_TYPE=Release \
-D CMAKE_INSTALL_PREFIX=~/work/opencv346 \
-D USE_O3=ON \
-D ENABLE_CXX11=ON \
-D BUILD_TIFF=OFF \
-D WITH_TBB=OFF \
-D WITH_IPP=OFF \
-D WITH_OPENMP=ON \
-D WITH_WEBP=OFF \
-D ENABLE_FAST_MATH=1 \
-D BUILD_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF ..
make -j12
sudo make install
执行此脚本,即可快速安装opencv.
此外,还有个疑问:tensorRT代码中的opencv convert函数,用这一套编译选项还是会有内存泄漏,每次调用后,会减少6200KB内存。