优化改进 | YOLOv2算法超详细解析(包括诞生背景+论文解析+技术原理等)

前言:Hello大家好,我是小哥谈。YOLOv2是YOLO(You Only Look Once)目标检测算法的第二个版本,它在YOLOv1的基础上做了很多改进,包括使用更深的卷积神经网络Darknet-19作为特征提取器、使用Batch Normalization、使用锚盒(Anchor Box)等技术来提高准确性和速度。此外,YOLOv2还提出了一种分类和检测的联合训练策略,可以检测超过9000个类别的物体(故又称YOLO9000)。总的来说,YOLOv2在准确性、速度和识别种类方面都有很大的提升。本节课就给大家重点介绍下YOLO系列算法中的YOLOv2!🌈
目录
🚀1.诞生背景
🚀2.论文发表
🚀3.技术原理
💥💥3.1 网络结构
💥💥3.2 训练策略
🚀4.性能评价

🚀1.诞生背景
2017年,作者Joseph Redmon和Ali Farhadi在YOLOv1的基础上,进行了大量改进,提出了YOLOv2 ,重点解决YOLOv1召回率和定位精度方面的不足。YOLOv2 是一个先进的目标检测算法,比其它的检测器检测速度更快。除此之外,该网络可以适应多种尺寸的图片输入,并且能在检测精度和速度之间进行很好的权衡。相比于YOLOv1是利用全连接层直接预测Bounding Box的坐标,YOLOv2借鉴了Faster R-CNN的思想,引入Anchor机制。利用K-means聚类的方法在训练集中聚类计算出更好的Anchor模板,大大提高了算法的召回率。同时结合图像细粒度特征,将浅层特征与深层特征相连,有助于对小尺寸目标的检测。
作者动机:♨️♨️♨️
1.YOLOv1 速度还是不够快,更换了分类的网络结构。
2.YOLOv1 能检测的物体的种类不够多,提出的YOLO9000利用了分类的数据库使得能检测9000种物体。
3.YOLOv1 召回率低,利用了anchor box解决同一个bonding box 只能检测同一类物体的问题。
YOLOv1和YOLOv2是两个不同版本的目标检测模型。它们之间的区别总结如下:
-
网络架构:YOLOv1使用一个单一的卷积神经网络(CNN)来同时预测边界框和类别,而YOLOv2采用了Darknet-19作为主干网络,并在其之上添加了额外的卷积层和特征金字塔网络。
-
特征提取:YOLOv1在最后一层使用全连接层来生成预测,而YOLOv2在特征图上进行多尺度预测。这种多尺度预测使得YOLOv2能够更好地捕捉不同尺度的目标。
-
Anchor Boxes:YOLOv2引入了锚框(anchor boxes)的概念,通过在每个单元格上定义多个先验框,来预测不同尺度和长宽比的目标。这种方法使得YOLOv2能够更好地处理不同形状和大小的目标。
-
损失函数:YOLOv1使用平方误差来计算边界框坐标和类别的损失,而YOLOv2采用了适应性权重的交叉熵损失函数,以更好地处理类别不平衡问题。
-
训练策略:YOLOv2使用了分步训练策略。首先,使用较大的输入图像进行预训练,然后再用较小的输入图像进行微调。这种策略在提高模型性能的同时,还能提高模型的速度。
🚀2.论文发表
YOLOv2是一篇由Joseph Redmon和Ali Farhadi于2016年发表的目标检测论文。该论文提出了一种新的目标检测算法,可以更快地在各种图像尺寸下运行,并且可以检测9000种以上的目标类别。YOLOv2使用了锚框,这是YOLOv1没有使用的技术。此外,该论文还提出了一种新的网络结构,称为Darknet-19,可以在不损失准确性的情况下减少模型大小和计算量。YOLOv2的性能比YOLOv1有了显著的提升,成为了当时最先进的目标检测算法之一。

说明:♨️♨️♨️
论文题目:《YOLO9000: Better, Faster, Stronger》
论文地址: https://arxiv.org/abs/1612.08242
说明:♨️♨️♨️
关于YOLOv2论文的详细解析,请参考文章:
优化改进 | YOLOv2论文介绍及翻译(纯中文版)
🚀3.技术原理
💥💥3.1 网络结构
YOLOv2 采用 Darknet-19 作为特征提取网络,其整体结构如下:

