YOLOV1至YOLOV4简介

目标检测简介

YOLOV1至YOLOV4简介_第1张图片

  • Input:输入。
  • Backbone:特征提取网络。
  • Neck:特征增强模块。
  • Head:检测模块。
  • 主要分为一阶段目标检测和两阶段目标检测。

mAP简介

  • TP:IoU>0.5的检测框数量(同一个Ground Truth只计算一次)。
  • FP:Iou<=0.5的检测框(或者是检测到同一个GT的多余检测框的数量)。 FN:没有检测到的GT数量。
  • Precision(查准率):TP/(TP+FP)模型预测的所有目标中,预测正确的比例。
  • Recall(查全率):TP/(TP+FN)所有真实目标中,模型预测正确的目标比例。
  • IoU判断正负样本,Confidence判断是正确的还是错误的。
  • AP:IoU是确定的,改变Confidence,绘制Precision—Recall图,求其面积。
  • mAP:IoU取0.5:0.05:0.9,10个值求平均。 mAP0.5:IoU取0.5。 mAP0.75:Iou取0.75。

YOLO v1

You Only Look Once
2016年5月9号

1 简介

  • 将目标检测视为回归问题,速度快,在Tian X的GPU上能达到45FPS。
  • 基于整张图片信息进行训练和预测,背景错误(将背景认作为物体)更少。
  • 学到的图片特征更为通用。作者尝试了用自然图片数据集进行训练,用艺术画作品进行预测,Yolo的检测效果更佳。

2 核心思想

YOLOV1至YOLOV4简介_第2张图片

  • 将输入图像划分为S×S网格,如果object的中心位于一个网格单元中,则这个网格单元预测该object。
  • 每个网格单元预测B个bounding boxes(边界框),每个bounding boxes有5个预测值:x,y,w,h,confidence。(x,y)坐标表示长方体相对于网格单元边界的中心,w,h分别是宽度和高度,是相对于整个图像进行预测的。
  • confidence反映了所预测的box中含有object的置信度和这个box预测的精确度。如果该单元网格中不存在对象,则第一项(置信度)为0,否则取1。第二项是预测的box和实际的groundtruth之间的IoU值。confidence就是这两项的乘积。
    在这里插入图片描述
  • 每个网格单元还要预测C个类别信息。因此,一个S×S网格,每个网格单元需要预测B个bounding box和C个类别信息。输出为S×S×(5×B+C)的一个tensor。
  • 对于PASCAL VOC数据集,作者使用S=7,B=2。PASCAL VOC数据集有20个类别(C=20)。所以输出就是7×7×30的一个tensor。

3 网络结构

YOLOV1至YOLOV4简介_第3张图片

  • 网络借鉴了GoogLeNet图像分类模型,我们的网络有24个卷积层和两个全连接层。
  • 在 ImageNet 1000-class competition dataset上预训练一个分类网络,这个网络是前20个卷积网络+average-pooling layer+ fully connected layer (此时网络输入是224×224)。
  • 然后转换模型去执行检测,输入图像的分辨率提高为448×448。

4 损失函数

  • (x,y)不直接回归中心点坐标数值,而是回归相对于网格格点左上角坐标的位移值(offset),将其归一化到0-1之间;w,h用图像的width和height归一化到0-1之间。
  • 激活函数使用leaky rectified linear activation,最后一层使用线性激活函数。
  • 使用sum-squared error loss(平方和误差)。
  • 为了平衡bbox坐标预测的损失和bbox置信度预测的损失,使用λcoord和λnoobj。设置λcoord=5和λnoobj=0.5。
  • 对于不同大小的bbox预测,大bbox和小bbox对于同样的偏移,loss是一样的。实际情况是相同的偏移,小bbox的loss应该要大于大bbox的loss。

YOLOV1至YOLOV4简介_第4张图片YOLOV1至YOLOV4简介_第5张图片

  • 一个网格单元预测多个bbox,希望的是每个bbox predictor专门负责预测某个object。具体做法就是看当前预测的bbox与ground truth box中哪个IoU大,就负责哪个。
    YOLOV1至YOLOV4简介_第6张图片
  • 只有当某个网格中有object的时候才对classification error进行惩罚。
  • 只有当某个box predictor对某个ground truth box负责的时候,才会对box的coordinate error进行惩罚,而对哪个ground truth box负责就看其预测值和ground truth box的IoU是不是在那个cell的所有box中最大。
  • 多个单元格的边界框附近的一些大对象可以被多个单元格很好的定位,使用非极大值抑制来生成预测框。
  • 一共135次epochs,使用PASCAL VOC2007+2012的train和val数据集,batchsize=64,momentum=0.9,decay=0.0005。
  • learning rate schedule:第一个epoch学习率慢慢从10-3提高到10-2,如果从高学习率开始,模型会因为梯度不稳定而发散。然后用10-2训练75个epochs,然后用10-3训练30个epochs,最后用10^-4训练30个周期。
  • 为了防止过拟合,使用dropout,参数为0.5。并且使用数据增强,随机缩放和平移,在HSV颜色空间随机调整图像曝光度和饱和度。

