当前位置: 首页 > news >正文

yolov2相较于yolov1的改进

目录

前言

BN层取代了Dropout

使用了高分辨率分类器

K-means选定先验框的尺寸

网络结构—darknet19

细粒度的特征


前言

yolov2是在yolov1的基础上进行改进的,主要解决了yolov1定位不准确以及检测重叠的物体极差的情况,总的来说,它有以下改进:

  • BN层取代了Dropout
  • 使用了高分辨率分类器
  • K-means选定先验框的尺寸
  • 网络结构—darknet19
  • 细粒度的特征

BN层取代了Dropout

在yolov1的基础上添加了Batch Normalization,BatchNorm层和Dropout层在一定程度上都可以抑制过拟合,但其工作机制有所不同,Dropout会随机让一些节点输出为0,用来增加模型的泛化能力,在一定的程度上起到了正则化作用,但Dropout会降低训练时的信息流通,收敛速度变得更慢,而BatchNorm层通过对每个batch做标准化,使得信息在层与层之间传递时分布更稳定。这也起到一定的正则作用,并可以 accelerate 网络的训练。

相比Dropout,BatchNorm的优点是:

  • 对特征分布做标准化,使得梯度传播更顺畅,起到加速训练的效果

  • 在测试时不丢弃任何节点,保留了完整的网络结构

  • 对小batch size更友好

因此,在目标检测任务中,特别是对batch size敏感的一阶段检测网络中,使用BatchNorm可以获得更好的效果,成为了标准配置。随着BatchNorm层的引入,yolov2和v3收敛速度更快,效果也有所提升。

可以说,BN层在一定程度上取代了yolov1中的Dropout层,成为yolo后续版本的标准组件之一。

使用了高分辨率分类器

yolov2相比v1使用了更高分辨率的图像进行分类网络的预训练,这也是YOLOv2取得提升的一个重要原因。

YOLO 对应训练过程分为两步,第一步是通过 ImageNet 训练集 进行高分辨率的预训练,这一步训练的是分类网络;第二步是训练检测网络,是在分类网络的基础上进行微调。

yolov1使用224x224的较低分辨率图像预训练分类网络。而在yolov2中,作者将预训练时使用的图像分辨率提高到了448x448。

使用更大分辨率的图像可以学习到更丰富的特征表示,有利于提升模型的检测效果。文中也报告称,更高分辨率预训练可以使mAP提高约4%。

此外,YOLOv2还改进了网络结构,加深了网络层数,进一步提升了特征表达效果。

K-means选定先验框的尺寸

YOLOv2的先验框选择方法如下:

  1. 收集训练数据集中真实框的宽高信息

  2. 对真实框的宽高按比例进行聚类,获得多个宽高比例cluster

  3. 为每个cluster计算一个平均宽高(即先验框的宽高)

  4. 对不同特征层,分别进行上述步骤,获得该特征层的多个先验框

与yolov1直接人工设置不同,YOLOv2的先验框是通过K-means算法对真实框统计聚类得到的。这种方法可以让先验框更贴近数据集的真实分布情况,从而提升检测效果。

网络结构—darknet19

Darknet-19主要特点包括:

  • 仅使用3x3卷积层和2x2最大池化层堆叠构建,没有全连接层

  • 从空间维度不断下采样,逐步减小特征图尺寸,增加通道数

  • 在Darknet结构上增加了批标准化(BatchNorm)层

  • 19层网络深度,相比VGG16等要浅一些

Darknet-19作为分类网络预训练后,YOLOv2在其基础上进行了扩展,它加入了回归预测层、类别预测层等用于检测的层,在多尺度特征层上进行检测,提高小目标检测效果,并且使用了特征融合的方式提升检测精度。

细粒度的特征

其实就是为了增强网络对于小物体检测的能力,但提升效果不明显,这一缺点在v3版本中有巨大改进。具体来说,YOLOv2在预测层前融合了不同层级的特征,包括:

(1)原13x13的特征层

(2)通过上采样获得的26x26特征层

(3)通过上采样获得的52x52特征层

这多尺度的特征融合提供了不同粒度的信息。较高分辨率的特征具有更细致的纹理信息,有利于小物体检测。但是论文结果也显示,这种multi-scale特征在YOLOv2中对检测小物体的提升非常有限(mAP提升 only 2%)。原因在于 uprising 过程中会丢失许多定位信息。此外小物体特征稀疏,容易在融合中被丢弃。

http://www.lryc.cn/news/152321.html

相关文章:

  • 如何在Spring Boot应用中使用Nacos实现动态更新数据源
  • 代码随想录算法训练营day1~18总结
  • 【炼气境】HashMap原理以及如何使用
  • QT基础教程之七Qt消息机制和事件
  • Python入门自学进阶-Web框架——40、redis、rabbitmq、git——3
  • skywalking agent监控java服务
  • LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER
  • 【Unity-Cinemachine相机】Cinemachine Brain属性详解
  • 使用Python对数据的操作转换
  • MyBatis-Plus —— 初窥门径
  • 音频——I2S 标准模式(二)
  • Python语音识别处理详解
  • 【小吉送书—第一期】Kali Linux高级渗透测试
  • 服务器允许ssh登录root
  • 【微服务部署】三、Jenkins+Maven插件Jib一键打包部署SpringBoot应用Docker镜像步骤详解
  • Ansible学习笔记9
  • Ubuntu22.04安装Mongodb7.0
  • Oracle中序列删除的正确语句(oracle删除序列语句)
  • ChatGPT AI在线免费体验
  • CSS中如何实现文字渐变色效果(Text Gradient Color)?
  • 尚硅谷SpringMVC (1-4)
  • 独家首发!openEuler 主线集成 LuaJIT RISC-V JIT 技术
  • 在Mac 上安装flutter 遇到的问题
  • 一个月能做什么?成长感悟分享
  • 网络编程
  • ip route get ip地址 应用案例
  • Windows下Redis的安装和配置
  • 【sgTransfer】自定义组件:带有翻页、页码、分页器的穿梭框组件,支持大批量数据的穿梭显示。
  • 分布式爬虫与SOCKS5代理池的组合优势
  • 京东获得JD商品详情 API 接口文档(含请求代码)