yolo 总结一

https://blog.csdn.net/zfq740695564/article/details/79754578

https://zhuanlan.zhihu.com/p/35325884

yolov1:

YOLO网络的设计比较简单,借鉴GoogLeNet模型,作者将一个完整的网络框架分为两个部分:24个卷积层用于抽取图像特征,两个全连接层用于分类和定位。有一点小的改进,YOLO网络没有使用inception modules,而是用1x1卷积层+3x3卷积层简单代替。上面也提到了网络的最终输出为7*7*30。

YOLO v1全部使用了均方差(mean squared error)作为损失(loss)函数。由三部分组成:坐标误差、IOU误差和分类误差。

  • 物体检测的精度并不是最优,容易产生定位错误。 
  • 因为一个grid cell只能预测2个物体,因此对小物体的检测效果不好。

 

 

yolov2:  将目标检测作为回归问题,实现end-to-end训练和检测。

##batch normalization

  • 解决问题:每层的输入分布一直在改变,训练难度增加;
  • 采取措施:在每层卷积层后,添加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),输入大小:416416;输出大小: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,聚类结果可能会偏离;
    采取措施:在Faster R-CNN和SSD中,先验框的维度(长和宽)都是手动设定的,带有一定的主观性。如果选取的先验框维度比较合适,那么模型更容易学习,从而做出更好的预测。因此,YOLOv2采用k-means聚类方法对训练集中的边界框做了聚类分析。综合考虑模型复杂度和召回率,作者最终选取5个聚类中心作为先验框,
    距离函数:error就和box的尺度无关
    3.改进效果:使用聚类方法,仅仅5种boxes的召回率就和Faster R-CNN的9种相当

###New Network: Darknet-19

  • 大多数目标检测的框架是建立在VGG-16上的,YOLO2是依赖于DarkNet-19的结构(新的基础模型(特征提取器).

###Direct location prediction

  •  

###Fine-Grained Features

  • YOLOv2提出了一种passthrough层来利用更精细的特征图。YOLOv2所利用的Fine-Grained Features是 26\times26 大小的特征图(最后一个maxpooling层的输入)。passthrough层抽取前面层的每个 2\times2 的局部区域,然后将其转化为channel维度,对于 26\times26\times512 的特征图,经passthrough层处理之后就变成了 13\times13\times2048 的新特征图。

###Multi-Scale Training

  • 由于YOLOv2模型中只有卷积层和池化层(与yolov1不同,去掉了全连接),所以YOLOv2的输入可以不限于 416\times416 大小的图片。为了增强模型的鲁棒性,YOLOv2采用了多尺度输入训练策略,具体来说就是在训练过程中每间隔一定的iterations之后改变模型的输入图片大小。由于YOLOv2的下采样总步长为32,输入图片大小选择一系列为32倍数的值: \{320, 352,..., 608\} ,输入图片最小为 320\times320 ,此时对应的特征图大小为 10\times10 (不是奇数了,确实有点尴尬),而输入图片最大为 608\times608,对应的特征图大小为 19\times19 。在训练过程,每隔10个iterations随机选择一种输入图片大小,然后只需要修改对最后检测层的处理就可以重新训练

  • 在训练检测时,作者把分类网络改成检测网络,去掉原先网络的最后一个卷积层,取而代之的是使用3个3×3x1024的卷积层,并且每个新增的卷积层后面接1×1的卷积层,数量是我们要检测的类的数量。

yolov3:

改进之处:

1.多尺度预测 (类FPN,采用多个尺度融合的方式做预测。原来的YOLO v2有一个层叫:passthrough layer)

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

将深层特征上采样后,与浅层特征融合,分别形成多个尺度,输出featuremap进行检测,每个尺度对应3中不同大小的anchor,负责预测不同大小的目标。

尺度1:在基础特征网络后添加几层卷积层后,再输出box信息,负责预测较大目标
尺度2:从尺度1网络的倒数第二层2倍上采样后与最后一个1616大小的featuremap相加,再通过几层卷积层后,输出box,相比尺度1变大size变大两倍,负责预测中等大小的目标。
尺度3:与尺度2类似,使用3232大小的featuremap作为输出,负责预测较小目标。

è¿éåå¾çæè¿°

2.更好的基础分类网络(类ResNet)和分类器 darknet-53。

3.对象分类softmax改成logistic。预测对象类别时不使用softmax,改成使用logistic的输出进行预测。这样能够支持多标签对象(比如一个人有Woman 和 Person两个标签)。

4.我们看一下YOLO3共进行了多少个预测。对于一个416*416的输入图像,在每个尺度的特征图的每个网格设置3个先验框,总共有 13*13*3 + 26*26*3 + 52*52*3 = 10647 个预测。每一个预测是一个(4+1+80)=85维向量,这个85维向量包含边框坐标(4个数值),边框置信度(1个数值),对象类别的概率(对于COCO数据集,有80种对象)。

对比一下,YOLO2采用13*13*5 = 845个预测,YOLO3的尝试预测边框数量增加了10多倍,而且是在不同分辨率上进行,所以mAP以及对小物体的检测效果有一定的提升。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值