最新yolov
yolov家族,最新yolov5 速度是yolov4的2倍
https://github.com/ultralytics/
一个技术牛的 https://pprp.github.io/ *****
darknet官网:
https://pjreddie.com/
git:
https://github.com/pjreddie/darknet
yolov4:
https://github.com/AlexeyAB/darknet
一 环境
ubuntu16.04
Driver Version: 440.44 NVIDIA的驱动
查看命令:nvidia-smi
cuda 10.0 NVIDIA的运行框架
查看命令: nvcc -V
cudnn 7.6.4 NVIDIA的加速库
查看命令: cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
相关安装包:
NVIDIA-Linux-x86_64-440.44.run
cuda:cuda_10.0.130_410.48_linux
cudnn:
1 先安装libcudnn7_7.6.4.38-1+cuda10.0_amd64.deb
2 再安装libcudnn7-dev_7.6.4.38-1+cuda10.0_amd64.deb
相关下载链接
https://developer.nvidia.com/cuda-toolkit-archive
https://developer.nvidia.com/rdp/cudnn-archive
二 darknet编译
下载:
git clone https://github.com/pjreddie/darknet.git
编译:
make:GNU Make 4.1
修改Makefile
GPU=1 #支持GPU运行
CUDNN=1 #支持GPU加速
OPENCV=0 #OPENCV支持选项
编译参考:
https://blog.csdn.net/luoying_ontheroad/article/details/81136973
https://www.cnblogs.com/yumoye/p/10548714.html
编译成功测试:
执行:./darknet
显示:usage: ./darknet
可能有的错误提示:
1、./darknet: error while loading shared libraries: libcudart.so.10.0: cannot open shared object file: No such file or directory
则表示当前环境 cuda相关环境变量未设置
在 /etc/profile 或 ~/.bashrc中加入下面两行配置
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
其中/usr/local/cuda是安装cuda的路径。
然后执行:source /etc/profile 或 source ~/.bashrc
2、CUDA Error: CUDA driver version is insufficient for CUDA runtime version darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.
一般问题是cuda版本和nvidia驱动版本不对。具体版本可参考:
3 CUDA Error: out of memory darknet: ./src/cuda.c:36: check_error: Assertion `0' failed.
一般修改cfg。注意测试用测试配置,默认是训练配置,如下修改:
# Testing
batch=1 取消注释
subdivisions=1
# Training
#batch=64 注释掉
#subdivisions=16
三 darknet 命令相关
darknet command [train/test/valid] [cfg] [weights (optional)]
其中 detect 命令 等同于 detecor test
参考 https://blog.csdn.net/weixin_30332241/article/details/99568716
四 训练
训练参考
1 https://www.jianshu.com/p/8665a5bd206a
2 https://zhuanlan.zhihu.com/p/45852709
3 https://blog.csdn.net/john_bh/article/details/80625220
4 https://my.oschina.net/farces/blog/2209444 这篇比较好
5 http://guanghan.info/blog/en/my-works/train-yolo/
6 https://blog.csdn.net/NNNNNNNNNNNNY/article/details/53017199?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase
cfg文件参数说明 https://blog.csdn.net/czksnk/article/details/100692881
输出各指标说明:https://blog.csdn.net/xiao_lxl/article/details/85127959?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.nonecase
训练优化:https://www.cnblogs.com/pprp/p/10204480.html
下载`yolov3.weights`
wget https://pjreddie.com/media/files/yolov3.weights
下载`darknet53.conv.74`
wget https://pjreddie.com/media/files/darknet53.conv.74
遇到的问题
1 Cannot load image "" STB Reason: can't fopen 或 can‘t open file:train.txt
一般是文件格式或路径不对,回车换行需要转换linux格式的,用notepad++ 转换(测试ok),ultraEdit转换(我测试不ok),还有就是路径问题,在.data文件中 ,配置train、valid、names的文件路径(未ok),不配置,则默认为:data目录下的train.list和valid.lsit
、names.list 配置文件 my.data 的内容:
classes=2
valid=/home/ai/darknet/data/valid.list
backup=backup
2、CUDA Error: out of memory,darknet: ./src/cuda.c:36: check_error: Assertion `0' failed
一般是gpu内存不够,需要重新设置cfg文件中的值
batch=32
subdivisions=16
主要是减少 batch/subdivisions的比例倍数。倍数越大需要gpu内存越大
3 darknet: ./src/parser.c:315: parse_yolo: Assertion `l.outputs == params.inputs' failed
主要是yolov3的卷积层 filters不正确 正确 filters=3*(分类数+5)
4 sprintf(buff, "%s/%s.backup", backup_directory, base); 这句存在bug,输出的备份文件名有可能是:
yolov3.backup/:backup(.data文件中定义的备份目录)
训练图形显示
https://blog.csdn.net/qq_34806812/article/details/81459982?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase
在自己训练的结果下面,继续训练
选一个迭代的权重文件 .weights,然后执行以下命令转换
./darknet partial cfg/habit.cfg habit_3000.weights habit_3000.conv.23 23
也可以直接使用.weights文件进行继续训练
python环境的运行
1.libdarknet.so拷贝到cuda目录下
我是建立一个软链接 ln -s /home/ai/darknet/libdarknet.so /usr/local/cuda/lib64/libdarknet.so
2 修改darknet.py
net = load_net(b"cfg/yolov3.cfg", b"yolov3.weights", 0)
meta = load_meta(b"cfg/coco.data")
r = detect(net, meta, b"data/dog.jpg")
在原来的字符串基础上加上 b
darknet的浅层特征可视化请参看:https://www.cnblogs.com/pprp/p/10146355.html
AlexyAB大神总结的优化经验请参看:https://www.cnblogs.com/pprp/p/10204480.html
如何使用Darknet进行分类请参看:https://www.cnblogs.com/pprp/p/10342335.html
Darknet loss可视化软件请参看:https://www.cnblogs.com/pprp/p/10248436.html
如何设计更改YOLO网络结构:https://pprp.github.io/2019/06/20/YOLO%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/
YOLO详细改进总结:https://pprp.github.io/2018/06/20/yolo.html
五 相关理论理解
1、anchors的理解
https://blog.csdn.net/weixin_43384257/article/details/100974776