YOLOV3论文学习

news/2024/5/20 21:07:10/文章来源:https://blog.csdn.net/t765833631/article/details/127339842

YOLOv3论文链接:https://pjreddie.com/media/files/papers/YOLOv3.pdf

综述
一、摘要
1、320*320的YOLOv3推理时间22ms,准确率28.2mAP,达到了SSD的精确度,推理速度却快了三倍。
2、基于.5mAp Iou 的YOLOv3的检测效果还比较不错,在Titan X上准确率为57.9AP50,推理时间为51ms,和RetinaNet在Titan X上推理相比,RetinaNet推理时间为198ms,准确率为57.5AP50

二、简介
本文将介绍对YOLOv3网络的处理过程、以及过程中做的一些无用功。
2 网络的处理
YOLOv3的思想都从别处借鉴来的,但是本文训练出来了更加优秀的分类器,下面将从零开始介绍它。

2.1 Bounding box prediction(边界框预测)
延续YOLO9000的策略,边界框的预测像锚框(anchor)一样采用dimension cluster(维度聚类)。网络会预测出边界框的四个坐标,[tx,ty,tw,th],如果该cell的左上角坐标在整幅图像中的偏移是(cx, cy),并且边界框宽和高的先验值是(pw, ph),则边界框的预测结果可以用公式计算:在这里插入图片描述
在这里插入图片描述
在训练过程中我们采用均方和误差作为损失函数。假设预测框的ground truth是\hat{t} _{*} ,那么梯度的计算公式是groud truth 减预测值:
在这里插入图片描述
ground truth的值计算可以通过转换2.1小节中的公式。
YOLOv3使用**logistic regression(逻辑回归)**预测boungding box的objectness score(目标置信度)。如果一个目标的先验框和gound truth重合,则目标置信度得分为1.如果先验框的目标置信度得分不是1,我国通过设定阈值,将目标置信度得分小于阈值的预测过滤掉,根据论文【17】,我们把阈值设定为.5。
不同论文【17】,本文对每个ground truth仅分配一个先验框,如果一个先验框没有被分配到对应的ground truth,对坐标和分类预测不会产生影响,仅仅影响目标置信度的得分。

Q&A:
1、先验框分配给ground truth的策略

2.2. 分类预测
每个框用多标签分类预测边界框可能包含的分类。我们不适用softmax,因为我们发现这对良好的性能是不必要的,相反我们使用独立的逻辑分类器。在训练过程中,我们使用binary-cross entropy loss(二值交叉熵损失)预测分类。
该方法更适用复杂的开源数据集。例如数据集中目标有多个重叠的标签(woman/person)。使用softmax预测分类,印证了我们假设每个目标 只有一个标签,但是实际情况往往不是这样的。多标签分类能帮助数据更好的建模。
QUESTION:
什么是 binary cross entrop loss?

2.3 多尺度预测
YOLOv3可以在三个尺度上预测。本文采用类似于特征金字塔【8】的方法从三个尺度上提取特征。在我们的基础特征提取器中,我们添加了几个卷积层,最后预测得到的3维tensor是编码的边界框,目标置信度和分类预测。在本文的实验中才用了COCO数据集,在每个尺度上预测出3个边界框,因此预测得到的tensor维度是 N * N * [3 * (4 + 1 +80)],其中4代表边界框的偏移,1表示目标置信度,80表示COCO数据集80个分类。
接下来我们从之前的两层上通过2倍下采样提取特征图。同时我们也从更早的网络层中提取特征图,并且使用concatenation(拼接)将它和我们下采样得到的特征图进行融合。这种方法使我们能够从下采样特征中得到更有意义的语义信息。并且从更早的网络层中获取更细粒度的(finer-grained)信息。然后我们添加更多的卷积层来处理这个组合特征图,最终预测得到一个相似的tensor,尽管现在是两倍大。
按照这样的流程我们再执行一次,得到最后一个尺度的预测框。因此第三个尺度的预测得益于此前所有的计算,并且得益于更早网络层中细粒度的特征。

本文依然采用K-means聚类来确定先验框。首先任意选择9个簇和3个尺度,然后根据尺度均匀的划分9个簇。在COCO数据集上9个簇是:(10×13),(16×30),(33×23),(30×61),(62×45),(59×119),(116 × 90),(156 × 198),(373 × 326).

