9.1.3 简单介绍单阶段模型YOLO、YOLOv2、YOLO9000、YOLOv3的发展过程
9.1.3 简单介绍单阶段模型YOLO、YOLOv2、YOLO9000、YOLOv3的发展过程
前情回顾:9.1.2 简单介绍两阶段模型R-CNN、SPPNet、Fast R-CNN、Faster R-CNN的发展过程
摘要
| YOLO | YOLOv2 | YOLO9000 | YOLOv3 | |
|---|---|---|---|---|
| 基本思想 | 使用一个端到端的卷积神经网络直接预测目标的类别和位置 | 针对YOLOv1的两个缺点进行改进 | 可以实时地检测超过9000种物体,其主要贡献是使用检测数据集和分类数据集进行联合训练。 | 在YOLOv2基础上进行改进,优化模型效果 |
| 优点 | 相对于两阶段模型,YOLO实时性高,但检测精度稍低 | 使用检测数据集和分类数据集进行联合训练 | 采用在YOLOv2基础上进行改进,优化模型效果进行联合训练,使其在小物体上也能获得很好的检测效果 | |
| 输入图像 | 448×448 | 416×416 | ||
| 具体做法 | 将输入图片划分成SxS的方格,每个方格需要检测出中心点位于该方格内的物体。在具体实施时,每个方格会预测B个边界框(包括位置、尺寸和置信度) | 1.批归一化(BN)层 2.在高精度的图片上调优(fine-tune)10个批次(batch) 3.k-means算法 4.直接在预先设定的锚框上提取特征 5.输入图像的尺寸:416×416 6.将不同大小的特征图结合起来进行物体检测 7.训练每隔10个批次就改变输入图片大小 8.DarkNet-19 | 字典树 | 损失函数:二元交叉熵损失函数 |
| 主体网络 | 参考 GoogLeNet,由24个卷积层和2个全连接层组成 | DarkNet-19 采用3x3的卷积核**,共有**19个卷积层和5个池化层 | DarkNet-53(53个卷积层) 借鉴了残差网络的快捷连接(shortcut)结构 | |
| 缺点 | 低召回率、低定位准确率 |
1.YOLO
-
基本思想:是使用一个端到端的卷积神经网络直接预测目标的类别和位置。
-
优点:相对于两阶段模型,YOLO实时性高,但检测精度稍低。
-
做法:YOLO将输入图片划分成SxS的方格,每个方格需要检测出中心点位于该方格内的物体。在具体实施时,每个方格会预测B个边界框(包括位置、尺寸和置信度)。
-
主体:YOLO的主体网络结构参考 GoogLeNet,由24个卷积层和2个全连接层组成。
-
缺点:低召回率、低定位准确率
2.YOLOv2
YOLOv2针对YOLO的两个缺点,即低召回率和低定位准确率,进行了一系列的改进,下面简单介绍其中的几点。
(1)YOLOv2在卷积层后面添加了批归一化(BN)层,以加快收敛速度,防止过拟合。
(2)YOLOv2的卷积特征提取器在进行检测任务前,先在高精度的图片上调优(fine-tune)10个批次(batch),这样能使检测模型提前适应高分辨率图像。
(3)YOLOv2采用k-means算法进行聚类获取先验锚框,并且聚类没有采用欧氏距离,而是有针对性地改进了距离的定义,即
d ( b o x , c e n t r o i d ) = 1 − I O U ( b o x , c e n t o r i d ) d(box,centroid)=1-IOU(box,centorid) d(box,centroid)=1−IOU(box,centorid)
使其更适合于检测任务。
(4)YOLOv2直接在预先设定的锚框上提取特征。YOLO使用卷积神经网络作为特征提取器,在卷积神经网络之后加上全连接层来预测边界框的中心位置、大小和置信度;而YOLOv2借鉴了Faster R-CNN的思路,用卷积神经网络直接在锚点框上预测偏移量和置信度,该方法要比 YOLO更简单、更容易学习。
(5)YOLOv2将输入图像的尺寸从448x448变成416x416,这是因为在真实场景中,图片通常是以某个物体为中心,修改输入图像的尺寸后,将整幅图像经过卷积层后变成13x13(416/32=13)的特征图,长宽都是奇数,可以有效地识别出中心。
(6)YOLOv2在13x13的特征图上检测物体,对于小物体检测这个精度还远远不够。因此,YOLOv2还将不同大小的特征图结合起来进行物体检测。具体来说,YOLOv2将最后一个池化层的输入26×26×512经过直通层变成13×13×2048的特征图,再与池化后的13×13×1024特征图结合在一起进行物体检测。
(7)YOLOv2 使用不同尺寸的图片同时训练网络。为了增强模型的鲁棒性,模型在训练过程中,每隔10个批次就改变输入图片的大小。
(8)YOLOv2使用新的卷积特征提取网络DarkNet-19。当时大多数检测模型的特征提取部分都采用VGGNet-16作为网络主体,VGGNet-16 虽然效果良好,但是参数过多,运行缓慢。DarkNet-19采用3x3的卷积核,共有19个卷积层和5个池化层。
3.YOLO9000
YOLO9000可以实时地检测超过9000种物体,其主要贡献是使用检测数据集和分类数据集进行联合训练。
-
检测数据集特点:相对于分类数据集来说,数据量小、类别少、类别粒度粗且获取困难,因此研究人员考虑使用分类和检测数据集进行联合训练,提高模型的泛化能力。
-
问题及解决:然而,一般分类数据集的标签粒度要远小于检测数据集的标签粒度,为了能够联合训练,YOLO9000 模型构建了字典树,合并 ImageNet的分类数据集标签与COCO的检测数据集标签。
4.YOLOv3
YOLOv3在YOLOv2的基础上进行了一些小的改动来优化模型的效果。
- 首先,检测数据可能存在一些语义上重叠的标签(如女人和人),但Softmax 函数基于一个假设,即每个检测框内的物体只存在一个类别。因此,YOLOv3使用二元交叉熵损失函数,而不是Softmax函数,这样可以更好地支持多标签的检测。
- 其次,YOLOv3采用了更深的网络作为特征提取器,即DarkNet-53,它包含了53个卷积层。
- 为了避免深层网络带来的梯度消失问题,DarkNet-53 借鉴了残差网络的快捷连接(shortcut)结构。
- 同时,YOLOv3还采用了3个不同大小的特征图进行联合训练,使其在小物体上也能获得很好的检测效果。
下集预告:9.1.4 有哪些措施可以增强模型对于小物体的检测效果?
参考文献:
《百面深度学习》 诸葛越 江云胜主编
出版社:人民邮电出版社(北京)
ISBN:978-7-115-53097-4
2020年7月第1版(2020年7月北京第二次印刷)
推荐阅读:
//好用小工具↓
分享一个免费的chat工具
分享一个好用的读论文的网站
// 深度学习经典网络↓
LeNet网络(1989年提出,1998年改进)
AlexNet网络(2012年提出)
VGGNet网络(2014年提出)
LeNet、AlexNet、VGGNet总结
GoogLeNet网络(2014年提出)
ResNet网络(2015年提出)
相关文章:
9.1.3 简单介绍单阶段模型YOLO、YOLOv2、YOLO9000、YOLOv3的发展过程
9.1.3 简单介绍单阶段模型YOLO、YOLOv2、YOLO9000、YOLOv3的发展过程 前情回顾:9.1.2 简单介绍两阶段模型R-CNN、SPPNet、Fast R-CNN、Faster R-CNN的发展过程 摘要 YOLOYOLOv2YOLO9000YOLOv3基本思想使用一个端到端的卷积神经网络直接预测目标的类别和位置针对YOL…...
英智教育智能体,AI Agent赋能教育培训行业数字化升级
教育是当前需求巨大且没有足够人力来满足的领域,每个学生个体差异较大,有限的教师资源无法针对性实行差异教学,学生学不会,教师教学压力大等问题普遍存在。 面对这些难题,英智在通用大模型能力的基础上,整合…...
什么是电脑监控软件?六款知名又实用的电脑监控软件
电脑监控软件是一种专为监控和记录计算机活动而设计的应用程序,它能够帮助用户(如家长、雇主或系统管理员)了解并管理目标计算机的使用情况。这些软件通常具有多样化的功能,包括但不限于屏幕捕捉、网络行为监控、应用程序使用记录…...
小程序名片怎么生成?AI名片生成器源码系统 为企业店铺创建自己的数字名片
在数字化时代,小程序名片已经成为企业店铺展示自身形象、推广产品和服务的重要工具。分享一个AI名片生成器源码系统春哥AI雷达智能名片小程序系统企业商业运营版,含完整代码包和详细的图文安装部署搭建教程,新手也能轻松使用,源码…...
浅谈PMP:项目管理的专业化认证
引言: 项目管理作为现代企业运营的核心环节,其重要性不言而喻。随着全球化的加速和市场竞争的加剧,企业对项目管理的需求日益增长,项目管理专业人员的需求也水涨船高。在这样的背景下,PMP(Project Managem…...
获取闲鱼商品详情api
要使用闲鱼商品详情API,你需要先申请一个开发者账号,并且在开发者中心创建一个应用,目前很难申请到,还有一个方式是获取第三方应用的AppKey和AppSecret直接使用。 API的请求地址为: https://api.m.taobao.com/h5/mto…...
java1.8运行arthas-boot.jar运行报错解决
报错内容 输入java -jar arthas-boot.jar,后报错。 [INFO] JAVA_HOME: D:\developing\jdk\jre1.8 [INFO] arthas-boot version: 3.7.2 [INFO] Can not find java process. Try to run jps command lists the instrumented Java HotSpot VMs on the target system.…...
每日一练 - IGMP协议与查询器选举机制
01 真题题目 在共享网络中存在多台路由器的情况下,是否是IGMP协议本身负责选举出查询器的角色? A. 正确 B. 错误 02 真题答案 B 03 答案解析 IGMP(Internet Group Management Protocol)互联网组管理协议,主要用于IP多…...
深入浅出:面向对象软件设计原则(OOD)
目录 前言 1.单一责任原则(SRP) 2.开发封闭原则(OCP) 3.里氏替换原则(LSP) 4.依赖倒置原则(DIP) 5.接口分离原则(ISP) 6.共同封闭原则(CCP)…...
缓存与数据一致性问题
1、更新了数据库,再更新缓存 假设数据库更新成功,缓存更新失败,在缓存失效和过期的时候,读取到的都是老数据缓存。 2、更新缓存,更新数据库 缓存更新成功了,数据库更新失败,是不是读取的缓存的都…...
2024年上海高考作文题目(ChatGPT版)
一、2024年6月7日上海高考作文题目 生活中,人们常用认可度判别事物,区分高下。请写一篇文章,谈谈你对“认可度”的认识和思考。 要求:(1)自拟题目;(2)不少于800字。 二、…...
.net 调用海康SDK以及常见的坑解释
📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 在工控领域,很多时候需要…...
KVM+GFS高可用
资源列表 操作系统 IP 主机名 Centos7 192.168.10.51 gfs1 Centos7 192.168.10.52 gfs2 Centos7 192.168.10.53 kvm 在gfs节点部署GlusterFS #添加hosts解析 cat >> /etc/hosts << EOF 192.168.10.51 gfs1 192.168.10.52 gfs2 192.168.10.53 kvm EOF …...
C++迈向精通:当我尝试修改虚函数表
尝试修改虚函数表 本期纯整活儿好吧!!!! 初衷 有一天我突然开始好奇虚函数表是否真的存在,于是我开始想是否能够从C中查看或者调用虚函数表中的内容。,于是有了下面的操作。 操作过程 起初我并没有思路…...
IDEA 高效插件工具
文章目录 LombokMaven Helper 依赖冲突any-rule(正则表达式插件)快速生成javadocGsonFormat (Aits) 将json解析成类Diagrams使用 类图SequenceDiagram时序图GenerateAllSetter(AltEnter)大小写转写String ManipulationGitToolBox 代码提交人activate-pow…...
SQL入门大全
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准编程语言。它具有数据操纵和数据定义等多种功能,为数据库管理系统提供了强大的交互性特点,能够极大地提高计算机应用系统的工作质量与…...
【深度优先搜索 广度优先搜索】297. 二叉树的序列化与反序列化
本文涉及知识点 深度优先搜索 广度优先搜索 深度优先搜索汇总 图论知识汇总 LeetCode297. 二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传…...
App UI 风格,引领设计风向
App UI 风格,引领设计风向...
TIM—通用定时器高级定时器
通用/高级定时器的功能 在基本定时器功能的基础上新增功能: 通用定时器有4个独立通道,且每个通道都可以用于下面功能。 (1)输入捕获:测量输入信号的周期和占空比等。 (2)输出比较:产…...
【数据结构与算法(C语言)】循环队列图解
目录 1. 前言1.1 普通循环队列假溢出1.1.1 初始化队列1.1.2 插满队列1.1.3 删除元素后,再插入元素 1.2 循环队列1.2.1 插入元素,队列已满1.2.2 将元素J1、J2出列,循环队列又空出两个空间1.2.3 元素J6可以继续入列 2. 存储结构和函数说明2.1 队…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
