目标检测:yolov1、yolov2、yolov3的对比理解

1.yolo

YOLO: You Only Look Once。在2015年首次被提出,在2017年CVPR上,Joseph Redmon 和Ali Farhadi 又提出了YOLOv2,在这之后,又提出了YOLOv3

  • yolo系列是One-stage 的目标检测
  • 官网地址:https://pjreddie.com/darknet/yolo/

2.yolov1

论文地址:You only look once unified real-time object detection

对于实现直接回归功能的CNN并不需要复杂的设计过程,它是直接用一整张图进行训练模型,能够更好的区分目标和背景区域。

  • 同时预测多个Box位置和类别
  • 端到端的目标检测和识别
  • 速度更快
核心思想
  • 图像被分成SxS个格子
  • 包含ground truth物体中心的格子负责预测相应的物体
    目标检测:yolov1、yolov2、yolov3的对比理解_第1张图片
  • 每个格子预测B(超参值,默认为2)个检测框,以及其置信度(包含物体概率),以及C个类别概率
  • 每个边界框有5个预测值:x,y,w,h,confidence,(x,y)代表预测边界框的中心点坐标,w,h是边界框的宽度和高度,confidence是预测边界框和真实边界框的IOU。
  • 类别对应当前的格子
  • 预测的向量长度:5*B+C
  • 如果一个图划分为SxS个格子,其最终划分的向量长度是(5*B+C)xSxS
  • bbox信息(x, y, w, h)为物体的中心位置相对格子位置的偏移及宽度和高度,均被归一化
  • 置信度confidence反映是否包含物体以及包含物体情况下位置的准确性,定义为:
    在这里插入图片描述
    其中Pr(Object)∈{0,1}
    目标检测:yolov1、yolov2、yolov3的对比理解_第2张图片
    目标检测:yolov1、yolov2、yolov3的对比理解_第3张图片
    网络结构分析:
  • FC输出的向量长度为:SxSx(Bx5+C) = 7x7x(2x5+20)
  • 网络使用小卷积,即:1x1和3x3(GoogLeNet)
  • 网络比VGG16快,但准确率稍差

损失函数:

  • Loss函数:均方和误差
  • 坐标误差、IOU误差和分类误差
  • 权重考量
    在这里插入图片描述

网络训练:

  • 预训练:ImageNet 1000类数据预训练
  • 使用预训练参数(前20个卷积层)来初始化Yolo,并训练VOC20
  • 将输入图像分辨率从224x224 调整到448x448
  • 训练时B个bbox的ground truth设置相同

缺点:

  • 输入图像分割成S x S, S取7有点粗糙, 导致后续边框回归不太准确
  • 每一个格子只预测一种物体, 不能预测一个格子有多种物体的情况,对小目标物体预测效果不好
  • 检测时输入尺寸固定

3.yolov2/yolo9000

论文地址:YOLO9000: Better, Faster, Stronger

  • 引入了anchor box 的思想
  • 输出层:用卷积层替代了yolo v1 的全连接层
  • 识别种类、精度、速度、定位准确性都有很大提高

相比yolo v1 的改进:

1.Batch Normalization:

  • v1中大量用了BN(Batch Normalization),同时在定位层dropout
  • v2中取消了dropout,均采用了BN归一化处理,使模型更稳定收敛更快

2.高分辨率分类器:

  • v1中使用224 x 224预训练,448 x 448用于网络监测
  • v2中以448 x 448的分辨率微调最初的分类网络

3.Anchor Boxes:

  • 预测bbox的偏移,使用卷积代替FC

  • 输入大小为:416 x 416

  • max pooling 下采样(32倍下采样,输出得到13x13特征图)

  • 预测超过1000个

  • mAP降低,recall显著提高

    使用 Anchor Boxes 来预测 Bounding Boxes。作者去掉了网络中一个池化层,这让卷积层的输出能有更高的分辨率。收缩网络让其运行在 416416 而不是 448448。由于图片中的物体都倾向于出现在图片的中心位置,特别是那种比较大的物体,所以有一个单独位于物体中心的位置用于预测这些物体。YOLO 的卷积层采用 32 这个值来下采样图片,所以通过选择 416416 用作输入尺寸最终能输出一个 1313 的特征图。 使用 Anchor Box 会让精确度稍微下降,但用了它能让 YOLO 能预测出大于一千个框,同时 recall 达到88%,mAP 达到 69.2%。

4.细粒度特征:

  • 添加pass through layer, 把浅层特征图(26x26)连接到深层特征图
  • Resnet中的identity mapping
  • 输入大小为:416 x 416
  • 把26x26x512的特征图叠加成13x13x2048的特征图,与深层特征图相连接,增加细粒度特征
  • 性能获得1%的提升

5.多尺度训练:

  • 每隔几次迭代后就会微调网络的输入尺寸
  • 输入图像尺寸:320,352,… ,608
  • 尺度的变化

yolov2网络结构:

目标检测:yolov1、yolov2、yolov3的对比理解_第4张图片
Darknet-19:

  • 主要使用3 x 3卷积
  • pooling之后channel数增加
  • global average pooling
  • 用1 x 1卷积压缩特征
  • batch normalization

每个box包含4个坐标值,1个置信度和classes个条件类别概率:B x (5+C),而yolov1 为(5 x B + C)

yolo9000:

在yolov2的基础上提出的一种可以检测超过9000个类别的模型,其主要贡献点在于提出了一种分类和检测的联合训练策略,总体mAP值为19.7%。
yolo 9000 的网络结构允许实时地检测超过9000种物体分类,这归功于它能同时优化检测与分类功能。使用 WordTree 来混合来自不同的资源的训练数据,并使用联合优化技术同时在 ImageNet 和 COCO 数据集上进行训练,YOLO9000 进一步缩小了监测数据集与识别数据集之间的大小代沟。

4.yolov3

论文地址:YOLOv3: An Incremental Improvement
相关代码:https://github.com/pjreddie/darknet

相比之前网络:

  • 更好的主干网络(类Resnet),精度更好
  • 多尺度预测(类FPN):聚类得到Bbox的先验,选择9个簇以及3个尺度,将这9个簇均匀的分布在这3个尺度上
  • 更好的分类器(binary cross-entropy loss):Softmax 不适用于多标签分类,Softmax可被独立的多个logistic分类器代替,且准确率不会下降
    目标检测:yolov1、yolov2、yolov3的对比理解_第5张图片

5.总结

yolo系列网络优点:

  • 快速,框架搭建简单
  • 背景误检率低
  • 通用性强

缺点(与RCNN系列物体检测方法相比):

  • 识别物体位置精度准确性差
  • 召回率低

Reference:
https://blog.csdn.net/hitzijiyingcai/article/details/87862233
https://blog.csdn.net/guleileo/article/details/80581858

你可能感兴趣的:(目标检测,深度学习,目标检测算法,yolov1,yolov2,yolov3)