YOLO V2原理总结

news2024/11/15 22:25:53

yolo v2在yolo v1的基础上添加或更换了一些内容,一定程度上结局了yolo v1的一些问题。

✨1 概括

做出的改变有8个:

  1. 添加Batch Normalization层
  2. 高分辨率主干网络
  3. anchor box机制
  4. 全卷积网络结构
  5. 新的主干网络
  6. K-means聚类先验框
  7. 使用更高分辨率特征
  8. 多尺度训练

✨2 添加Batch Normalization层

使用Batch Normalizaiton后yolo v1得到了一次性能提升,在VOC2007测试集上,从原本的63.4% mAP提升到65.8%mAP。
具体Batch Normalization单独总结

✨3 高分辨率主干网络

yolo v1中backbone在ImageNet预训练的图像尺寸是224,而做检测任务时,接收到的图像尺寸是448,因此,网络必须要先克服由分辨率尺寸的剧变所带来的问题
为了解决这个问题:在224×224的低分辨率图像上训练好的分类网络又在448×448的高分辨率图像上进行微调,共微调10个轮次。微调完毕后,再去掉最后的全局平均池化层和softmax层,作为最终的backbone网络。
yolo v1网络获得了第二次性能提升:从65.8% mAP提升到69.5% mAP。

4 anchor box机制

这里指的是anchor based,除此之外还有一个叫anchor free。
这里第一次出现是Faster R-CNN,单独总结过,不再总结。

5 全卷积网络结构

yolo v1中出现了几个明显的问题:

  1. flatten破坏了特征的空间结构
  2. 全连接层也导致了参数量的爆炸
  3. 同一网格出现多目标无法预测、

针对flatten破坏空间结构和参数量爆炸的问题:
网络的输入图像尺寸从448改为416,去掉了YOLOv1网络中的最后一个池化层和所有的全连接层,修改后的网络的最大降采样倍数为32,最终得到的也就是13×13的网格,不再是7×7。

同一网格无法多目标预测问题:
这里采用anchor box机制。每个网格处都预设了k个的anchor box。网络只需要学习将先验框映射到真实框的尺寸的偏移量即可,无需再学习整个真实框的尺寸信息,这使得训练变得更加容易。同时加入先验框后,YOLOv2改为每一个先验框都预测一个类别和置信度,即每个网格处会有多个边界框的预测输出。因此,yolo v2的输出张量大小是S×S×k×(1+4+C),每个边界框的预测都包含1个置信度、4个边界框的位置参数和C个类别预测。可以多目标检测。


进行上述改进后,网络的精度并没有提升,反倒是略有所下降69.5% mAP降为69.2%mAP,但召回率却从81%提升到88%召回率的提升意味着YOLO可以找出更多的目标了,尽管精度下降了一点点。由此可见,每个网格输出多个检测结果确实有助于网络检测更多的物体。因此,作者并没有因为这微小的精度损失而放弃掉这一改进。

✨ 6 新的主干网络

yolo v2设计了新的backbone,用于提取特征,网络结构如下所示:
在这里插入图片描述
首先,作者在ImageNet上进行预训练,获得了72.9%的top1准确率和91.2%的top5准确率。
在精度上,DarkNet19网络达到了VGG网络的水平,但前者模型更小,浮点运算量只有后者1/5左右,因此运算速度极快
训练完成后去掉第24,25和26层作为yolo v2的backbone,yolo v1网络从上一次的69.2%mAP提升到69.6%mAP。

✨7 K-means聚类先验框

前面提到的anchor based机制,一些参数是需要选择的,如anchor的高宽,高宽比,数量。不同于Faster R-CNN由人工设计yolo v2采用kmeans方法在VOC数据集上进行聚类,一共聚类出k个先验框**(使用IOU作为衡量指标)**,通过实验,作者最终设定。聚类是为了检测适合该数据集anchor的高和宽
为了解决yolo v1中线性输出器带来的问题,这里对4个边界框的位置参数做一些改变:

  1. 对于中心坐标偏移量本身应该介于0-1之间,但是线性输出器没有范围约束,这就容易导致在学习的初期,网络可能预测的值非常大,导致bbox分支学习不稳定。因此,在YOLOv2的时候,作者就添加了sigmoid函数来将其映射到01范围内
  2. 高和宽应该是非负数,这里采用exp-log方法,具体来说,就是将w,h 用log函数来处理一下
    在这里插入图片描述

