深度学习之YOLO系列YOLOv2
本文介绍了YOLOv2的改进之处:1)采用Darknet-19网络结构,引入BatchNorm层;2)使用更高分辨率输入和K-means聚类提取先验框;3)通过Anchor Box和Directed Location Prediction改进边界框预测;4)采用多尺度训练和特征融合技术增强小目标检测。相比YOLOv1,这些改进使mAP显著提升,同时保持了实时检测速度。文章详细阐述了网络结构优化、先
目录
二、Directed Location Prediction
2、YOLO-V2-Directed Location Prediction
2、YOLO-V2-Fine-Grained Features
简介
上两篇博客我们介绍了YOLOv1,还说了目标检测算法与解释了YOLO评价指标的一些专业。今天我们来继续探索YOLOv2的模型
一、YOLOv2
1、YOLO V1和V2的对比:

其中:
- batch norm : Yolov2 相较于 Yolov1 添加了 BN 层;
- Hi-res classifier: Yolov2 相较于 Yolov1 采用更高分辨率的网络进行分类主干网络的训练;
- convolutional + anchor : Yolov2 相较于 Yolov1 去除全连接层,采用卷积层进行模型的输出;同时采用锚框(预选框) 进行bounding box 的预测;
- new network : 采用新的网络架构 Darknet-19;
- dimension priors: 采用 k-means 聚类方法对训练集中的标准框做了聚类分析,获取anchor boxes ;
- location prediction: 使用 sigmoid 函数处理位置预测值;
- passthrough: passthrough 网络模型的连接方式(类似resnet );
- multi-scale: 多尺度输入数据训练模型;
- hi-res detector: Yolov2 相较于 Yolov1 采用更高分辨率的网络进行检测主干网络的训练;
2、BatchNorm批次归一化
V2 版本舍弃 Dropout,卷积后全部加入 Batch Normalization网络的每一层的输入都做了归一化,收敛相对更容易经过 Batch Normalization 处理后的网络会提升 2% 的 mAP从现在的角度来看,Batch Normalization 已经成网络必备处理。
Dropout我们之前说过,深度学习中一种常用的正则化技术,由 Geoffrey Hinton 等人在 2012 年提出 ,主要用于防止神经网络过拟合,核心思想是在训练过程中随机 “关闭” 一部分神经元,迫使网络不依赖某些特定神经元,从而提升模型的泛化能力。在每次前向传播时,网络中的每个神经元都以概率 p(0<p<1,称为保留概率,比如常见设置 p=0.5 )被随机丢弃(即将该神经元的输出置零),未被丢弃的神经元输出值会除以 p(放大 1/p 倍),这是为了保持总体激活值的期望不变。例如原始网络神经元连接为 (A) → (B) → (C) → (D),Dropout 后可能变为 (A) → (0) → (C) → (D) (B 被随机丢弃) 。在反向传播时,被丢弃的神经元不参与权重更新,只有活跃的神经元根据误差对权重进行调整。
3、YOLO-V2 - 更大的分辨率
V1 训练时用的是 224224,测试时使用 448448可能导致模型水土不服,V2 训练时额外又进行了 10 次 448*448 的微调使用高分辨率分类器后,YOLOv2 的 mAP 提升了约 4%

4、YOLO-V2 - 网络结构
不在和YOLO v1一样使用GoogLeNet网络,而是使用DarkNet网络,实际输入416*416大小的图片,其没有fc全连接层,经过5次降采样,得到大小为13*13,


在前面学习的卷积神经网络中,如下图所示,当输入一张图片大小为224*224,经过卷积核处理后,得到的特征图再次进行卷积,到最后的全连接,可以发现,全连接前特征图大小为128*13*13,此时想要经过全连接得到2048个结果需要的权重参数w的个数为128*13*13*2048个,这个数目非常庞大,此时如果传入其他大小的图像,这个权重参数则无法对其进行更新,因为不同大小的输入图片对应输出的特征图大小都是不一样的,这就导致全连接时的权重参数个数都是不同的,所以针对不同尺度的图像,这个卷积神经网络的系统则无法进行处理。
此时再回头可以看到YOLO v2的网络结构,其没有全连接层,只有最后一步的Avgpool全局平均池化,此时对输出的不同大小的特征图都进行同样的处理,使其返回1000个结果,然后通过softmax计算每个类别的概率,那么,无论传入多大的图片,最终的结果都是一样的,以此来实现多尺度的输入。
5、YOLO-V2 - 聚类提取先验框
YOLO v1的预选框有2个,而YOLO v2则有5个预选框,预选框越多找到的目标就越精确,但是算力越多,faster-rcnn系列一共有9种预选框,这9种分为3类,每个类别大小不同,类别内的比例不同(每个类,1:1、2:1、1:2)。
YOLO v2使用K-means聚类算法来提取先验框。K-means是一种无监督学习算法,用于将数据点分为K个不同的簇,以便找到数据的聚类结构。

YOLO v2中假如有100万张图片,需要对其进行训练,每个图片都有标记框,此时有起码100万个标记框,每个标记框都有其高宽的信息,那么将这个w宽和h高当做成一个坐标(w,h),即表示每个框的信息,然后使用k-means对其进行聚类,以此来区分

YOLO v2聚类流程:在模型训练之前,提前把训练集的标签值提取出来,通过k-means聚类的方法,聚类出5个类别。结果当作是先验框。 最后在进行模型训练。
6、YOLO-V2-Anchor Box
通过引入 anchor boxes,使得预测的 box 数量更多(1313n)跟 faster - rcnn 系列不同的是先验框并不是直接按照长宽固定比给定
| without anchor | 69.5 mAP | 81% recall |
| with anchor | 69.2 mAP | 88% recal |
二、Directed Location Prediction
Directed Location Prediction是一种方法,其目的是进行位置微调,预测偏移量。它用于限制偏移量,以防止在训练时出现发散。这种方法预测的是相对位置,即相对于网格的偏移量。模型输出的值为tx、ty
1、V1 中偏移中存在的问题
bbox:中心为;宽和高为
,则:
则将 bbox 在 x 轴向右移动;
则将其向左移动
这样会导致收敛问题,模型不稳定,尤其是刚开始进行训练的时候V2 中并没有直接使用偏移量,而是选择相对 grid cell 的偏移量
2、YOLO-V2-Directed Location Prediction
计算公式为:
预测的偏移量包括tx、ty、tw、th(第一次为先验框及初始化的中心坐标在模型中输出的结果与真实框损失值得到的偏移量值)。调整后的预测值bx、by、bw、bh是通过计算得到的。

例如预测值,
anchor 框为
在特征图位置:
在原位置:
三、感受野
1、感受野
述来说就是特征图上的点能看到原始图像多大区域


假设输入大小都是,并且都使用c个卷积核 (得到c个特征图),可以来计算一下其各自所需参数:
一个卷积核所需参数:
3 个卷积核所需参数:
很明显,堆叠小的卷积核所需的参数更少一些,并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是 VGG 网络的基本出发点,用小的卷积核来完成体特征提取操作。
2、YOLO-V2-Fine-Grained Features
最后一层时感受野太大了,小目标可能丢失了,需融合之前的特征

再网络结构中特征图为512*26*26的时候,将其额外复制出来,然后将其分割成四份,改编成4*13*13*512的格式,然后再将其拼接到最后产生的1024*13*13的特征图后,以此来保留部分的小目标信息
3、YOLO-V2-Multi-Scale
整个网络结构不包含全连接层,因此输入图片的大小可以任意
最小的图像尺寸为320*320
最大的图像尺寸为608*608
注意:输入的图片应该需要被32整除。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)