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 过程中会丢失许多定位信息。此外小物体特征稀疏,容易在融合中被丢弃。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/102235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gitee注册和使用

个人主页:点我进入主页 专栏分类:C语言初阶 C语言程序设计————KTV C语言小游戏 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂。 目录 1.Gitee 1.1Gitee是什么 1.2Gitee的注册以及远程仓库的创建…

iOS 设置下载部分文件,如何获取完整文件的大小

在视频的需求中,遇到这样一个需求,播放一视频的时候,要预下载 后面10条视频,但是只下载后面十条视频的前面1M 实现方法 1 创建请求时设置cacheLength resource [[IdiotResource alloc] init];resource.requestURL task.request…

docker命令学习

docker vscode插件出现的问题 docker命令 docker images (查看所有的镜像) docker ps -a (查看所有的容器) docker ps (查看运行的容器) docker run imageID docker run --gpus all --shm-size8g -it imag…

day27 String类 正则表达式

String类的getBytes方法 String s "腻害"; byte[] bytes s.getBytes(StandardCharsets.UTF_8); String类的new String方法 String ss "ss我的"; byte[] gbks ss.getBytes("gbk"); String gbk new String(gbks, "gbk"); String类的…

C++学习笔记总结练习:多态与虚函数

1 多态 多态分类 静态多态,是只在编译期间确定的多态。静态多态在编译期间,根据函数参数的个数和类型推断出调用的函数。静态多态有两种实现的方式 重载。(函数重载)模板。 动态多态,是运行时多态。通过虚函数机制实…

C#,《小白学程序》第八课:列表(List)应用之二“编制高铁列车时刻表”

1 文本格式 /// <summary> /// 车站信息类 class /// </summary> public class Station { /// <summary> /// 编号 /// </summary> public int Id { get; set; } 0; /// <summary> /// 车站名 /// </summary&g…

在Ubuntu Linux系统上安装RabbitMQ服务并解决公网远程访问问题

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

系列五、Java操作RocketMQ简单消息之同步消息

一、概述 同步消息的特征是消息发出后会有一个返回值&#xff0c;即RocketMQ服务器收到消息后的一个确认&#xff0c;这种方式非常安全&#xff0c;但是性能上却没有那么高&#xff0c;而且在集群模式下&#xff0c;也是要等到所有的从机都复制了消息以后才会返回&#xff0c;适…

QT(8.30)常用类与组件,实现登录界面

1.作业&#xff1a; 完成一个登录界面(图片未附带): 头文件: #ifndef WIDGET_H #define WIDGET_H#include <QWidget>#include <QLineEdit>//行编辑器#include<QIcon>//图标#include<QLabel>//标签#include<QPushButton>//按钮#include<QIc…

GA遗传算法

储备知识 GA算法主要解决数学模型中最优化的搜索算法&#xff0c;是进化算法中的一种&#xff0c;基因算法借鉴了自然界基因的遗传的主要现象&#xff0c;分别为遗传&#xff0c;变异&#xff0c;自然选择&#xff0c;杂交等。 GA算法参数 GA算法的参数如下所示。 种群规模…

JAVA 求最小公因数

JAVA 求最小公因数 文章目录 JAVA 求最小公因数方法一&#xff1a;枚举法的第一种方法一&#xff1a;枚举法的第二种方法二&#xff1a;展转相除法(欧几里德算法)方法三&#xff1a;递归拓展 求最小公倍数公式为综合 辗转相除法递归 求n个数的最大公约数和最小公倍数 题目&…

一百六十九、Hadoop——Hadoop退出NameNode安全模式与查看磁盘空间详情(踩坑,附截图)

一、目的 在海豚跑定时跑kettle的从Kafka到HDFS的任务时&#xff0c;由于Linux服务器的某个文件磁盘空间满了&#xff0c;导致Hadoop的NodeName进入安全模式&#xff0c;此时光执行hdfs dfsadmin -safemode leave命令语句没有效果&#xff08;虽然显示Safe mode is OFF&#x…

EFLK日志平台(filebeat-->kafka-->logstash-->es-->kiabana)

ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 安装顺序 1.安装es 7.17.12 2.安装kibana 7.17.12 3.安装x-pack 保证以上调试成功后开始下面…

C语言:动态内存(一篇拿捏动态内存!)

目录 学习目标&#xff1a; 为什么存在动态内存分配 动态内存函数&#xff1a; 1. malloc 和 free 2. calloc 3. realloc 常见的动态内存错误&#xff1a; 1. 对NULL指针的解引用操作 2. 对动态开辟空间的越界访问 3. 对非动态开辟内存使用free释放 4. 使用free释…

汽车自适应巡航系统控制策略研究

目 录 第一章 绪论 .............................................................................................................................. 1 1.1 研究背景及意义 ..........................................................................................…

Spring Boot 中 Nacos 配置中心使用实战

官方参考文档 https://nacos.io/zh-cn/docs/quick-start-spring-boot.html 本人实践 1、新建一个spring boot项目 我的spirngboot版本为2.5.6 2、添加一下依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

【Locomotor运动模块】瞬移

文章目录 一、原理二、两种类型1、Instant(立刻)2、Dash&#xff08;猛冲&#xff09; 三、瞬移区域、瞬移点1、瞬移区域2、瞬移点 一、原理 抛物线指针选择好目标位置&#xff0c;然后告诉瞬移预设体&#xff1a;你想法把游戏区域弄到目标位置来 解释&#xff1a;抛物线指针选…

uniapp 微信小程序仿抖音评论区功能,支持展开收起

最近需要写一个评论区功能&#xff0c;所以打算仿照抖音做一个评论功能&#xff0c;支持展开和收起&#xff0c; 首先我们需要对功能做一个拆解&#xff0c;评论区功能&#xff0c;两个模块&#xff0c;一个是发表评论模块&#xff0c;一个是评论展示区。接下来对这两个模块进行…

最新ChatGPT程序源码+AI系统+详细图文部署教程/支持GPT4.0/支持Midjourney绘画/Prompt知识库

一、AI系统 如何搭建部署人工智能源码、AI创作系统、ChatGPT系统呢&#xff1f;小编这里写一个详细图文教程吧&#xff01;SparkAi使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到AIGC系统&#xff01; 1.1 程序核心功能 程序已支持ChatGPT3.5/GPT-4提问、AI绘画、Mi…

Kubernetes技术--使用kubeadm搭建高可用的K8s集群(贴近实际环境)

1.高可用k8s集群架构(多master) 2.安装硬件要求 一台或多台机器,操作系统 CentOS7.x-86_x64 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多 注: 这里属于教学环境,所以使用三台虚拟机模拟实现。 3.部署规划 4.部署前准备 (1).关闭防火墙 systemctl stop fi…