深度学习算法-YOLO

转载:https://blog.csdn.net/zfq740695564/article/details/79754578
yolo系列整理

改进

V2 VS V1:

增加BN层:

  • 解决问题:每层的输入分布一直在改变,训练难度增加;
  • 采取措施:在每层卷积层后,添加batch normalization;
  • 改进效果:
    1.mAP获得了2%的提升;
    2.规范化模型,可以在舍弃dropout优化后依然不会过拟合;
    ##High Resolution Classifier
  • 解决问题:由于现有的特征提取网络局限,导致图片被resize到不足256 * 256,导致分辨率不够高,给检测带来困难;
  • 采取措施:
    1.提高分辨力到448 * 448;
    2.改变原来特征网络的输入分辨率,在ImageNet数据集上对分类网络进行fine tune训练10轮(10 epochs),使得网络适应高分辨率的输入;然后,对检测网络进行fine tune。
  • 改进效果:mAP获得了4%的提升;
    ##Convolutional With Anchor Boxes
  • 解决问题:全连接层的数据完成边框的预测,导致丢失较多的空间信息,定位不准;
  • 采取措施:
    1.借鉴了Faster R-CNN中的anchor思想
    2.在卷积特征图上进行滑窗操作,每一个中心可以预测9种不同大小的建议框。
    3.去掉了后面的一个池化层以确保输出的卷积特征图有更高的分辨率;
    4.缩减网络,输入分辨力为416416,使得输出的feature map宽高为基数,产生一个center cell(大物体通常占据了图像的中间位置),用一个中心cell预测大物体,否则就要用中间的4个cell来进行预测,有利于提高效率。
    5.卷积层降采样(factor为32),输入大小:416
    416;输出大小:13*13
  • 改进效果:召回率上升,准确率下降。
    1.改进后:预测13 * 13 * 9 = 1521个boxes,recall为88%,mAP为69.2%
    2.改进前:预测7 * 7 * 2 = 98个boxes,recall为81%,mAP为69.5%
    3.准确率只有小幅度的下降,而召回率则提升了7%。
    ##Dimension Clusters
  • 解决问题:
    1.anchor boxes的宽高维度往往是精选的先验框,如果一开始就选择了更好的、更有代表性的先验boxes维度,那么网络就更容易学到准确的预测位置;
    2.传统的K-means聚类方法使用的是欧氏距离函数,也就意味着较大的boxes会比较小的boxes产生更多的error,聚类结果可能会偏离;
  • 采取措施:
    1.距离函数:error就和box的尺度无关
    这里写图片描述
    聚类结果:扁长的框较少,而瘦高的框更多
    这里写图片描述
  • 改进效果:使用聚类方法,仅仅5种boxes的召回率就和Faster R-CNN的9种相当
    这里写图片描述
    ##Direct location prediction
  • 模型不稳定,尤其是在早期迭代的时候,大部分的不稳定现象出现在预测box的 (x,y)(x,y) 坐标上;
  • 这里写图片描述
  • 这里写图片描述
    这个公式的理解为:当预测 tx=1tx=1,就会把box向右边移动一定距离(具体为anchor box的宽度),预测 tx=−1tx=−1,就会把box向左边移动相同的距离。
    符号含义:
    1.x是坐标预测值
    2.xa 是anchor坐标(预设固定值)
    3.x∗是坐标真实值(标注信息)
    4.其他变量 y,w,h 以此类推,t 变量是偏移量;
    这个公式没有任何限制,使得无论在什么位置进行预测,任何anchor boxes可以在图像中任意一点结束。模型随机初始化后,需要花很长一段时间才能稳定预测敏感的物体位置。
  • 采取措施:
    1.采用预测相对于grid cell坐标位置的方法。
    2.13*13的grid,每个cell对应5个anchors box,每个anchors box对应5个值(分别是坐标和置信度),如下所示:
    这里写图片描述
    (cx,cy):这个cell距离图像左上角的cell数;
    (pw,ph):cell对应的anchors box的宽高;
    tx,ty 经sigmod函数处理过,取值限定在了0~1,实际意义就是使anchor只负责周围的box,有利于提升效率和网络收敛。
    e的幂函数是因为前面做了 lnln 计算;
    σ(tx):bounding box的中心相对栅格左上角的横坐标;
    σ(ty):bounding box的中心相对栅格左上角的纵坐标;
    σ(to)是bounding box的confidence score。
  • 改进效果:定位预测值被归一化后,参数就更容易得到学习,模型就更稳定。使用Dimension Clusters和Direct location prediction这两项anchor boxes改进方法,mAP获得了5%的提升。

创新

将目标检测作为回归问题,实现end-to-end训练和检测。
#V3
##改进
多尺度检测 改动基础分类网络和分类器

  1. 添加多尺度预测:将深层特征上采样后,与浅层特征融合,分别形成多个尺度,输出featuremap进行检测,每个尺度对应3中不同大小的anchor,负责预测不同大小的目标。
    尺度1:在基础特征网络后添加几层卷积层后,再输出box信息,负责预测较大目标
    尺度2:从尺度1网络的倒数第二层2倍上采样后与最后一个1616大小的featuremap相加,再通过几层卷积层后,输出box,相比尺度1变大size变大两倍,负责预测中等大小的目标。
    尺度3:与尺度2类似,使用32
    32大小的featuremap作为输出,负责预测较小目标。

对比

1.与RCNN和Fast RCNN对比:yolo没有求取proposal region,而RCNN系列需要通过selective research提取候选框,导致训练过程分为多个阶段完成。
与Faster RCNN对比:尽管用RPN 网络代替selective research,将RPN集成到Fast RCNN中,形成了一个统一的网络,实现卷积层参数的共享。但是在训练过程中还是需要反复训练RPN和Fast RCNN网络。
因此RCNN系列的检测,都属于two-stage策略。
2.YOLO通过一次inference,同时得出目标位置和分类scores,而RCNN系列将目标检测任务分成:检测和回归。
#基础网络
仿ResNet, 与ResNet-101或ResNet-152准确率接近,但速度更快.
这里写图片描述
这里写图片描述
##边框预测
仍采用之前的logistic方式:
KaTeX parse error: Expected group after '\begin' at position 68: …ition 7: \begin{̲̲̲a̲l̲i̲g̲n̲}̲ b_…
其中:
c x , c y c x , c y c x , c y cx,cycx,cy c_x,c_y cx,cycx,cycx,cyλnoobj实现两者之间对梯度平衡作用。
3.含有object的bbox的confidence loss (上图红色框) 和类别的loss (上图紫色框)的loss weight正常取1。
4.**不同大小box对IoU影响:**对不同大小的bbox,相同的偏离,大bbox对IOU的影响若于小box。通过sum-square error loss对该问题进行缓和。
调整的目标:相同的偏离,增强对小bbox的IOU的影响,减弱打的bbox的IOU的影响。为了缓和这个问题,作者用了一个巧妙的办法,就是将box的width和height取平方根代替原本的height和width。 如下图:small bbox的横轴值较小,发生偏移时,反应到y轴上的loss(下图绿色)比big box(下图红色)要大。
如下图所示:
这里写图片描述

每个grid有多个boxes,最终的结果,采用IoU最大的box predictor预测,因此,不同box之间存在竞争,因此,随着训练轮数的增加,特定box predictor越来越好的,负责预测不同尺寸的物体。

#参考网址
YOLO详解
图解YOLO
YOLOv1论文理解
目标检测网络之 YOLOv3
darknet+win+linux接口
yolov3论文解析

      </div>
      <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-258a4616f7.css" rel="stylesheet">
              </div>
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值