5 实验结果

YOLOV1至YOLOV4简介_第7张图片

  • 在PASCAL VOC2007数据集上进行测试比较。GPU为TIAN X。

6 不足

  • YOLO对相互靠的很近的物体,还有很小的群体检测效果不好,这是因为一个网格中只预测了两个框,并且只属于一类。
  • 对测试图像中,同一类物体出现的新的不常见的长宽比和其他情况时泛化能力偏弱。
  • 由于损失函数的问题,定位误差是影响检测效果的主要原因。尤其是大小物体的处理上,还有待加强。

YOLO v2

YOLO9000,意思是可以检测9000多个类别。
2017CVPR

1 简介

  • 借鉴前人的工作进行了多方面改进。
  • 在VOC2007数据集上,YOLO v2可以达到67FPS和76.8mAP,40FPS和78.6mAP。
  • 提出了一种目标检测和分类联合训练的方法。

2 改进

  • YOLO与Fast RCNN相比,会产生大量的定位错误,与RPN方法相比,召回率较低。因此,主要关注在保持分类准确率的同时提高召回率和定位
  • Batch Normalization(批次归一化):将Dropout替换为Batch Normalization,有助于正则化,显著改善收敛性,降低模型过拟合。在每个卷积层后添加Batch Normalization层,mAP可以提高2%。
  • High Resolution Classifier(高分辨率分类器):YOLO v1使用224×224的输入图像预训练特征提取网络,后将分辨率提高到448×448进行检测,这意味着网络需要重新学习识别大尺度(448)的图片以及学习进行其上的目标检测工作。而YOLO v2在之前预训练后使用448×448的分类数据集在训练10个epochs,然后进行目标检测。mAP提高了4%。
  • Convolutional With Anchor Boxes(应用anchor):使用Anchor来预测边界框。没有使用前,mAP为69.5,召回率为81%,使用后,mAP为69.2,召回率为88%。
  • Dimension Clusters(选取anchor):anchor boxes的尺寸是自己挑选的,选择更合适的anchor可以更好的检测。使用K-means cluster来选取anchor boxes。
  • Direct location prediction(直接定位预测):预测相对于网格单元位置的位置坐标(tx,ty),使用sigmoid函数使值保持在0-1之间。

YOLOV1至YOLOV4简介_第8张图片
YOLOV1至YOLOV4简介_第9张图片
YOLOV1至YOLOV4简介_第10张图片

  • Fine-Grained Features(细粒度特征):在特征在物体检测和语义分割中的研究中表明,使用多尺度的是非常有效的。将26×26×512的feature map转化为13×13×2048的feature map,与原始特征拼接。性能提高了1%。
    YOLOV1至YOLOV4简介_第11张图片
  • Multi-Scale Training(多尺度训练):YOLO v2只有卷积层和池化层,所以可以输入不同尺寸的图像,下采样总步长为32,输入图像大小为32倍数。每10个batches随机选择一种输入图片大小,这样就可以适应不同大小的图片。
    YOLOV1至YOLOV4简介_第12张图片

3 网络结构

3.1 Darknet-19

YOLOV1至YOLOV4简介_第13张图片

  • Darkent-19有19个卷积层和5个maxpooling层。在ImageNet数据集上,对于224×224的输入图像,VGG-16需要30.69亿次前向传递操作,90.0%top-5 accuracy;而Darknet-19只需要5.58亿次,72.9% top-1 accuracy和91.2% top-5 accuracy。

3.2 整体网络结构

YOLOV1至YOLOV4简介_第14张图片

  • 训练:一共160个epochs,0-60epochs学习率为10^-3 ,60-90epochs学习率为10^-4 ,90-160epochs学习率为10^-5。decay=0.0005,momentum=0.9,使用数据增强(裁剪,颜色偏移)。

4 实验结果

YOLOV1至YOLOV4简介_第15张图片

YOLO v3

发布于2018年。

1 简介

  • 320×320 YOLO v3 跑COCO数据集,有28.2mAP和22ms。
  • 多尺度预测,类似于FPN。
  • Darknet-53。

2 改进

  • Bounding Box Prediction(正负样本匹配):YOLOv3使用logistic regression(逻辑回归)预测每个边界框的客观得分。如果边界框与ground truth object box的重叠超过任何其他边界框,则该值应为1。如果边界框不是最好的,但是与地面真值对象重叠超过某个阈值,我们将忽略预测。我们使用的阈值是0.5。只为每个ground truth object分配一个边界框。如果一个边界框没有分配给一个ground truth object,它不会导致定位损失或类别损失,只会导致对象损失。
  • YOLO v3网络类似于feature pyramid network(FPN特征金字塔网络)。

3 网络结构

3.1 Darknet-53

