您的位置:首页 > 理论基础 > 计算机网络

目标检测中YOLO网络模型的介绍

2019-02-25 15:32 369 查看

目前,在目标检测领域大致分为两大流派:
1、(two-stage)两步走算法:先计算候选区域然后进行CNN分类,如RCNN系列网络
2、(one-stage)一步走算法:直接同时输出定位和分类结果,如SSD、YOLO系列网络
两步走的算法准确率较高,然而计算速度慢,经过改进的Faster R-CNN检测时间为5-7FPS,为了满足实际场景的实时性,产生了YOLO、SSD等算法。

YOLO的检测思想不同于RCNN,其将目标检测作为回归任务解决。
如下为YOLO的整体架构:


如上图所示,网络由GoogleNet改进,原论文中输入图片大小为448*448,输出为7×7×30
原文的算法步骤为:
将图片分为S×S个单元格(原文S=7),之后输出以单元格为单位
1、如果一个物体Object的中心落在某一个单元格上,那么该单元格负责该物体
2、每个单元格需要预测B个bounding box的值(坐标x、y和宽高w、h)原文B=2,同时为每个Bounding box输出一个置信度(confidence scores),也就是每个单元格需要预测B×(4+1)个值
3、每个单元格需要预测C个条件概率值(C为物体种类个数,原文C=20),最后网络输出维度为S×S×(B×5+C),每个单元格负责预测一个物体(当物体为小物体容易出问题),但每个单元格可以预测多个Bounding box值,这里可以理解为Bbox可以有多个形状,可以更准确定位出物体,如下图所示


由于论文中把检测作为回归问题处理,所以所有的输出坐标经过归一化如中心坐标点x、y,Bbox的宽高w、h的大小均在0到1之间。

下面介绍每个单元格预测的B个向量(x,y,w,h,confidence)和C的条件概率中每个参数的含义(假设图片高为h_i,宽为w_i)
1、x,y是Bounding box的中心相对于单元格的offset
对于上图中蓝色单元格,坐标为xcol=1 yrow=4,假设其预测的输出为红色的Bounding box,设红色的bounding box的中心坐标为(xc,yc),那么最终预测出来的(x,y)是经过归一化的,表示的是中心相对于单元格的offset,计算公式如下:

2、w和h是bbox相对于整个图片的比例
预测的bbox的宽和高分别为wb和hb,w、h表示的是Bbox相对于整个图片的占比,计算公式如下:

3、confidence
置信度有两部分构成,一是格子内是否有目标,二是bbox的准确度,定义置信度为Pr(Object)∗IOUpredtruthP_r(Object)*IOU^{truth}_{pred}Pr​(Object)∗IOUpredtruth​。这时格子内有物体,则Pr(Object)r(Object)r(Object)=1,此时置信度等于IOU,如果格子内没有物体,则Pr(Object)r(Object)r(Object)=0,此时置信度为0
4、C类的条件概率
条件概率定义为Pr(Classi∣Object)P_r(Class_i|Object)Pr​(Classi​∣Object),表示该单元格存在物体且属于第i类的概率。
在测试的时候每个单元格预测最终输出的概率定义为如下两图所示(两幅图不一样,代表一个框会输出B列概率值)Pr(Classi∣Object)∗Pr(Object)∗IoUpredtruth=Pr(Classi)∗IoUpredtruthPr(Class_i|Object)*P_r(Object)*IoU^{truth}_{pred}=P_r(Class_i)*IoU^{truth}_{pred}Pr(Classi​∣Object)∗Pr​(Object)∗IoUpredtruth​=Pr​(Classi​)∗IoUpredtruth​


最后将(S×S)×B×20×(S\times{S})\times{B}\times{20}\times(S×S)×B×20×列的结果送入NMS,最后即可得到最终的输出框结果,下图为训练YOLO的损失函数定义


参考:
https://www.geek-share.com/detail/2746018869.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: