Yolov1

1.1 yolov1网络结构:

从YOLO1到YOLO4

1.2 yolov1RCNN比较

YOLO将物体检测作为回归问题求解。基于一个单独的end-to-end网络,完成从原始图像的输入到物体位置和类别的输出。从网络设计上,YOLOrcnnfast rcnnfaster rcnn的区别如下:

[1] YOLO训练和检测,特征提取和分类回归均是在一个单独网络中进行YOLO没有显示地求取region proposal的过程。而rcnn/fast rcnn 采用分离的模块(独立于网络之外的selective search方法)求取候选框(可能会包含物体的矩形区域),训练过程因此也是分成多个模块进行。Faster rcnn使用RPNregion proposal network)卷积网络替代rcnn/fast rcnnselective search模块,将RPN集成到fast rcnn检测网络中,得到一个统一的检测网络。尽管RPNfast rcnn共享卷积层,但是在模型训练过程中,需要反复训练RPN网络和fast rcnn网络(注意这两个网络核心卷积层是参数共享的)。

[2] YOLO将物体检测作为一个回归问题进行求解,输入图像经过一次inference,便能得到图像中所有物体的位置和其所属类别及相应的置信概率。而rcnn/fast rcnn/faster rcnn将检测结果分为两部分求解:物体类别(分类问题),物体位置即bounding box(回归问题)。

从YOLO1到YOLO4

 

1.3 缺点

   1)全连接层:

        检测时,YOLO训练模型只支持与训练图像相同的输入分辨率。

        直接学习到bbox坐标和大小,相比v2offset位置准确率低。

   24pooling层:

        学到的特征不精细,影响准确率。

   3cell&bbox策略:

        I.虽然每个格子可以预测Bbounding box,但是最终只选择只选择IOU最高的bounding box作为物体检测输出,即每个格子最多只预测出一个物体。当物体占画面比例较小,如图像中包含畜群或鸟群时,每个格子包含多个物体,但却只能检测出其中一个。

        II.模型训练依赖于物体识别标注数据,对于非常规的物体形状或比例的检测效果并不理想。

        III.召回率低。

   4Lost函数:

        大物体IOU误差和小物体IOU误差对网络训练中loss贡献值接近(采用求平方根

        方式)。对于小物体,小的IOU误差降低了物体检测的定位准确性。

从YOLO1到YOLO4

YOLOv2

[1] Batch Normalization

CNN在训练过程中网络每层输入的分布一直在改变, 会使训练过程难度加大, YOLO2网络在每一个卷积层后添加batch normalization mAP获得了2%的提升。

[2] High Resolution Classifier

先拿darknet19Imagenet上以448*448分辨率finetune10epoch,再拿得到的网络去finetune产生用于detect的网络。这样通过提升输入的分辨率,mAP获得了4%的提升。

[3] Convolutional With Anchor Boxes

Yolov1全连接层丢失空间信息,借鉴FasterRCNN,去全连接层,用卷积层预测offset而不是coordinates,所以YOLOv2的输入可以不限于416x416大小的图片,适用于不同大小尺寸输入的image

具体实现:

首先去出一个pooling层保证高分辨率。然后缩减网络,让图片输入分辨率为416 * 416,这一步的目的是为了让后面产生的卷积特征图宽高都为奇数,这样就可以产生一个center cell。因为较大的物体在最后一般都落在feature map 中心cell,偶数则落在中心4cell

最后,YOLOv2使用了卷积层降采样(factor 32),使得输入卷积网络的416 * 416图片最终得到13 * 13的卷积特征图(416/32=13)。

ps:每个anchor box都预测物体而不是yolov1中每个grid cell只负责中心在

[4] Dimension Clusters

K-means聚类方法在训练集的bounding boxes上,自动找到更好的boxes宽高维度初值。

[5] Direct location prediction(预测时box部分初值由上一步聚类给出)

RPN中:直接用相对于cell centeroffset,这个offset大小不受约束,所以bbox中心可能在cell之外,导致随机初始化后需要很长时间找到敏感位置。

Yolov2改进:把offsetsigmoid函数约束在0-1,则bbox中心不会超出cell

具体实现:每个cell5个聚类得到的BBox prior,每个box5个坐标参数:

txtytwthto。(pwph 是聚类得到的初值

从YOLO1到YOLO4

从YOLO1到YOLO4

 

 

[6] Fine-Grained Features

Passthrough layer转移层也就是把高低两种分辨率的特征图做了一次连结,连接方式是叠加特征到不同的通道而不是空间位置,类似于Resnet中的identity mappings。这个方法把26 * 26 * 512的特征图连接到了13 * 13 * 1024的特征图,这个特征图与原来的特征相连接。YOLO的检测器使用的就是经过扩张的特征图,它可以拥有更好的细粒度特征,使得模型的性能获得了1%的提升。

 

YOLOv3

分类器-类别预测:

YOLOv3不使用Softmax对每个框进行分类,主要考虑因素有两个:Softmax使得每个框分配一个类别(score最大的一个),而对于Open Images这种数据集,目标可能有重叠的类别标签,因此Softmax不适用于多标签分类。Softmax可被独立的多个logistic分类器替代,且准确率不会下降。分类损失采用BCE loss.

多尺度预测:

每种尺度预测3个box, anchor的设计方式仍然使用聚类,得到9个聚类中心,将其按照大小均分给3种尺度.

尺度1: 在基础网络之后添加一些卷积层再输出box信息.

尺度2: 从尺度1中的倒数第二层的卷积层上采样(x2)再与最后一个16x16大小的特征图相加,再次通过多个卷积后输出box信息.相比尺度1变大两倍.

尺度3: 与尺度2类似,使用了32x32大小的特征图.

从YOLO1到YOLO4

 

YOLOv4

作者设计YOLO的目的之初就是设计一个快速而高效的目标检测器,论文使用了大量的技巧,具体的解读之后的博客详细梳理,这里进行简单归纳。

  • Backbone:CSPDarkNet53
  • Neck:SPP,PAN
  • Head:YOLOv3
  • Tricks(backbone):CutMix、Mosaic、DropBlock、Label Smoothing
  • Modified(backbone): Mish、CSP、MiWRC
  • Tricks(detector):CIoU、CMBN、DropBlock、Mosaic、SAT、Eliminate grid sensitivity、Multiple Anchor、Cosine Annealing scheduler、Random training shape
  • odified(tector):Mish、SPP、SAM、PAN、DIoU-NMS

 

 

相关文章:

  • 2021-06-29
  • 2021-06-10
  • 2022-12-23
  • 2021-09-29
  • 2021-11-02
  • 2022-01-12
  • 2021-12-02
  • 2021-06-29
猜你喜欢
  • 2021-11-27
  • 2021-05-14
  • 2021-09-14
  • 2021-11-07
  • 2021-11-29
  • 2021-06-09
  • 2021-08-20
相关资源
相似解决方案