YOLOV1至YOLOV4简介_第16张图片
YOLOV1至YOLOV4简介_第17张图片

  • 上图在Titan X的GPU对256×256的图像进行测试,Darknet-53的性能与最先进的分类器不相上下,但浮点运算更少,速度更快。DarkNet-53比ResNet-101更好,速度是ResNet-101的1.5倍。DarkNet-53的性能与ResNet-152相似,速度快2倍。

  • 整体网络结构

    YOLOV1至YOLOV4简介_第18张图片

3.2 整体网络结构

YOLOV1至YOLOV4简介_第19张图片

  • Darknet-53+FPN
  • 还有SPP版本结构图

4 损失函数

YOLOV1至YOLOV4简介_第20张图片

  • o表示预测目标边界框和真实目标边界框的IOU值。
  • O表示预测目标边界框i中是否存在j类目标。
  • 只有置信度损失是正负样本都计算,定位损失和类别损失只计算正样本。

5 实验结果

YOLOV1至YOLOV4简介_第21张图片

  • COCO数据集mAP:0.50:0.05:0.95 采用10个IOU求平均值
    YOLOV1至YOLOV4简介_第22张图片
  • COCO数据集mAP-50
    YOLOV1至YOLOV4简介_第23张图片

YOLO v4

发布于2020年。

1 简介

  • 通过将近几年的先进算法加入yolo,堆料,最终取得了性能和速度的提升。在MS COCO数据集上,有43.5%mAP和65FPS。
  • 设计一个能够应用于实际工作环境的快速目标检测系统,可以用一块常规的GTX-2080Ti训练YOLO v4。
  • 验证了Bag-of-Freebies和Bag-of-Specials对目标检测的影响。
  • 改进先进的算法使它们更加高效适合于单个GPU训练。

2 创新

  • Bag-of-Freebies:只改变训练策略或者只增加训练成本。
    数据扩充(光度失真、几何失真); 模拟对象遮挡(CutOut);结合多个图像进行数据扩充(MixUp);类别数据不平衡(focal loss); 类别关联度(label smoothing);BBox loss等。
  • Bag of specials:只会增加少量推理代价但能显著提高目标检测精度的plugin modules和post-processing methods。plugin modules用于增强模型某些属性,如扩大接受范围、引入注意力机制、增强特征集成能力等。post-processing methods用于筛选模型预测结果。
    增强感受野(SPP);注意模块(SAM);特征集合(ASFF);激活函数;后处理方法(NMS)等。

输入端创新

  • Mosaic数据增强:参考2019年底提出的CutMix数据增强的方式。CutMix只使用两张图片进行拼接,而Mosaic数据增强采用4张图片随机缩放、随即裁剪、随机排布的方式进行拼接。针对训练数据集小目标较少,对小目标检测较弱的问题,增加很多的小目标并且直接计算4张图片减少GPU使用。
  • Self-Adversarial Training (SAT)(自对抗训练):一种数据增强方式。通过神经网络改变原始图像,对图像做一些扰动。
  • Cross mini-Batch Normalization(CmBN):
    YOLOV1至YOLOV4简介_第24张图片

BackBone创新:

  • CSPDarkent53:参考2019年CSPNet对Darknet53进行的改进。增强学习能力,轻量化的同时保持准确率;降低内存成本;降低计算量。
  • Mish激活函数:2019年下半年提出。
  • Dropblock:随机将一个区域清零。Dropout在卷积层效果不好。

Neck创新:

  • SPP:增加感受野。yolov3就有spp版本。
  • FPN:特征融合。自顶向下,尺寸由小变大。
  • PAN:特征融合。自底向上,尺寸由大变小。
    YOLOV1至YOLOV4简介_第25张图片
  • FPN+PAN:
  • SAM:注意力机制。
    YOLOV1至YOLOV4简介_第26张图片

Prediction创新:

  • CIoU Loss:在2020年提出。将重叠面积、中心点距离、长宽比考虑进去。预测框回归速度和精度更高。
  • DIoU NMS:在2019年提出。考虑重叠面积和中心点距离。在重叠目标检测中,有较好的效果。

3 网络结构

YOLOV1至YOLOV4简介_第27张图片

4 损失函数

YOLOV1至YOLOV4简介_第28张图片

  • Distance_2:两个中心点的欧氏距离。
  • Distance_C:对角线距离。
  • 其余与YOLO v3相同。

5 实验结果

  • 在MS COCO数据集的目标检测实验中
  • epochs=500500,batch_size=64,min_batch_size=8或4(GPU内存大小),momentum=0.9,weight_decay=0.0005。
  • 采用步阶衰减学习率调度策略。初始学习率为0.01,在400000步乘0.1,在450000乘0.1。
  • 实验使用1080Ti或者2080Ti的GPU。
    YOLOV1至YOLOV4简介_第29张图片
  • 对于目标检测任务,CSPDarknet53比CSPResNeXt50有更好的表现。
    YOLOV1至YOLOV4简介_第30张图片

你可能感兴趣的:(目标检测,计算机视觉,神经网络,人工智能,目标检测)