【论文精读】YOLO全系列

最近在搞深度学习,总结归纳一下看过的论文,也希望有不对的地方请大佬指正!!!!

原文链接YOLO9000:Better,Faster,Stronger

一、名词解释

针对文中的一些重复出现的名词进行通俗解释,帮助小白更好理解全文。

  • grid cell 每幅图像分成多个网格
  • bounding box 可以理解成预测框
  • ground truth 可以理解成我们自己在图像上打的标签,即真实值
  • anchor box 锚框,手动挑选或通过聚类的方法生成的多个大小不同的bounding box

二、Better

  • 作者认为,现在的模型都只能检测少量的类别,是由于受目标检测数据集的限制,大多数分类任务数据集都拥有大量的目标和标签,因此提出了一种检测+分类的模型YOLO9000,其能够在检测目标的同时对目标进行细分类。同时他还提出了YOLOv2,对先前的模型进行了改进,提高了准确率和运行速度。
  • 由于YOLOv1犯了大量的定位错误,且相较于使用region proposal方法的模型,YOLO的召回率很低,因此YOLOv2致力于提升召回率和定位准确率同时还要保证分类准确。
  • 使用BN层(Batch Normalization): BN层放在卷积层后,用于取代Dropout,更好的帮助模型正则化,避免过拟合,提高约2%mAP。(BN层原理博主以后会讲)
  • 应用高分辨率分类器: 将原本输入图像大小的224 * 224改为448 * 448,使得网络能够更好的处理高分辨率图像,提升大约4%mAP。
  • 使用anchor和聚类: YOLOv1没有使用anchor机制,因此box的大小是通过训练慢慢稳定下来的,这需要耗费大量时间去计算尝试得到box的形态。于是YOLOv2对其进行了改进,引入anchor机制,并通过K-means聚类的方法从标签中得到anchor的形状大小而非手动挑选。相较于其他使用anchor的模型,YOLOv2直接预测位置信息,而不是预测anchor的偏移量,对anchor的位置进行相对限制,不仅提升了召回率(anchor),还大大提升了定位准确率(预测位置)。
  • 直接预测坐标位置: 下图为预测位置公式示意图,tx、ty、tw、th为anchor的中心点和宽高的偏移量,bx、by、bw、bh为anchor的中心坐标和宽高,Cx,Cy为中心点所在grid cell的左上角坐标。YOLOv2直接预测中心点坐标b,并将偏移量t乘以sigmoid函数,使中心点被限制在grid cell中,宽高则不作限制处理。而传统的预测偏移量的方法不对偏移量作限制,可能会出现中心点不落在grid cell中的情况,使模型不稳定。

传统公式:(论文中的减号应为加号)
x = ( tx * wa ) + xa
y = ( ty * ha ) + ya
x,y为偏移后的中心坐标,tx,ty为中心点偏移量,xa,ya,wa,ha为anchor的中心点坐标和宽高。

anchor

  • 获取细粒度特征: YOLOv1将图像分为77个网格,而YOLOv2则将其分为1313个网格,并且在提取特征信息时,将26*26的浅层特征与深层特征拼接(如下图,图片引用自知乎@x-猪),可以改进检测小目标的性能。
    特征拼接
  • 多尺度训练: YOLOv1的训练尺度是动态调整的,YOLOv2则将多个图像尺寸轮流训练,增强其鲁棒性。多尺度训练可以使得同一个网络能够预测不同分辨率的图像,并且在预测小图像时的运行速度更快。这使得YOLOv2在速度和准确率是有很好的的权衡。

三、Faster

  • 更换特征提取网络: 作者认为VGG-16有不必要的复杂,而Googlenet则过于简单准确率达不到要求,因此他自己写了Darknet-19(下图仅用于分类模型)作为YOLOv2和YOLO9000的特征提取网络。Darknet-19使用全局平均池化代替全连接层,使用BN层稳定训练,加速收敛并起到正则模型的作用。
    Darknet-19

四、stronger

  • 数据集分层结构: 受到WordTree的启发,将分类数据集ImageNet与目标检测数据集COCO以分层结构进行融合,融合效果如下图所示,将原本类与类之间默认互斥的关系中加入父子关系,且一个节点可以有多个通往根节点的路径,在预测时选择最短路径。当模型预测时无法分辨子类别时(即预测子类别所有置信度低于某个阈值时),模型会将其预测为父类别。例如在狗这个父类下存在柯基、金毛、边牧三个子类别,但进行预测的图像中包含柴犬,则模型会将其预测为狗,而不会预测为柯基、金毛、边牧这些子类别,因为柯基、金毛、边牧的置信度低于设置的阈值。
  • YOLO9000是基于YOLOv2设计的,但他使用了3个anchor而不像YOLOv2使用了5个,并且两者都能达到实时检测。
    分层结构

五、总结

这篇论文总共提出了两个模型,用于目标检测的YOLOv2和用于分类的YOLO9000。如下图,YOLOv2相较于YOLOv1主要进行改进:①BN层 ②高分辨率分类器 ③聚类Anchor ④Darknet-19 ⑤限制Anchor中心坐标 ⑥增加passthrough层 ⑦多尺度训练 ⑧高分辨率检测器

  • BN层:加速收敛、正则模型。
  • 高分辨率:能够更好的处理高分辨率的输入
  • 受空间约束的聚类Anchor:加速收敛,稳定模型
  • Darknet-19:减少运算量,加速训练
  • passthrough层:融合浅层特征,有利于小目标检测
  • 多尺度训练:能够适应多种分辨率图像,使模型在准确率和速度上有很好的平衡
    在这里插入图片描述

其他YOLO论文精读:

YOLOv1论文精读
YOLOv3论文精读

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值