YOLO V2 网络构架解析
YOLO V2(You Only Look Once version 2)是一种基于卷积神经网络的实时目标检测系统,由Joseph Redmon和他的同事在2016年提出。它是YOLO算法的升级版,通过多项改进显著提高了检测速度和精度。本文将详细介绍YOLO V2的网络架构及其关键特性。
一、网络架构概述
YOLO V2的网络架构主要由两部分组成:主干网络(Backbone)和检测层(Detection Layer)。主干网络负责提取图像特征,而检测层则基于这些特征进行物体检测。
二、主干网络:Darknet-19
Darknet-19是YOLO V2的核心主干网络,它包含19个卷积层和5个最大池化层,没有全连接层。这使得网络输入图像大小可以任意,但为了满足多次降采样的需求,输入图像的大小必须满足32的倍数。
-
卷积层:Darknet-19的前4个卷积层使用较小的3x3卷积核,后3个卷积层使用较大的1x1卷积核。1x1卷积层主要用于节省参数。
-
池化层:网络中有5个最大池化层,用于对卷积层输出的特征图进行下采样,减少特征图的大小,降低计算量。
-
Batch Normalization:每个卷积层之后都添加了Batch Normalization层,以加速收敛并稳定训练过程。这一改进使得网络的每一层输入都做了归一化,减少了过拟合现象,并提升了2%的mAP(mean Average Precision)。
三、检测层
检测层是YOLO V2算法的核心,它在Darknet-19的输出上进行物体检测。检测层由三个子层组成:1x1卷积层、上采样层和卷积层。
-
1x1卷积层:用于降低特征维度,将Darknet-19输出的13x13x1024的张量转换为13x13x125的张量。每个位置对应着一个边界框和类别预测。
-
上采样层:将13x13的特征图上采样到26x26,增加检测精度。
-
卷积层:最后一个卷积层用于输出检测结果,其卷积核大小为1x1,输出13x13x125的张量。
四、关键特性
-
高分辨率分类器:YOLO V2在训练时使用了448x448的高分辨率图像,并进行了10次微调。这一改进使得模型能够更好地适应大分辨率的输入,提高了模型的准确率,mAP提升了约4%。
-
锚框(Anchor Boxes):YOLO V2借鉴了Faster R-CNN中的Anchor机制,使用先验框来预测边界框的偏移。不同于Faster R-CNN,YOLO V2的先验框是通过k-means聚类方法在训练集上自动确定的,这有助于提高模型对不同尺寸物体的检测能力。
-
直接位置预测:YOLO V2使用sigmoid函数将偏移量映射到0、1之间,限制了预测值的范围,提高了模型的稳定性。
-
细粒度特征:为了更好地检测小物体,YOLO V2引入了细粒度特征,通过passthrough层将高分辨率的特征图与低分辨率的特征图结合起来。
-
多尺度训练:YOLO V2在训练过程中采用多尺度输入,每隔一定批次随机改变输入图像的尺寸,使模型能够适应不同尺寸的图像。
五、总结
YOLO V2通过引入Batch Normalization、高分辨率分类器、锚框、直接位置预测、细粒度特征和多尺度训练等关键特性,显著提高了目标检测的精度和速度。其网络架构以Darknet-19为主干网络,结合检测层进行物体检测,实现了实时目标检测的高效性能。
YOLO V2的成功不仅在于其技术上的创新,更在于其将目标检测问题转化为回归问题的核心思想,为后续的目标检测算法提供了重要的启示和借鉴。