【YOLOv1~v2简略笔记】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、网络简介
- 二、网络特点
- 1.速度快
- 2.视野广
- 3.泛化能力强
- 三、设计过程
- 四、网络结构
- 五、损失函数
- 六、YOLOv1缺点
- 1.定位不准确
- 2.召回率不高
- 七、YOLOv2
- 1.Batch Normalization
- 2.High Resolution Classifier
- 3.Convolutional With Anchor Boxes
- 4.Dimension Clusters
- 5.Direct Location prediction
- 6.Fine-Grained Features
- 7.Multi-Scale Training
前言
本文只是关于YOLOv1~v2的论文简单笔记总结,如有错误,请谅解!
一、网络简介
YOLO与R-CNN相比,R-CNN系列是先对图片产生多个预选框,然后再对每个预选框进行提取特征,分类,是two-stage模型。而YOLO是一个one-stage模型,将上述的两个步骤合二为一。通过一个端到端的网络,输入图片直接生成最终结果,所以相比较R-CNN系列,YOLO更快,同时也损失掉一些精度。
二、网络特点
1.速度快
YOLOv1由于没有过多的额外处理,没有对图片先产生多个预选框,然后再对每个预选框进行提取特征,直接是端到端的方法。
2.视野广
YOLOv1网络由于直接对全图进行处理,所以网络提取的信息是具有全局性的,而滑窗法等方式,其信息只能局限于对应的窗口。所以,论文中提到,YOLO的背景检测误差相比于Fast RCNN网络来说,减少了一半以上。
3.泛化能力强
论文中提到,YOLOv1网络学习了目标的泛化特征,也就是网络对于图中什么东西可能是目标物体(而不管类别)是有一定理解的。因此,在输入训练集中不存在的物体或者是艺术图像时,其效果要比RCNN更好。
三、设计过程
1.先用经典的图像分类模型(如VGG,resnet等)提取输入图片的特征信息。
2.然后在上述模型的后面再接几层网络用于最终的检测,即将上述提取到的特征进行再训练,得到最终结果。
3.训练时,将最终结果与标签值做对比,计算loss,反向传播,梯度更新。
4.预测时,将上述网络的输出结果经过NMS等操作,筛选出最终的bbox,即最终结果。
其中,
网络的输出结果是7730的tensor,将输入图片分成7*7个网格,每个网格预测两个bbox,
每个bbox各含5个参数(中心坐标xy,宽,高,置信度)。每个网格的两个bbox公用一套类别的条件概率(共20个类别),即30=(5+5+20)。

四、网络结构

YOLOv1的网络设计是分为两部分,一部分用于图片的特征提取(feature extraction),另一部分是用来完成目标检测的任务。YOLOv1的特征提取部分是基于VGG网络,总共有24个卷积层和2个全连接层。其中,前20个卷积层用于图像的特征提取,后4个卷积层+2个全连接层用于目标检测。可以看到,其中也有利用1×1卷积层进行通道整合和降维减少参数的操作。除了最后一层全连接层外,其他层都是用leaky ReLU激活函数进行激活。
五、损失函数

六、YOLOv1缺点
1.定位不准确
大的bbox偏离一点和小的bbox偏离一点对于损失函数的贡献不一样。导致在小目标的定位时会出现定位偏差较大的问题。
2.召回率不高
由于最终只生成7x7个网格,每个网格生成两个bbox且最终只取一个bbox,所以最后只能预测出一个物体,很可能存在多个物体的中心在同一个网格中的情况,导致预测效果变差。另外,输入是448x448的图片大小,输出是7x7,下采样太狠,所以小目标的特征信息丢失,导致对小目标的检测效果不好。
七、YOLOv2
YOLOv2主要是在YOLOv1的基础上提出一些改进措施
1.Batch Normalization
原来的YOLOv1中是没有用BN层的,只是在最后的两个全连接层之间加入dropout。YOLOv2中,作者为每个卷积层都配了一个BN层,加速收敛,并且去掉了dropout。
2.High Resolution Classifier
YOLOv1中迁移学习的网络,是在ImageNet上只用输入是224x224训练。而YOLOv2中,将要迁移学习的网络在ImageNet上先用输入是224x224训练160个epoch,再用448x448的输入训练10个epoch。
3.Convolutional With Anchor Boxes
YOLOv1是利用全连接层直接预测bounding box的坐标,而YOLOv2借鉴了Faster R-CNN的思想,引入anchor。最后预测的是相对于anchor坐标的偏移量。
4.Dimension Clusters
采用k-means的方式对训练集的bounding boxes做聚类,试图找到合适的anchor box。


5.Direct Location prediction


6.Fine-Grained Features
这里主要是添加了一个层:passthrough layer。这个层的作用就是将前面一层的26x26的feature map和本层的13x13的feature map进行连接,有点像ResNet。这样做的原因在于虽然13x13的feature map对于预测大的object已经足够了,但是对于预测小的object就不一定有效。


7.Multi-Scale Training
在训练网络时,每训练10个batch,网络就会随机选择另一种size的输入。前面我们知道本文网络本来的输入是416x416,最后会输出13x13的feature map,所以下采样的倍数为32,因此作者采用32的倍数作为输入的size,即采用从{320,352,…,608}的输入尺寸。这种网络训练方式使得相同网络可以对不同分辨率的图像做检测,增加网络的鲁棒性。

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