这里做的事情是在训练集标签上,然后让网络训练趋近它!
预测时我们需要根据边界框参数得到中心坐标和高宽,如何做呢:

  1. 假设先验框的宽和高分别是在这里插入图片描述在这里插入图片描述

  2. 输出高宽偏量是在这里插入图片描述在这里插入图片描述

  3. 假设先验框中心坐所在网格坐标是在这里插入图片描述在这里插入图片描述
    ,输出位移偏量是在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
用图片中的公式即可求得中心坐标和高宽

使用kmeans聚类方法获得先验框,再配合“location prediction”的边界框预测方法,YOLOv1的性能得到了显著的提升:从69.6% mAP提升到74.4% mAP

7 使用更高分辨率特征

这里借鉴了SSD的工作。之前yolo v1的工作中,都是用最后又一个特征层做预测,到了yolo v2,作者将backbone第17层卷积输出26x26x512的特征层做一次降采样得到13x13x2048的特征层于最后的输出在通道维度上进行拼接
经过上述操作,该特征图具备了更多的信息。然后再拿去进行检测

但是需要注意的是,这里的降采样操作是reorg,降采样后特征图的宽高会减半,而通道则扩充至4倍。好处是降低分辨率的同时没有丢掉任何细节,信息量保持不变。

该操作后,在VOC 2007测试集上的mAP从74.4%再次涨到了75.4%

✨8 多尺度训练

将特征金字塔的思想引入yolo。
具体来说,在训练网络时,每迭代10次,就从{320,352,384,416,448,480,512,576,608}选择一个新的图像尺寸用作后续10次训练的图像尺寸(这些尺寸都是32的整数倍,因为网络的最大降采样倍数就是32,倘若输入一个无法被32整除的图像尺寸,则会遇到些不必要的麻烦)

这种多尺度训练的好处就在于可以改变数据集中各类物体的大小占比,比如说,一个物体在608的图像中占据较多的像素,面积较大,而在320图像中就会变少了,就所占的像素数量而言,相当于从一个较大的物体变成了较小物体。通常,多尺度训练是常用的提升模型性能的技巧之一。若是目标不会有明显的尺寸变化,该技巧就不会由明显的效果,那么也就没必要进行多尺度训练了。

配合多尺寸训练,YOLOv1再一次获得了提升:从75.4% mAP提升到76.8% mAP

✨9 先验框适配问题

通过kmeans聚类的方法所获得的先验框显然会更适合于所使用的数据集:
从A数据集聚类出的先验框显然难以适应新的B数据集。尤其A和B两个数据集中所包含的数据相差甚远时,这一问题会更加的严重。当我们换一个数据集,如Pasical Voc到COCO数据集,则需要重新进行一次聚类。
由聚类所获得的先验框严重依赖于数据集本身,倘若数据集规模过小、样本不够丰富,那么由聚类得到的先验框也未必会提供足够好的尺寸先验信息。

但这个问题其实就Anchor based都存在的问题,直到Anchor free的出现才解决。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(十)异步-委托异步调用(4)

一、委托异步执行 当委托对象被调用时,它调用其调用列表中包含的方法。这是同步完成的。 如果委托对象在调用列表中只有一个方法(引用方法),它就可以异步执行这个方法。委托类有两个方法,叫作 BeginInvoke 和 EndInv…

【计算机网络】进程崩溃或网络中断后,TCP 连接还存在吗?

【计算机网络】进程崩溃或网络中断后,TCP 连接还存在吗? 参考资料: TCP 连接,一端断电和进程崩溃有什么区别? 拔掉网线后, 原本的 TCP 连接还存在吗? TCP/IP卷一:94—TCP保活机制 TCP Keepaliv…

记一次gitlab应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,态势感知平台上出现gitlab RCE漏洞攻击成功告警,现需根据流量情况进行安全…

013、数据库管理之连接管理

连接管理 TiDB的连接特性连接TiDB 数据库开发接口支持 实验案例 TiDB的连接特性 无状态MySQL协议支持 100% 兼容MySQL 5.7协议支持MySQL 5.7常用功能与语法 MySQL 语法支持的限制(不支持的功能特性) 存储过程触发器外键函数其它 连接TiDB 数据库 使…

记一次shiro应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,安全部门监测到WAF上存在shiro攻击成功告警信息,现需根据流量情况进行安全…

Vue中的表单上传与文件预览

Vue中的表单上传与文件预览 在Web应用程序中,文件上传和预览是非常常见的功能。在Vue中,我们可以使用axios和FormData来实现表单上传,使用FileReader来实现文件预览。在本文中,我们将介绍如何在Vue中实现表单上传和文件预览功能。…

