目前,在目标检测领域大致分为两大流派:
1、(two-stage)两步走算法:先计算候选区域然后进行CNN分类,如RCNN系列网络
2、(one-stage)一步走算法:直接同时输出定位和分类结果,如SSD、YOLO系列网络
两步走的算法准确率较高,然而计算速度慢,经过改进的Faster R-CNN检测时间为5-7FPS,为了满足实际场景的实时性,产生了YOLO、SSD等算法。
目标检测中YOLO网络模型的介绍
YOLO的检测思想不同于RCNN,其将目标检测作为回归任务解决。
如下为YOLO的整体架构:
目标检测中YOLO网络模型的介绍
目标检测中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可以有多个形状,可以更准确定位出物体,如下图所示

目标检测中YOLO网络模型的介绍
由于论文中把检测作为回归问题处理,所以所有的输出坐标经过归一化如中心坐标点x、y,Bbox的宽高w、h的大小均在0到1之间。
目标检测中YOLO网络模型的介绍
下面介绍每个单元格预测的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,计算公式如下:
目标检测中YOLO网络模型的介绍
2、w和h是bbox相对于整个图片的比例
预测的bbox的宽和高分别为wb和hb,w、h表示的是Bbox相对于整个图片的占比,计算公式如下:
目标检测中YOLO网络模型的介绍
3、confidence
置信度有两部分构成,一是格子内是否有目标,二是bbox的准确度,定义置信度为Pr(Object)IOUpredtruthP_r(Object)*IOU^{truth}_{pred}。这时格子内有物体,则Pr(Object)r(Object)=1,此时置信度等于IOU,如果格子内没有物体,则Pr(Object)r(Object)=0,此时置信度为0
4、C类的条件概率
条件概率定义为Pr(ClassiObject)P_r(Class_i|Object),表示该单元格存在物体且属于第i类的概率。
在测试的时候每个单元格预测最终输出的概率定义为如下两图所示(两幅图不一样,代表一个框会输出B列概率值)Pr(ClassiObject)Pr(Object)IoUpredtruth=Pr(Classi)IoUpredtruthPr(Class_i|Object)*P_r(Object)*IoU^{truth}_{pred}=P_r(Class_i)*IoU^{truth}_{pred}
目标检测中YOLO网络模型的介绍
目标检测中YOLO网络模型的介绍
最后将(S×S)×B×20×(Stimes{S})times{B}times{20}times列的结果送入NMS,最后即可得到最终的输出框结果,下图为训练YOLO的损失函数定义

目标检测中YOLO网络模型的介绍
参考:
https://blog.csdn.net/liuxiaoheng1992/article/details/81983280