NOTE: OpenCV版本要求>=4.7.0,测试版本为4.7.0
git clone https://github.com/Estellasy/yolov8-defect-cpp-inference.git
cd yolov8-defect-cpp-inference
mkdir build
cd build
cmake ..
make
./Yolov8CPPInference
.
├── assets # 测试图片
│ ├── crack.bmp
│ └── hole.bmp
├── benchmark.h # 性能测试
├── CMakeLists.txt
├── draft.txt
├── inference.cpp # 推理API
├── inference.h
├── main.cpp
├── models # 模型
│ └── best.onnx
├── README.md
├── yolov8.cpp # 推理和后处理
└── yolov8.h
目前已设置4类缺陷类型,分别为:
- 异物 object
- 裂缝 crack
- 孔洞 hole
- 褶皱 wrinkle
- 在
main.cpp
中修改传入测试图片路径imagePath
和设置是否使用GPU加速runOnGPU
。 - 在
main.cpp
中指定imagePath
并进行推理后的保存等相关工作。 - 在
yolov8.cpp
中修改模型路径modelPath
。
- 在
inference.h
中修改modelConfidenceThreshold
、modelScoreThreshold
、modelNMSThreshold
,分别对应置信度阈值
、分数阈值
、NMS阈值
。
测试环境
Intel® Core™ i5-13400, 32G RAM
测试表现
Total time for 1000 iterations: 72182 milliseconds
Average time per iteration: 72.18 milliseconds
CUDA上的性能测试待补充。
目前yolov8.cpp
逻辑为:
- 加载模型
- 加载测试图片
- 推理
- 后处理
处理每一张图像都会重复加载模型,实际应用时可以将模型加载和推理解耦。
模型正确运行时,Console输出下列信息:
Running on CPU
Number of detections:1
若提示下面内容,则为未配置好CUDA环境。
Running on CUDA
[ WARN:0@0.027] global net_impl.cpp:174 setUpNet DNN module was not built with CUDA backend; switching to CPU
Number of detections:1