① 【darknet】配置完成后就闪退
点击生成目录中的darknet.exe就会迅嫌发生闪退现象
在网络上并没有查阅到好的解决办法,最后选择在Visual Studio中进行了本地调试灶昌纯器调隐咐试,能够成功停留在darknet.exe的界面了。
② YOLO 检测多张图片并保存标签信息
YOLO 是一个基于深度学习的end-to-end、real-time目标检测方法,至今已经有YOLOv1、YOLOv2、YOLO9000、YOLOv3 4个版本。YOLO网络由作者用C和CUDA语言写的一个卷积神经网络框架 darknet 实现,目前github也有tensorflow,pytorch等开源框架的复现,本文主要基于darknet源码修改实现对一个目录下的图片进行检测并保存检测结果图片和标签信息。
源码修改版本已上传至github: https://github.com/bichenghu/YOLO
YOLO测试图片有两种方式
其中不指定输出路径的命令在darknet/目录下生成predictions.jpg;指定输出路径的时候只需要输入前缀,结果规定了.jpg后缀。
事实上,单张图片的测试也可以用如下通用迅大方式:
如果上述通用命令不指定输出路径,就能实现多张图片测试,作者写的多张图片测试是在加载一次模型后,再一次一次的输入图片路径测试,这样的方式似乎不太实用,一般情况下我们想备冲在一个文件夹下对所有图片进行检测,保存其标签信息,这就需要通过修改源码来实现。需要修改到的文件主要有:include/darknet.h src/image.c examples/detector.c examples/darknet.c
整个检测的入口为:examples/darknet.c 其main函数用于判断参数,从而选择对应函数。对于detect参数,将直接跳转到detector.c中的test_detector函数。test_detector函数定义如下:
在darknet.c中ln437处,这里char *filename = (argc > 4) ? argv[4]: 0;仿昌歼说明当参数大于4个时,默认第5个参数为测试图片路径filename,显然这样我们就无法检测文件夹下的图片了,因此为filename加一个输入标识 -input,这样我们后面就可以添加输入路径idir和输出路径odir参数了(这里输出路径定义为存放images和labels路径)。
detector.c主要修改test_detector函数,其中draw_detections_person函数由draw_detections函数修改而来,draw_detections函数定义在src/image.c中,用于对每张图片进行画框处理。在这里我只需要行人信息,因此对于draw_detections_person函数,需要用到图片路径信息,输出文件夹路径。对于单张图片,图片路径信息就是前面的filename,对于多张图片,图片路径信息为输入文件夹加上在该文件夹内遍历的得到的图片名,所以修改后的test_detector函数需要添加idir,odir两个参数。
image.c主要修改draw_detections_person函数,用于对图片进行画框处理,并保存标签信息。
添加draw_detections_person函数定义:
对于单张图片,可以用如下命令:
对于文件夹内多张图片,可以用如下命令:
当然,在results目录下要提前建好images和labels文件夹。
③ 1060 darknet参数怎么配置
1.解压大佬的darknet后,进入darknet-master/build/darknet目录下打开darknet.vcxproj,将cuda版本替换成自己的版本,比如凯如我是8.0的,将里面的cuda版本闷拿全部替换成8.0。
2.用VS2015(当盯罩启然其他版本稍微修改也可以)打开darknet.sln(CPU版本则打开darknet_no_gpu.sln)。
3.然后改成release,x64。
4.然后配置实际自己的OpenCV的安装环境(include,lib目录)
5.最后生成,即可编译成功,成功后会在x64目录下生成darknet.exe。
④ 怎样对darknet进行加速
由于darknet中并没有采用openblas、mkl等矩阵库进行运雹态算,导致其改正速度较慢。
那么我们考虑采用openblas来对其进行加速。
具体怎么核肆悔做呢?
1.修改gemm.c源码
2.修改makefile文件
⑤ yolo darknet 浮点数例外 核心存储 问题排查及解决方法
在运行darknet对视频进行物体分类检测过程中,突然程序crash中止,报如下错误
或者
darknet的github有相关的issue: https://github.com/pjreddie/darknet/issues/1419
但是我遇到的问题是开始可以分类检测,后来crash的,与上面的一上来就crash不同。
所以进行了如下另外的拍错:
经过下面的"排查过程",发现最终原因是发生了分母为0的除法,导致crash
crash点在文件 src/yolo_layer.c的257行(具冲汪洞体行数可能会变)的 correct_yolo_boxes() 函数
因为传进来的h为0,所以导致程序crash.
在crash点处增加判断,放置除0错误,在陵铅 correct_yolo_boxes() 函数入口处添加防护如下:
上述定位crash点的排查过程如下,参考了博客"gdb调试详解与darknet框架gdb调试过程"( https://blog.csdn.net/zdaiot/article/details/83066133 )的调试散枯过程:
修改文件 Makefile ,置DEBUG为1
重新编译 darknet
开始调试
输入运行程序需要的参数类型
将src目录添加进来
让程序运行直到crash
程序crash后,显示crash点如下,由此定位到crash点:
gdb调试详解与darknet框架gdb调试过程
https://blog.csdn.net/zdaiot/article/details/83066133
⑥ darkNet配置的问题
vs2017 error MSB8036: The Windows SDK version 8.1 was not found.
按照路燃饥径打开命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin" 发现下面没有\bin\nvcc.exe
这个错误是因为cuda版本不对应的问题,原项目用的cuda版本是11.1,而我的是10.1。解决方法:打开darknet.vcxproj(就做段培在darknet.sln同级目录下)修改
改为
(不同版本的cuda和这里的compute_xx,sm_xx的对应关系不知道是怎么对应的,如果有知道的小伙伴还请赐教纯唯)
⑦ 在Windows下Darknet.exe的命令参数
完成《 从零开始在Windows10中编译安装YOLOv3 》后,直接使用darknet.exe检测图像和视频。
第一没唯 ,使用YOLOv3 COCO检测图片(picture)的命令参数格式:
darknet.exe detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights -thresh 0.25
第二 ,使用YOLOv3 COCO检测视频(video)的命大察雀令参数格式:
darknet.exe detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -ext_output test.mp4
第三 ,使用YOLOv3 COCO检测Webcam的命令参数格式:
darknet.exe detector demo cfg/coco.data cfg/yolov3.cfg yolov3.weights -c 0
更多详细的命令参考滚早:
https://github.com/AlexeyAB/darknet#how-to-use-on-the-command-line
参考阅读《 深度学习图像识别技术 》
⑧ 谁有tiny-yolo 的训练权重文件呢,就是darknet conv weights,急求!
注意:1、测试软件:ubuntu14.04+cuda7.5+cudnn5.0+opencv2.4.10(titanX) 2、有些您复制的终端命令如果不能在终端运行,请注意英文全角半角问题,您可以将命令输入终端,无须复制粘贴命令
第一部分:darknet安装
下载darknet,终端输入:
git clone https://github.com/pjreddie/darknet.git
修改makefile文件:
cpu设置:gpu=0,opencv=1,cudnn=0
gpu设置:gpu=1,opencv=1,cudnn=1
注意nvcc的路径!!!
(设置自己nvcc的路径)
终端输入:
cd darknet make
第二部分:下载voc及转换yolo格式
下载数据(目录自己设置即可):
curl -o http://pjreddie.com/media/files/VOCtrainval_11-May-2012.tar curl -o http://pjreddie.com/media/files/VOCtrainval_06-Nov-2007.tar curl -o http://pjreddie.com/media/files/VOCtest_06-Nov-2007.tar tar xf VOCtrainval_11-May-2012.tar tar xf VOCtrainval_06-Nov-2007.tar tar xf VOCtest_06-Nov-2007.tar
找到voc_label.py程序,在script里面,转换格式,运行:
ython voc_label.py
生成train文件:
cat 2007_* 2012_train.txt > train.txt
进入yolo.c修改18/19两行,修改成您voc数据路径和生成的weights路径(一般设置为darknet/backup),注意修改完了需要重新编译darknet
第三部分:下载预训练分类模型
这里只提供yolo-tiny模型啦,大模型参考作者官网下载即可
网盘下载链接:http://download.csdn.net/detail/samylee/9555843
下载完成放在darknet目录下以便调用
第四部分:修改voc.data
打开cfg/voc.data文件,修改您的voc数据路径即可
第五部分:训练voc数据
darknet目录下运行:
./darknet detector train cfg/voc.data cfg/tiny-yolo-voc.cfg darknet.conv.weight
生成的caffemodel会存放在darknet/backup目录下
第六部分:demo
darknet目录下运行:
./darknet detector test cfg/voc.data cfg/tiny-yolo-voc.cfg backup/tiny-yolo-voc_1000(迭代步数自己设置啦).weights data/dog.jpg
第七部分:demo效果图:
见博客结尾部分
第八部分:训练自己的数据集
数据及制作部分:
参考我的yolo-v1博客:
http://blog.csdn.net/samylee/article/details/51729729
咱群里文件有转换成yolo格式的文件,找一下哦
训练部分:和第五部分是一样的啦
效果图如下: