3—YOLO:训练自己的数据
YOLO: Real-Time Object Detection:https://pjreddie.com/darknet/yolo/
YOLO模型训练可视化训练过程中的中间参数:http://blog.csdn.net/yudiemiaomiao/article/details/72469135
——————————————————————
一.制作数据集
1.数据集准备
(1)将数据集VOCdevkit2007拷贝到darknet\scripts下 (2)VOCdevkit2007修改名称为VOCdevkit2.修改darknet\scripts\voc_label.py
sets=[('2007', 'train'), ('2007', 'val'), ('2007', 'test')]
classes = ["comp"] #os.system("cat 2007_train.txt 2007_val.txt 2012_train.txt 2012_val.txt > train.txt")
#os.system("cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt > train.all.txt")3.终端进入darknet\scripts,执行:python voc_label.py
此后可以看到:
VOCdevkit\VOC2007里多了一个labels文件夹(如下)
darknet\scripts下多了2007_train.txt、2007_val.txt和2007_test.txt三个文件
二.修改配置文件
(1)修改data/voc.names文件:comp(2)修改cfg/voc.data文件。
classes= 1 //类别数
train = /home/gjw/darknet/scripts/train.txt //训练集
valid = /home/gjw/darknet/scripts/2007_test.txt //测试集
names = data/voc.names
backup = backup //在darknet新建一个backup目录,存储.weight(3) 修改×××.cfg(以yolo-voc.cfg为例),修改2个参数(filters,class),见下:
① 【region】层中 classes 改成1。
② 【region】层上方第一个【convolution】层,其中的filters值要进行
修改,改成(classes+ coords+ 1)* (NUM) ,我的情况中:(1+4+1)* 5=30
③ learning_rate:学习率
④ max_batches:最大迭代次数
三.下载预训练模型
下载好的预训练模型保存在/darknet/目录下PS:经过以上的修改,记得重新make一下darknet
四.训练
在darknet/目录下新建backup目录用于存放训练生成的模型
官网上下载预训练的模型,训练命令:./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darknet19_448.conv.23./darknet detector train cfg/voc.data cfg/yolo-voc.cfg yolo-voc.weights【结果】训练完毕就可以生成weights文件
Saving weights to backup/yolo-voc.backup
Saving weights to backup/yolo-voc_100.weights
Saving weights to backup/yolo-voc_final.weights
五.评估性能http://blog.csdn.net/hysteric314/article/details/54093734
经过漫长的训练过程,model终于训练好了,为了评估性能,可以使用以下指令
./darknet detector recall cfg/voc.data cfg/yolo_voc.cfg backup/yolo_voc_final.weights需要注意的是,在使用这个指令之前,我先修改一下src/detector.c 这一函数
(1)位置第375行改成:list *plist = get_paths(“/home/yolo_v2_tinydarknet/darknet/infrared/infrared_val.txt”);//改成infrared_val.txt的完整路径
(2)运行上面的指令会调用validate_detector_recall函数,
这个函数中有个参数thresh(阈值),默认的值是.001,这个默认
值设的很小,会让系统识别出更多的框来,导致proposals值激增,
还会让recall值变高,达到98.5%。最终我改成了 .25。
(3)上面的函数只会显示出recall值,没有precision值,precision的
值计算方法是:识别为正确的个数/画了多少个框,所以我修改了代码。
我把第447行显示结果的代码修改为 :
fprintf(stderr, "ID:%5d Correct:%5d Total:%5d\tRPs/Img: %.2f\tIOU: %.2f%%\tRecall:%.2f%%\t", i, correct, total, (float)proposals/(i+1), avg_iou*100/total, 100.*correct/total);
fprintf(stderr, "proposals:%5d\tPrecision:%.2f%%\n",proposals,100.*correct/(float)proposals); 运行后显示的结果是:
Correct :可以理解为正确地画了多少个框,遍历每张图片的Ground Truth,网络会预测出很多的框,对每一Groud Truth框与所有预测出的框计算IoU,在所有IoU中找一个最大值,如果最大值超过一个预设的阈值,则correct加一。Total:一共有多少个Groud Truth框。Rps/img:p 代表proposals, r 代表region。 意思就是平均下来每个图片会有预测出多少个框。预测框的决定条件是,预测某一类的概率大于阈值。在validation_yolo_recall函数中,默认的这一个阈值是0.001,这一阈值设置的比较低,这就会导致会预测出很多个框,但是这样做是可以提升recall的值,一般yolo用于画框的默认值是.25,使用这个阈值会让画出来的框比较准确。而validation_yolo_recall使用的阈值改成。25的时候,Rps/img 值会降低,recall的值会降低,所以validation_yolo_recall默认使用一个较低的阈值,有可能作者的目的就是为了提高recall值,想在某种程度上体现网络的识别精度比较高。IoU、Recall、Precision:解释起来比较麻烦,请看博客有详细说明:
http://blog.csdn.net/hysteric314/article/details/54093734
六.测试单张图像
./darknet detector test cfg/voc.data cfg/yolo-voc.cfg backup/yolo-voc_final.weights data/000020.jpg[扩展]可以通过-thresh 0设置所有检测的阈值为0,同理,也可以通
过设置不同的阈值进行检测。./darknet detect cfg/yolo.cfg yolo.weights data/dog.jpg -thresh 0
七.测试摄像头/视频
./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights./darknet detector demo cfg/coco.data cfg/yolo.cfg yolo.weights <video file>
http://blog.csdn.net/burning_keyboard/article/details/71056164
http://blog.csdn.net/xjz18298268521/article/details/61922405
http://blog.csdn.net/sinat_30071459/article/details/53100791
http://blog.csdn.net/sinat_30071459/article/details/53161113
3—YOLO:训练自己的数据相关推荐
- [2G显卡]使用darknet/YOLO训练自己的数据
本文主要针对用显存较小的电脑上训练自己的YOLO数据,在clone了最新的darknet后结果只能跑得动yolov2,使用的是yolo.cfg与yolo.weights做的初始测试.随后修改配置文件, ...
- yolo训练自己的数据所用到的标记图片的工具
1.https://github.com/tzutalin/labelImg 上图 通过此工具可以生成XML文件
- ubuntu18.04下用yolo训练自己的数据集
ubuntu18.04下用yolo训练自己的数据集并进行检测 收集数据集并标注 数据集的量对于检测的准确度有很高的影响,所以应该尽可能的获取较多的数据集.这里,我从百度图片上获得了92张夏洛特中的动漫 ...
- Yolo v5 训练自己的数据从训练到调参实战详解
主要分3章,第一章先跑通模型代码,熟悉yolo v5的输入和输出:第二章训练自己的数据:第三章讲解模型参数部分 文章目录 一.跑通模型 1.代码下载 2.环境配置 3.参数路径调整 3.运行detec ...
- YOLO-v5训练自己的数据+TensorRT推理部署(2)
YOLO-v5训练自己的数据+TensorRT推理部署(2) 代码下载地址:下载地址 YOLO v5转TensorRT模型并调用 0.pt模型转wts模型 python3 gen_wts.py # 注 ...
- YOLO-v5训练自己的数据+TensorRT推理部署(1)
YOLO-v5训练自己的数据+TensorRT推理部署(1) 代码下载地址:下载地址 YOLO v5在医疗领域中消化内镜目标检测的应用 YOLO v5训练自己数据集详细教程
- YOLOv3: 训练自己的数据(绝对经典版本1)
为什么80%的码农都做不了架构师?>>> windows版本:请参考:https://github.com/AlexeyAB/darknet linux 版本:请参 ...
- yolov3训练自己的数据_YOLOv4 训练自己的数据集
1.克隆仓库下来. git clone https://github.com/AlexeyAB/darknet 2.对darknet文件夹下的Makefile进行修改.(主要是增加自己nvcc的路径, ...
- Yolov3:win10下训练自己的数据(GPU版)(详细步骤)
前言 最近在做用yolov3进行目标识别,关于前期已经成功检测成功了,大家有兴趣的可以看我之前写的一篇博客:VS2015+opencv3.4.2+yolov3成功检测,这篇博客主要介绍如何 ...
- yolov3系列(二)-keras-yolo3训练自己的数据
训练自己的数据进行目标检测 0.建立相关的目录 在项目根目录下新建VOCdevkit\VOC2007\Annotations.VOCdevkit\VOC2007\ImageSets\Main.VOCd ...
最新文章
- ios 沙盒 plist 数据的读取和存储
- Python基础知识(第四天)
- python中的装饰器和抽象类
- Linux ct获取本机ip,linux ip命令
- 小程序中上传图片并进行压缩(二)
- GeoDa 空间自相关操作步骤
- iNavFlight之MSP DJI协议分析
- 使用Directshow + LAVFilter做一个万能格式的多媒体播放器
- 安大计算机学院ACM,全员考研上岸、ACM大赛获奖,乘风破浪的学霸寝室!
- 【转】Maximal Information Coefficient (MIC)最大互信息系数详解与实现
- 漫画版的你,离线版AnimeGANv2初体验
- loading的使用
- 工具软件价值分化,Adobe、万兴科技、猎豹移动们为何不同命?
- 超好用的java反编译工具(Java Decompiler)
- 为什么我要用GoEasy替代WebSocket
- 陶瓷电路板与常规PCB板的区别
- css用flex实现字体垂直居中对齐
- 江西财经职业学院计算机应用技术代号,江西财经职业学院计算机协会第三届PPT创意大赛...
- 如何拷贝VCD里面加密隐藏的文件
- 《演说之禅——职场必知的幻灯片秘技》
热门文章
- 【开发工具】SCALA
- 你知道你的模型可以为公司赚多少钱吗
- 元宇宙企业大比拼:云宇宙数据中台:iwemeta.com
- 直击CVPR2017:商汤科技打造技术盛宴23篇论文刮起中国风 By 机器之心2017年7月25日 10:14 近日,CVPR2017 在夏威夷如火如荼地进行,作为全球计算机视觉顶级会议,CVPR
- GMIS 2017 Martin Müller演讲:深度学习时代的启发式搜索
- iis 7 php_Windows server 2008 下基于IIS7配置php7.2运行环境
- Redis-08Redis数据结构--基数HyperLogLog
- Oracle优化09-绑定变量
- 导出matlab程序,Matlab数据导入导出
- java接口示例_【基础篇】java-接口及其示例