YOLOv3学习
YOLOv3仅使用卷积层,使其成为一个全卷积网络(FCN)。文章中,作者提出一个新的特征提取网络,Darknet-53。正如其名,它包含53个卷积层,每个后面跟随着batch normalization层和leaky ReLU层。没有池化层,使用步幅为2的卷积层替代池化层进行特征图的降采样过程,这样可以有效阻止由于池化层导致的低层级特征的损失。
在没有 padding 的前提下,stride = 2 会让输入的尺寸高度和宽度各自减小一般,在最左列经过 5 次CBL中 stride = 2 的卷积核之后,在第三,四,五 Block层 特征图的尺寸分别为 52,26,13。
C 3 , C 4 , C 5 C_3,C_4,C_5 C3,C4,C5 是对应层输出的特征图,第五个 Block 层输出的特征图经过上采样高度和宽度变为原先 2 倍之后和第四个 Block 层输出的特征图 在通道维度上进行 concatenation 拼接。类似地,第四个 Block 层输出的特征图经过上采样扩大后和第三个Block 层的输出进行拼接。
不论是YOLOv1,还是YOLOv2,都有一个共同的致命缺陷:只使用了最后一个经过32倍降采样的特征图(简称C5特征图)。尽管YOLOv2使用了passthrough技术将16倍降采样的特征图(即C4特征图)融合到了C5特征图中,但最终的检测仍是在C5尺度的特征图上进行的,最终结果便是导致了模型的小目标的检测性能较差。
为了解决这一问题,YOLO作者做了第三次改进,不仅仅是使用了更好的主干网络:DarkNet-53,更重要的是使用了FPN技术与多级检测方法,相较于YOLO的前两代,YOLOv3的小目标的检测能力提升显著。
在3个不同尺度的每个特征图上,YOLOv3在每个网格处放置3个先验框。由于YOLOv3一共使用3个尺度,因此,YOLOv3一共设定了9个先验框,这9个先验框仍旧是使用kmeans聚类的方法获得的。在COCO上,这9个先验框的宽高分别是(10, 13)、(16, 30)、(33, 23)、(30, 61)、(62, 45)、(59, 119)、(116, 90)、(156, 198)、(373, 326)。
Bounding Box Prediction
YOLOv3 predicts an objectness score for each bounding box using logistic regression. This should be 1 if the bounding box prior overlaps a ground truth object by more than any other bounding box prior. If the bounding box prior is not the best but does overlap a ground truth object by more than some threshold we ignore the prediction, following. We use the threshold of 0.5. Unlike [17] our system only assigns one bounding box prior for each ground truth object. If a bounding box prior is not assigned to a ground truth object it incurs no loss for coordinate or class predictions, only objectness.
这段话描述的是YOLOv3模型中对于边界框(bounding box)和对象置信度(objectness score)的处理方式。具体来说:
-
对象置信度预测 在YOLOv3中,对于每个ground truth对象,只有与之IoU最高的anchor box的对象置信度分数会被设置为1,表明这个anchor box负责预测该对象。其余的anchor boxes的对象置信度分数会被设置为0,表示它们不负责预测该对象。
-
忽略预测 如果一个边界框的先验不是最好的,但仍然与真实对象重叠超过某个阈值(在这里是0.5),那么这个预测将被忽略。这意味着在训练过程中,这种情况下的预测不会对损失函数产生影响。
-
单一 Anchor box分配 与其他一些系统不同,YOLOv3为每个真实对象只分配一个anchor box负责预测该目标。
-
损失函数 如果一个边界框先验没有被分配给任何真实对象,那么它在坐标或类别预测上不会产生损失,只会在对象置信度上产生损失。这是因为这个边界框没有被用来预测任何具体的对象,所以它的位置和类别是不重要的,只有它的对象置信度是有意义的(应该接近于0,因为它没有检测到任何对象)。
简而言之,这段话描述了YOLOv3中如何处理边界框和对象置信度的预测,以及如何在训练过程中计算损失。
Class Prediction
YOLOv3中的多标签类预测是指模型能够为每个检测到的对象预测多个类别标签,而不是只预测单一的类别。这对于处理那些可能属于多个类别的对象特别有用,例如在某些场景中,一个对象可能既被视为"人"也被视为"运动员"。
在YOLOv3中,这种多标签类预测是通过使用逻辑回归(而不是传统的softmax函数)来实现的。对于每个对象,模型会为每个类别输出一个独立的置信度分数,这个分数表示对象属于该类别的概率。这些置信度分数是独立的,因此一个对象可以同时具有多个高置信度的类别标签。
Predictions Across Scales
在YOLOv3中,多尺度预测指的是使用不同尺寸的特征图(feature maps)来进行目标检测。这些特征图分别对应于网络中不同深度的层,每个层捕获了图像的不同尺度的信息。通过这种方式,模型能够同时检测图像中不同尺寸的对象,从而提高了检测的准确性和鲁棒性。
YOLO的多尺度训练是一种技术,用于提高模型在不同大小的对象上的性能。在训练过程中,输入图像的尺寸会在一定范围内随机变化,这样模型就能够学习在不同尺度上识别对象。
YOLOv3在 3 个不同的尺度上预测边界框。使用与特征金字塔网络相似的概念从这些尺度中提取特征[8]。在基本特征提取器中,作者添加了几个卷积层。最后一层预测了一个3维张量编码边界框、对象和类预测。在使用COCO[10]的实验中,作者在每个尺度上预测3个边界框,因此对于4个边界框偏移量,1个物体预测和80个类别预测,张量是 N × N × [ 3 ∗ ( 4 + 1 + 80 ) ] N × N ×[3∗(4 + 1 + 80)] N×N×[3∗(4+1+80)]。
这段话描述了YOLOv3在三个不同尺度上预测边界框的方法,以及它是如何利用特征金字塔网络(Feature Pyramid Networks,FPN)的概念来提取特征的。具体来说:
-
多尺度预测 YOLOv3在三个不同的尺度上预测边界框。这意味着模型能够检测不同大小的对象。
-
特征提取 模型从基础特征提取器中添加了几个卷积层,最后一个卷积层预测一个三维张量,该张量编码了边界框、对象置信度和类别预测。在COCO数据集上的实验中,每个尺度预测3个边界框,因此张量的维度是 N × N × [ 3 × ( 4 + 1 + 80 ) ] N × N × [3 × (4 + 1 + 80)] N×N×[3×(4+1+80)],其中4代表边界框的偏移量,1代表对象置信度预测,80代表类别预测。
-
特征融合 接着,模型将前两层的特征图上采样2倍,并将其与网络更早层的特征图通过连接(concatenation)合并。这样做可以从上采样的特征中获取更有意义的语义信息,同时从早期的特征图中获取更细粒度的信息。然后,模型添加了一些卷积层来处理这个合并的特征图,并最终预测一个类似的张量
-
重复操作 模型再次重复这个设计,以预测最后一个尺度的边界框。因此,第三个尺度的预测受益于之前的所有计算以及网络早期的细粒度特征。
-
边界框先验 模型仍然使用 k-means 聚类来确定边界框先验。模型选择了9个聚类和3个尺度,然后在尺度之间均匀地划分聚类。在COCO数据集上,9个聚类的尺寸分别是: ( 10 × 13 ) , ( 16 × 30 ) , ( 33 × 23 ) , ( 30 × 61 ) , ( 62 × 45 ) , ( 59 × 119 ) , ( 116 × 90 ) , ( 156 × 198 ) , ( 373 × 326 ) (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326) (10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116×90),(156×198),(373×326)。
总的来说,这段话描述了YOLOv3是如何在不同的尺度上预测边界框,并利用特征融合来提高模型对不同大小对象的检测能力的。
Feature Extractor
使用一种新的网络提取特征 Darknet 53
过去,YOLO在处理小物体时遇到了困难。然而,现在作者看到了这一趋势的逆转。通过新的多尺度预测,作者看到YOLOv3具有相对较高的APS性能。但是,它在中型和大型对象上的性能相对较差。要弄清这件事的真相,还需要更多的调查。
相关文章:

