YOLO学习笔记[2]——YOLOv2详解

如题所述

深入探索YOLOv2:精准定位与性能提升



YOLOv2,作为YOLOv1的进化之作,实现了显著的定位精度和召回率提升,尤其是在小目标和密集目标检测方面。其核心策略包括引入Batch Normalization (BN) 和高分辨率图像分类器(Fine-tuning)的融合,以优化训练过程和增强模型性能。BN通过标准化数据分布,具体涉及计算均值、方差,再对数据进行归一化和重构,这一过程显著加快了模型的收敛速度,并提供更强的正则化效果。

YOLOv2的训练策略分为两步:首先进行160个epoch的全输入训练,随后调整分辨率进行10个epoch的精细调整。为解决YOLOv1对不同尺寸物体定位的挑战,YOLOv2引入了锚框,这一创新使得定位精度显著提高。尽管高分辨率特征图预测导致mAP略有下降,但召回率的提升更为显著。通过K-means聚类,YOLOv2提取了5个先验框尺寸信息,改用偏移值预测边界框位置,确保在cell内预测,从而计算出准确的边界框坐标和大小。

先验框作为预设的尺寸和宽高比,是非像素值,它们基于特征图的大小设定。在COCO和VOC数据集上,选择的五种不同尺寸锚框,有效地应对了小目标的检测需求。YOLOv2摒弃了预测边框绝对坐标的做法,转而使用偏移值,确保边界框始终处于cell范围内。

YOLOv2的特征图设计独具匠心,以13x13为标准,通过5次maxpooling生成,同时加入passthrough layer链接26x26特征图,增强了对小目标的预测能力。采用Multi-Scale Training技术,允许模型动态适应多种图片尺寸,提高了模型的鲁棒性。YOLOv2借鉴了Faster R-CNN和SSD的锚框概念,但其预测过程更为直接,跳过了RPN的步骤,这是其创新点之一。

基础模型Darknet-19的引入是YOLOv2的一大亮点,它类似VGG16的结构,由19个卷积层和5个maxpooling层组成,配合batch norm加速训练。在ImageNet上,首先从头开始训练Darknet-19,160个epoch,接着在fine-tuning阶段,使用448x448输入,调整学习率至0.001。

经过结构优化和训练方法的改进,Darknet-19的性能大幅提升,top-1准确率提升到76.5%,top-5提升至93.3%。YOLOv2紧接着通过fine-tuning,进一步强化其在detection任务中的表现。模型结构包括额外的3个卷积层和一个passthrough层,输出通道数根据任务调整,训练参数如160个epoch、学习率的调整和weight decay设置,以及多尺度训练和特定的匹配规则,共同决定了loss的计算。

YOLOv2在处理ground truth时,每个匹配框只与IOU值最大的先验框关联,且在误差计算上,v2根据ground truth的大小自适应调整权重。训练过程分为三个阶段:预训练分类模型(ImageNet,160 epochs)、fine-tune分类(448x448,10 epochs)以及检测模型的转换和持续训练。

作者创新地提出分层分类方法,利用分类和检测数据集如ImageNet(9000类)和COCO(80类)进行训练,通过WordTree结构组织类别,预测时遵循决策树的路径计算概率。构建的1369类WordTree,指导了Darknet-19模型的训练,采用分组Softmax,保持数据集的比例。

YOLO9000的训练采用联合分类和检测的方法,将两者任务无缝融合。网络训练中,面对分类标签,仅反向传播分类部分信息,而针对检测标签,执行完整的YOLOv2损失函数。YOLO9000沿袭YOLOv2的基本结构,每个网格单元仅包含3个框的先验预测。对于更深入的YOLO系列学习,可以参考阮庭峰的YOLOv1-3笔记[1,3,4],小小将的YOLOv2详解[2],AI之路的YOLOv2算法博客[3],以及极市平台的YOLO全面综述[4],以进一步提升理解与实践能力。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