YOLO目标检测:框架技术原理和代码实现

在这里插入图片描述

Dream推荐

适读人群 :本书适合对YOLO目标检测感兴趣、了解深度学习相关概念的算法工程师、软件工程师等人员阅读。

  1. 全面:涵盖6个常用目标检测框架(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOX、YOLOv7)的发展状况、技术原理和代码实现。
  2. 流行:涵盖3个流行目标检测框架(DETR、YOLOF 和 FCOS)的网络结构、技术原理和代码实现。
  3. 复现:每个代码实现章节均配备完整的YOLO项目代码,帮助读者轻松复现、优化和调试项目代码。
  4. 丰富:附赠丰富的目标检测项目代码和全书彩图文件,帮助读者更直观地理解YOLO目标检测。

内容简介

本书主要介绍基于视觉的YOLO框架的技术原理和代码实现,并讲解目标检测领域中的诸多基础概念和基本原理,在YOLO框架的基础上介绍流行目标检测框架。本书分为4个部分,共13章。第1部分介绍目标检测领域的发展简史、主流的目标检测框架和该领域常用的数据集。第2部分详细讲解从YOLOv1到YOLOv4这四代YOLO框架的网络结构、检测原理和训练策略,以及搭建和训练的YOLO框架的代码实现。第3部分介绍两个较新的YOLO框架——YOLOX和YOLOv7,着重讲解其设计理念、网络结构和检测原理。第4部分介绍DETR、YOLOF和FCOS在内的流行目标检测框架和相应的代码实现。本书侧重目标检测的基础知识,包含丰富的实践内容,是目标检测领域的入门书,适合对目标检测领域感兴趣的初学者、算法工程师、软件工程师等人员学习和阅读。

作者简介

杨建华,哈尔滨工业大学在读博士,主要研究方向为基于视觉的目标检测与人体时空行为分析,长期耕耘于多个知乎专栏(知乎ID:Kissrabbit)。

李瑞峰,哈尔滨工业大学教授、机器人研究所副所长,中国人工智能学会智能机器人专业委员会秘书长,黑龙江省机器人学会理事长。

传送门

购买链接:京东
在这里插入图片描述

目 录