2.4 特征提取
本文使用一个新网络来执行特征提取。新网络混合了YOLOv2和Darknet-19中的方法。并且这种方法使得残差网络流行。新网络使用连续的33和11卷积层,但是现在也有一些shortcut connections,使得网络明显变大了。它有53个卷积层,因此我们称它,Darknet-53.
在这里插入图片描述
该新网络比Darknet-19更强大,同时也比ResNet-101或者ResNet-152更高效。在ImageNet数据上的运行结果如下表:
在这里插入图片描述
表中网络都是基于同样的设置训练的并且在256*256(single crop accuracy)上测试。运行时间是在Titan X上测试的。

DarkNet-53的优势总结如下:
1、每秒浮点操作数更高:这意味着能够更好的利用GPU.而且ResNet有太多的网络层,因此效率也不高。

2.5 训练
本文训练都采用标准化的方法:完整图像,没有 hard negtive mining、采用多尺度训练、大量数据增强、批处理归一化。使用DarkNet神经网络框架训练和测试【14】

3、怎样做
如下图所示,在COCO数据集上YOLOv3与SSD变体的(weird)mAP表现相当。但是速度前者是后者的三倍。尽管在下表中YOLOv3表现稍逊色于RetinaNet,但是当我们看到mAP(AP50)的数据,发现YOLOv3还是非常强大。表现和RetinaNet相当,并且远优于SSD变体,这表明YOLOv3很强大,并且擅长生成合适的目标边界框。

过去的YOLO系列网络适合检测小尺寸目标,但是现在趋势反过来了。YOLOv3基于多尺度预测有相当高的AP(S)表现。但是基于中、大尺寸目标检测表现相对较差。对此需要更多的调查去究其根本。当在AP50的前提条件下,绘制accuracy vs. speed曲线图可以看到YOLOv3比其他的检测system有显著的优势,即更快更好。
在这里插入图片描述

4、做的无用功
5、这些都意味着什么

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

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

相关文章

Doo Prime 为泰国 SOS 儿童村送温暖,公益有起点爱心无疆界

一年一度的圣诞节即将来临,在这欢乐的时刻, Doo Prime 荣幸地宣布 ,向泰国 SOS 儿童村捐赠了 35 万泰铢 ( 约合 1.23 万美元 ),作为泰国南部城市合艾府 SOS 儿童村的房屋翻修费用。 Doo Prime 希望 SOS 儿童村的孩子们都能在温馨…

Android入门第55天-在Android里使用OKHttp组件访问网络资源

简介 今天的课程开始进入高级课程类了,我们要开始接触网络协议、设备等领域编程了。在今天的课程里我们会使用OKHttp组件来访问网络资源而不是使用Android自带的URLConnection。一个是OKHttp组件更方便二个是OKHttp组件本身就带有异步回调功能。 下面就进入课程。…

(Java)车厢重组

车厢重组一、题目描述二、输入格式三、输出格式四、样例(1)样例输入(2)样例输出五、正确代码六、思路一、题目描述 在一个旧式的火车站旁边有一座桥,其桥面可以绕河中心的桥墩水平旋转。一个车站的职工发现桥的长度最…

Fragment案例

Fragment案例 1.案例要求 框架布局项目难点:1 导航栏的实现,显示导航按钮、切换Fragment 2 每个Fragment的创建、显示 3 Fragment的跳转(从新闻列表到新闻详情,再返回) 涉及的技术:用RadioGroup及RadioButt…

【源码共读】Vite 项目自动添加 eslint 和 prettier

vite-pretty-lint库是一个为Vite创建的Vue或React项目初始化eslint和prettier的库。 该库的目的是为了让开发者在创建项目时,不需要手动配置eslint和prettier,而是通过vite-pretty-lint库来自动配置。 源码地址: vite-pretty-lintgithub1s…

3ds Max:标准几何体

三维软件中一般有许多非常复杂的命令,能够完成非常复杂的图形运算,但其实许多绚丽的图形也是由最基本的几何体构成,许多复杂的命令也是基本的运算程序的集合,就像是砖块,构成了复杂的大厦。任何一个几何体,…

【Linux】缓冲区/磁盘inode/动静态库制作

目录 一、缓冲区 1、缓冲区的概念 2、缓冲区的意义 3、缓冲区刷新策略 4、同一份代码,打印结果不同 5、仿写FILE 5.1myFILE.h 5.2myFILE.c 5.3main.c 6、内核缓冲区 二、了解磁盘 1、磁盘的物理结构 2、磁盘的存储结构 2.1磁盘的定位 3、磁盘的抽象…

