一、前言

        在C++推理Yolo的onnx模型的时候,速度实在太慢了,一查,gpu没跑,opencv版本太低了,不支持cuda加速。

python3
import cv2
cv2.__version__
cv2.cuda.getCudaEnabledDeviceCount()

二、步骤

1、下载地址

cuda版本

cpu版本

2、编译

        下载完成后解压,先安装不带cuda版本,安装之后系统就自带了cv,cuda才能编译

tar -xzvf opencv-4.7.0.tar.gz
cd opencv-4.7.0/

        安装依赖,这里踩了很多坑,弄了好久,直接贴出来,包很多

sudo apt install ffmpeg libopenblas-dev libblas-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libopenmpi-dev libomp-dev libpixman-1-dev libcairo2-dev libgtk-3-dev libavcodec-dev libavformat-dev libxvidcore-dev libx264-dev libavresample-dev libswresample-dev libavdevice-dev libatlas-base-dev libhdf5-dev 

        然后就和c++一样编译 

mkdir build
cd build

         cmake要输入一些参数

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.6.0/modules -D WITH_CUDA=ON -D CUDA_ARCH_BIN=5.3 -D CUDA_ARCH_PTX="" -D ENABLE_FAST_MATH=ON -D CUDA_FAST_MATH=ON -D WITH_CUBLAS=ON -D WITH_LIBV4L=ON -D WITH_GSTREAMER=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_QT=ON -D WITH_OPENGL=ON -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" -D WITH_TBB=ON ..

make -j4

        这个好久好久,要一个半小时

sudo make install

        安装成功,查看版本

bash
python3
import cv2
cv2.__version__

3、安装cuda版本

        解压

tar -xzvf opencv_contrib-4.7.0.tar.gz
cd ../../opencv-4.7.0/build

        编译,其中路径和GPU架构每个人都可能不同

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=ON -D WITH_CUDA=ON -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_ARCH_BIN=5.3 -D WITH_CUBLAS=1 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.7.0/modules -D HAVE_opencv_python3=ON -D PYTHON_EXECUTABLE=usr/bin/python3.6 -D BUILD_EXAMPLES=ON ..

 

        踩坑:如果你gcc版本在8以上,请降级到7,不然会向我一样编译2小时后才报错

export CC=/usr/bin/gcc-7
export CXX=/usr/bin/g++-7
make -j5

         这个更慢

        历时4个小时,完成!

Logo

欢迎来到FlagOS开发社区,这里是一个汇聚了AI开发者、数据科学家、机器学习爱好者以及业界专家的活力平台。我们致力于成为业内领先的Triton技术交流与应用分享的殿堂,为推动人工智能技术的普及与深化应用贡献力量。

更多推荐