【论文阅读】YOLO系列论文:YOLO v3

论文:Yolov3: An Incremental Improvement

https://arxiv.org/pdf/1804.02767.pdf

代码:GitHub - ultralytics/yolov3: YOLOv3 in PyTorch > ONNX > CoreML > TFLite

作者:Joseph Redmon, Ali Farhadi

发布时间 :CVPR, 2018

优缺点/总结

优点

  • 改进得到更好的主干网络DarkNet-53
    • 更好的挖掘出图像中的细节,同时相对其它算法更快
  • 多尺度预测,类似FPN结构,融合不同尺度特征
    • 聚类来得到Bbox的先验,选择9个簇以及3个尺度
    • 将这9个簇均匀的分布在这3个尺度上
  • binary cross-entropy loss
    • 边界内容的分类使用交叉熵评估的多个独立Logistic分类器
    • 可以表示多个属性类型

缺点

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

模型的改进

  • yolov3改进了yolov1和v2的缺点,是速度和精度最均衡的目标检测网络,重点解决了小物体检测的问题

解决的问题

  • 对 YOLOv2 做了许多改进,YOLOv3 使用了 ResNet 结构,提出了 DarkNet-53,并且采用 FPN (Feature Pyramid Networks for Object Detection)结构。

模型

整体框架可划分为三个部分:Darknet-53结构,特征层融合结构,分类检测结构

工作流程:

1、输入一张图像(416*416)到Darknet-53网络,分别得到原图像的1/8(52 *52)、1/16(26 *26)、1/32(13 *13)的特征图,即3种不同尺寸的feature map

2、考虑到特征层提取的特征不能充分反应原图中的目标信息,对3个特征图进行特征融合,以获得更强的特征表现力

3、对特征图进行分类预测和回归预测,coco数据集有80类,所以最后一个卷积层个数为3 *(80+4+1)= 255,最后进行NMS筛选出预测最准确的框

4、对原图中所有网格区域都预测出各自的类别后,输出整张图片的完整目标信息,最后在原图中框出目标

结构

  • DBL结构:Darknetconv2d_BN_Leaky = 卷积 + BN + Leaky relu 三个部分共同构成的小组件
  • Res_unit结构:借鉴resnet的残差结构,使得网络结构加深
  • Concat结构:张量拼接,将darknet中间层和后面的某一层的上采样进行拼接,与add操作不同,add是直接相加不会导致张量维度改变,而concat会扩充张量维度
  • Resblock_body:res1,res2,resn这些模块代表含有多少个Res_unit构成

网络结构

  • DarkNet-53
    • 前52层没有池化层和全连接层,采用改变卷积核的步长实现降采样,完成张量的尺寸变化(降低池化带来的梯度负面效果)
    • 使用残差的跳层连接,加深网络结构

特征融合

  • 输出3个不同尺度的feature map(3个深度均为255,大小为13,26,52)
  • 借鉴FPN(特征金字塔网络)结构,采用多尺度来对不同size的目标进行检测
  • 提出predictions across scales
    • 进行了三次检测,分别在32倍、16倍和8倍降采样时进行检测
      • 在网络中使用up-sample(上采样)的原因 : 网络越深的特征表达效果越好,yolo_v3使用了步长为2的up-sample(上采样),把32倍降采样得到的feature map的大小提升一倍,也就成了16倍降采样后的维度。同理8倍采样也是对16倍降采样的特征进行步长为2的上采样,这样就可以使用深层特征进行detection。
      • 通过上采样将深层特征提取,其维度是与将要融合的特征层维度相同的(channel不同)。为了使通道数相同,还需要进行一系列的3×3,1×1卷积操作,这样既可以提高非线性程度增加泛化性能提高网络精度,又能减少参数提高实时性。

分类检测

  • YOLO v3的Bounding Box由YOLOV2又做出了更好的改进。
  • 在yolo_v2和yolo_v3中,都采用了对图像中的object采用k-means聚类。
  • feature map中的每一个cell都会预测3个边界框(bounding box) ,每个bounding box都会预测三个东西:
    • 每个框的位置(4个值,中心坐标tx和ty,,框的高度bh和宽度bw)
    • 一个objectness prediction
    • N个类别,coco数据集80类,voc20类。
  • 三次检测,每次对应的感受野不同,设置不同尺寸的先验框:

所以当输入为416×416时,实际总共有(52×52+26×26+13×13)×3=10647个proposal box。

  • 生成10647个锚框,为了预测最终结果,需要将框变为1,我们通过物体分数过滤一些锚框,例如低于阈值(假设0.5)的锚框直接舍去;
  • 使用NMS(非极大值抑制)解决多个锚框检测一个物体的问题,NMS用于去除多个检测框
  • 产生最终预测结果

Tricks

Prediction

  • 输出预测特征图,每个cell有五个边界框进行预测,85(coco为80类)分别表示是否为物体的分数(1个数字),边界框的表示(4个数字)和类概率(80个类)。如果物体的中心落在某个cell中,那么这个cell对预测物体负责(即使用相对应的预测图中的)

Objective Function/Loss Function

  • YOLOv3重要改变之一:No more softmaxing the classes。
  • YOLO v3现在对图像中检测到的对象执行多标签分类。
  • logistic回归用于对anchor包围的部分进行一个目标性评分(objectness score),即这块位置是目标的可能性有多大。这一步是在predict之前进行的,可以去掉不必要anchor,可以减少计算量。
  • 如果模板框不是最佳的即使它超过我们设定的阈值,我们还是不会对它进行predict。
  • 不同于faster R-CNN的是,yolov3只会对1个prior进行操作,也就是那个最佳prior。而logistic回归就是用来从9个anchor priors中找到objectness score(目标存在可能性得分)最高的那一个。
  • logistic回归就是用曲线对prior相对于 objectness score映射关系的线性建模。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值