目标检测算法:YOLOv2-v4简单解读

news2024/11/25 18:58:35

目标检测算法:YOLOv2-v4简单解读

说明

​ YOLO系列算法是目标检测领域比较突出的算法之一,网上关于每个版本都有非常多的解读,这里我只是简单梳理一下我自己的观点,主要目的是帮助自己复习和梳理知识。

​ 本博客属于论文解读系列,但是注重点还是我个人认为比较重要的地方,因此对于论文并没有非常详细的解读。

免责申明

​ 有误写/错写/错误观点/错误解读,或者大家有其它见解,都可以在评论区指出,博主会认真学习的。

原始论文下载链接

​ YOLOv2、YOLOv3、YOLOv4。

目录结构

文章目录

    • 目标检测算法:YOLOv2-v4简单解读
      • 1. 前言
      • 2. YOLOv2
        • 2.1 创新点
        • 2.2 整体架构
        • 2.3 YOLOv2中的anchor机制
        • 2.4 YOLOv2中的回归机制
      • 3. YOLOv3
        • 3.1 创新点
        • 3.2 整体架构
      • 4. YOLOv4
        • 4.1 创新点
        • 4.2 模型范式
        • 4.3 YOLOv4架构
        • 4.4 作者尝试过的tricks
      • 5. 总结

1. 前言

​ 之前,对YOLOv1论文进行解读了,本篇文章将YOLOv2-v4结合在一起进行解读,主要是单篇解读感觉内容有点少。

2. YOLOv2

2.1 创新点

​ 相较于YOLOv1,YOLOv2主要的创新点在于:

  • 引入了BN层
  • 引入Anchor机制
  • 引入了残差链接

2.2 整体架构

​ YOLOv2整体架构如下图:
在这里插入图片描述

  • 上图中的骨干网络其实是作者自己设计的,其命名为Darknet-19。
  • YOLO v1 作者采用先在ImageNet(227*227)上预训练,再去检测数据集(448*448)上微调,但是后来发现效果不佳。因此在YOLO v2中作者预训练完毕后,先在ImageNet上用448*448的图像微调,再用于检测数据集上。

2.3 YOLOv2中的anchor机制

为什么引入anchor机制?

​ 由于在YOLOv1中预定的框太少了,只有7*7*2=98个,因此作者引入了anchor机制来增加预定框的数量。

如何实现的

​ Faster-RCNN中的anchor机制有一个缺点,就是尺寸和比例是人为设定的,最终结果受此影响较大。因此,在YOLOv2中,作者采用k-means算法进行聚类,通过判断(1-IOU)的值来进行聚类操作,生成k个(人为设定个数)anchor框。

2.4 YOLOv2中的回归机制

​ 由于YOLOv2中引入了anchor机制,因此回归机制相对于YOLOv1有所变化。

​ 在原始RPN网络中,是这么定义回归的:(其中,dx与dy是偏移值。)

在这里插入图片描述

​ 但是,上式存在一个缺点,就是x、y的值没有限制,因此可能落在图像中任意位置,导致模型不稳定。故需要对它加以限制,同时也采用YOLOv1的思想,预测相对于左上角的偏移量:

在这里插入图片描述

​ 其中,sigmoid函数限制值在(0,1)之间,而Cx、Cy为左上角点坐标。

3. YOLOv3

YOLOv3主要的创新点就在于引入了多尺度交叉融合的思想,但是由于论文写的比较随意,因此很多细节多在代码中体现,因此读懂网络架构是最重要的一环。

3.1 创新点

​ FPN思想的引入(多尺度交叉融合预测)

3.2 整体架构

​ 整体架构如图所示:

在这里插入图片描述

​ 其中输出有三个通道,最终输出的尺寸大小不同,也是针对的检测对象大小不同。

​ 另外,采用了FPN的思想(深层特征图向上传递给浅层特征图进行融合)。

4. YOLOv4

YOLOv4更偏向于应用,理论上的创新不多

4.1 创新点

  • 给出了目标检测的一种“范式”,将检测模型划分为不同的部位,以后构建新模型有点类似乐高的拼接不同模块。
  • 另外,YOLOv4还对各种tricks进行了应用

4.2 模型范式