第 1部分 背景知识
第 1章 目标检测架构浅析 2
1.1 目标检测发展简史 2
1.2 目标检测网络框架概述 5
1.3 目标检测网络框架浅析 5
1.3.1 主干网络 5
1.3.2 颈部网络 7
1.3.3 检测头 9
1.4 小结 10
第 2章 常用的数据集 11
2.1 PASCAL VOC 数据集 11
2.2 MS COCO 数据集 12
2.3 小结 14
第 2部分 学习YOLO框架
第3章 YOLOv1 16
3.1 YOLOv1 的网络结构 16
3.2 YOLOv1 的检测原理 18
3.3 YOLOv1 的制作训练正样本的方法 21
3.3.1 边界框的位置参数 tx、ty、w、h 21
3.3.2 边界框的置信度 23
3.3.3 类别置信度 26
3.4 YOLOv1 的损失函数 26
3.5 YOLOv1 的前向推理 27
3.6 小结 29
第4章 搭建YOLOv1网络 30
4.1 改进 YOLOv1 30
4.1.1 改进主干网络 31
4.1.2 添加一个颈部网络 32
4.1.3 修改检测头 33
4.1.4 修改预测层 35
4.1.5 修改损失函数 37
4.2 搭建 YOLOv1 网络 37
4.2.1 搭建主干网络 39
4.2.2 搭建颈部网络 41
4.2.3 搭建检测头 41
4.2.4 YOLOv1 前向推理 41
4.3 YOLOv1 的后处理 44
4.3.1 求解预测边界框的坐标 44
4.3.2 后处理 46
4.4 小结 48
第5章 训练YOLOv1网络 49
5.1 读取 VOC 数据 49
5.2 数据预处理 56
5.2.1 基础变换 56
5.2.2 数据增强 59
5.3 制作训练正样本 61
5.4 计算训练损失 64
5.5 开始训练 YOLOv1 67
5.6 可视化检测结果 74
5.7 使用 COCO 数据集 ( 选读 ) 75
5.8 小结 76
第6章 YOLOv2 77
6.1 YOLOv2 详解 77
6.1.1 引入批归一化层 78
6.1.2 高分辨率主干网络 78
6.1.3 先验框机制 79
6.1.4 全卷积网络与先验框机制 80
6.1.5 使用新的主干网络 81
6.1.6 基于 k 均值聚类算法的先验框聚类 82
6.1.7 融合高分辨率特征图 84
6.1.8 多尺度训练策略 85
6.2 搭建 YOLOv2 网络 87
6.2.1 搭建 DarkNet-19 网络 87
6.2.2 先验框 91
6.2.3 搭建预测层 92
6.2.4 YOLOv2 的前向推理 92
6.3 基于 k 均值聚类算法的先验框聚类 95
6.4 基于先验框机制的正样本制作方法 96
6.4.1 基于先验框的正样本匹配策略 96
6.4.2 正样本匹配的代码 97
6.5 损失函数 103
6.6 训练 YOLOv2 网络 105
6.7 可视化检测结果与计算 mAP 105
6.8 使用 COCO 数据集(选读) 106
6.9 小结 108
第7章 YOLOv3 110
7.1 YOLOv3 解读 110
7.1.1 更好的主干网络 : DarkNet-53 111
7.1.2 多级检测与特征金字塔 112
7.1.3 修改损失函数 116
7.2 搭建 YOLOv3 网络 118
7.2.1 搭建 DarkNet-53 网络 118
7.2.2 搭建颈部网络 121
7.2.3 搭建解耦检测头 123
7.2.4 多尺度的先验框 125
7.2.5 YOLOv3 的前向推理 127
7.3 正样本匹配策略 130
7.4 损失函数 133
7.5 数据预处理 133
7.5.1 保留长宽比的 resize 操作 133
7.5.2 马赛克增强 136
7.5.3 混合增强 138
7.6 训练 YOLOv3 140
7.7 测试 YOLOv3 140
7.8 小结 142
第8章 YOLOv4 143
8.1 YOLOv4 解读 144
8.1.1 新的主干网络:CSPDarkNet-53 网络 144
8.1.2 新的特征金字塔网络:PaFPN 146
8.1.3 新的数据增强:马赛克增强 147
8.1.4 改进边界框的解算公式 148
8.1.5 multi anchor 策略 149
8.1.6 改进边界框的回归损失函数 149
8.2 搭建 YOLOv4 网络 150
8.2.1 搭建 CSPDarkNet-53 网络 151
8.2.2 搭建基于 CSP 结构的 SPP 模块 153
8.2.3 搭建 PaFPN 结构 155
8.3 制作训练正样本 157
8.4 测试 YOLOv4 159
8.5 小结 161
第3部分 最新的YOLO框架
第9章 YOLOX 164
9.1 解读 YOLOX 166
9.1.1 baseline 的选择:YOLOv3 166
9.1.2 训练 baseline 模型 166
9.1.3 改进一:解耦检测头 167
9.1.4 改进二:更强大的数据增强 168
9.1.5 改进三:anchor-free 机制 169
9.1.6 改进四:多正样本 169
9.1.7 改进五:SimOTA 169
9.2 搭建 YOLOX 网络 173
9.2.1 搭建 CSPDarkNet-53 网络 173
9.2.2 搭建 PaFPN 结构 175
9.3 YOLOX 的标签匹配:SimOTA 178
9.4 YOLOX 风格的混合增强 182
9.5 测试 YOLOX 185
9.6 小结 187
第 10章 YOLOv7 188
10.1 YOLOv7 的主干网络 189
10.2 YOLOv7 的特征金字塔网络 195
10.3 测试 YOLOv7 199
10.4 小结 200
第4部分 其他流行的目标检测框架
第 11章 DETR 204
11.1 解读 DETR 205
11.1.1 主干网络 205
11.1.2 Transformer 的编码器 208
11.1.3 Transformer 的解码器 211
11.2 实现 DETR 217
11.2.1 DETR 网络 217
11.2.2 数据预处理 221
11.2.3 正样本匹配 : Hungarian Matcher 222
11.2.4 损失函数 225
11.3 测试 DETR 检测器 228
11.4 小结 228
第 12章 YOLOF 230
12.1 YOLOF 解读 232
12.1.1 YOLOF 的网络结构 232
12.1.2 新的正样本匹配规则:Uniform Matcher 234
12.1.3 与其他先进工作的对比 236
12.2 搭建 YOLOF 237
12.2.1 搭建主干网络 238
12.2.2 搭建 DilatedEncoder 模块 241
12.2.3 搭建解码器模块 242
12.2.4 数据预处理 244
12.2.5 正样本匹配 : Uniform Matcher 246
12.2.6 损失函数 248
12.3 训练 YOLOF 检测器 250
12.4 测试 YOLOF 检测器 250
12.5 计算 mAP 251
12.6 小结 251
第 13章 FCOS 252
13.1 FCOS 解读 253
13.1.1 FCOS 网络结构 253
13.1.2 正样本匹配策略 255
13.1.3 损失函数 258
13.2 搭建 FCOS 258
13.2.1 搭建主干网络 259
13.2.2 正样本匹配 262
13.3 测试 FCOS 检测器 266
13.4 小结 267
参考文献 268
后记 272
在这里插入图片描述

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

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

