一、下载yolo项目:
https://github.com/AlexeyAB/darknet(C++版本)
二、多GPU配置C++版本的yolo
修改makefile文件如下:
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENCV=1
AVX=0
OPENMP=0
LIBSO=1
DEBUG=1
三、编译C++版本
遇到的bug1:
/bin/sh: 1: nvcc: not found
Makefile:88: recipe for target 'obj/convolutional_kernels.o' failed
make: *** [obj/convolutional_kernels.o] Error 127
错误原因:nvcc没有安装或者是设置的环境变量不生效
解决方案:在/et/profile中添加cuda的环境变量,添加完成之后切记source /etc/profile
参考文章:
https://blog.csdn.net/chengyq116/article/details/80552163
遇到的bug2:
Error: Assertion failed ((flags & FIXED_TYPE) != 0)
错误原因:opencv版本不匹配
解决方案:编译c++版的yolo必须要装低于3.4.0版本的opencv ;如果电脑上已经装好其他版本的opencv,只需要重新编译所需要的opencv版本即可,然后在执行训练或其他命令之前执行export LD_LIBRARY PATH=$LD_LIBRARY_PATH:/data/opencv-3.4.0/build/lib,但是不能用sudo执行命令
bug3:
error while loading shared libraries: libopencv_highgui.so.3.4 linux
错误原因:安装完opencv时没有将opencv路径写入环境变量
解决方案:添加opencv环境变量
参考文章:
https://blog.csdn.net/u013066730/article/details/79411767(从第9步开始执行就行)
错误原因:显存不足
解决方案:将.cfg文件中的subdivision设置为64
四、标记自己的数据及训练
训练数据:./darknet detector train data/obj.data data/yolov3-tiny_test.cfg yolov3-tiny.conv.15 -gpus 0,1,2
计算锚点:./darknet detector calc_anchors data/obj.data -num_of_clusters 6 -width 416 -height 416
断点续传:./darknet detector train data/obj.data data/yolov3-tiny_test.cfg /backup/yolov3-tiny_train_1000.weights -gpus 0,1,2