该网络结构的主要优势在于:
- 没有全连接层,可以输入任意尺寸的图片。
- 速度快,每2个卷积层之间用了1x1的卷积核来压缩模型。最后没用全链接层, 而是利用了avgpool。速度提升了。
- 特点:每次pool尺寸减半,通道增加 一倍。
改进后的YOLOv2: Darknet-19,总结如下:
- 与VGG相似,使用了很多3×3卷积核;并且每一次池化后,下一层的卷积核的通道数 = 池化输出的通道 × 2。
- 在每一层卷积后,都增加了批量标准化(Batch Normalization)进行预处理。
- 采用了降维的思想,把1×1的卷积置于3×3之间,用来压缩特征。
- 在网络最后的输出增加了一个global average pooling层。
- 整体上采用了19个卷积层,5个池化层。
💥💥3.2 训练策略
YOLOv2的训练策略主要包括以下几个步骤:
-
数据准备:首先需要准备训练数据集,包括图像和标注信息。标注信息通常包括物体的类别和边界框的位置。
-
网络初始化:使用预训练的卷积网络(如Darknet-19)作为特征提取器,然后添加额外的卷积层和全连接层来预测边界框的位置和类别。
-
损失函数:定义损失函数来度量预测和真实标注之间的差异。YOLOv2使用多任务损失函数,包括分类损失、边界框坐标损失和置信度损失。
-
训练过程:使用随机梯度下降(SGD)或其他相似的优化算法来最小化损失函数。在每个训练批次中,随机选择一批图像,并通过前向传播计算预测结果。然后使用反向传播更新网络参数。
-
数据增强:为了增加训练样本的多样性和鲁棒性,可以采用数据增强技术,如随机缩放、随机裁剪、随机旋转等。
-
迭代训练:重复执行步骤4和步骤5,直到达到预定的训练轮数或收敛条件。
-
推理阶段:在训练完成后,可以使用训练好的模型对新的图像进行目标检测。
🚀4.性能评价
🍀(1)优点
- 结果:相对v1 (更快、mAP更高)
- 正负样本:引入Anchor和使用K-means聚类,提高了Recall。
- Backbone:DarkNet-19,降低了计算量(更快)。
- Neck:引入特征融合模块(passthrouch),融合细粒度特征。
- 检测头:多尺度训练提高模型能力,实现了速度和精度的权衡。
- 小技巧:引入BN,加速网络收敛;约束输出范围,训练更稳定;
🍀(2)缺点
- Backbone 可持续优化。
- Neck 可持续优化。
- 只是单个检测头,小目标识别还不太好。
- 损失函数可持续优化

