读论文系列:Object Detection CVPR2016 YOLO
CVPR2016: You Only Look Once:Unified, Real-Time Object Detection
转载请注明作者:梦里茶
YOLO,You Only Look Once,摒弃了RCNN系列方法中的region proposal步骤,将detection问题转为一个回归问题
网络结构
输入图片:resize到448x448
整张图片输入卷积神经网络(24层卷积+2层全连接,下面这张示意图是Fast YOLO的)
- 将图片划分为SxS个格子,S=7
- 输出一个SxS大小的class probability map,为图片上每个格子所属的分类
- 输出为每个格子输出B个bounding box,每个bounding box由x,y,w,h表示,为每个bounding box输出一个confidence,即属于前景的置信度
于是输出可以表示为一个SxSx(B*(4+1)+C)的tensor,训练只需要根据数据集准备好这样的tensor进行regression就行
- 对所有bounding box按照confidence做非极大抑制,得到检测结果
训练
Loss
- 前两行为定位loss,λcoord为定位loss的权重,论文中取5
- 第三行为一个bounding box属于前景时的置信度回归loss,
- 当格子中有对象出现时,真实Ci为1,
- 1ijobj是一个条件表达式,当bounding box“负责(is responsible for)”图中一个真实对象时为1,否则为0,
- 所谓“负责”,指的是在当前这个格子的所有bounding box中,这个bounding box与真实的bounding box重叠率最大
- 第四行为一个bounding box属于背景时的置信度回归loss,
- 为了避免负样本过多导致模型跑偏, λnoobj=0.5,
- 1ijnoobj是一个条件表达式,为1ijobj取反
于是我们可以发现一个格子的两个bounding box的分工:一个贡献前景loss,一个贡献背景loss ,不论是前景背景box,我们都希望它们的confidence接近真实confidence,实际上,如果 λnoobj=1, 第四五行可以合并为一项求和,但由于背景box太多,所以才单独拆开加了权重约束
第五行为分类loss,1iobj是一个条件表达式,当有对象出现在这个格子中,取1,否则取0
YOLO里最核心的东西就讲完了,其实可以把YOLO看作固定region proposal的Faster RCNN,于是可以省掉Faster RCNN里region proposal部分,分类和bounding box regression跟Faster RCNN是差不多的
细节
Leaky Relu
网络中只有最后的全连接层用了线性的激活函数,其他层用了leaky Relu:f(x)=max(x, 0.1x)
对比Relu和leaky Relu
在x小于0的时候,用了0.1x,避免使用relu的时候有些单元永远得不到激活(Dead ReLU Problem)
Fast YOLO
卷积层更少,只有9层卷积+2层全连接,每层filters也更少,于是速度更快
实验效果
- 对比当前最好方法:
Fast YOLO速度最快,准确率不太高,但还是比传统方法好,YOLO则比较中庸,速度不慢,准确率也不太高,但也还行。
- 再看看具体是在哪些类型的图片上出错的:
主要是定位不准(毕竟没有精细的region proposal),但是在背景上出错较少(不容易把背景当成对象)
缺点
- 固定的格子是一种很强的空间限制,7x7的格子决定了整张图片最多预测98个对象,对于对象数量很多的图片(比如鸟群)无能为力
- 难以泛化到其他形状或角度的物体上
- 损失函数没有考虑不同尺寸物体的error权重,大box权重和小box权重一样
Summary
Anyway,YOLO结构还是挺优雅的,比Faster RCNN黑科技少多了,更重要的是,它是当时最快的深度学习检测模型,也是很值得肯定的。
读论文系列:Object Detection CVPR2016 YOLO的更多相关文章
- 读论文系列:Deep transfer learning person re-identification
读论文系列:Deep transfer learning person re-identification arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao X ...
- 读论文系列:Object Detection SPP-net
本文为您解读SPP-net: Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Motivat ...
- 读论文系列:Object Detection NIPS2015 Faster RCNN
转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...
- 读论文系列:Object Detection ICCV2015 Fast RCNN
Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍:训练速度是SPP-net的3倍,测试速度是SPP-net的3倍 ...
- 读论文系列:Object Detection ECCV2016 SSD
转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...
- [论文阅读]Object detection at 200 Frames Per Second
本文提出了一个有效且快速的目标检测器,该目标检测器得速度可以达到200+fps,在Pascal VOC-2007上的mAP比Tiny-Yolo-v2高出14. 本文从以下三个方面对网络进行改进. 网络 ...
- 读论文系列:Nearest Keyword Search in XML Documents中使用的数据结构(CT、ECT)
Reference: [1]Y. Tao, S. Papadopoulos, C. Sheng, K. Stefanidis. Nearest Keyword Search in XML Docume ...
- YOLO object detection with OpenCV
Click here to download the source code to this post. In this tutorial, you’ll learn how to use the Y ...
- 论文阅读笔记三十五:R-FCN:Object Detection via Region-based Fully Convolutional Networks(CVPR2016)
论文源址:https://arxiv.org/abs/1605.06409 开源代码:https://github.com/PureDiors/pytorch_RFCN 摘要 提出了基于区域的全卷积网 ...
随机推荐
- pat 1001-1010
最近有点神志无知 命运中很多事情真是奇妙 我必须改变自己的状态 1001 简单的模拟 #include<bits/stdc++.h> using namespace std; int ma ...
- C#图解教程 第二十一章 命名空间和程序集
命名空间和程序集 引用其他程序集 mscorlib库 命名空间 命名空间名称命名空间的补充命名空间跨文件伸展嵌套命名空间 using 指令 using命名空间指令using别名指令程序集的结构 程序集 ...
- [BZOJ2684][CEOI2004]锯木厂选址
BZOJ权限题! Description 从山顶上到山底下沿着一条直线种植了n棵老树.当地的政府决定把他们砍下来.为了不浪费任何一棵木材,树被砍倒后要运送到锯木厂. 木材只能按照一个方向运输:朝山下运 ...
- [BZOJ1045] [HAOI2008] 糖果传递 (贪心)
Description 有n个小朋友坐成一圈,每人有ai个糖果.每人只能给左右两人传递糖果.每人每次传递一个糖果代价为1. Input 第一行一个正整数n<=,表示小朋友的个数.接下来n行,每行 ...
- 8Manage:“消费升级”缘何剑指企业一体化管理变革?
[导读]提到消费升级,大家都会想起美学.个性化.品质等标签,近年来经济发展所伴随的消费需求转型在逐渐凸显,开始从粗狂型到精细化,如:关注产品性价比.服务个性化等内容.企业在消费升级下应该如何应对呢?8 ...
- JavaScript:['1','2','3'].map(parseInt)问题解析
最近碰到了['1','2','3'].map(parseInt)这种看似不起眼陷阱却极大的问题. 这乍一看,感觉应该会输出[1,2,3].但是,实际上并不是我们想的这样.你可以现在打开console, ...
- Ambari大数据的管理利器
概述 一个完全开源的管理平台,用于供应,管理,监控和保护Apache Hadoop集群.Apache Ambari客户管理和操作Hadoop集群 Apache Ambari作为Hortonworks数 ...
- hive java编写udf函数
(一)创建JAVA 代码--例子 package hiveOpt; import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop ...
- CLOB型转成字符型
//oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...
- 读取超大Excel(39万行数据)
有个学长需要处理Excel数据,Excel数据共有39W,将数据读取后处理并导出数据.最开始尝试了 NPOI ,发现NPOI 并不能完成该项任务,随后尝试引用的com组件:Microsoft.Offi ...