论文笔记(一)YOLO系列:v1,v2,v3,v4

介绍

本篇博客将对目标检测发展过程中的经典算法:YOLO系列算法进行介绍。目标检测是计算机视觉中的经典任务,最开始针对的目标主要是人脸,之后开始关注其他的目标,这其中,诞生了很多经典的方法,比如深度学习提出来之前的DPM方法。以及使用深度学习的RCNN系列方法和YOLO系列方法等。这其中,YOLO方法可以说的上是比较另类的方法,YOLO方法刚提出来的时候,方法非常的简单粗暴,是典型的暴力美学方法,笔者也是从看了YOLO之后,才意识到原来CNN这么不讲理(当然现在用CNN做各种不讲理任务的论文现在是很多了)。而且YOLO系列发展到现在,已经实现了速度和精度的一个很好的均衡。

YOLOv1

论文地址:https://pjreddie.com/media/files/papers/yolo_1.pdf
代码地址:https://pjreddie.com/

总体思路

YOLOv1发表在CVPR 2016上,那个时候,使用CNN进行目标检测才刚刚起步,效果最好的是RCNN,是使用ss+CNN分类的方式,速度非常慢。YOLO的提出首先是想解决速度上的问题,首先RCNN之所以速度慢就是因为使用了ss+CNN分类的思路,ss方法会产生非常多的候选框,然后CNN对每一个候选框分类,这个过程是包含大量的冗余计算的。为了提高速度,就需要尽可能降低CNN冗余计算的规模,最理想的效果是对于一张图片,只需要CNN提取依次特征就可以了(这个后续在RCNN的基础上发展而来的Fast-RCNN和Faster-RCNN),一个直接的思路就是,直接使用CNN提取出来的特征 ϕ \phi ϕ进行预测,比如对每一个像素都预测出来一堆框,然后利用某种方式对相似的框进行合并,YOLO就是利用了这种方式。但是作者不是针对每一个像素进行预测,而是将图像分为了 S × S S\times S S×S的格子(cells),每个格子最终会产生 B B B个候选框,之后利用非极大值抑制方法去除相似的候选框,便可以得到最终的预测结果。值得一提的是,无论是回归候选框的尺寸还是预测类别,作者都是使用均方误差作为损失函数,非常的干脆。

Unified Detection

YOLO把对边界框的预测和类别的预测统一到了一个网络中,而且对于一张图片,只需要计算一次(这也是YOLO这个名字的由来,只需要看一次)。这个过程用下面的图表示:
在这里插入图片描述
细分下来,网络的输出分为三个部分:

  1. 对于每一个cell,预测 B B B个候选框的位置
  2. 对于每一个cell中的 B B B个候选框,输出其是目标的概率,表示为 P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object)*IOU_{pred}^{truth} Pr(Object)IOUpredtruth,如果有中心点落在了这个cell里,那么标签就是1,否则就是0
  3. 3)对于每一个cell,预测类别 P r ( C l a s s i ∣ O b j e c t ) Pr(Class_i|Object) Pr(ClassiObject)。注意这里,对于位置的预测是针对候选框的,但是对于类别的预测是针对cell的。

最终预测的时候,每一个候选框的分数表示为:
P r ( C l a s s i ∣ O b j e c t ) ∗ P r ( O b j e c t ) ∗ I O U p r e d t r u t h = P r ( C l a s s i ) ∗ I O U p r e d t r u t h Pr(Class_i|Object)*Pr(Object)*IOU_{pred}^{truth}=Pr(Class_i)*IOU_{pred}^{truth} Pr(ClassiObject)Pr(Object)IOUpredtruth=Pr(Classi)IOUpredtruth

对于VOC数据,最终网络的输出是S=7,B=2,C=20,所以输出的维度是 S × S × ( B ∗ 5 + C ) = 7 × 7 × 30 S\times S\times(B*5+C)=7\times 7\times 30 S×S×(B5+C)=7×7×30

网络结构

