若該文為原創文章,轉載請注明原文出處。
主要介紹如何在Linux系統上安裝和部署基于YOLOv8的C++推理項目
一、服務器準備
使用AutoDL平臺租用服務器
AutoDL有git加速,可以自行啟用
二、環境配件
1、檢查Opencv版本
pkg-config --modversion opencv4
如果版本為4.5,則需升級為4.9,否則ONNX模型在加載時可能報錯
2、檢查CMake版本
cmake --version
如果沒有安裝
sudo apt install cmake
三、安裝Opencv 4.9
運行腳本
chmod +x install_opencv_490_fresh.sh
?
./install_opencv_490_fresh.sh
腳本:
#!/bin/bashecho "=== Step 1: Installing dependencies ==="
apt update
apt install -y build-essential cmake git pkg-config \libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev \libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev \libtiff-dev gfortran openexr libatlas-base-dev python3-dev \python3-numpy libtbb-devecho "=== Step 2: Cloning OpenCV and opencv_contrib (version 4.9.0) ==="cd ~
rm -rf ~/opencv ~/opencv_contrib
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.gitcd opencv
git checkout 4.9.0
cd ../opencv_contrib
git checkout 4.9.0echo "=== Step 3: Configuring build with pkg-config generation ==="
cd ~/opencv
rm -rf build
mkdir build
cd buildcmake -D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=/usr/local \-D CMAKE_EXTRA_MODULES_PATH=~/opencv_contrib/modules \-D BUILD_EXAMPLES=OFF \-D WITH_CUDA=OFF \-D OPENCV_GENERATE_PKGCONFIG=ON \..if [ $? -ne 0 ]; thenecho "CMake failed! Check the error log."exit 1
fiecho "=== Step 4: Building OpenCV ==="
make -j$(nproc)echo "=== Step 5: Installing OpenCV ==="
make install
ldconfigecho "=== Step 6: Done! Verifying installation ==="
/usr/local/bin/opencv_version
?
編譯時間很長,耐心等待
驗證
pkg-config --modversion opencv4
四、YOLOV8模型導出
git clone https://github.com/ultralytics/ultralytics.git
?
cd ultralytics
?
pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
導出ONNX模型(簡化版本,兼容OpenCV DNN)
yolo export model=yolov8s.pt format=onnx opset=12 dynamic=False simplify=True
五、適配Linux無圖形界面
將原來的顯示代碼替換為保存圖片
替換前:
cv:imshow("Inference", frame);
?
cv::waitKey(-1);
替換后:
std::string outputPath = "output_" + std::to_string(i) + ".jpg";
?
cv::imwrite(outputPath, frame);
?
std::cout << "Saved result to: " << outputPath << std::endl;
六、修改文件
修改main.cpp文件,主要是修改路徑和要不要啟用GPU
七、CMakeLists.txt示例
# 設置最低CMake版本要求
cmake_minimum_required(VERSION 3.5)
# 項目名稱和版本
project(Yolov8CPPInference VERSION 0.1)
#設置包含當前目錄的頭文件路徑
set(CMAKE_INCLUDE_CURRENT_DIR ON)
?
#----------------- CUDA 設置 -----------------
# 設置 CUDA 路徑(根據系統配置調整)
set(CUDA_TOOLKIT_ROOT_DIR "/usr/local/cuda")
# 查找并啟用 CUDA (要求至少為CUDA 11)
find_package(CUDA 11 REQUIRED)
?
# 設置 CUDA 標準為 C++11
set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
# !CUDA
#-------------------------------------------
?
#----------------- OpenCV 設置 -----------------
# OpenCV
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
# !OpenCV
#-------------------------------------------
?
# 定義項目源文件
set(PROJECT_SOURCESmain.cpp
?inference.hinference.cpp
)
?
# 生成可執行文件
add_executable(Yolov8CPPInference ${PROJECT_SOURCES})
?
# 鏈接 OpenCV 庫
target_link_libraries(Yolov8CPPInference ${OpenCV_LIBS})
?
八、構建與運行項目
# 創建構建項目
mkdir build
# 進入構建目錄
cd build
# 生成Makefile文件
cmake ..
# 編譯項目
make
?
# 運行推理程序
./Yolov8CPPInference
? ?
后續想部署到自己的虛擬機上,并使用攝像頭實時檢測
如有侵權,或需要完整代碼,請及時聯系博主。