相关文章:
优化改进 | YOLOv2算法超详细解析(包括诞生背景+论文解析+技术原理等)
前言:Hello大家好,我是小哥谈。YOLOv2是YOLO(You Only Look Once)目标检测算法的第二个版本,它在YOLOv1的基础上做了很多改进,包括使用更深的卷积神经网络Darknet-19作为特征提取器、使用Batch Normalizati…...
作为前端开发,你应该知道的这十几个在线免费工具
偶然刷到知乎一位前端大佬 表歌 多篇优秀实用的文章,真的发现宝藏了 以下内容就是他在知乎分享的十几个在线免费工具 1. 页面设计检查清单:https://www.checklist.design/ 页面设计检查清单 通过清单可以检查一些常用容易忽略的设计要素。 2. 背景色…...
【广州华锐互动】关于物理力学的3D实验实操平台
在科学的广阔领域中,物理力学是一个至关重要的分支,它探索了物体在力作用下的运动规律。然而,传统的物理实验往往需要复杂的设备和大量的操作,这对于学生来说是一项巨大的挑战。为了解决这个问题,广州华锐互动开发了物…...
LVS负载均衡(LVS简介、三种工作模式、十种调度算法)
LVS简介 LVS(Linux Virtual Server)是一种基于Linux内核的高可用性负载均衡软件。它通过将客户端请求分发到多个后端真实服务器,提高系统性能和可靠性。LVS支持多种调度算法,如轮询、最少连接、源地址哈希等,用于决定…...
Vue响应式数据的实现原理(手写副作用函数的存储和执行过程)
1.命令式和声明式框架 命令式框架关注过程 声明式框架关注结果(底层对命令式的DOM获取和修改进行了封装) 2.vue2 Object.defineProperty()双向绑定的实现 <body><div id"app"><input type"text" /><h1>…...
内核进程的调度与进程切换
进程被创建到了链表中,如何再进行进一步的调用和调用? 进程调度 void schedule(void); 进程调度 switch_to(next); 进程切换函数 void schedule(void) {int i,next,c;struct task_struct ** p;/* check alarm, wake up any i…...
docker-rabbitmq 安装依赖
出现的问题如下: channel error; protocol method: #method(reply-code404, reply-textNOT_FOUND - no channel error; protocol method: #method<channel.close>(reply-code404, reply-textNOT_FOUND - no 查看rabbitmq 客户端是否存在如…...
(1)(1.9) HC-SR04声纳
文章目录 前言 1 连接到自动驾驶仪 2 参数说明 前言 HC-SR04 声纳是一种价格低廉但量程很短(最远只有 2m)的测距仪,主要设计用于室内,但也成功地在室外的 Copter 上使用过。极短的测距范围使其用途有限。 !Warning…...
06 MIT线性代数-列空间和零空间 Column space Nullspace
1. Vector space Vector space requirements vw and c v are in the space, all combs c v d w are in the space 但是“子空间”和“子集”的概念有区别,所有元素都在原空间之内就可称之为子集,但是要满足对线性运算封闭的子集才能成为子空间 中 2 …...
【每日一题Day360】LC1465切割后面积最大的蛋糕 | 贪心
切割后面积最大的蛋糕【LC1465】 矩形蛋糕的高度为 h 且宽度为 w,给你两个整数数组 horizontalCuts 和 verticalCuts,其中: horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离verticalCuts[j] 是从矩形蛋糕的左侧到第 j 个竖直切口…...
中国地名信息库
地名是社会基本公共信息,是历史文化的重要载体。 2014年至2018年,国家启动实施并完成了第二次全国地名普查工作,全国共计采集地名1320多万条,修测标绘地名图2.4万多幅,新设更新地名标志68万多块,普遍建立了…...
网络时代下的声音之路:如何在中央新闻媒体发布网评稿
在当今数字时代,信息传播已经变得更加便捷和广泛。各大中央新闻媒体平台为民众提供了一个发布观点、表达意见的平台。在这个背景下,撰写并发布网评稿成为了一种重要的社会参与方式。根据媒介易软文发稿平台的总结,下面是探讨如何在各大中央新…...
Selenium中WebDriver最新Chrome驱动安装教程
😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…...
云原生Docker数据管理
目录 Docker的数据管理 数据卷 数据卷容器 容器互联 容器中管理数据主要有两种方式: 数据卷(Data Volumes)数据卷容器(Data Volume Dontainers) Docker的数据管理 数据卷 数据卷是一个供容器使用的特殊目录&a…...
endnote设置
问题1:参考文献的tab太长 首先要在endnote里面这样设置,file->output->edit "XXX" 保存之后,在word更新目录。 在word里面设置悬挂缩进 结果: Endnote参考编号与参考文献距离太远怎么调整 endnote 文献对齐方式…...
计算机网络整理-简称缩写【期末复习|考研复习】
文章目录 前言一、物理层1.1 FDM频分复用 Frequency-division multiplexing1.2 TDM时分复用 Time-division multiplexing1.3 WDM波分复用 Wavelength Division Multiplexing1.4 Hub 集线器1.5 FSK频移键控 Frequency-shift keying 二、数据链路层2.1 GBN回退N步协议 Go Back N …...
Flink Hive Catalog操作案例
在此对Flink读写Hive表操作进行逐步记录,需要指出的是,其中操作Hive分区表和非分区表的DDL有所不同,以下分别记录。 基础环境 Hive-3.1.3 Flink-1.17.1 基本操作与准备 1、上传依赖jar包到flink/lib目录下 cp flink-sql-connector-hive-…...
NSSCTF做题第9页(3)
[GKCTF 2020]CheckIN 代码审计 这段代码定义了一个名为ClassName的类,并在脚本的最后创建了一个ClassName类的实例。 在ClassName类的构造函数中,首先通过调用$this->x()方法获取了请求参数$_REQUEST中的值,并将其赋值给$this->code属性…...
从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程【文末送书五本】
从瀑布模式到水母模式:ChatGPT如何赋能软件研发全流程 前言内容简介购买链接作者简介专家推荐读者对象参与方式往期赠书回 🏘️🏘️个人简介:以山河作礼。 🎖️🎖️:Python领域新星创作者,CSDN实…...
设置使用LibreOffice作为默认程序打开word、excel等文档
以win7为例。打开控制面板,点击程序: 点击“设置默认程序”: 左侧选中LibreOffice,然后在右下方点击“选择此程序的默认值”: 然后根据自己的需要勾选就行了:...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
Caliper 配置文件解析:fisco-bcos.json
config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...
Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