​ YOLOv4将目标模型分为以下四个部位:

  • 输入
    • 比如普通的图像输入、图像补丁(将图像切分为小块)、图像金字塔(比如将一张图像进行多尺度缩放构成金字塔)
  • 骨干(backbone)
    • 常见的比如VGG、ResNet、DarkNet等
  • 颈部(neck)
    • 常见的就是FPN、PAN等
  • 头部(head)
    • 分为两类,一类是单阶段的检测头,另外一类是多阶段的检测头。除此之外,还可以从是否解耦进行分类,解耦的一类就像多阶段检测头一样,最终的结果就是框坐标+类别;没有解耦的一类就像YOLO,最终输出是一个特征向量,想要转为框,还需要后处理。

​ 这一范式很重要,在后面的YOLO系列中,大都是根据这个范式进行不同部位的修改和优化。

4.3 YOLOv4架构

​ 在YOLOv4中,作者采用的架构为:

  • 骨干:CSPDarkNet-53
  • 颈部:SPP、PAN
  • 头部:YOLOv3

4.4 作者尝试过的tricks

具体的tricks需要看论文

​ BOF,bag of free,即不增加推理成本且有效的方法。比如数据增强、难负样本挖掘等等。

​ BOS,bag of special,即增加推理成本但是利大于弊的方法,比如后处理方法、注意力机制等。

5. 总结

​ YOLOv1奠定了YOLO系列的根本思想,后面的YOLO系列都是在此基础上进行改编和优化。个人人为各种各样的tricks很重要,因为当前人将很多地方都优化到一定程度,后人想要在此基础上继续优化有点难度,不如引入有效的trick,还有可能进一步提升模型。

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

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

相关文章

nginx基础3——配置文件详解(实用功能篇)

文章目录 一、平滑升级二、修饰符2.1 无修饰符效果2.2 精准匹配()2.3 区分大小写匹配(~)2.4 不区分大小写匹配(~*)2.5 匹配优先级 三、访问控制四、用户认证五、配置https六、开启状态界面七、rewrite重写u…

文件加密软件哪个好?文件加密方法介绍

为了避免数据泄露事件的发生,电脑中的重要文件需要采用加密的方法进行保护。那么,文件加密软件哪个好呢?下面我们就一起来了解一下。 EFS加密 除了Windows的家庭版系统外,其他版本的系统均拥有EFS文件加密功能,它可以…

Linux 学习记录53(ARM篇)

