yolo v2论文综述
摘要:提出yolo9000,可检测超过9000种类别。在之前yolo的基础上进行了很多改进。在voc2007上,40fps,mAP可达78.6,超过faster r-cnn的73.2。
-
引言
目前检测数据集远少于分类数据集,所以集合了很多数据集voc、coco、imagesnet等共同训练。 -
更好
经过yolov1中用的工具的分析,发现误差主要在定位损失,召回率也很低,所以yolov2解决定位和召回率的问题。
集合了多种方法改进yolo:
批归一化:使更快收敛,省略了dropout。mAP提升了2%。
高分辨率分类器:yolo1中的卷积层先用224224的输入在imagenet上分类训练,然后提高分辨率在448448在voc上训练分类和检测,这就导致在voc上训练时既要学习目标检测的权重也要不断适应新的分辨率,不容易。所以yolov2中决定直接用448*448在imagenet上做分类预训练,然后再调整到新的分辨率在voc上训练分类与检测,这种先在imagenet训练的高分辨率分类网络提升mAP达到4%。
加上Anchor:faster r-cnn中的rpn网络预测的是相对anchor的偏移值,而yolo1直接预测坐标(x,y,w,h),预测偏移相对直接预测坐标更简单。
故移除了yolo1中的全连接层并使用anchor来预测边界框。首先为使卷积层的输出有更高的分辨率,去掉了一个池化层。将网络输入分辨率改为416416而不是448448以便于多次下采样后fm的宽和高变为级数1313(下采样的倍数是32),因为有些大目标的一般都在图像中间,所以这个目标的中心点也更有可能落在1313的fm上最中心的那个像素点(这个像素点在原图中映射到图片中心区域),而如果是偶数的话目标的中心点位置在fm不是一个整数,需要邻近的四个点的值来双边插值来计算这个中心点的值(不是坐标)。
此外,在应用anchor box时还将对anchor的分类预测和bb框回归分成两支(解耦合)。跟yolo1一样,类别预测是预测有目标的anchor的分类的条件概率,目标框的预测是预测iou值??
使用anchor使得准确率mAP略微下降(69.5->69.2),但是召回率提高了(81%->88%)。
维度聚类:
1) 在使用anchor时遇到两个问题,anchor需要手工设计,要怎么设计更合理?k-means,k=5时达到复杂度和召回率的权衡
2) 训练迭代早期模型不稳定。训练不稳定(不收敛)的原因是因为在预测框的位置(x,y)时,faster r-cnn的处理方法是直接预测相对anchor中心位置的偏移(tx,ty),计算(x,y)公式如下:
若tx=1,则anchor的中心点位置直接向右平移一个anchor的宽度,tx=2时平移两个宽度。tx=-1时则直接向左平移一个anchor宽度。tx的值如果不受限制,不管anchor最初在哪,经过回归之后对应的检测框(anchor)可以移动到整张图片的任意位置,训练时需要很长的时间才能使(tx,ty)稳定下来。
所以,为了避免这种问题,沿用yolo1中的方法,还是将原图划分成网格,anchor的中心点位置最初落在哪个网格中,回归时直接在这个网格里回归这个anchor的中心位置(x,y)(检测框的中心点位置),而不是相对anchor中心点的偏移值。所以此时不在预测tx,ty.而是直接预测(x,y),(x,y)代表的不再是以anchor的宽度和高度作为单位的相对anchor最初中心点位置的偏移值,而是在anchor中心点所在的这个网格里的相对位置,所以要将(x,y)的值用sigmoid**限制到0~1之间。
yolo2在fm上的每个网格中预测了5个边界框(yolo1是2个),每个边界宽预测5个值:tx, ty, tw, th, to。
预测值的计算公式:
其中:(Cx,Cy)是这个网格的左上角点在原图中的位置,(Pw,Ph)是anchor在原图中对应的宽度和高度像素值,(tx,ty)是预测框中心点相对这个网格的值,介于0-1之间。
聚类加上边界框中心点位置直接回归的方法提升5%的mAP。
细粒度特征:在2626的fm上取一个通路连接到最后的1313的fm上,分辨率不一样怎么连呢?
跟ResNet中的差不多,大概思想就是将一个的26261的fm划分成13134的fm,主要就是把邻近的两个像素点分辨作为两个通道里的像素点。使mAP提升1%。
多尺度训练:每隔10次迭代就将输入图片resize到一个新的分辨率训练卷积层,可选的分辨率有{320, 352, …, 608}。
深层实验:与其他框架做比较。
上右图中除了输入图片的分辨率不一样,模型的权重(应该是指卷积层的权重?)是一样的。
3 faster
VGG-16虽然性能不错,但是参数冗余(30.69billion 个浮点计算),在imageNet上top-5=90%。改用基于googelnet的自定义网络框架,只有8.52billion个浮点计算,top-5=88%。
提出Darknet-19主干网络:19个卷积层,5个最大池化层,每张图片只需要5.58billion个浮点计算,在imageNet上达到72.9%的top-1,91.2%的top-5.
为分类训练:先在imagenet上以224224作为输入训练160epochs,然后在imagenet上将输入调整至448448训练10epochs。
为检测训练:未检测移除最后一个卷积层,加上3个331024的卷积层,这3个卷积层的每个后面都跟1个11的卷积层。对于voc数据集,每张图片预测5个框,每个框对应5个坐标值和20个分类值,所以共计5(5+20)=125个值,故有最后一层有125个滤波器。
4 更强
能同时训练分类数据集和检测数据集,当图片只有分类标签时反向传播时只更新分类部分,当是检测数据集时整个网络同时训练。
层级分类:
5结论
提出YOLOv2 和 YOLO9000。yolov2很快,yolo9000可预测超9000种类别。数据混合很有用。