目前,在目标检测领域大致分为两大流派:

1、(two-stage)两步走算法:先计算候选区域然后进行CNN分类,如RCNN系列网络

2、(one-stage)一步走算法:直接同时输出定位和分类结果,如SSD、YOLO系列网络

两步走的算法准确率较高,然而计算速度慢,经过改进的Faster R-CNN检测时间为5-7FPS,为了满足实际场景的实时性,产生了YOLO、SSD等算法。

YOLOv7模型在图像识别的作用 yolo检测模型_目标检测


YOLO的检测思想不同于RCNN,其将目标检测作为回归任务解决。

如下为YOLO的整体架构:

YOLOv7模型在图像识别的作用 yolo检测模型_条件概率_02


YOLOv7模型在图像识别的作用 yolo检测模型_条件概率_03


如上图所示,网络由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可以有多个形状,可以更准确定位出物体,如下图所示

YOLOv7模型在图像识别的作用 yolo检测模型_YOLOv7模型在图像识别的作用_04


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

YOLOv7模型在图像识别的作用 yolo检测模型_目标检测_05


下面介绍每个单元格预测的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,计算公式如下:

YOLOv7模型在图像识别的作用 yolo检测模型_条件概率_06


2、w和h是bbox相对于整个图片的比例

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

YOLOv7模型在图像识别的作用 yolo检测模型_条件概率_07


3、confidence

置信度有两部分构成,一是格子内是否有目标,二是bbox的准确度,定义置信度为YOLOv7模型在图像识别的作用 yolo检测模型_ide_08。这时格子内有物体,则PYOLOv7模型在图像识别的作用 yolo检测模型_YOLO_09=1,此时置信度等于IOU,如果格子内没有物体,则PYOLOv7模型在图像识别的作用 yolo检测模型_YOLO_09=0,此时置信度为0

4、C类的条件概率

条件概率定义为YOLOv7模型在图像识别的作用 yolo检测模型_YOLOv7模型在图像识别的作用_11,表示该单元格存在物体且属于第i类的概率。

在测试的时候每个单元格预测最终输出的概率定义为如下两图所示(两幅图不一样,代表一个框会输出B列概率值)YOLOv7模型在图像识别的作用 yolo检测模型_条件概率_12

YOLOv7模型在图像识别的作用 yolo检测模型_ide_13


YOLOv7模型在图像识别的作用 yolo检测模型_目标检测_14


最后将YOLOv7模型在图像识别的作用 yolo检测模型_条件概率_15列的结果送入NMS,最后即可得到最终的输出框结果,下图为训练YOLO的损失函数定义

YOLOv7模型在图像识别的作用 yolo检测模型_ide_16