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

相关文章:

yolov2相较于yolov1的改进

目录 前言 BN层取代了Dropout 使用了高分辨率分类器 K-means选定先验框的尺寸 网络结构—darknet19 细粒度的特征 前言 yolov2是在yolov1的基础上进行改进的,主要解决了yolov1定位不准确以及检测重叠的物体极差的情况,总的来说,它有以下…...

如何在Spring Boot应用中使用Nacos实现动态更新数据源

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

代码随想录算法训练营day1~18总结

时间、空间复杂度,解题过程中运用的函数补充说明 数组 day1: http://t.csdn.cn/dBSgY day2: http://t.csdn.cn/JTDvH 数组总结 链表 day3:http://t.csdn.cn/mJx9V day4:http://t.csdn.cn/qiGqz 链表总结 哈希表 day6:…...

【炼气境】HashMap原理以及如何使用

系列文章目录 文章目录 系列文章目录前言1、数据结构2、工作原理3、当两个对象的 hashCode 相同会发生什么?4、你知道 hash 的实现吗?为什么要这样实现?5、为什么要用异或运算符?6、HashMap 的 table 的容量如何确定?l…...

QT基础教程之七Qt消息机制和事件

QT基础教程之七Qt消息机制和事件 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出&#xff0c…...

Python入门自学进阶-Web框架——40、redis、rabbitmq、git——3

git,一个分布式的版本管理工具。主要用处:版本管理、协作开发。 常见版本管理工具: VSS —— Visual Source Safe CVS —— Concurrent Versions System SVN —— CollabNet Subversion GIT GIT安装:下载安装文件:…...

skywalking agent监控java服务

一、前言 skywalking agent可以监控的服务类型有多种,python、go、java、nodejs服务等都可以监控,现在通过java服务来演示skywalking agent的使用,并且是使用容器的方式实现 二、部署skywalking agent监控 需要注意,skywalking…...

LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER

本文是LLM系列文章,针对《LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER》的翻译。 作为自主决策者的大语言模型 摘要1 引言2 前言3 任务形式化4 方法5 实验6 相关工作7 结论 摘要 尽管大型语言模型(LLM)表现出令人印象深刻的语言理解…...

【Unity-Cinemachine相机】Cinemachine Brain属性详解

在Package Manager中下载Cinemachine 创建一个Virtual Camera,然后会发现Main Camera后面多出了个标志,而且属性也不能再修改了 因为绑定了CinemachineBrain,它会读取场景中某个虚拟相机的配置,并以此配置来控制相机的行为&#x…...

使用Python对数据的操作转换

1、列表加值转字典 在Python中,将列表的值转换为字典的键可以使用以下代码: myList ["name", "age", "location"] myDict {k: None for k in myList} print(myDict) 输出: {name: None, age: None, loca…...

MyBatis-Plus —— 初窥门径

前言 在前面的文章中荔枝梳理了MyBatis及相关的操作,作为MyBatis的增强工具,MyBatis-Plus无需再在xml中写sql语句,在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口:BaseMapper和ISe…...

音频——I2S 标准模式(二)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S format时序图逻辑分析仪抓包 I2S format 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到 LSB 按顺序传传输依…...

Python语音识别处理详解

概要 人们对智能语音助手的需求不断提高,语音识别技术也随之迅速发展。在这篇文章中,我们将介绍如何使用Python的SpeechRecognition和pydub等库来实现语音识别和处理,从而打造属于自己的智能语音助手。 1. 什么是语音识别? 语音…...

【小吉送书—第一期】Kali Linux高级渗透测试

文章目录 🍔前言🛸读者对象🎈本书资源🎄彩蛋 🍔前言 对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查&#x…...

服务器允许ssh登录root

用vim打开/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config将sshd_config中的PermitRootLogin属性改为yes ... PermitRootLogin yes ...重启sshd服务 sudo service sshd restart...

【微服务部署】三、Jenkins+Maven插件Jib一键打包部署SpringBoot应用Docker镜像步骤详解

前面我们介绍了K8SDockerMaven插件打包部署SpringCloud微服务项目,在实际应用过程中,很多项目没有用到K8S和微服务,但是用到了Docker和SpringBoot,所以,我们这边介绍,如果使用Jenkinsjib-maven-plugin插件打…...

Ansible学习笔记9

yum_repository模块: yum_repository模块用于配置yum仓库的。 测试下: [rootlocalhost ~]# ansible group1 -m yum_repository -a "namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno" 192.168.17.106 | CHANGED &g…...

Ubuntu22.04安装Mongodb7.0

Ubuntu安装Mongodb 1.平台支持2.安装MongoDB社区版2.1导入包管理系统使用的公钥2.2为MongoDB创建列表文件2.3重新加载本地包数据库2.4安装MongoDB包1.安装最新版MongoDB2.安装指定版MongoDB 3.运行MongoDB社区版1.目录2.配置文件3.初始化系统4.启动MongoDB5.验证MongoDB是否成功…...

Oracle中序列删除的正确语句(oracle删除序列语句)

Oracle中序列删除的正确语句 Oracle 是由世界上最大的软件公司 Oracle Corporation 提供的关系型数据库管理系统,拥有广泛的应用和功能,如存储过程、触发器、视图、序列以及其他的复杂的特性,能够满足丰富的业务需求。本文主要研究Oracle中序…...

ChatGPT AI在线免费体验

🤖 与ChatGPT亲密接触 🤖 ChatGPT!它就是一款强大的聊天型人工智能模型,可以与你进行各种有趣的对话,就像我们在这里一样。不论你想聊天、提问、寻求建议,还是只是想找个伙伴一起闲聊,ChatGPT都…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...