作者在文中提到网络结构是受GoogleNet的启发,采用了以下的结构:
在这里插入图片描述
需要注意的是网络输出的特征是 7 × 7 7\times 7 7×7的,这和图像分的cell是一样的,在特征图像,每个cell最终都是用一个像素点表示。

损失函数

网络的损失函数如下:
在这里插入图片描述
损失函数分为三个部分,在图中用红蓝绿三种颜色表示,红色部分表示的是边界框回归的部分。蓝色部分是预测该边界框是否包含目标,对应着之前讨论的 P r ( O b j e c t ) ∗ I O U p r e d t r u t h Pr(Object)*IOU_{pred}^{truth} Pr(Object)IOUpredtruth,如果包含目标标签就是1,否则就是0。绿色部分是类别预测,也是采用了均方误差。

YOLOv2

论文地址:https://pjreddie.com/media/files/papers/YOLO9000.pdf
代码地址:http://pjreddie.com/yolo9000/

总体思路

YOLOv1虽然速度很快,但是精度上和后面的fasterRCNN之类的方法差的比较大,因此作者在次年的CVPR上又提出了YOLOv2,文章的题目叫:《YOLO9000:Better,Faster,Stronger》。通过名字就可以看出来,YOLOv2实现了更好,更快的检测,stronger指的是作者提出了YOLO9000的方法,可以使用ImageNet和目标检测数据集联合训练。

Better

作者在YOLOv1的基础上,吸收了那段时期目标检测方法的有点,对其进行了改进。实际上创新不多,但是提升了精度。作者主要采取的策略如下:
Batch Normalization。加入了BN层,可以提升近2%的mAP的提升。
High Resolution Classifier。这一部分是对ImageNet预训练模型进行了改进,ImageNet中图像大小是224224,但是YOLO训练输入图像的尺寸是448448。作者在这部分按照448448的大小重新训练了预训练网络,提升了
4%的mAP。
Convolutional With Anchor Boxes。吸收了Faster-RCNN的优点,作者在YOLOv2中引入了anchor机制,但是YOLOv2对anchor的使用是“部分的”,这个后面会说
Dimension Clusters。确定anchor尺寸的时候,使用了k-means进行挑选,不是手动设定的。
Direct location prediction。这部分就体现出了YOLOv2中对anchor的使用是部分的。在Faster-RCNN或者SSD中,边界框的回归是相对于anchor而言的,但是在YOLov2中,只有对于边界框长宽的回归是相对于anchor的,但是对于位置(x,y)的预测还是基于cell的。
在这里插入图片描述
Fine-Grained Features。这部分的功能和后来的FPN层类似,都是为了融合底层和高层的特征,但是作者提出的这个方法只使用了前一层26
26的特征。

Multi-Scale Training。训练的时候,输入图像要是多尺度的,也是后面常用的一个策略。

Faster

作者在这部分主要是提出了一个更快的基准网络Darknet-19。结构如下:
在这里插入图片描述

YOLOv3

论文地址:https://pjreddie.com/media/files/papers/YOLOv3.pdf
代码地址:https://pjreddie.com/yolo/

YOLOv3并不是作者发表的一篇论文,而是一个技术报告。YOLOv3本身的创新有限,是作者综合了当时不同的方法,给出的最好版本。主要的策略有以下三个:

  1. 提出了新的网络结构,Darknet-53,在Imagenet上分的分类精度和Resnet101差不多,但是速度快得多。
  2. 使用类似FPN的结构提高了检测效果。
  3. 使用logistic预测类别,而不是softmax,因此可以做多标签的分类

YOLOv4

论文地址:https://arxiv.org/pdf/2004.10934.pdf
代码地址:https://github.com/AlexeyAB/darknet
YOLOv4应该是目前综合效果最好的目标检测方法,虽然方法本身创新比较少,但是作者综合了当前各种的trick,进行了大量的实验,确定了效果最好的模型,对于工程来说是非常有用的。YOLOv4中提到或使用的策略实在是太多了,接下来我会新开一篇博客介绍(希望能尽快弄完)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值