8.4 YOLO v1
YOLO v1的创新点:
- 整张图作为一个输入,然后端到端的得到输出;
- 速度快,是One-stage的第一个作品。
以R-CNN为代表的物体检测方法首先需要产生大量可能包含待检测物体的先验框, 然后用分类器判断每个先验框对应的边界框里是否包含待检测物体,以及物体所属类别的概率或者置信度,同时需要后处理修正边界框,最后基于一些准则过滤掉置信度不高和重叠度较高的边界框,进而得到检测结果。这种基于先产生候选区再检测的方法虽然有相对较高的检测准确率,但运行速度较慢。
YOLO将分类和bbox回归问题,合为一个回归问题。下面对比一下主流的R-CNN和YOLO的网络对比。(其实和SSD也是一致的)
YOLO并没有真正的去掉候选区,而是直接将输入图片划分成个网格,每个网格预测两个边界框,一共预测
个边界框。可以近似理解为在输入图片上粗略的选取98个候选区,这98个候选区覆盖了图片的整个区域,进而用回归预测这98个候选框对应的边界框。
1 网络结构
YOLO网络借鉴了GoogLeNet分类网络结构,不同的是YOLO使用卷积层和
卷积层替代inception module。如图2所示,整个检测网络包括24个卷积层和2个全连接层。其中,卷积层用来提取图像特征,全连接层用来预测图像位置和类别概率值。
2 YOLO的输入、输出和损失函数
输入图像的尺寸是
输出尺寸是
损失函数分为坐标预测(蓝色框)、含有物体的边界框的confidence预测(红色框)、不含有物体的边界框的confidence预测(黄色框)、分类预测(紫色框)四个部分。
Tips:
NMS步骤如下:
1.设置一个Score的阈值,一个IOU的阈值;
2.对于每类对象,遍历属于该类的所有候选框,
①过滤掉Score低于Score阈值的候选框;
②找到剩下的候选框中最大Score对应的候选框,添加到输出列表;
③进一步计算剩下的候选框与②中输出列表中每个候选框的IOU,若该IOU大于设置的IOU阈值,将该候选框过滤掉,否则加入输出列表中;
④最后输出列表中的候选框即为图片中该类对象预测的所有边界框
3.返回步骤2继续处理下一类对象。