相关文章

【Spring EL<一>✈️ 】SL 表达式的应用

目录 🍸前言 🍻一、Spring EL 1.1 定义 1.2 常见使用方式 🍺二、项目案例 2.1 实现一个简单的案例 2.2 创建注解 2.3 切面类实现 2.4 创建测试接口 2.5 测试 🍹三、章末 🍸前言 小伙伴们大家好,前段时间…

32. 【Java教程】集合

在前面的小节中,我们学习了数组,本小节学习的集合同样用于存放一组数据,我们将学习什么是集合、集合的应用场景 ,在应用场景部分我们将对比 Java 数组与集合的区别,还将系统介绍 Java 集合的架构,也将结合实…

【观察】数字化生存时代已来临,能源转型如何实现“再升级”?

20多年前,尼古拉斯尼葛洛庞帝在《数字化生存》一书中预言:“数字化生存是现代社会中以新技术为基础的新的生存方式。” 随着数字经济的蓬勃发展,尼葛洛庞帝的预言逐渐被验证。今天,新技术带来的数字化和智能化正全方位影响着经济…

【赠书第27期】向AI提问的艺术:提示工程入门与应用

文章目录 前言 1 问题的构建 1.1 明确性与具体性 1.2 结构化与层次性 1.3 相关性与针对性 2 提问的技巧 2.1 简洁明了 2.2 避免歧义 2.3 使用自然语言 3 与AI的互动策略 3.1 耐心与理解 3.2 逐步引导 3.3 反馈与调整 4 总结与展望 5 推荐图书 6 粉丝福利 前言 …

定时器与PWM的LED控制

目录 一、基础概念定时器定时器类型定时器特性 PWM定义占空比原理 二、实验1.LED周期性亮灭定时器TIM2配置GPIO引脚设置工程相关参数配置Keil编写程序 2.LED呼吸灯(PWM)呼吸灯原理Keil编写程序Keil虚拟示波器,观察 PWM输出波形设置点击setup,并设置观察引…

Sapphire开发日志(三)

任务描述 本周实现并封装了模型的运行,需要在前端安装依赖的库,编写对应的处理函数。同时需要能够展示出抠图效果。 依赖与环境配置 尝试在前端接入并运行onnx。 在前端运行onnx依赖于onnxruntime-web这个包,这个包可以在浏览器进行模型推…

antV+vue3 单选框选中加入逻辑运算,再次点击取消选中,不计入逻辑运算

文章目录 antVvue3 单选框选中加入逻辑运算,再次点击取消选中,不计入逻辑运算需求增加点击事件逻辑处理效果 antVvue3 单选框选中加入逻辑运算,再次点击取消选中,不计入逻辑运算 需求 在做项目时,多次遇到单选框需要再…

【2024新版】银系统源码/超市收银系统/智慧新零售/ERP进销存管理/线上商城/商户助手

>>>系统简述:本系统适用于超吃便利店,美妆母婴行业,服装鞋帽行业,食品零售行业,3C数码电子行业,食品生鲜等一切零售行业,产品功能角色介绍如下 合伙人:无限发展代理商和商…

Pod 控制器