Linux 学习记录53(ARM篇) 本文目录 Linux 学习记录53(ARM篇)一、内存读写指令1. 在C语言中读取内存2. 指令码及功能3. 格式4. 使用示例5. 寻址方式(1. 前索引方式(2. 后索引方式(3. 自动索引 6.批量寄存器操作指令(1. 操作码(2. 格式(3. 使用示例(4. 地址增长方式>1 ia后缀&…

【论文学习】Distortion Agnostic Deep Watermarking

一、前言 论文链接:Distortion Agnostic Deep Watermarking 论文主要内容: 该文献提出了一种失真不可知的鲁棒水印模型,以解决现有DNN鲁棒水印方法的局限性。现有的DNN鲁棒水印方法,通常是在训练阶段将各类失真(例如…

Databend 开源周报第 102 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 为指定列创建 B…

DataTable数据对比

DataTable数据对比 文章目录 DataTable数据对比前言一、计算DataTable差集结构不同的情况结构相同的情况 二、计算DataTable交集结构不同的情况结构相同的情况 三、计算DataTable的并集合两个DaTable结构相同的情况计算并集 前言 开发中我们经常会出现查询数据库后返回DataTab…

Spring Data JPA使用规则和审计的学习

一、引入依赖 完整的pom文件如下所示: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

idea 常用快捷键总结

IDEA常用快捷键总结 很多新手小白在使用IDEA进行代码编写的时候 对快捷键很感兴趣 这里泡泡给大家总结了一些常用的快捷键 希望能帮助到你 记得要收藏下来时常观看并且练习&#xff0c;才能熟练哦~ 1. 根据psvm或者main快速生成主函数 我们可以在类中输入psvm 或者main 然后I…

数据结构day4(2023.7.18)

一、Xmind整理&#xff1a; 链表的插入和删除&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;顺序表去重 33 22 22 11 11 i jfor(int i0;i<list->len-1;i){for(int ji1;j<len;j){if(list->data[i]list->data[j]){delete_by_sub(j,list); …

springmvc @RequestMapping注解中produces以及consumes属性的含义(转载请删除括号里的内容)

http协议基础知识 首先需要了解什么叫MediaType&#xff08;媒体类型&#xff09;&#xff1f; 通俗来说&#xff0c;在http协议中&#xff0c;用来表示传输内容的格式就是MediaType&#xff0c;比如text/html&#xff0c;application/json等&#xff0c;其中text代表介质&am…

win7系统电脑怎么在桌面上悬挂工作日程安排清单显示呢?

在现代快节奏的工作环境中&#xff0c;合理安排和管理工作日程是非常重要的。而在电脑桌面上悬挂工作日程安排清单显示&#xff0c;可以让我们随时了解自己的任务和工作进度&#xff0c;提高工作效率。那么&#xff0c;如何在Win7系统电脑上实现这一功能呢&#xff1f; 今天我…

第六章内存保护单元(Cortex-M7 Processor)

目录 第六章内存保护单元 6.1关于MPU 6.2MPU功能描述 6.3MPU编程器模型 第六章内存保护单元 介绍MPU (Memory Protection Unit)。它包含以下部分: 关于第6-2页的MPU。MPU功能描述见第6-3页。MPU程序员模型在第6-4页。 6.1关于MPU MPU是内存保护的可选组件。处理器支持标准…

【算法基础:数据结构】2.3 并查集

文章目录 并查集算法原理&#xff08;重要&#xff01;⭐&#xff09; 经典例题836. 合并集合&#xff08;重要&#xff01;模板&#xff01;⭐&#xff09;837. 连通块中点的数量&#xff08;维护连通块大小的并查集&#xff09;240. 食物链&#xff08;维护额外信息的并查集&…

【Spring | 应用上下文】

应用上下文 应用上下文和资源路径构造应用上下文构造ClassPathXmlApplicationContext实例 — 快捷方式使用通配符蚂蚁式图案类路径&#xff1a;前缀 应用上下文和资源路径 本节介绍如何使用资源创建应用程序上下文&#xff0c;包括使用 XML 的快捷方式、如何使用通配符以及其…

能耗管理平台保障用电的安全

安科瑞虞佳豪 壹捌柒陆壹伍玖玖零玖叁 6月12日&#xff0c;江苏盐城射阳县某民房起火&#xff0c;消防救援人员到场后&#xff0c;立即对火势进行扑救&#xff0c;经过20多分钟的处置&#xff0c;现场明火全部被扑灭&#xff0c;据了解&#xff0c;起火原因是电线老化短路引发…

Mac下makefile使用openssl库

程序报错 ./polipo.h:208:10: fatal error: openssl/ssl.h file not found 安装和查找openssl开发库 brew install brew --prefix openssl cd /opt/homebrew/opt/openssl3 cd lib cd pkgconfig 通过makefile配置include文件和lib文件 pkg-config方式 lib文件查找&#xf…

C# 同构字符串

205 同构字符串 给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字符…

Mysql教程(五):DQL学习

Mysql教程&#xff08;五&#xff09;&#xff1a;DQL学习 DQL Data Query Language 数据查询语言&#xff0c;用来查询数据库中表的记录 1 基本语法 DQL查询语句&#xff0c;语法结构如下&#xff1a; SELECT字段列表 FROM表名列表 WHERE条件列表 GROUP BY分组字段列表 HAVI…

工时管理为何对项目如此重要?8Manage 带你读懂!

“时间就是金钱”&#xff0c;相信作为管理者都已经听腻了这话&#xff0c;但在项目管理中确实是真理。你要知道项目工时是会直接影响到项目费用成本的&#xff0c;不论项目工作是按小时还是按固定费用计费和付款&#xff0c;在一段工时内完成的工作越多&#xff0c;说明效率就…

myAgv的slam算法学习以及动态避障下篇

引言 在之前的一篇文章中有提到购入了一台myAGV&#xff0c;以树莓派4B为控制核心的移动机器人。上篇文章中向大家介绍了myAGV如何实现建图、导航以及静态避障&#xff0c;但我们深知&#xff0c;这只是机器人自主导航能力的基础。在实际应用场景中&#xff0c;机器人需要面对复…