Sentinel系列——概述与安装1-1

Sentinel系列——概述与安装1-1概述服务雪崩解决方法基本概念资源规则Sentinel 是如何工作的安装Sentinel下载地址启动修改sentinel启动参数设置启动端口设置用户名密码概述 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言…

java开发的环保网站垃圾分类系统源码

本项目是基于springboot开发的小区垃圾分类的监管系统。为了更好的督促小区业主更好的进行垃圾分类和垃圾投放,本系统设计了一套积分奖罚机制,如果业主此次投放垃圾符合分类要求则加10积分,不符合则扣除200积分,积分不够需要进行扫…

Zookeeper 4 Zookeeper JavaAPI 操作 4.1 Curator 介绍 4.2 Curator API 常用操作【建立连接】

Zookeeper 【黑马程序员Zookeeper视频教程,快速入门zookeeper技术】 文章目录Zookeeper4 Zookeeper JavaAPI 操作4.1 Curator 介绍4.1.1 Curator 介绍4.2 Curator API 常用操作4.2.1 Curator API 常用操作4.2.2 建立连接4 Zookeeper JavaAPI 操作 4.1 Curator 介绍…

spring提前加载,懒加载,bean的作用域和注入注解讲解

前言 sping知识随笔笔记;spring提前加载,懒加载,bean的作用域和注入注解讲解 这里写目录标题前言1 depends-on2 bean的作用域3 lazy-init 懒加载4 Autowrite和Resource的区别和使用1 depends-on depends-on 是提前加载,比如在实…

《北京市数字经济促进条例》图解来了

《北京市数字经济促进条例》 2023/1/1 二十大对建设数字经济作出重要部署。党的二十大报告中指出,“加快建设网络强国、数字中国”、“加快发展数字经济,促进数字经济和实体经济深度融合,打造具有国际竞争力的数字产业集群”。习总书记强调…

eclipse和sts安装lombok

eclipse和sts安装lombok 说明 sts 是 eclipse集成springboot的开发环境 所以 sts 和 eclipse 安装 lombok 步骤基本一样 参考网址: https://blog.csdn.net/qq_39826207/article/details/119007580?ops_request_misc%257B%2522request%255Fid%2522%253A%252216708973141680…

生物系转行学编程,如今身家26亿

在编程界有许多明星级别的大牛,他们有些人学习成绩很差,有些人甚至不是科班出身,但对编程的狂热和努力,成就了他们在IT界“名利双收”的地位。 在我们中国编程界就有这样一位大牛,非科班出身,却做到了神一般…

注册中心Nacos

Nacos是Spring Cloud Alibaba提供的一个软件 这个软件主要具有注册中心和配置中心(课程最后讲解)的功能 我们先学习它注册中心的功能 微服务中所有项目都必须注册到注册中心才能成为微服务的一部分 注册中心和企业中的人力资源管理部门有相似 当前微服务项目中所有的模块,在…

Qt中实例化一个函数变量时加不加括号的区别,以及括号中的this的使用

一、设计一个测试小程序 废话不多说,直接上代码。 main.h函数就不多说了,没改动。直接上mainwindow.h,也没改动。看mainwindow.cpp的内容。 #include "mainwindow.h" #include "ui_mainwindow.h" #include "test.…

网友:我30多岁了,现在转行学编程来得及吗?

这些年,互联网行业的变化发展很快,很多公司也是借助互联网发展的大趋势发展的非常好。 水涨船高,行业好,意味着互联网行业的从业者的工资也就跟着高,很多互联网行业刚入门的月薪基本都已经过万了,一些传统行…

Web入门开发【二】- 网站设计

欢迎来到霍大侠的小院,我们来学习Web入门开发的系列课程。 首先我们来了解下这个课程能学到什么? 1、你将可以掌握Web网站的开发全过程。 2、了解基础的HTML,CSS,JavaScript语言。 3、开发自己的第一个网站。 4、认识很多对编…

计算机网络基础——一文详解IPv4与子网划分

IPv4地址概述 在因特网中,为了实现计算机之间的相互通信,通常需要为每台计算机分配一个IP地址。在互联网的发展过程中主要有两个版本的互联网协议,分别是IPv4(Internet Protocol version4)和IPv6 (Internet Protocol version 6) IPv4的IP地址…

javaSE(包、封装、static用法、代码块)

1.包 (文件夹) 为了更好的管理类,把多个类收集在一起成为一组,称为软件包。 在Java中也引入了包,包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一…