YOLOv3深入解析与实战:实时目标检测的高效多尺度架构网络

参考:
https://arxiv.org/pdf/1804.02767.pdf
https://blog.csdn.net/weixin_43334693/article/details/129143961

网上有很多关于yolo的文章,有些东西没讲清楚,基于自己对论文的理解,也做一个按照自己的想法做的理解。

1. 预测框的改进

1.1 Anchor的引入

Anchor(锚框)的概念最早是在Faster R-CNN中被提出的。引入的目的是更好的预测边界框,也被叫做先验框。为什么叫先验框,我们知道yolov1里面根本没有这个概念,v1里面是直接预测两个边界框,根本没有先验框这个概念。引入先验框一个目的是让模型更容易预测边界框,也就是说提前告诉你一个框,然后去修正这个框,比你直接漫无目的预测就变得容易多了
Anchor怎么设定?先验框的大小该多大,有几个?这些似乎成为了理解的关键。作者用k-means算法选出来9个了,按照大中小尺度分成了三组:
大: (116 × 90), (156 × 198), (373 × 326)
中: (30 × 61), (62 × 45), (59 × 119)
小:(10 × 13), (16 × 30), (33 × 23)
为何分成三组,因为最后作者预测三个尺度矩阵,我们往下接着看。

1.2 预测矩阵

