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

news2024/11/29 1:28:43

在这里插入图片描述

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.coloradmin.cn/o/1717964.html

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

相关文章

安装Lubuntu24.04

Lubuntu24.04安装过程与22.04、20.04等完全一致。 记录 01 02 03 04 05 09 给出提示 10 11 12 13 特点 Lubuntu 22.04的特点主要包括以下几点: 轻量级且高效:Lubuntu作为Ubuntu的一个轻量级分支,专注于为低端电脑、老旧电脑或需要最大限…

代码随想录算法训练营第四十四天 | 01背包问题 二维、 01背包问题 一维、416. 分割等和子集

01背包问题 二维 代码随想录 视频讲解:带你学透0-1背包问题!| 关于背包问题,你不清楚的地方,这里都讲了!| 动态规划经典问题 | 数据结构与算法_哔哩哔哩_bilibili 1.dp数组定义 dp[i][j] 下标为[0,i]之间的物品&…

Microsoft Fabric 是什么?

最近半个月没有更新内容,原因是什么呢? 原因是花了两周的时间备考了一下"Microsoft Certified: Fabric Analytics Engineer Associate"的考试认证。 非常幸运考试通过了。 那什么是Microsoft Fabric 呢? Microsoft Fabric 是一个…

瑞芯微 RK3588 环境搭建 SDK编译

厂家给的资料下载下来之后 我的目录如下 厂家推荐是虚拟机下 我这真好有真实的UBUNTU环境 就不用虚拟机了 直接在真机上安装 linux版本是 Ubuntu 22.04 切到Linux目录下 这里主要用到两个目录 一个是源码也即SDK 交叉编译链 编译工具 先安装交叉编译链 按照文档说明 先…

Linux前奏-预热版本

一、操作系统概述 1.1 了解操作系统的作用 我们所熟知的计算机,也就是电脑,就是由硬件和软件来组成的 硬件:计算机系统中由电子机械,和各种光电元件等组成的各种物理装置的总称 软件是什么呢? 软件:用…

electron初学

最近有一个开发桌面端的业务,考虑到跨平台就使用了electron。 引用官网:Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows…

就业班 第四阶段(docker) 2401--5.29 day3 Dockerfile+前后段项目若依ruoyi

通过Dockerfile创建镜像 Docker 提供了一种更便捷的方式&#xff0c;叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。docker build语法&#xff1a; # docker build [OPTIONS] <PATH | URL | ->1. 常用选项说明 --build-arg&#xff0c;设…

el-tooltip 样式修改

<template><div><el-tooltip class"item" effect"dark" content"Right Bottom 提示文字" placement"right-end"><el-button>右下</el-button></el-tooltip></div> </template><sc…

接口请求参数为文件时如何测试

方法 工具&#xff1a;Postman 步骤&#xff1a;①点击body②点击form-data③选择key类型为fie ④输入参数名⑤选择参数上传⑥发送请求

Memoro:一款功能强大的堆栈数据细节分析工具

关于Memoro Memoro是一款功能强大的堆栈数据细节分析工具&#xff0c;该工具可以给广大研究人员提供关于堆内存数据的详细信息&#xff0c;并给出分析数据。 Memoro不仅可以告诉我们目标程序什么时候、在哪里进行了堆内存分配&#xff0c;而且还可以告诉我们目标程序是如何实际…

JPA详解

文章目录 JPA概述JPA的优势JPA注解 JPA概述 Java Persistence API&#xff08;JPA&#xff09;是 Java EE 平台的一部分&#xff0c;它为开发者提供了一种用于对象关系映射&#xff08;ORM&#xff09;的标准化方法。JPA 提供了一组 API 和规范&#xff0c;用于在 Java 应用程…

前端vue搭建

1.找一个合适的模板&#xff0c;可以用vue-element-admin的模板&#xff0c;但是个人认为这个模板太大了&#xff0c;做小项目修改起来比较复杂&#xff0c;可以找一个比较小的项目 2.我找的项目git clone https://github.com/tuture-dev/vue-admin-template.git&#xff0c;这…

Vivado报错 [Synth 8-9917] port ‘xx‘ must not be declared to be an array

报错位置&#xff1a; input wire [11:0] i_data [7:0] ,报错原因&#xff1a; Verilog并不支持将端口设置为数组类型&#xff0c;而SystemVerilog支持此写法。 解决办法&#xff1a; 将文件后缀.v改成.sv格式&#xff1b; 此时工程中文件确实&#xff0c;修正修改格…

留言板——增添功能(持久化存储数据,使用MyBatis)

目录 一、数据准备 二、引入MyBatis 和 MySQL驱动依赖 三、配置MySQL账号密码 四、编写后端代码 五、调整前端代码 六、测试 之前的代码&#xff1a;综合性练习&#xff08;后端代码练习3&#xff09;——留言板_在线留言板前后端交互-CSDN博客 一、数据准备 创建数据库…

glpi 安装与使用

1、环境介绍 操作系统&#xff1a;龙蜥os 8.9 nginx&#xff1a;1.26.1 php&#xff1a;8.2.19 mysql&#xff1a;MarinaDB 10.3.9 glpi&#xff1a;10.0.6 fusioninventory&#xff1a;fusioninventory-10.0.61.1 2、安装epel源 dnf install epel-release -y dnf install htt…

[个人笔记] 记录docker-compose使用和Harbor的部署过程

容器技术 第三章 记录docker-compose使用和Harbor的部署过程 容器技术记录docker-compose使用和Harbor的部署过程Harborhttps方式部署&#xff1a;测试环境部署使用自签名SSL证书https方式部署&#xff1a;正式环境部署使用企业颁发的SSL证书给Docker守护进程添加Harbor的SSL证…

活动预告|6月13日Apache Flink Meetup·香港站

6 月 13 日 | 香港 | 线下 Apache Flink Meetup 的风吹到了香江之畔&#xff0c;Apache Flink 香港 Meetup 来啦&#xff01;本次活动&#xff0c;我们邀请了来自阿里云的顶尖专家&#xff0c;帮助开发者全面了解 Apache Flink 的流批一体的数据处理能力&#xff0c;流式数据湖…

颠覆传统家居行业?线上3D数字化营销有何魅力?

在数字时代的浪潮中&#xff0c;Z时代年轻用户正成为泛家居行业的消费核心力量。作为数字原生的一代&#xff0c;他们追求的不仅仅是产品本身&#xff0c;更是独特的消费体验。为了迎合这一趋势&#xff0c;泛家居行业正积极引入线上3D数字化沉浸式营销&#xff0c;为用户提供前…

Redis相关详解

什么是 Redis&#xff1f;它主要用来什么✁&#xff1f; Redis&#xff0c;英文全称是 Remote Dictionary Server&#xff08;远程字典服务&#xff09;&#xff0c;是一个开源✁使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化✁日志型、Key-Value 数据库&#xff…

优选算法一:双指针算法与练习(移动0)

目录 双指针算法讲解 移动零 双指针算法讲解 常见的双指针有两种形式&#xff0c;一种是对撞指针&#xff0c;一种是快慢指针。 对撞指针&#xff1a;一般用于顺序结构中&#xff0c;也称左右指针。 对撞指针从两端向中间移动。一个指针从最左端开始&#xff0c;另一个从最…