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 …...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...