[阿里云使用k8s技术部署微服务]

1.1 检查CPU/内存/网络设置 对虚拟机的要求(必须): CPU:最少2核 内存:master >4G,node >3G 网络:NAT模式 操作系统版本: Docker 要求 CentOS 系统的内核版本必须高于 3.10。 如果内核版本为3.10,则发行编号最好能升级到1127, 即:3.10.0…

1000*B. Keep it Beautiful

input 3 9 3 7 7 9 2 4 6 3 4 5 1 1 1 1 1 5 3 2 1 2 3output 111110010 11111 11011 解析: 如果数据不小于前一个数据,则一直为美丽序列; 当碰到第一个小于末尾的数据时,1. 如果他比首数据大,则不符题意。2. 小于等…

【ARMv8 SIMD和浮点指令编程】NEON 移动指令——精通 MOV?

移动指令主要涉及 MOV 和 MVN,它们分别是移动和求反移动。如果你认为仅仅两条指令,还是太小看设计者了! 1 MOV (element) 将向量元素移动到另一个向量元素。该指令将源 SIMD&FP 寄存器的向量元素复制到目标 SIMD&FP 寄存器的指定向…

短视频seo系统源码私有化部署分享

短视频seo矩阵系统源码部署需要以下步骤: 确定系统环境要求:账号矩阵系统需要服务器环境支持PHP和MySQL数据库,因此需要确保服务器环境符合要求,并安装好相应的软件。例如,可以使用XAMPP或WAMP等软件包来快速安装PHP和…

中国唯一 一家Linux 基金会金牌会员 落户阿里云

导读2 月 20 日,全球知名非营利性组织 Linux 基金会宣布,阿里云正式成为 Linux 基金会金牌会员。阿里云表示将持续加大对开源项目的支持,并发挥自己的力量。 2 月 20 日,全球知名非营利性组织 Linux 基金会宣布,阿里云…

pyqt6安装

1、安装pyqt6和pyqt6-tools包 注意:pyqt6-tools目前仅支持python3.9版本,3.9版本后的安装部成功。(截止2022.11.20) 1.1 安装pyqt6和pyqt6-tools 安装pyqt和pyqt6-tools可以使用conda和pip进行安装 (1)…

【备战秋招】每日一题:2023.05-B卷-华为OD机试 - 报文回路

为了更好的阅读体检,可以查看我的算法学习博客报文回路 输入描述 第一行抓到的报文数量,后续C行依次输入设备节点D1和D2,表示从D1到D2发送了单向的报文,D1和D2用空格隔开 输出描述 组播通路是否“正常”,正常输出T…

SQL语言的四大组成部分——DCL(数据控制语言)

1️⃣前言 SQL语言中的DCL(Data Control Language)是一组用于控制数据库用户访问权限的语言,主要包括GRANT、REVOKE、DENY等关键字。 文章目录 1️⃣前言2️⃣DCL语言3️⃣GRANT关键字4️⃣REVOKE关键字5️⃣DENY关键字6️⃣总结附&#xff1…

从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

一、总体框架 总体框架如下图: 用例扫描、测试结果反馈,如要和其它项目管理系统或是用例管理系统对接(比如testlink),就需要单独出来进行处理。 对于大型的产品,用例数特别多的话,需要建设一个…

AIGC提示(prompt)工程之开宗明义篇

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

VMware公司成为Linux基金会金牌会员

导读VMware是云基础架构和企业移动性的全球领导者,多年来一直积极参与开源开发。VMware通过Linux基金会项目(如ONAP,Cloud Native Computing Foundation(CNCF),Cloud Foundry,Open vSwitch等)稳步提高其开源参与度。它刚刚成为了金…

HDFS初认识

HDFS初认识 文章目录 HDFS初认识HDFS是什么?HDFS的假想和设计目标HDFS的优缺点优点缺点 HDFS的架构组成客户端NameNodeDataNodeSecondary NameNode职责checkpoint机制 参考 HDFS是什么? Hadoop分布式文件系统(HDFS)是一个分布式文…

Websocket+protobuf怎么与服务器通信

Websocketprotobuf怎么与服务器通信 Websocket:WebSocket是⼀种⽹络传输协议,可在单个TCP连接上进⾏双全⼯通信,位于OSI模型的 应⽤层 实现⼀个简单的客⼾端和服务端 安装websockets pip3 install websockets客户端代码 import asyncio …

记一次异常外联事件应急响应

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓ 01 事件背景介绍02 事件分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中,安全部门收到来自业务部门的告警,称应用服务器存在异常外联情况&#xff0…