【YOLO学习】YOLOv3详解

文章目录

  • 1. 网络结构
    • 1.1 结构介绍
    • 1.2 改进
  • 2. 训练与测试过程
  • 3. 总结


1. 网络结构

1.1 结构介绍

 1. 与 YOLOv2 不同的是,YOLOv3 在 Darknet-19 里加入了 ResNet 残差连接,改进之后的模型叫 Darknet-53。在 ImageNet上 实验发现 Darknet-53 相对于 ResNet-152 和 ResNet101,不仅在分类精度上差不多,计算速度还比 ResNet-152 和 ResNet-101 快多了,网络层数也比它们少。

在这里插入图片描述

在这里插入图片描述

 2. YOLOv3 在三个不同的尺度上对框进行预测。使用类似于特征金字塔网络的概念从这些尺度上提取特征。

  • (1)YOLOv3 采用了 3 个不同尺度的特征图(三个不同卷积层提取的特征)。YOLOv3 通过下采样 32 倍、16 倍和 8 倍得到 3 个不同尺度的特征图。例如输入 416×416 的图像,则会得到 13×13 (416/32),26×26 (416/16) 以及 52×52 (416/8) 这 3 个尺度的特征图。

在这里插入图片描述

  • (2)YOLOv3 每个尺度的特征图上使用 3 个 anchor box。使用 dimension clusters 得到 9 个聚类中心(anchor boxes),并将这些 anchor boxes 划分到 3 个尺度特征图上,尺度更大的特征图使用更小的先验框。

在这里插入图片描述

  • (3)YOLOv3 对每个尺度下的特征图都进行边界框的预测。每种尺度的特征图上可以得到 N × N × [3 × (4 + 1 + 80)] 的结果(分别是 N x N 个 gird cell ,3 种尺度的 anchor boxes,4 个边界框偏移值、1 个目标预测置信度以及 80 种类别的预测概率)

1.2 改进

 1. (1) 没有采用最大池化层,转而采用步长为 2 的卷积层进行下采样。 (2) 为了防止过拟合,在每个卷积层之后加入了一个 BN 层和一个 Leaky ReLU。 (3) 引入了残差网络的思想,目的是为了让网络可以提取到更深层的特征,同时避免出现梯度消失或爆炸。 (4) 将网络的中间层和后面某一层的上采样进行张量拼接,达到多尺度特征融合的目的。

 2. (1) YOLOv3 使用的是 logistic 分类器,而不是之前使用的 softmax。 (2) 在 YOLOv3 的训练中,使用了 Binary Cross Entropy ( BCE, 二元交叉熵) 来进行类别预测。

 3. 在 YOLOv3 中,利用逻辑回归来预测每个边界框的客观性分数( object score ),也就是 YOLOv1 论文中说的 confidence :

  • 正样本: 如果当前预测的包围框比之前其他的任何包围框更好的与 ground truth 对象重合,那它的置信度就是 1。
  • 忽略样本: 如果当前预测的包围框不是最好的,但它和 ground truth对象重合了一定的阈值(这里是0.5)以上,神经网络会忽略这个预测。
  • 负样本: 若 bounding box 没有与任一 ground truth 对象对应,那它的置信度就是 0。

Q1:为什么 YOLOv3 要将正样本 confidence score 设置为 1?
置信度意味着该预测框是或者不是一个真实物体,是一个二分类,所以标签是 1、0 更加合理。并且在学习小物体时,有很大程度会影响 IOU。如果像 YOLOv1 使用 bounding box 与 ground truth 对象的IOU 作为 confidence,那么 confidence score 始终很小,无法有效学习,导致检测的 Recall 不高。

Q2:为什么存在忽略样本?
由于 YOLOv3 采用了多尺度的特征图进行检测,而不同尺度的特征图之间会有重合检测的部分。例如检测一个物体时,在训练时它被分配到的检测框是第一个特征图的第三个 bounding box,IOU 为 0.98,此时恰好第二个特征图的第一个 bounding box 与该 ground truth 对象的 IOU 为 0.95,也检测到了该 ground truth 对象,如果此时给其 confidence score 强行打 0,网络学习的效果会不理想。

2. 训练与测试过程

在这里插入图片描述

在这里插入图片描述

3. 总结

在这里插入图片描述

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

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

相关文章

数据结构与算法篇(树 - 常见术语)

目录 一、什么是树? 二、相关术语 根结点 边 叶子结点 兄弟结点 祖先结点 结点的大小 树的层 结点的深度 结点的高度 树的高度 斜树 一、什么是树? 树是一种类似于链表的数据结构,不过链表的结点是以线性方式简单地指向其后继结…

ORB-SLAM复现时遇到的问题(复现失败,切莫当做教程)

背景 本人的环境:使用ubuntu20.04,opencv4 问题 进行Build DBoW2. Go into Thirdparty/DBoW2/ and execute:时,运行make时出错 我安装的opencv4,在 OpenCV 3 和更高版本中,头文件的路径可能已更改。例如&#xff0…

[单master节点k8s部署]32.ceph分布式存储(三)

基于ceph rbd生成pv 在集群中认证ceph 用下面代码生成ceph的secret .创建 ceph 的 secret,在 k8s 的控制节点操作: 回到 ceph 管理节点创建 pool 池: [rootmaster1-admin ~]# ceph osd pool create k8stest 56 pool k8stest created [rootm…

免费音频剪辑软件大揭秘:让声音创作更轻松

在精神娱乐越发丰富的现在,音频内容的创作和编辑变得越来越重要。无论是专业的音乐制作人,还是自媒体创作者,都可能需要一款功能强大且易于使用的音频剪辑软件来处理音频素材。今天我们一同来探讨有什么好用的免费音频剪辑软件吧。 1.福昕音…

