【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}的输入尺寸。这种网络训练方式使得相同网络可以对不同分辨率的图像做检测,增加网络的鲁棒性。
在这里插入图片描述


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部