论文阅读笔记三十二:YOLOv3: An Incremental Improvement
论文源址:https://pjreddie.com/media/files/papers/YOLOv3.pdf
代码:https://github.com/qqwweee/keras-yolo3
摘要
本文针对YOLO再次改进,训练更大的网络,准确率也有所提高。在320x320的输入上YOLOv3运行22ms,mAP为28.2,与SSD的准确率相同,但比SSD快三倍。在使用0.5 IOU作为检测机制时,YOLOv3仍表现很好。在Titan X上实现57.9 AP50 51ms的运行,而RetinamNet为57.5 AP50运行198ms,YOLOv3要快3.8倍。
The Deal
bounding box 的预测:沿袭YOLO9000的方式,仍采用维度聚合的方式。网络预测每个bounding box的四个坐标,tx,ty,tw,th。如果单元格偏离图像左上角(cx,cy),而且先验框的宽和高为pw,ph,这预测的值为:
训练时,选择平方误差损失的和,预测坐标对应的真值为,梯度计算是真值减去预测值,
通过翻转上述式子,可以得到真值的值。YOLOv3通过使用逻辑回归预测每个bounding box的目标分数。如果一个先验框与ground truth 的重合率要比其他先验框都要多,则该框的目标分数应为1.对于与ground truth中目标有重叠超过阈值(本为设置为0.5),但不是最好的先验框,将此预测进行移除。如果一个先验框没有一个ground truth与之匹配。则没有类别和坐标的预测损失。只有是否存在目标的损失描述。
类别预测:使用多类别的分类器对每个框内可能包含的类别进行预测分类。YOLOv3并未使用softmax,只是使用独立的逻辑回归分类器。训练时,采用二元交叉熵损失进行类别的预测。当面向更复杂的情况时(开放的数据集,此数据集中存在大量重叠的标签),此方法会有所帮助,而使用softmax基于每个box只包含一个类别的假设,并不实用,而使用多标记的方法可以更好的描述数据。
不同尺寸的预测: YOLOv3预测三种不同的尺寸。YOLOv3采用类似于FPN网络类似的结构提取多尺寸特征。在基础的特征提取层后添加了基层卷积层。最后预测了一个三维张量,编码bounding box,objectness和类别的预测。COCO中每种尺寸预测三个框,因此张量为NXNX[3*(4+1+80)],分别代表4个坐标,1个objectness及80个类别的预测。取前两层的feature map将其上采样扩大至2倍,然后将采样后的feature map与更靠前的feature map进行拼接。通过上采样可以获得更多的语义信息,提取靠前层的feature map可以获得图像的细节信息。最后,添加一些卷积层来处理拼接后的feature map,并对此张量进行预测,当前的尺寸扩大。重复此方法,对最后一种尺寸进行预测。第三种储存预测的结果结合了先前的计算(相当于微调后的feature map)。
仍采用k-means剧烈确定先验框,任意选择9个簇及3种尺寸。在COCO数据集上得到的9个先验框为(10×13),(16×30),(33×23),(30×61),(62×45),(59× 119),(116×90),(156×198),(373×326).
特征提取:使用全新的网络进行特征提取。基于YOLOv2的网络将,Darknet19与残差结构进行结合。包含一系列的3x3与1x1的卷积夹杂着残差连接,网络规模变大,叫做Darknet-53。
Darknet-53比Darknet-19高效,同时,比resnet-101,resnet-152更快。比较结果如下。
实验比较
实验失效的方案:
(1)Anchor box x,y offset predictions
(2)Linear x,y predictions instead of logistic.
(3)Focal loss.
(4)DualIOUthresholdsandtruthassignment.
Reference
[1] Analogy. Wikipedia, Mar 2018. 1
[2] M. Everingham, L. Van Gool, C. K. Williams, J. Winn, and A. Zisserman. The pascal visual object classes (voc) challenge. International journal of computer vision, 88(2):303– 338, 2010. 6
[3] C.-Y. Fu, W. Liu, A. Ranga, A. Tyagi, and A. C. Berg. Dssd: Deconvolutional single shot detector. arXiv preprint arXiv:1701.06659, 2017. 3
[4] D. Gordon, A. Kembhavi, M. Rastegari, J. Redmon, D. Fox, andA.Farhadi. Iqa: Visualquestionansweringininteractive environments. arXiv preprint arXiv:1712.03316, 2017. 1
论文阅读笔记三十二:YOLOv3: An Incremental Improvement的更多相关文章
- 论文阅读笔记(十二)【CVPR2018】:Exploit the Unknown Gradually: One-Shot Video-Based Person Re-Identification by Stepwise Learning
Introduction (1)Motivation: 大量标记数据成本过高,采用半监督的方式只标注一部分的行人,且采用单样本学习,每个行人只标注一个数据. (2)Method: 对没有标记的数据生成 ...
- 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)
论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...
- 论文阅读笔记三十六:Mask R-CNN(CVPR2017)
论文源址:https://arxiv.org/pdf/1703.06870.pdf 开源代码:https://github.com/matterport/Mask_RCNN 摘要 Mask R-CNN ...
- 论文阅读笔记三十:One pixel attack for fooling deep neural networks(CVPR2017)
论文源址:https://arxiv.org/abs/1710.08864 tensorflow代码: https://github.com/Hyperparticle/one-pixel-attac ...
- 论文阅读笔记四十二:Going deeper with convolutions (Inception V1 CVPR2014 )
论文原址:https://arxiv.org/pdf/1409.4842.pdf 代码连接:https://github.com/titu1994/Inception-v4(包含v1,v2,v4) ...
- 论文阅读笔记三十九:Accurate Single Stage Detector Using Recurrent Rolling Convolution(RRC CVPR2017)
论文源址:https://arxiv.org/abs/1704.05776 开源代码:https://github.com/xiaohaoChen/rrc_detection 摘要 大多数目标检测及定 ...
- 论文阅读笔记三十八:Deformable Convolutional Networks(ECCV2017)
论文源址:https://arxiv.org/abs/1703.06211 开源项目:https://github.com/msracver/Deformable-ConvNets 摘要 卷积神经网络 ...
- 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)
论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...
- 论文阅读笔记三十四:DSSD: Deconvolutiona lSingle Shot Detector(CVPR2017)
论文源址:https://arxiv.org/abs/1701.06659 开源代码:https://github.com/MTCloudVision/mxnet-dssd 摘要 DSSD主要是向目标 ...
随机推荐
- 【NLP CS224N笔记】Lecture 3 GloVe: Global Vectors for Word Representation
I. 复习word2vec的核心思路 1. Skip-gram 模型示意图: 2.word vectors的随机梯度 假设语料库中有这样一行句子: I love deep learning and N ...
- 博客主Judge已跳槽搬家emmm
跳槽网站:博客园 顺便带一下:洛谷blog (好久没更了QAQ...) ### 不过csdn上还是会照常更新的,毕竟用着方便
- HDU 3333 Turing Tree 离线 线段树/树状数组 区间求和单点修改
题意: 给一个数列,一些询问,问你$[l,r]$之间不同的数字之和 题解: 11年多校的题,现在属于"人尽皆知傻逼题" 核心思想在于: 对于一个询问$[x,R]$ 无论$x$是什么 ...
- PHP一维数组转二维数组正则表达式
2017年11月20日17:17:08 array(1 => '哈哈') 变成 array('id' => 1, 'name' => '哈哈') 查找目标: (\d)\s=&g ...
- 用Go的风格实现素数筛选
package main import ( "fmt" "time" ) func source(ch chan<- int) { ; i < En ...
- 转载:UML学习(四)-----状态图(silent)
原文:http://www.cnblogs.com/silent2012/archive/2011/11/01/2178278.html 状态图主要用于描述对象具有的各种状态.状态之间的转换过程以及触 ...
- PDF阅读器中如何改变线条颜色、线宽和线型等
1.打开PDF阅读器过后,点击菜单栏"注释"这一栏,找到绘图区域中的线条或铅笔: 2.分别用线条和铅笔随意画两条直线,然后选中直线,右键点击直线并打开"属性": ...
- 帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...
- 无锁编程 - Double-checked Locking
Double-checked Locking,严格意义上来讲不属于无锁范畴,无论什么时候当临界区中的代码仅仅需要加锁一次,同时当其获取锁的时候必须是线程安全的,此时就可以利用 Double-check ...
- Python下划线的详解
本文将讨论Python中下划线(_)字符的使用方法.我们将会看到,正如Python中的很多事情,下划线的不同用法大多数(并非所有)只是常用惯例而已. 单下划线(_) 通常情况下,会在以下3种场景中使用 ...