golang gin入门

gin是个小而精的web开发框架 官方文档 安装 go get -u github.com/gin-gonic/gin最简单的起手代码 package mainimport ("net/http""github.com/gin-gonic/gin" )func main() {r : gin.Default()r.GET("/ping", func(c *gin.Context) {c.JSON…

Java IO流全面教程

此笔记来自于B站黑马程序员 File 创建对象 public class FileTest1 {public static void main(String[] args) {// 1.创建一个 File 对象,指代某个具体的文件// 路径分隔符// File f1 new File("D:/resource/ab.txt");// File f1 new FIle("D:\\…

nodejs 构建高性能服务器的关键技术

nodejs 构建高性能服务器的关键技术 演示地址 演示地址 源码地址 源码地址 获取更多 获取更多 在现代 Web 开发中,Node.js 已成为构建高性能、可扩展网络应用的首选平台之一。它的非阻塞 I/O 模型与事件驱动架构使其能够在处理大量并发请求时表现出色&#xff0…

【C++11】新特性

前言: C11 是C编程语言的一个重要版本,于2011年发布。它带来了数量可观的变化,包含约 140 个新特性,以及对 C03 标准中约600个缺陷的修正,更像是从 C98/03 中孕育出的新语言 列表初始化 C11 中的列表初始化&#xff0…

【自用】王道文件管理强化笔记

文章目录 操作系统引导:磁盘初始化文件打开过程角度1文件的打开过程角度2 内存映射的文件访问 操作系统引导: ①CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机) ②)将磁盘的第一块–主引导记录读入内存&…

谷粒商城のRabbitMQ基础篇

文章目录 前言一、Rabbit MQ简介1、基本概念2、组件架构 二、使用步骤1.引入依赖2.application.properties3、docker 安装Rabbit MQ3、使用案例3.1、定义队列3.2、定义交换机3.3、绑定3.4、发送消息3.5、接受消息3.5、自定义消息序列化方式3.6、演示Fanout 交换机模式3.7、演示…

Vue基础(二)

计算属性与监视姓名案例 插值语法实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>姓名案例&l…

用人工智能写作:专业作家利用 ChatGPT 的五种方式 ✍️

用人工智能写作&#xff1a;专业作家利用 ChatGPT 的五种方式 &#x1f3a8;✍️ 在写作领域&#xff0c;人工智能工具如 ChatGPT 正逐渐成为作家们的得力助手。它不仅帮助优化文本&#xff0c;还能激发灵感、完善叙事结构&#xff0c;甚至推动创新。本文将通过五个具体案例&a…

【微服务】服务注册与发现 - Eureka(day3)

CAP理论 P是分区容错性。简单来说&#xff0c;分区容错性表示分布式服务中一个节点挂掉了&#xff0c;并不影响其他节点对外提供服务。也就是一台服务器出错了&#xff0c;仍然可以对外进行响应&#xff0c;不会因为某一台服务器出错而导致所有的请求都无法响应。综上所述&…

实验4 循环结构

1、判断素数 【问题描述】从键盘输入一个大于1的正整数&#xff0c;判断是否为素数 【输入形式】输入一个正整数 【输出形式】输出该数是否为素数 【样例输入】10 【样例输出】10 is not a prime number 【样例说明】样例2 输入&#xff1a;-10 输出&#xff1a;error! #de…

jmeter学习(7)beanshell

beanshell preprocessor 发送请求前执行 beanshell postprocessor 发送请求前执行 获取请求相关信息 String body sampler.getArguments().getArgument(0).getValue(); String url sampler.getPath(); 获取响应报文 String responseprev.getResponseDataAsString(); 获…

北京自闭症寄宿学校大盘点:优质教育资源汇总

北京自闭症寄宿学校大盘点&#xff1a;优质教育资源中的璀璨明珠——兼谈广州星贝育园 在北京&#xff0c;随着社会对自闭症儿童教育的日益重视&#xff0c;越来越多的优质寄宿学校应运而生&#xff0c;为这些特殊的孩子提供了专业的康复与教育环境。然而&#xff0c;当我们把…

【数据结构】【链表代码】随机链表的复制

/*** Definition for a Node.* struct Node {* int val;* struct Node *next;* struct Node *random;* };*/typedef struct Node Node; struct Node* copyRandomList(struct Node* head) {if(headNULL)return NULL;//1.拷贝结点&#xff0c;连接到原结点的后面Node…

猫头虎深度解读:过去2周,AI领域的十大突破事件与未来展望

猫头虎深度解读&#xff1a;过去2周&#xff0c;AI领域的十大突破事件与未来展望 &#x1f680;&#x1f916; 大家好&#xff0c;我是猫头虎技术团队的代表&#xff01;这两周&#xff0c;人工智能领域再次掀起了技术与应用的新浪潮。从立法到技术进展&#xff0c;再到前沿应…

初始爬虫12(反爬与反反爬)

学到这里&#xff0c;已经可以开始实战项目了&#xff0c;多去爬虫&#xff0c;了解熟悉反爬&#xff0c;然后自己总结出一套方法怎么做。 1.服务器反爬的原因 服务器反爬的原因 总结&#xff1a; 1.爬虫占总PV较高&#xff0c;浪费资源 2.资源被批量抓走&#xff0c;丧失竞争力…

交叉熵的数学推导和手撕代码

交叉熵的数学推导和手撕代码 数学推导手撕代码 数学推导 手撕代码 import torch import torch.nn.functional as F# 二元交叉熵损失函数 def binary_cross_entropy(predictions, targets):# predictions应为sigmoid函数的输出&#xff0c;即概率值# targets应为0或1的二进制标…