本篇文章旨在快速试验使用yolov3算法训练出自己的物体检测模型,所以会重过程而轻原理,当然,原理是非常重要的,只是原理会安排在后续文章中专门进行介绍。所以如果本文中有些地方你有原理方面的疑惑,也没关系,可以自行网上搜索相关资料,也可以先留着问题,相信你会在后续文章中找到答案。

       
上篇文章《手把手教你用深度学习做物体检测(二):数据标注》中已经介绍了如何准备我们训练模型需要用到的数据,上篇文章中有个需要注意的地方就是在生成yolov3所需格式的文件时,务必在unbuntu下生成,我之前在windows下生成然后传到ubuntu上去的,其中的路径需要手动修改成unbuntu下的路径,而且后面在unbuntu下训练的时候会遇到编码问题导致报错。数据以及目录结构如下图:
   
 
进入下一步前,请确保你准备好了上面的数据并放到了相应的目录结构下,如果你还不太清楚如何准备这些数据,建议先看看上一篇文章《手把手教你用深度学习做物体检测(二):数据标注》。       
数据准备好之后,我们需要找一个基于yolov3算法实现的成熟的训练框架,网上有很多文章都提及到了下面这三个项目:
https://github.com/qqwweee/keras-yolo3 ,基于keras编写
https://github.com/pjreddie/darknet ,基于c++编写
https://github.com/AlexeyAB/darknet , 基于c++编写
这里推荐上面的第三个,也就是AlexeyAB/darknet项目。原因有3点:
  • 该项目最近的修改时间是2019-04-16,也就是说仍然在持续维护,而另外两个项目最早的也是7个月前了。
  • 该项目的文档非常详细,比另外两个项目都详细很多。
  • 该项目支持在训练过程中实时观测损失值、mAP等重要指标的变化趋势。 
注意:下面的一切操作若无特殊说明,都是在unbuntu18.04桌面版操作系统环境下,并且假设你已经准备好了深度学习所需的硬件及软件环境,如果没有,可以参照这篇文章《如何在阿里云租一台GPU服务器做深度学习?》。
ok,让我们进入模型训练正式内容。-首先,下载AlexeyAB/darknet项目。-然后,进入项目目录,参考官网编译该项目。-接着,创建names-data目录 。-将2007_test.txt和2007_train.txt两个文件放到 names-data目录下。-下载预训练的权重文件:  http://pjreddie.com/media/files/darknet53.conv.74 ,放置到names-data目录下,训练会在该文件的基础之上进行,这样会比较快收敛,若暂时不明白也不要紧,继续往后就行了。-拷贝cfg/yolov3-voc.cfg文件到  names-data目录下,重命名为:yolo-obj.cfg,该文件中有基础需要修改如下:
  
 - names-data目录下创建voc.names文件,内容是你的目标类别,举例如下:
 
- names-data目录下创建backup目录
 
-names-data目录下创建voc.data文件,内容如下:
 
-确保VOCdevkit目录的路径同2007_test.txt、2007_train.txt两个文件中记录的图片路径所在目录一致。
 
-接下来,打开终端,输入训练命令:
./darknet detector train names-data/voc.data names-data/yolo-obj.cfg names-data/darknet53.conv.74 -gpus 1 -map
# 如果中途中断了,可以从backup目录下,找到最新的.weights文件或任意迭代周期生成的.weights文件,在此基础上继续训练,命令如下:
./darknet detector train names-data/voc.data names-data/yolo-obj.cfg names-data/backup/yolo-obj_last.weights -gpus 1 -map

训练过程开始后,除了终端会持续显示训练情况,还会额外出现一个窗口以图形的方式实时展示损失值和mAP的变化情况:

 
我的目标类别是12类,每类大概有800张,迭代到3000次以后,平均损失值开始收敛,在0.5左右,另外由于测试样本和训练样本来此同一批次采集,只是拍摄角度距离不同,并且没有引入负样本,所以mAP的值可以接近100%。这里损失值、mAP什么的如果你暂时还不清楚具体的意义,也没关系,在后续的文章中会有介绍,这里可以先直观上理解为平均损失值越小越好,mAP越接近1越好就行了。训练时间在RTX-2060上大概是3个小时左右。训练结束后,我得到下面的模型文件:
 
ok,到此模型训练过程就结束了,此时你一定想要试试模型的识别情况怎么样,你可以使用AlexeyAB/darknet项目提供的命令:
--检测图片
./darknet detector test names-data/voc.data names-data/yolo-obj.cfg names-data/backup/yolo-obj_3000.weights -ext_output names-data/images/IMG_0728.JPG--检测视频
./darknet detector demo names-data/voc.data names-data/yolo-obj.cfg names-data/backup/yolo-obj_3000.weights -ext_output names-data/videos/food52hd.mp4 -out_filename names-data/videos/food52hd_detect.mp4

此时,如果顺利,你将会看到目标被检测出来了,但是有一个问题,就是所有的中文都显示成了乱码,如果你想快速知道类别检测的对不对,可以将names-data目录下的voc.names文件内容改为英文,此时你将会看到类别正常显示出来了,但是没有显示对应的置信度,置信度可以直观上理解为该目标为当前显示类别的概率以及该矩形检测框位置的置信度,所以如果有置信度的显示,便于我们进一步了解目标检测的情况。

关于中文乱码和置信度缺失的问题,由于本篇文章已经够长的了,所以将会在下一篇《手把手教你用深度学习做物体检测(四):模型使用》中进行阐述,下一篇文章中,我们会基于python来实现一个模型使用程序,以及为什么非要用python来重新实现一个模型使用程序的原因。

ok,本篇就这么多内容啦~,感谢阅读O(∩_∩)O,88~
名句分享


 赵客缦胡缨,吴钩霜雪明。银鞍照白马,飒沓如流星。
