前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白入门,手把手教你用YOLO-v3进行目标检测与识别

小白入门,手把手教你用YOLO-v3进行目标检测与识别

作者头像
唐国梁Tommy
发布2021-05-08 15:15:13
3.2K0
发布2021-05-08 15:15:13
举报

老铁们,今天我们将继续配置YOLO-v3目标检测与识别深度学习框架,基于COCO数据集进行训练,并测试模型的效果,最后,我们将通过YOLO-v3进行摄像头实时目标物体检测与识别应用。

首先,我们先了解一下COCO数据集。

一. COCO数据集简介

1. 官网数据集下载地址:

https://cocodataset.org/#download

COCO的 全称是Common Objects in COntext,是微软团队提供的一个可以用来进行图像识别的数据集。MS COCO数据集中的图像分为训练、验证和测试集。COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像。

2. COCO2014数据集下载:

在darkent框架内,执行一个script脚本可以下载所有数据集。

① 首先,进入到darknet文件夹下;

② 进入script文件夹下;

③ 查看get_coco_dataset.sh脚本,命令:vim get_coco_dataset.sh

显示内容如下:

执行这个get_coco_dataset.sh 脚本后,自动下载数据集,并解压。此过程非常漫长,建议各位朋友直接拷贝其中的数据集下载链接到迅雷加速下载,能节省大量时间。

④ 执行下载命令如下,注意保存数据集路径,如果这里设置不对,后面会报错。【同志们,一定要注意路径,不然就会陷入无穷无尽的报错之中。。。

请注意我的路径,如果输入命令后,出现如下信息,恭喜你,操作正确,已经远离苦海。【建议用迅雷下载,再自行解压,注意解压路径即可。我就是这么干,速度快的飞起。。。

二. 安装COCO API

具体步骤如下:

1. 由于在第一步骤中,你已经执行了脚本get_coco_dataset.sh,在你的darknet/data文件夹下已经有了coco文件夹,那么可以接着执行后续操作,安装COCO API;

2. cd coco/PythonAPI

3. 修改Makefile,命令如下:vim Makefile,需要将其中的python全部改为python3,保存退出;保存和退出命令:① 先按键盘上的ESC;②再输入命令 :wq 【注意,有冒号】

将python全部替换为python3

4. 编译一下,命令如下:make -j8

如果输出以下一坨信息,那么编译成功啦,奥利给 :)))

三. 案例实操环节

1. 进入darknet项目下:

2. 进入cfg下查看配置文件,命令如下:

注意文件 yolov3.cfg ,我们在训练前需要修改里面的一些内容。

3. 修改yolov3.cfg,命令如下:vim yolov3.cfg

进入到如下界面:

这些参数啥意思呢?这里稍作解释:

① batch : 批处理的大小,如果你的GPU显存够大,这里可以设置为64;

② subdivisions : 将batch分组,假设batch=64, 那么可以设置subdivision=8,即分成8组,8 x 8 = 64,减少显存的压力,再分批处理;

③ width : 图片的宽度;

④ height : 图片的高度;

⑤ channels : 图片通道;

⑥ momentum : 动量,加速梯度下降;

⑦ decay : 权重衰减的正则项,防止过拟合;

【以下四个参数用于数据增强】

⑧ angle : 角度;

⑨ saturation : 饱和度;

⑩ exposure : 曝光度;

(11) hue : 色调;

(12) learning_rate : 学习率;

(13) burn_in : 门槛,如果大于burn_in,采用下面的steps参数值;

(14) max_batches : 训练次数的上限,达到则停止学习;

(15) policy ,steps,scales : 如果训练超过400000次,学习率下调10倍,超过450000次,再下调10倍;

【重点讲解:yolo参数设置部分,见下图】

① mask : 0, 1, 2 代表选取anchors的前三个,分别是:10,13 , 16,30 , 33,23

② classes : 类别的数量;

③ num : 指定每一个anchor需要预测的BoundingBox的数量;

④ jitter : 指定数据增强部分,随机调整图片宽高比的范围;

⑤ ignore_thresh : 针对IOU设置的参数,当模型预测的检测框与物体真实框匹配的时候,如果IOU大于这里设置的阈值(0.5 - 0.7之间),则不参与损失的计算。目的是控制参与损失计算的检测框的规模。

⑥ random : 训练过程中是否采用随机多尺度,1 :是(多尺度),0 :否(固定尺度);

4. 修改COCO数据路径的配置,命令如下:

vim coco.data

默认的参数值界面:

根据在你电脑上COCO数据集的路径,修改里面的路径。【注意:不要用他的或我的路径,而是用你自己的路径。】

以下是我的数据集存放路径,观察一下:

coco文件夹下的内容:

5. 模型开始训练

输入命令:./darknet detector train cfg/coco.data cfg/yolov3.cfg

回车后开始训练:

当出现以下非常多的计算信息时,恭喜你,老铁,一切都顺利啦。。。泡杯咖啡去休息一下吧

6. 老铁,喝完咖啡后再继续死磕,咱们继续用预训练模型继续训练,那怎么引入呢?

① 去YOLO官网下载预训练模型;https://pjreddie.com/media/files/yolov3.weights

福利:所有有关YOLO的配置教材、数据集、代码,我都会在百度云盘分享出来,不用担心下载不到数据集或文件。 鲜花、掌声在哪里???

② 我把预训练模型存放在backup文件夹下,如图所示:

③ 执行以下命令训练:

./darknet detector train cfg/coco.data cfg/yolov3.cfg backup/yolov3.weights

如果继续输出以下信息,恭喜你,又成功啦。。。

7. 测试一张图片的检测与识别效果:

① 输入命令:

./darknet detect cfg/yolov3.cfg backup/yolov3.weights data/dog.jpg

输出信息:

这个预训练模型的参数权重比较差,框基本上没有把狗和自行车框进去。【说来也奇怪:我用的是官网的预训练模型文件,为啥这么差?可是,官网的测试效果很好。】

② 我们现在用预训练模型 yolov3-tiny.weiths 测试,输入命令如下:

./darknet detect cfg/yolov3-tiny.cfg backup/yolov3-tiny.weights data/dog.jpg

输出结果:

输出检测效果:

8. 通过摄像头测试(注意:你的台式机或笔记本必须有摄像头)

① 输入命令如下:

./darknet detector demo cfg/coco.data cfg/yolov3.cfg backup/yolov3.weights

② 摄像头实时检测效果图:

备注:我的整个学习过程,参考的官网网站:https://pjreddie.com/darknet/yolo/ ,不过,我写的更加详细啦

更多AI相关课程,请在网易云课堂和B站关注账号:唐国梁Tommy

网易云课堂:

https://study.163.com/instructor/1028614893.htm?_trace_c_p_k2_=a8d2f7653bf94cd5a821036a432179e4

B站:

https://space.bilibili.com/474347248

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 唐国梁Tommy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云课堂
云课堂聚焦教培机构 OMO 转型,为机构提供在线及混合式课堂解决方案,极速开课、多向互动、智能沉淀、一键分发,是教培课堂便捷、稳定的教学助手。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档