前言 Pod 是 Kubernetes 集群中能够被创建和管理的最小部署单元。所以需要有工具去操作和管理它们的生命周期,这里就需要用到控制器了。 Pod 控制器由 master 的 kube-controller-manager 组件提供,常见的此类控制器有 Replication Controller、ReplicaSet、Deploym…

React-生成随机数和日期格式化

生成随机数 uuid文档:https://github.com/uuidjs/uuid npm install uuid import {v4 as uuidV4} from uuid 使用: uuidV4() 日期格式化 dayjs文档:安装 | Day.js中文网 npm install dayjs import dayjs from dayjs

算法-扫描线

目录 什么是扫描线算法? 扫描线简单应用 更多的扫描线 什么是扫描线算法? 在计算几何中,扫描线算法(scan line algorithm)一般用来解决几何图形的面积交并,周长交并问题,扫描线算法的核心思想…

SAPUI5基础知识3 - 引导过程(Bootstrap)

1. 背景 在上一篇博客中,我们已经建立出了第一个SAPUI5项目,接下来,我们将为这个项目添加引导过程。 在动手练习之前,让我们先解释一下什么引导过程。 1.1 什么是引导过程? 在计算机科学中,引导过程也称…

5、css3 自动动画渐变背景

效果例图&#xff1a;&#xff08;因gif图片太大&#xff0c;而csdn只能上传小于5m图片&#xff0c;所以无法上传&#xff09; 1、首先上传html代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8">&l…

【鸟哥】Linux笔记-硬件搭配

在Linux这个系统当中&#xff0c;几乎所有的硬件设备文件都在/dev这个目录内。打印机与软盘呢&#xff1f;分别是/dev/lp0, /dev/fd0。 几个常见的设备与其在Linux当中的文件名&#xff1a; 如果你的机器使用的是跟网际网络供应商 &#xff08;ISP&#xff09; 申请使用的云端…

二叉树的构建和遍历(oj题)

一、题目链接 https://www.nowcoder.com/practice/4b91205483694f449f94c179883c1fef?tpId60&&tqId29483&rp1&ru/activity/oj&qru/ta/tsing-kaoyan/question-ranking 二、题目思路 利用先序遍历的方法&#xff0c;构建二叉树。为了保证在递归中&#xf…

USB主机模式——Android

理论 摘自&#xff1a;USB 主机和配件概览 | Connectivity | Android Developers (google.cn) Android 通过 USB 配件和 USB 主机两种模式支持各种 USB 外围设备和 Android USB 配件&#xff08;实现 Android 配件协议的硬件&#xff09;。 在 USB 主机模式下&#xff0…

Redis 中的 Zset 数据结构详解

目录 用法 1. 增 2. 删 3. 查 4. 交&#xff0c;并 编码方式 应用场景 Redis 中的 Zset&#xff08;有序集合&#xff09;是一种将元素按照分数进行排序的数据结构。与上篇写的SetRedis 中的 Set 数据结构详解不同&#xff0c;Zset 中的每个元素都关联一个浮点数类型的…

Jmeter的线程组之间传递参数

使用jemter做接口测试&#xff0c;有时候需要会遇到不同线程组之间调用相同变量的情况&#xff0c;最多见的就是token的传递&#xff0c;网上有很多处理方法&#xff0c;这里只记录setProperty的办法&#xff0c;一招鲜走遍天&#xff01; 首先我有两个线程组&#xff1a; 线程…

vm:为虚拟机配置多个虚拟网卡(ubuntu20.04)

前言&#xff1a; 环境&#xff1a;虚拟机 ubuntu 20.04 要求&#xff1a;如标题&#xff0c;但是这里针对的是 ubuntu 20.04&#xff0c;对于其他操作系统&#xff0c;可以找一下其他操作系统对应的配置文件是什么 vm 添加虚拟网卡 首先进入 vm&#xff1a; 点击设置&#xf…

JVM监控-JMX探针的安装和使用

jvm监控的搭建和使用 ​ Java Management Extensions&#xff08;JMX&#xff09;是一种Java标准&#xff0c;用于管理和监控Java应用程序&#xff0c;特别是分布式系统。它提供了一种标准化的方式来管理应用程序的各种方面&#xff0c;包括性能监控、配置更改、事件通知等。目…