十步杀一人,千里不留行。事了拂衣去,深藏身与名。
闲过信陵饮,脱剑膝前横。将炙啖朱亥,持觞劝侯嬴。
三杯吐然诺,五岳倒为轻。眼花耳热后,意气素霓生。
救赵挥金槌,邯郸先震惊。千秋二壮士,煊赫大梁城。
纵死侠骨香,不惭世上英。谁能书閤下,白首太玄经。
—— 《侠客行》【唐】李白  
为您推荐


如何在阿里云租一台GPU服务器做深度学习?
手把手教你用深度学习做物体检测(二):数据标注
手把手教你用深度学习做物体检测(一): 快速感受物体检测的酷炫
ubuntu16.04安装Anaconda3
Unbuntu下持续观察NvidiaGPU的状态

转载于:https://www.cnblogs.com/anai/p/11455320.html

手把手教你用深度学习做物体检测(三):模型训练相关推荐

  1. 手把手教你用深度学习做物体检测(二):数据标注

      "本篇文章将开始我们训练自己的物体检测模型之旅的第一步-- 数据标注."   上篇文章介绍了如何基于训练好的模型检测图片和视频中的物体,若你也想先感受一下物体检测,可以看看上篇 ...

  2. 手把手教你用深度学习做物体检测(四):模型使用

    上一篇<手把手教你用深度学习做物体检测(三):模型训练>中介绍了如何使用yolov3训练我们自己的物体检测模型,本篇文章将重点介绍如何使用我们训练好的模型来检测图片或视频中的物体.   如 ...

  3. python硬件驱动_从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!...

    原标题:从零开始:手把手教你安装深度学习操作系统.驱动和各种python库! 为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指 ...

  4. 【深度学习】基于PyTorch的模型训练实用教程之数据处理

    [深度学习]基于PyTorch的模型训练实用教程之数据处理 文章目录 1 transforms 的二十二个方法 2 数据加载和预处理教程 3 torchvision 4 如何用Pytorch进行文本预 ...

  5. 案例 :手把手教你运用深度学习构建视频人脸识别模型(Python实现)

    作者:Faizan Shaikh :翻译:季洋:校对:王雨桐: 本文约2700字,建议阅读10+分钟. 本文将展示如何使用开源工具完成一个人脸识别的算法. 引言 "计算机视觉和机器学习已经开 ...

  6. 手把手教你使用深度学习的方法进行人脸解锁

    来源:DeepHub IMBA 本文约3000字,建议阅读8分钟 本文手把手教你如何创建人脸解锁算法. 今天,我们将使用深度学习来创建面部解锁算法.要完成我们的任务需要三个主要部分. 查找人脸的算法 ...

  7. 独家 | 手把手教你运用深度学习构建视频人脸识别模型(Python实现)

    作者:Faizan Shaikh 翻译:季洋 校对:王雨桐 本文约2700字,建议阅读10+分钟. 本文将展示如何使用开源工具完成一个人脸识别的算法. 引言 "计算机视觉和机器学习已经开始腾 ...

  8. 手把手教你安装深度学习软件环境(附代码)

    来源:机器之心 本文长度为2800字,建议阅读5分钟. 本文向你解释如何在一台新装的 Ubuntu 机器上安装 Python 和 Nvidia 硬件驱动.各类库和软件包. 为了进行强化学习研究,我最近 ...

  9. 保姆级教程:手把手教你使用深度学习处理文本

    大家好,今天给大家分享使用深度学习处理文本,更多技术干货,后面会陆续分享出来,感兴趣可以持续关注. 文章目录 NLP技术历程 准备数据 标准化 词元化Tokenization(文本拆分) 技术提升 建 ...

最新文章

  1. SAP物料移动类型和自动科目设置(包含财务,pp)
  2. python图例重复显示_matplotlib中的legend()——用于显示图例
  3. 计算机英语基础课程论文,计算机专业英语课程教学论文
  4. 浅谈专有云MQ存储空间的清理机制
  5. NIO - Selector源码分析
  6. 用Java解决生产者-消费者问题
  7. java支持的数据类型有哪些_Java支持的数据类型有哪些?什么时候自动装拆箱?...
  8. 机器学习降维-深度AI科普团队
  9. flutter网络请求dio的get、post、上传文件、下载文件总结
  10. 单级离心压缩机行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  11. html5控制gif图的播放和暂停,使用JS和canvas实现gif动图的停止和播放代码
  12. 【MacOs系统-M2安装2022新版AWVS渗透工具】-保姆级安装教程
  13. python批量处理text_【RhinoPython】Rhino如何批量替换text 和Dot
  14. 搜索引擎都有哪几种类型?
  15. Spring Boot系列 —(一)手把手搭建 SpringBoot 项目
  16. 【51单片机】OOK无线通讯在无线门磁报警中的应用
  17. keil出现蓝色小箭头
  18. Android 使用so库的遇到的坑
  19. 最全APP测试思想及流程要点,高薪测试人员一定要看
  20. 在Visual Studio中添加数据库和.xsd文件(DataSet)

热门文章

  1. 如何用Linux外接显示器或投影仪
  2. 传统机械硬盘工作原理
  3. Excel催化剂开源第12波-VSTO开发遍历功能区所有菜单按钮及自定义函数清单
  4. mysql存储过程list参数_mysql存储过程教程(1)
  5. mysql存储过程传参问题
  6. 计算机服务选项卡在哪里,常规选项卡在哪_电脑上的“常规”选项卡在什么地方啊?...
  7. 【44. 通配符匹配】动态规划 / 贪心
  8. 单例模式instance
  9. Sklearn.metrics函数
  10. 记一次简单的挖矿病毒清除---实战