YOLOv3学习
YOLOv3仅使用卷积层,使其成为一个全卷积网络(FCN)。文章中,作者提出一个新的特征提取网络,Darknet-53。正如其名,它包含53个卷积层,每个后面跟随着batch normalization层和leaky ReLU层。没有池…...
oracle实现批量插入
一、Dao层(增加Parm参数) void insert(Param("list") List<TicketInfo> ticketInfos); 二、Mapper层(加入条件判断值是否为空) insert all<foreach collection"list" item"item" index"index">into 表名<trim prefix…...
游戏客户端开发
1、LOL里面用到的是什么同步机制? 2、网络不好的情况下人物会出现瞬移等情况,怎样避免? 3、游戏里面有没有涉及数据存储,如存档之类的?、 4、如果让你设计存档,会如何着手? 5、以二进制方式…...
电商API接口苏宁易购获得suning商品详情页实时数据API请求接入演示
要接入苏宁易购的API接口获取商品详情页实时数据,你需要遵循以下步骤: 注册成为开放平台的开发者,获取ApiKey和ApiSecret。 使用ApiKey和ApiSecret获取访问令牌(AccessToken)。 使用AccessToken调用苏宁易购的API接口…...
数据类型转换篇(二)
文章目录 7.11 float()7.12 hex()7.13 int()7.14 list()7.15 oct()7.16 ord()7.17 repr()7.18 set()7.19 str()7.20 tuple() 7.11 float() float() 是 Python 的内置函数,用于将一个数值或数值表示的字符串转换成浮点数(floating point numberÿ…...

新零售SaaS架构:线上商城系统架构设计
零售商家为什么要建设线上商城? 传统的实体门店服务范围有限,只能吸引周边500米以内的消费者。因此,如何拓展服务范围,吸引更多的消费者到店,成为了店家迫切需要解决的问题。 缺乏忠实顾客,客户基础不稳&a…...

Word文档密码设置:Python设置、更改及移除Word文档密码
给Word文档设置打开密码是常见的Word文档加密方式。为Word文档设置打开密码后,在打开该文档时,需要输入密码才能预览及编辑,为Word文档中的信息提供了有力的安全保障。如果我们需要对大量的Word文档进行加密、解密处理,Python是一…...

jar读取目录配置、打包jar后无法获取目录下的配置
jar读取目录配置、打包jar后无法获取目录下的配置 jar读取目录配置、打包jar后无法获取目录下的配置。java打成jar包后获取不到配置文件路径。解决项目打成jar包上线无法读取配置文件。打包jar后无法读取resource下的配置文件 场景 需要读取 src/main/resources/mapper下的所…...

python第三次项目作业
打印课堂上图案 判断一个数是否是质数(素数) 设计一个程序,完成(英雄)商品的购买(界面就是第一天打印的界面) 展示商品信息(折扣)->输入商品价格->输入购买数量->提示付款 输入付款金额->打印购买小票&a…...
架构之安全性维度
流程安全性 安全基本原则:可用性 完整性 机密性 CIA 安全框架:zachman P2DR Sabsa IPDRR IATF 安全评估方法:安全测试: SAST静态测试、 IAST交互测试 安全扫描 危险模型:攻击树分析 DREAD风险评估 渗透测试:…...
odoo字段访问控制
在 Odoo 中,可以通过几种方式实现字段的访问控制,包括通过模型安全规则、记录规则和字段属性来限制字段的访问。 1. 使用模型安全规则 模型安全规则(也称为访问控制列表,ACLs)允许你定义哪些用户组可以对哪些模型进行…...
mysql的基本知识点-操作数据库表
创建数据库: CREATE DATABASE database_name;创建一个名字为database_name的数据库; 删除数据库: DROP DATABASE database_name;删除名字为database_name的数据库; 在执行删除数据库操作前,请确保你确实想要删除数据…...

基于Springboot的疫情物资管理系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的疫情物资管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…...
【postgresql 基础入门】表的约束(一)主键与外键,数据的实体完整性与参照完整性,外键引用数据被修改时的动作触发
主键与外键-表的约束(一) 专栏内容: postgresql内核源码分析手写数据库toadb并发编程 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 系列文章…...
centos 7 添加启动脚本
centos 7 java 开机启动 在CentOS 7上配置Java应用程序开机启动,可以通过创建一个systemd服务单元来实现。以下是步骤和示例代码: 创建一个新的systemd服务文件。 sudo vi /etc/systemd/system/your-java-app.service 在该文件中添加以下内容ÿ…...

java入门基础掌握知识
Java基础入门 Java一门 高级 编程语言 Java是 sun 公司研发的,现在属于 oracle 公司 Java之父是 詹姆斯.高斯林 Java主要是来做 企业级 应用开发的 Java的三大技术体系是: 技术体系说明Java SE(Java Standard Edition):标准版Java技术的核心和基础…...

Harbor高可用(nginx和keepalived)
Harbor高可用(nginx和keepalived) 文章目录 Harbor高可用(nginx和keepalived)1.Harbor高可用集群部署架构1.1 主机初始化1.1.1 设置网卡名和ip地址1.1.2 设置主机名1.1.3 配置镜像源1.1.4 关闭防火墙1.1.5 禁用SELinux1.1.6 设置时…...
[数据集][目标检测]牛羊检测数据集VOC+YOLO格式3393张2类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3393 标注数量(xml文件个数):3393 标注数量(txt文件个数):3393 标注…...

命令提示符——CMD基础操作介绍
💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…...

vue2 自定义 v-model (model选项的使用)
效果预览 model 选项的语法 每个组件上只能有一个 v-model。v-model 默认会占用名为 value 的 prop 和名为 input 的事件,即 model 选项的默认值为 model: {prop: "value",event: "input",},通过修改 model 选项,即可自定义v-model …...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...