YOLO是也是深度学习的一种,它的特点就是速度非常快。YOLO的安装比较简单,参考官网的安装步骤:https://pjreddie.com/darknet/yolo/
- 基本过程
- 下载darknet,也就是YOLO
git clone https://github.com/pjreddie/darknet
cd darknet
make
2. 下载权重文件
wget https://pjreddie.com/media/files/yolov3.weights
下载好后,将yolov3.weights复制到darknet目录下。
3. 检测测试
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
执行结束后,会在darknet目录下生成一副图片,即为检测结果。
- 带CUDA和OpenCV
关于CUDA和OpenCV的配置,需要重新编译,修改darknet/Makefile文件:
GPU=1
CUDNN=1
OPENCV=1
重新编译:
make clean
make
- 遇到的问题以及解决办法:
问题1:
./darknet: error while loading shared libraries: libcudart.so.8.0:
cannot open shared object file: No such file or directory
解决方法:
libcudart.so.8.0 不能找到 在/etc/ld.so.conf.d 创建了一个cuda.conf
文件,并加入/usr/local/cuda/lib64 内容,保存退出。 最后执行:sudo ldconfig 使文件生效
问题2:
CUDA Error: out of memory darknet: ./src/cuda.c:36: check_error:
Assertion `0’ failed.
解决方法:
出现这问题的原因就是GPU内存不够大,解决方法就是减小内存的使用:
修改cfg/yolov3.cfg,修改如下:
[net]
# Testing
batch=1 //取消注释
subdivisions=1 //取消注释
# Training
# batch=64 //添加注释
# subdivisions=16 //添加注释
width=416 //适当减小width
height=416 //适当减小height
之后再运行,就不会出现问题了。
转自:https://blog.csdn.net/qq_36327203/article/details/84305303
- 训练自己的数据
1.将VOC数据集转换为YOLO数据集
只把.xml数据转换为.txt数据就可以。
2. 修改配置
修改data/voc.names里面的类别为自己需要的类别名称
修改cfg/voc.data文件 classes= 20
train = 对应路径/train.txt
valid = 对应路径/test.txt
names = data/voc.names
backup = 对应路径/backup
3.修改yolov3-voc.cfg文件
[yolo]项前的[convolutional]中的filters数目要修改。
[yolo]项中的classes=1要修改成自己的分类数目。对应的random=0
A.filters数目是怎么计算的:3x(classes数目+5),和聚类数目分布有关,论文中有说明;
B.如果想修改默认anchors数值,使用k-means即可;
C.如果显存很小,将random设置为0,关闭多尺度训练;
E.前100次迭代loss较大,后面会很快收敛;
4.训练
模型下载:
wget https://pjreddie.com/media/files/darknet53.conv.74
训练代码:
./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74
如果出现错误:
darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.
在命令行前面加上sudo,再执行。