詳解使用CUDA+OpenCV加速yolo v4性能
YOLO是You-Only-Look-Once的縮寫,它無疑是根據COCO數據集訓練的最好的對象檢測器之一。YOLOv4是最新的迭代版本,它在準確性和性能之間進行瞭權衡,使其成為最先進的對象檢測器之一。在智能視頻分析管道中使用任何對象檢測器的典型機制包括使用像Tensorflow或PyTorch這樣能夠在NVIDIA GPU上操作的庫來加速模型推理。
OpenCV用於圖像/視頻流輸入,預處理和後處理的視覺效果。如果我告訴你OpenCV現在能夠利用NVIDIA CUDA的優點,使用DNN模塊本地運行YOLOv4,那會怎樣?本文將帶你通過使用CUDA和cuDNN構建OpenCV,以使用DNN模塊加速YOLOv4推理。
介紹
我認識的大多數愛好者都有支持GPU的設備。我的目標是讓GPU加速成為主流。誰不喜歡項目跑快點呢?我已經使用瞭OpenCV 4.5.1、CUDA 11.2和cuDNN 8.1.0來開始工作,使推理更容易!
首先,你需要設置CUDA,然後安裝cuDNN,最後以構建OpenCV結束。此外,這個博客被分成瞭幾個部分,這樣更容易理解!
CUDA 11.2和cuDNN 8.1.0安裝
最有可能使你的計算機無法啟動的部分。開個玩笑啦!把每件事都做好,這應該是輕而易舉的事。
安裝CUDA 11.2
首先根據你的平臺從CUDA存儲庫下載deb文件。
CUDA存儲庫:https://developer.nvidia.com/cuda-downloads
正確選擇平臺後,將會向你提供安裝命令。如果你的平臺與我的平臺相似,則可以按以下方式安裝它:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pinsudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600wget https://developer.download.nvidia.com/compute/cuda/11.2.1/local_installers/cuda-repo-ubuntu2004-11-2-local_11.2.1-460.32.03-1_amd64.debsudo dpkg -i cuda-repo-ubuntu2004-11-2-local_11.2.1-460.32.03-1_amd64.debsudo apt-key add /var/cuda-repo-ubuntu2004-11-2-local/7fa2af80.pubsudo apt updatesudo apt -y install cudasudo reboot
如果操作正確,那麼在運行nvidia-smi時應該會有以下輸出
最後,將以下內容粘貼到.bashrc或.zshrc中
# CUDA export CUDA=11.2 export PATH=/usr/local/cuda-$CUDA/bin${PATH:+:${PATH}} export CUDA_PATH=/usr/local/cuda-$CUDA export CUDA_HOME=/usr/local/cuda-$CUDA export LIBRARY_PATH=$CUDA_HOME/lib64:$LIBRARY_PATH export LD_LIBRARY_PATH=/usr/local/cuda-$CUDA/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH export NVCC=/usr/local/cuda-$CUDA/bin/nvcc export CFLAGS="-I$CUDA_HOME/include $CFLAGS"CUDA
別忘瞭在後面加上source ~/.bashrc
或source ~/.zshrc
安裝cuDNN 8.1.0
為此,你需要有一個NVIDIA的賬戶,所以一定要先註冊。完成後,前往以下鏈接並下載標記的文件。
https://developer.nvidia.com/rdp/cudnn-download
下載deb文件後,運行以下命令-
sudo dpkg -i libcudnn8_8.1.0.77-1+cuda11.2_amd64.deb sudo dpkg -i libcudnn8-dev_8.1.0.77-1+cuda11.2_amd64.deb
這標志著NVIDIA CUDA和cuDNN安裝的完成!
從源代碼構建OpenCV 4.5.1
有趣的是,這讓我很興奮!本節將幫助你用CUDA, GStreamer和FFMPEG從源代碼構建OpenCV !有一個很長的命令列表要執行,所以開始吧。
首先,安裝python開發人員包
sudo apt install python3-dev python3-pip python3-testresources
接下來,讓我們安裝構建OpenCV所需的依賴項
sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall sudo apt install libjpeg-dev libpng-dev libtiff-dev sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavresample-dev sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev sudo apt install libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev sudo apt install libfaac-dev libmp3lame-dev libvorbis-dev sudo apt install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get install libgtk-3-dev sudo apt-get install libtbb-dev sudo apt-get install libatlas-base-dev gfortran sudo apt-get install libprotobuf-dev protobuf-compiler sudo apt-get install libgoogle-glog-dev libgflags-dev sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
Numpy是此構建的一個關鍵python包。使用pip安裝它
pip3 install numpy
現在,你應該為構建做好瞭一切準備。運行以下命令下載並解壓源代碼
mkdir opencvbuild && cd opencvbuild wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.1.zip wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.1.zip unzip opencv.zip unzip opencv_contrib.zip mv opencv-4.5.1 opencv mv opencv_contrib-4.5.1 opencv_contrib
讓我們準備構建吧!
cd opencv mkdir build && cd build
確保CUDA_ARCH_BIN
根據你的GPU改變。
cmake \ -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_C_COMPILER=/usr/bin/gcc-7 \ -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_C_EXAMPLES=ON -D WITH_TBB=ON -D WITH_CUDA=ON -D WITH_CUDNN=ON \ -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=7.5 -D BUILD_opencv_cudacodec=OFF \ -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 \ -D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_GSTREAMER=ON \ -D WITH_FFMPEG=ON -D OPENCV_GENERATE_PKGCONFIG=ON \ -D OPENCV_PC_FILE_NAME=opencv4.pc -D OPENCV_ENABLE_NONFREE=ON \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -D PYTHON_DEFAULT_EXECUTABLE=$(which python3) -D BUILD_EXAMPLES=ON ..
你應該會看到類似這樣的成功構建
確保CUDA被檢測到並且構建路徑是準確的。如果一切正常,繼續並執行以下命令來啟動構建
make -j$(nproc) sudo make install
要檢查是否成功構建瞭OpenCV,運行這個命令
pkg-config --libs --cflags opencv4
在成功安裝時,它應該會給你一個類似這樣的輸出
很高興看到你能走到這一步!現在你應該已經完成瞭運行示例應用程序的所有設置。
運行應用程序
繼續並克隆這個存儲庫並獲取權重。從安裝git-lfs開始
sudo apt install git git-lfs
使用模型文件克隆存儲庫
# Using HTTPS git clone https://github.com/aj-ames/YOLOv4-OpenCV-CUDA-DNN.git # Using SSH git clone [email protected]:aj-ames/YOLOv4-OpenCV-CUDA-DNN.git cd YOLOv4-OpenCV-CUDA-DNN/ git lfs install git lfs pull
你可以在圖像,視頻攝像頭,或RTSP輸入運行應用程序。
# Image python3 dnn_infernece.py --image images/example.jpg --use_gpu # Video python3 dnn_inference.py --stream video.mp4 --use_gpu # RTSP python3 dnn_inference.py --stream rtsp://192.168.1.1:554/stream --use_gpu # Webcam python3 dnn_inference.py --stream webcam --use_gpu
PS:刪除--use-gpu
標志來禁用GPU。適得其反,不是嗎?
極客們的一些基準!
如果收益不是很大,我們就不會這麼做。相信我,在GPU上運行使我的FPS增加瞭10–15倍!
我測試瞭兩種配置
英特爾酷睿i5 7300HQ + NVIDIA GeForce GTX 1050Ti
英特爾至強E5–1650 v4 + NVIDIA Tesla T4
我會讓數字來說話的!
| Device | FPS | Device | FPS | | :------------: | :----------: | :------------: | :----------: | | Core i5 7300HQ | 2.1 | GTX 1050 Ti | 20.1 | | Xeon E5-1650 | 3.5 | Tesla T4 | 42.3 |
尾註
GPU加速正在滲透到多個庫和應用程序中,使用戶能夠以前所未有的速度運行更重的工作負載!計算機視覺曾經不是一項所有人都能接觸到的技術,但隨著神經網絡的改進和硬件計算能力的提高,這一差距已經顯著縮小。隨著人工智能發展的速度,我們的硬件也會發展的越來越靈活!
到此這篇關於詳解使用CUDA+OpenCV加速yolo v4性能的文章就介紹到這瞭,更多相關CUDA+OpenCV加速yolo v4內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found