没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
机器学习系列 (7)
目标检测之YOLO算法原理及Python实现
目标检测:
1.目标分类
2.目标定位
3.特征点检测
4.滑动窗口检测
5.卷积的滑动窗口实现
YOLO算法:
1.什么是YOLO
2.边界框(Bounding Box)回归
3.交并比(IOU)
4.非极大抑制(NMS)
5.Anchor box
6.候选区域(Region proposals)(optional)
7.YOLO算法总结
YOLO的Python实现:
见文章内容
申明
本文原理解释及公式推导部分均由LSayhi完成,供学习参考,可传播;代码实现部分的框架由Coursera提供,由LSayhi完成,详细数据及代码可在
github查阅。 https://github.com/LSayhi/Neural-network-and-Deep-learning (https://github.com/LSayhi/Neural-network-and-Deep-learning)
一、目标检测
1.目标分类:
目标分类即对图像中的物体进行识别分类,是目标检测的第一阶,只要求分辨出对象的类别,常用卷积神经网络(CNN)实现。例如在自动驾驶应用
中,目标分类的作用是识别出图片中的物体属于哪一个类别,属于是行人、汽车、自行车、红绿灯、护栏等。
2.目标定位:
目标定位即对图像中的物体进行位置识别,是目标检测的第二阶,要求输出对象的坐标信息,坐标常用中心点和长宽来表示。例如在自动驾驶中,
目标定位的作用是确定图片中的行人、汽车等物体的具体位置。
3.特征点检测:
特征点检测即要对物体的某些特征进行识别,这可以通过神经网络输出相应特征点的坐标来实现,只需要把网络的输出改为特征点的坐标。例如在
人脸识别应用中,识别出多组人脸特征点的信息,并根据识别出的特征点信息对此次检测的人脸进行识别。
4.滑动窗口检测:
滑动窗口检测即是要通过“滑动”检测窗口,对每一个窗口图像分别输入CNN进行识别,窗口大小可根据实际取值,例如图片像素为6286283,则可
取正方形窗口边长为小于628的整数,然后滑动窗口到其它位置,按一定顺序遍历整张图片,输出每一次窗口里是否有物体,是什么物体,性能依
赖于窗口大小的选取及滑动的步长,由于CNN需要一个个处理窗口图像,若步长和窗口较小,检测的精度提高,但需要很长的时间;如果步长和窗
口较大,虽然时间减小,但可能会降低检测精度。
Figure 1 : 滑动窗口检测示意图
5.滑动窗口的卷积实现:
滑动窗口的卷积实现是为了解决滑动窗口检测中的矛盾而提出的一种检测方式。为了构建滑动窗口的卷积实现,首先要将CNN最后的全连接层转化
成卷积层,举个例子看一下:假设用来做分类任务的CNN的输入大小是 的tensor,滤波器的大小是 ,最大池化 ,再经过两
层全连接层,输出为softmax层的大小为4(对应四种检测对象,如行人、汽车、摩托车、背景),那么通过把全连接层替换为卷积层,亦可实现和同
样的效果,只不过此时的输出的是 的tensor,过程如下图所示。
14
∗
14
∗
3
5
∗
5
∗
16
2
∗
2
1
∗
1
∗
4
Figure 2 : 全连接转卷积实现
现在通过这个例子来说明为什么滑动窗口的卷积实现更高效,假设现在整张图片的大小是 ,滑动窗口检测的窗口大小为 ,步长为
2,那么对整张图片进行滑动窗口检测需要四次检测,也就是说CNN运行了四次,不难发现(嘿嘿,真的不难!)在四次CNN运行中,有许多计算
(卷积操作)是重复的,那么如果减小这些重复计算呢?如果我们对整张 的团片一起输入CNN进行卷积操作,而不是分四次,那么则有
许多公共部分的卷积操作可以共享,大大减小了计算量,结果就是一个 的块,从正视图的角度看,四个小格子就分别对应普通滑动窗口检
测中每一次的结果。
Figure 3 : 滑动窗口的卷积实现
以上就是目标检测的基础内容,下个部分介绍YOLO算法在目标检测中的应用。
16
∗
16
∗
3 14
∗
14
16
∗
16
∗
3
2
∗
2
∗
4
二、YOLO算法
1.什么是YOLO:
算法是目标检测算法的一种。YOLO算法在处理图像时,比滑动窗口算法时间复杂度更低,它只需“观察”图片一次,
就可以检测出图片中的对象,并且可以检测多个对象,还能定位对象所在的位置(即边界),总结来说YOLO算法就是一种能够分类、定位的目标
检测算法。接下来将介绍YOLO算法的具体实现。
2.边界框预测(bounding box predictions):
在滑动窗口的实现中,我们在图像中哪一个位置检测物体取决于滑动窗口的大小和步长,所以很有可能出现检测的对象超出窗口的范围或者比窗口
小得多,所以虽然能检测到物体,但是对于物体的位置信息却难以精确获得。
在YOLO算法中,我们通过bounding box预测,可以获得物体的精确位置信息。以下图为例,假设下图 是一张 像素的图
片,你要训练的CNN的输入为 ,为了方便解释我们将整张图片划为 个网格(grid,实际可能划为 等更精细),每一个网
格中若有物体(指的是物体的中心坐标在此网格内,如果物体有部分在某网格,但中心不在此网格,则该物体不属于此网格),则该网格的置信度
设为 ,否则设为 (1表示有物体,0表示没有物体)。bounding box就是指的图片中物体的边界信息,由中心坐标 和宽高 即可
表示,然后对于每一个网格,外加 数字编码所需检测的 种类别的物体,在训练集中这些信息都是预先标注好的,中心坐标只有一个,必然属于
某个网格,宽和高不属于任一网格,可以跨越多个网格,这就解决了滑动窗口和卷积实现的滑动窗口方法只能按窗口预测位置的不灵活。
Figure 4 : Bounding box 标签设定
总结起来,对于第i个网格,标签Yi为 , 取1或0,代表网格中有无物体, 表示物体中心坐
标和高度宽度, 表示物体的种类的编码,如属于第一类则编码为 ,第二类则 ,依次类
推,如果网格中没有物体,则Pc为0,剩下的数字我们不关系其具体值,所以对于整张图片,一共有 个网格,那么这张图片的标签Y就为9个网格标
签的集合,示例如下(为了简便,图片中给出了其中三个网格的便签)。比如在这个例中, 的输入是 ,经过卷积层池化层等输出
的大小为 , 是网格的数量,实际是 提取到的 的网格特征, 是每个网格的标签,我们通过将训练集输入网络,让网络学习到
这种标签的方式,在验证集上验证,并运用到测试集上,部署到实际系统中。
YOLO
(
youonlylookonce
)
(
figure
4
)
100
∗
100
∗
3
100
∗
100
∗
3 3
∗
3 19
∗
19
1 0
(
x
,
y
) (
w
,
h
)
n n
(
Pc
,
bx
,
by
,
bh
,
bw
,
C
1,
C
2,
C
3 …
Cn
)
Pc
bx
,
by
,
bh
,
bw
C
1,
C
2,
C
3 …
Cn
(
1
,
0
,
0 … … 0
) (
0
,
1
,
0 … … 0
)
9
CNN
100
∗
100
∗
3
3
∗
3
∗
8 3
∗
3
CNN
3
∗
3 8
3.交并比:
交并比 ,即交集和并集的比值。在YOLO算法中,交并比是用来判断定位是否准确的一个指标。如果网络预测的边界框和实际的边界框是
高度重合的,则交并比会比较大,反之,则小。所以,交并比越大,则预测的位置信息就越准确。一般我们认为IOU>0.6时定位准确,当然阈值越
大,则精度越高。这一概念将运动到非极大抑制中。
Figure 5 : 交并比IOU
4.非极大抑制:
非极大抑制 ,即是抑制非极大值(不是最大值,这点在讲述具体内容时可以更加明显理解)的表现。当我们在
运行CNN进行Bouding box预测时,对于图像中的每一单个物体,我们需要做到的的是正确分类并且输出有且仅有一个边界框,然而在实际中,由
于不是所有CNN提取的物体特征都属于一个网格(虽然一个物体的中心只有一个,但是CNN不一定能准确判断出对应区域只有一个物体),所以很
有可能有多个网格输出同一区域同一个物体的积极标签,这时候它们输出的分类是一样的,只不过中心坐标和宽高不一样而已(但有交集)。那么
如何解决这个问题呢?我们知道,由于网格大小和物体大小的非包含关系,可能出现对同一个物体进行多次预测,得到多个边界框,但可以理解的
是,由于都是预测同一个物体,这些边界框是会有比较大交集的,这个时候想只保留其中的一个最可能是实际物体位置的边界框,由交并比的概
念,我们可以对满足 这两个条件的边界框进行非极大抑制,就是去掉概率 小的,
保留概率最大的那个框。当然,对于那些交并比低于阈值的,我们也同样对他们运行NMS。
具体流程,举例说明。对于这张图片,共有 个网格,我们让CNN输出 的大小预测每个网格是否有物体,是什么物体,物体坐标
信息,在这个有 网格的图片中有两俩车,对于每辆车,可能会有多个网格输出它们那有车(Pc*ci大,且(bx,by)即中心坐标在它那),如
。
Figure 6 : 可能对同一物体多次预测
那么输出的边界框就可能为,如 ,这时我们先找到对于车辆这一种类所有预测的框的置信度(概率值)中最大的一个,即右边那辆车的0.9的
那个框,将它保留,然后将和它有很高交并比的其它框抑制(变暗),由于左边那辆车的几个框与右边交并比为0,所以暂时不会被抑制(这就是为
什么称“非极大抑制”,而不是“非最大抑制”),同样的,在除去保留的那个框后,找到所有没有被抑制框中,找置信度最大的那个,也就是左边的那
个0.8的框,然后同样对和它有高交并比的框进行非极大抑制,最后剩下了右边0.9和左边0.8两个框,完成预测。如 所示
(
IOU
)
(
Non
−
Maxsuppression
,
NMS
)
①
预测结果是同一个物体且
②
边界框交并比大于某选定阈值
(
Pc
∗
Ci
)
19
∗
19 19
∗
19
∗
8
19
∗
19
Figure
6
Figure
7
Figure
8
Figure 7 : 非极大抑制过程
Figure 8 : 非极大抑制结果
Anchor box:
, 是为了解决在同一网格中存在多个物体中心点的情形而提出的,即可以让一个格子拥有检测多个对象的能力。见 ,图中人和
汽车的中点落在了同一个网格中,而根据标签的编码方式一个网格只能给出一个输出,如何解决,Anchor box就是一种解决方式。
Figure 9 : 同一网格多个对象
Anchorbox
Figure
9
剩余16页未读,继续阅读
资源评论
史努比狗狗
- 粉丝: 25
- 资源: 318
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- #P0015. 全排列 超级简单
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功