在这里插入图片描述
网上很多这样的图,随便找了个。
我们刚才说了作者预测了三个尺度的矩阵,这三个矩阵分别是如下:
13 ∗ 13 ∗ ( 3 ∗ ( 4 + 1 + 80 ) 13*13*(3*(4 + 1 + 80) 1313(3(4+1+80) 对应大: (116 × 90), (156 × 198), (373 × 326)
26 ∗ 26 ∗ ( 3 ∗ ( 4 + 1 + 80 ) 26*26*(3*(4 + 1 + 80) 2626(3(4+1+80) 对应中: (30 × 61), (62 × 45), (59 × 119)
52 ∗ 52 ∗ ( 3 ∗ ( 4 + 1 + 80 ) 52*52*(3*(4 + 1 + 80) 5252(3(4+1+80) 对应小:(10 × 13), (16 × 30), (33 × 23)
3就是我们对应的三个anchor,4是确定边界框的四个值,1就是置信度,80是类别
这样的话,我们可以通过优化anchor的w和h就能得到更加准确的预测框,不会再像v1那样漫无目的预测w和h了,那置信度呢?聪明的你是否已经猜到,直接拿anchor去和真实框做IOU不就得了,事实也如此,而v1是拿预测的框和真实框做IOU。**需要注意的是,设置anchor的目的是来更好的预测w和h,不是中心点坐标的。**因为不必要,而且anchor的设置本身也没中心点,更难以确定anchor的中心点,一会看预测的值就明白了。

1.3 预测框调整

在这里插入图片描述

上图是论文中的图,加了两个圈为了好描述一点
我们来看这个预测框到底有何神奇之处。首先:

  • 网格是对图片划为一个个grid cell;
  • 虚线框就是其中一个Anchor,宽为Pw,高为Ph;
  • 蓝色框为真实框,蓝点为真实框中心,bw和bh为真实框的宽和高,也同时意味着中间这个grid cell是用来预测的;
  • cx,cy就是当前用来预测的grid cell 的左上角(红色的圈)距离图片右上角(粉色的圈)
  • tx,ty,tw,th是预测值,bx,by,bw,bh为预测边界框对应的中心和宽高,它于预测的边界框的值关系为:
    b x = σ ( t x ) + c x b y = σ ( t y ) + c y b w = p w e t w b h = p w e t h b_x = \sigma{(t_x)} + c_x \\ b_y = \sigma{(t_y)} + c_y \\ b_w =p_we^{t_w}\\ b_h =p_we^{t_h}\\ bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pweth

2.网络结构的改进

在这里插入图片描述

2.1 FPN

Feature Pyramid Networks,特征金字塔
我们看一下中间那个粉色框就是FPN,我们知道CNN的低层特征富含细节信息但语义信息较弱,而高层特征则相反,拥有丰富的语义信息但空间分辨率较低。通俗一点是,比如一整图,经过一次卷积和经过100次卷积,那个更像一张图的结构,肯定是经过1次卷积的,100次卷积的都已经面部全非了,所以低层特征富含细节信息,那么反过来从感受野的角度考虑,经过100次卷积的每一个值是融合了很多,甚至圈图像素的值计算而来的,因此高层拥有丰富的语义信息,而细节信息少也就是空间分辨低,因为它一个值融合了那么多像素值哪还有什么分辨率。自己揣摩一下。
而FPN的做法,
第一个直接出来的是 13 ∗ 13 ∗ 255 13*13*255 1313255直接是高层信息,那么它自然而然适合预测大目标;
第二个是高层的通过上采样到中层(意思包好了高层信息)在和中层contact,即包含了中层的信息又有高层的信息,但是中层是直接过来的,高层是上采样过来的,自然适合预测中目标;
第三个是中层的通过上采样到高层(意思包含了中层和高层)在和低层contact,即包含了低层和中层和高层的信息,但是低层是直接过来的,中高层是上采样过来的,自然适合预测小目标。

2.2 骨干网络(Backbone Network)

骨干网络用的是Darknet53,也就是多个残差结构,毕竟残差终究是好,其他就是加了一些BN

3 损失函数

经过上面的分析,其实损失函数已经出来了,注意这里我们不按照什么官方代码里面的来写,我们就按照论文里面来写,也不去说什么BCE损失来代替MSE损失,完全没有必要,完全用yolov1的损失即可。
在这里插入图片描述
需要注意的是,

  • 预测x,y,w,h为1.3中的计算结果;
  • C和P的计算可以用交叉熵;
  • C的预测有变化,该anchor为预测框时,是和v1是一样的,C的标签为1,该anchor不为预测框,也就是IOU不是最大,但是超过设定的IOU,则不计算任何损失,低于设定的IOU才计算损失,其归类到noobj中。也就是说C的noobj计算不在是判断这个anchor是否为预测框(是否最大IOU),而是通过判断IOU是否超过设定的值。

其实只需要理解C的计算即可,其他不是很重要,因为我们的目标是更高的yolo版本,低版本主要理解思路即可,理解方法,为高版本打下基础。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rustdesk 自建服务器教程

一、环境 阿里云轻量服务器、debian11 系统 二、服务端搭建 2.1、开放防火墙指定端口 TCP(21115, 21116, 21117, 21118, 21119)UDP(21116) 2.2、安装 rustdesk 服务器文件 在 github 下载页https://github.com/rustdesk/rustdesk-server/releases/,下载 rustde…

大饼在一个比较关键的转折点,等某个东风来。。。。

1、历史数据对比,看多 图上方指标为BTC价格; 下方链上指标为BTC长期持有者成本均价跟BTC短期持有者成本均价之比。 从历史来看,我们正在启动往顶部的路上,不要畏惧。 2、结构为下降趋势,看空 3、长期持有者MVRV&…

几种更新 npm 项目依赖的实用方法

引言 在软件开发的过程中,我们知道依赖管理是其中一个至关重要的环节。npm(Node Package Manager) 是 Node.js 的包管理器,它主要用于 Node.js 项目的依赖管理和包发布。随着项目的不断发展,依赖库的版本更新和升级成…

Windows 2000 Server:安全配置终极指南

"远古技术,仅供娱乐" 💭 前言:Windows 2000 服务器在当时的市场中占据了很大的比例,主要原因包括操作简单和易于管理,但也经常因为安全性问题受到谴责,Windows 2000 的安全性真的那么差吗&#x…

YOLOv9改进策略 | Conv篇 | 利用YOLOv10提出的SCDown魔改YOLOv9进行下采样(附代码 + 结构图 + 添加教程)

一、本文介绍 本文给大家带来的改进机制是利用YOLOv10提出的SCDown魔改YOLOv9进行下采样,其是更高效的下采样。具体而言,其首先利用点卷积调整通道维度,然后利用深度卷积进行空间下采样。这将计算成本减少到和参数数量减少到。同时&#xff…

【人工智能003】图像识别算法模型常见术语简单总结(已更新)

1.熟悉、梳理、总结数据分析实战中的AI图像识别等实战研发知识体系,这块领域很大,需要耗费很多精力,逐步总结、更新到位,,, 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来&am…

3、flex弹性盒布局(flex:1?、水平垂直居中、三栏布局)

一、flex布局 任何一个容器都可以指定为 Flex 布局。块元素,行内元素即可。 div{ display: flex; } span{ display: inline-flex; } 注意,设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。 二、flex属性 父容器…

WordPress子比内容同步插件

1.支持分类替换 将主站同步过来的文章分类进行替换 2.支持本地化文章图片 (使用储存桶可能会导致无法保存图片) 3.支持自定义文章作者(选择多个作者则同步到的文章作者将会随机分配) 4.支持将同步过来的文章自定义文章状态&…

ThinkBook 14 G6+ IMH(21LD)原厂Win11系统oem镜像下载

lenovo联想笔记本电脑原装出厂Windows11系统安装包, 恢复开箱状态自带预装系统,含恢复重置还原功能 链接:https://pan.baidu.com/s/1WIPNagHrC0wqYC3HIcua9A?pwdhzqg 提取码:hzqg 联想原装出厂系统自带所有驱动、出厂主题壁…

基于Win11下的Wireshark的安装和使用

Wireshark的安装和使用 前言一、Wireshark是什么简介 二、下载Wireshark下载过程查看自己电脑配置 三、安装Wireshark安装过程安装组件创建快捷方式winPacpNpcap 打开检验 四、使用Wireshark实施抓包捕获数据包 五、基于Wireshark使用显示过滤器简介使用方法注意ICMP的请求和应…

dibbler-DHCPv6 的开源框架(C++ 实现)2

前置 在 dibbler-DHCPv6 的开源框架(C 实现)1 说了 dibbler 的安装和编译、使用。在这里说一下 server 的源码分析。 一、主函数文件 dibbler/Port-linux/dibbler-server.cpp 代码路径: 二、主要函数解释 1. 加载配置文件和设置 DUID …

【Python Cookbook】S01E12 根据字段将记录分组

目录 问题解决方案讨论 问题 如果有一系列的字典或对象实例,我们想根据某个特定的字段来分组迭代数据。 解决方案 假设有如下字典列表: rows [{address: 5412 N CLARK, date: 07/01/2012},{address: 5148 N CLARK, date: 07/04/2012},{address: 580…

----JAVA 继承----

引言 再java中你能创造出很多的类,但如果这些类中的成员再另一个类中也要使用,那么就要用到继承来实现指定类中成员的使用了 那么也就可以写出这样的代码 再类Cat中使用了类Animal的成员,这里我们称Cat叫子类,Animal叫父类 概念…

上位机图像处理和嵌入式模块部署(f407 mcu中tf卡读写和fatfs挂载)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 很早之前,个人对tf卡并不是很重视,觉得它就是一个存储工具而已。后来在移植v3s芯片的时候,才发现很多的soc其实…

蓝奏管理器iapp源码V3

蓝奏登录注册,简单管理文件夹等都没问题,就是上传接口需要有能力的人抓包进行修复一下(我留了之前还能正常使用的接口,也是蓝奏官方的,所以参照一下就行。),这个应该也不是什么大问题&#xff0…

IDEA 学习之 命令行太长问题

现象 Error running App Command line is too long. In order to reduce its length classpath file can be used. Would you like to enable classpath file mode for all run configurations of your project?解决办法 办法一 .idea\workspace.xml ——> <compone…

【图自动编码器】基础介绍 及 基于PyTorch的图自动编码器实例代码 | MLP应用于节点级别和图级别的任务实例(附实例代码+数据集)

世界以痛吻我,我要报之以歌。——泰戈尔 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区特邀专家博主🏅

秋招突击——算法打卡——5/31——复习{采药问题、(状态压缩DP)小国王}——新做:{盛最多水的容器、整数转罗马数字}

文章目录 复习背包模型——采药问题状态压缩DP——小国王思路分析实现代码参考 新作盛最多的水个人实现思路分析实现代码 参考分析思路分析实现思路 整数转罗马数字个人实现思路分析实现代码 参考实现思路分析实现代码 总结 复习 背包模型——采药问题 原题链接这里回忆的时候…

回溯算法之简单组合

哦吼&#xff01;今天结束了二叉树&#xff0c;开始回溯算法 其实也需要用到迭代&#xff0c;哈哈哈哈&#xff0c;但是这个暴力穷举真的好爽。 先记一下回溯算法的基本框架吧 老规矩&#xff1a; 还是有结束条件 但是后面就不太一样了 这里就是for循环&#xff0c;循环n…

系统思考的魅力

“不管你信不信&#xff0c;你的系统正是为了现在这个结果而设计的。”—爱德华兹戴明 在长期的组织辅导中&#xff0c;最开始我常听到管理者们说&#xff1a;“这是某某的问题”&#xff0c;或者“某某真不行”。我想这也正显示出系统思考的真正魅力&#xff0c;当大家开始用…