YOLOV3论文学习

news2024/11/17 23:40:01

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.coloradmin.cn/o/111429.html

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

相关文章

Python使用Pandas导入数据库sql

Python使用Pandas导入数据库sql一、前言二、准备工作三、从数据库导入数据到Pandas一、前言 对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API Specification。Mysql,Oracal等特定数据库模块都遵从这一规范&…

QT 学习笔记(十一)

文章目录一、绘图设备1. QPixmap1.1 QPixmap 简介1.2 QPixmap 演示2. QBitmap2.1 QBitmap 简介2.2 QBitmap 演示见 QPixmap 和 QBitmap 的区别。3. QImage3.1 QImage 简介3.2 QImage 演示4. QPicture4.1 QPicture 简介4.2 QPicture 演示二、QPixmap 和 QBitmap 的区别1. widget…

Python正在消亡?致命弱点是否会让Python被新语言取代?

被业界称为“瑞士军刀”的编程语言,可能会被更适合该任务的其他语言取代吗? 自从1990年代初Python发布以来,它引起了很多热议。当然,编程社区花了至少20年的时间才逐渐注意到它的存在,而当它一旦开始流行起来&#xf…

Web入门开发【一】- Web开发介绍

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

UML类关系

1、聚合关系(aggregation) 用空心菱形箭头表示,整体和部分有各自的生命周期。部分可以属于多个整体对象! class Student; class Class { private: Student s; public: void set_student(Student s) { this.s s; } }; student() { print(“c…

电脑商城网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): 作为一个网上商城系统,就应该做到能提供强大的业务支持功能,系统能实现用户的注册功能、登录 功…

整理各种Vue项目在IE浏览器白屏报错 SCRIPT1002:语法错误

目录 一、关于 sockjs-client 依赖包 二、关于 highlight 依赖包 三、关于 swiper 依赖包 四、IE 不支持 ES6 语法 五、第三方插件引入导致 六、本地环境正常,生产环境仍旧白屏 这篇文章主要介绍了 Vue 项目在 IE 浏览器显示白屏并报错 SCRIPT1002: 语法错误 …

【数字信号处理】卷积和乘法系列3之傅里叶变换对III

“傅里叶”家族 引言 虽然你知道傅里叶级数和变换,但看看它们之间的关系是很有趣的。本节的目的是展示各种基于傅立叶的变换如何相互关联。 要做到这一点,有必要认识到存在一个具有四个成员的傅里叶“家族”,如图 30 所示。有四个是因为除了具有系列与变换选项(行)外,…

转行的35岁程序员们

“大龄程序员去哪儿了”,10月24日程序员节当天,这成为了社交媒体上最火的话题之一。根据澎湃新闻统计,在知乎、豆瓣上关于“大龄程序员”的369个有效提问里,大龄程序员的职场成长问题最受关注,一共有242个,…

给刚入职场的年轻人八条建议

年轻人刚入职场时,总会碰到各种各样的难题,作为过来人,很多新人的难处我也深有体会。想要快速融入职场是没有捷径的,但是如果处理得当,还是可以少走很多弯路,以下就是我总结的给刚入职场的年轻人的八条建议…

JavaDS1-时间复杂度空间复杂度

目录 1.算法效率 1.1.时间效率(时间复杂度)——衡量算法运行速度 1.2.空间效率(空间复杂度)——衡量算法所需额外空间(如今不再特别关注) 2.时间复杂度 2.1.概念 2.2.大O的渐进表示法 2.2.1.O(F(n))…

【约数】魔法数

K-魔法数_2022河南萌新联赛第(六)场:郑州大学 (nowcoder.com) 题意: 思路: 一开始想的是枚举到1e6,统计所有数的约数个数,然后就不知道然后了,甚至想放到同一个数组里面然后lower_…

遇事不决,转行做程序员?先看看转了的人怎么说

遇事不决先“转码”——近几年,这好像成了非程序员考虑转行方向的优先选择。 转码,指放弃原职业或专业,转行成为程序员。通过“转码”这一跳板,有人在互联网行业谋得一份薪水更高的工作,还有人借此申请出国读书工作、…

大龄转行当程序员怎么做?应该选择小众技术,避免与年轻人竞争?

最近,一篇关于一位大龄人士转行,成为程序员的文章引起了关于 HN 的热议。文章作者 Derek M. Jones 是一名从事该行业十多年的软件工程师。最近,他遇到了许多想要转行到软件开发方面的年长求职者。对此,他的建议是:选择…

【源码共读】yocto-queue 一个微型队列数据结构

yocto-queue是一个微型队列的数据结构,根据作者的介绍,如果在你一个数据量很大的数组上,大量的操作Array.push和Array.shift,那么你可以考虑使用yocto-queue来替代Array。 因为Array.shift的时间复杂度是O(n),而Queue…

长除法计算平方根的方法总结与代码实现(C++, Python)

tags: DSA Math C Python 写在前面 之前总结了计算平方根的方法, 但是并没有给出手算方法的解释, 这次专门写一下手算方法. 据说这个方法是中国的数学家创造的, 我也没深入考证过, 总之就是非常经典了, 因为这个长除法算法(英文:Long Division Algorithm)可以计算任意精度的…

《ESP32》Adafruit_GFX、u8g2驱动ssd1306

本示例将使用ESP32驱动ssd1306,将为你介绍SSD1306,接线方式以及如何使用Adafruit_GFX、u8g2两种模式进行开发SSD1306。 本人踩坑了半天,发现Adafruit_SSD1306并不能驱动器LVGL,其并没有实现关键的setAddrWindow和pushColors函数用…

【网络编程】第四章 网络套接字(守护进程+TCP英译汉+TCP通协议讯流程+TCP和UDP对比)

🏆个人主页:企鹅不叫的博客 ​ 🌈专栏 C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C初阶和进阶《深入理解计算机操作系统》《高质量C/C编程》Linux ⭐️ 博主码云gitee链接:代码仓库地址 ⚡若有帮助可以【关注点赞收藏】…

[Java]注解

文章目录⚽ 注解的概述⚽ 常见注解的使用示例🏐 文档相关的注解🏐 在编译时进行格式检查(JDK内置的三个基本注解)🏐 跟踪代码依赖性,实现替代配置文件功能⚽ 自定义注解⚽ JDK中的元注解🏐 Retention🏐 Tar…

【PowerDesign】制作数据流图

目录 文章目录 前言 一、下载软件 二、使用步骤 1.打开面板 2.绘制顶层0层/数据流程图 创建加工 画出数据流向 对格式进行设置 结果展示 2. 1层数据流程图 生成子加工 框图格式设置 结果展示 注意事项 3. 2层数据流程图 总结 前言 本文以图书管理系统举例&…