yolov网络详解

100 阅读4分钟

本文将检测变为一个regression problem(回归问题),YOLO 从输入的图像,仅仅经过一个神经网络,直接得到一些bounding box以及每个bounding box所属类别的概率。

因为整个的检测过程仅仅有一个网络,所以它可以直接进行end-to-end(端到端)的优化

YOLO将目标检测问题作为回归问题。会将输入图像分成S×S的网格,如果一个物体的中心点落入到一个cell中,那么该cell就要负责预测该物体,一个格子只能预测一个物体,会生成两个预测框。

对于具体的每个grid_cell

(1)预测B个边界框,每个框都有一个置信度分数(confidence score)这些框大小尺寸等等都随便,只有一个要求,就是生成框的中心点必须在grid cell里

(2)每个边界框包含5个元素: (x,y,w,h)

image.png

损失函数

yolov1的缺点

  • 在小目标检测上不行,如一群小鸟,又小又密集,就难以检测。因为yolov1对于每个cell只预测两个boundingbox,且这两个boundingbox是同一个类别的,所以当小目标聚集在一起时,yolov1的效果就会特别差。
  • 对于新的输入尺寸效果不好
  • 作者认为所有原因都源于对位置信息的定位不准确

Yolov2

Bactch Normalization

High Resolution Classifier

v1中预训练使用的是分类数据集,大小是224x224,然后迁移学习,微调时使用YOLO模型做目标检测的时候才将输入变成448x448,这样改变尺寸,网络就要多重新学习一部分,会带来性能损失。

v2中直接在预训练中输入中的就是448x448的尺寸,微调的时候也是448x448

Convolutional with Anchor Boxes

使用基于anchor的目标分类框的预测方式

什么是Anchor?

定义: Anchor(先验框) 就是一组预设的边框,在训练时,以真实的边框位置相对于预设边框的偏移来构建训练样本。 这就相当于,预设边框先大致在可能的位置“框”出来目标,然后再在这些预设边框的基础上进行调整。简言之就是在图像上预设好的不同大小,不同长宽比的参照框。

Anchor Box: 一个Anchor Box可以由边框的纵横比和边框的面积(尺度)来定义,相当于一系列预设边框的生成规则,根据Anchor Box,可以在图像的任意位置,生成一系列的边框。由于Anchor Box 通常是以CNN提取到的Feature Map 的点为中心位置,生成边框,所以一个Anchor Box不需要指定中心位置。

Anchor Box的构成

使用CNN提取的Feature Map的点,来定位目标的位置。 使用Anchor Box的Scale来表示目标的大小。 使用Anchor Box的Aspect Ratio来表示目标的形状。

Dimension Clusters

使用Anchor的问题一

Anchor Boxes的尺寸是手工指定了长宽比和尺寸,相当于一个超参数,这违背了YOLO对于目标检测模型的初衷,因为如果指定了Anchor的大小就没办法适应各种各样的物体了

解决方法

在训练集的边界框上运行K-means聚类训练bounding boxes,可以自动找到更好的boxes宽高维度。由上面分析已知,设置先验Anchor Boxes的主要目的是为了使得预测框与真值的IOU更好,所以聚类分析时选用box与聚类中心box之间的IOU值作为距离指标

Direct location prediction 直接的位置预测

使用Anchor的问题二 模型不稳定,特别是在早期迭代期间。大多数不稳定性来自于对边框(x, y)位置的预测。

RPN网络的位置预测 方法: 预测相对于Anchor Box的坐标的偏移,和相对于Anchor Box高宽的偏移。

计算公式: 预测框中心坐标= 输出的偏移量×Anchor宽高+Anchor中心坐标

不足:  这个公式是不受约束的,因此任何锚框可以出现在图像中的任何位置。在随机初始化的情况下,模型需要很长时间才能稳定到预测合理的偏移量。

YOLOv2的改进

方法: 预测边界框中心点相对于对应cell左上角位置的相对偏移值。将网格归一化为1×1,坐标控制在每个网格内,同时配合sigmod函数将预测值转换到0~1之间的办法,做到每一个Anchor只负责检测周围正负一个单位以内的目标box。

计算公式: 一个网格相对于图片左上角的偏移量是cx,cy。先验框的宽度和高度分别是pw和ph,则预测的边界框相对于特征图的中心坐标(bx,by)和宽高bw、bh image.png

效果

使模型更容易稳定训练,mAP值提升了约5%。

Fine-Grained Features 细粒度的特征

Multi-Scale Training 多尺度的训练

3. yolov3