我读YOLO
来源:互联网 发布:奥斯维辛集中营 知乎 编辑:程序博客网 时间:2024/06/07 20:17
背景
论文地址:You Only Look Once: Unified, Real-Time Object Detection
主页:YOLO: Real-Time Object Detection
此篇文章发表于 CVPR 2016,RBG 挂名的一篇物体检测方法,作者是 Joseph Redmon,了解的同学可以补充一下他的经历,据说可八。
主要贡献
- 加速物体检测,YOLO 的 mAP 与 R-CNN 相近,但速度提升。Fast YOLO 可以达到 155 fps,并且 mAP 依然是传统 DPM 的两倍
- 端到端(end-to-end)方式训练网络
- 不易检测到错误的物体(less false positive)
- 相比较 DPM 和 R-CNN 来说,泛化性更强
方法
R-CNN 的定位+分类方法需要对每个 RoI 都进行分类,所以速度缓慢。YOLO 改为回归的方法,整张图作为回归的输入,判断 bounding box 位置以及所属类别,减少多次通过 proposal 分类带来的时间消耗。
- 输入图像划分为
S×S 的网格,如果物体的中心点落在网格中,则此网格对此物体负责(未明白) - 每个格子选出 B 个候选 bounding boxes,每个 bbox 由一个五维向量表示,
{x,y,w,h,confidence} ,其中的(x,y)∈[0, 1] 表示 bbox 中心点在网格中与左上角坐标的相对偏移百分比,(w,h)∈[0, 1] 表示宽高与整幅图的相对比值。confidence=Pr(Object)×IoUtruthpred ,表示这个 bbox 是物体的可信度概率。 - 每个网格还有一个分类的预测值,写为
Pr(Classi|Object) ,表示该网格是第 i 类的概率,如下图
在 PASCAL VOC 检测中,S = 7,B = 2,一共有 20 个类别,则输出就是 7x7x30 的向量。其中
网络设计
本文中使用的网络类似 GoogLeNet,共有 24 个卷积层和 2 个全连接层。Fast YOLO 使用 9 个卷积层。如图
训练
- 先预训练,使用 ImageNet 1000 分类数据集训练网络前 20 个卷积层,加一个 mean pooling 层和 softmax 层
- 激活函数如下
f(x)={x,0.1x,if x>0otherwise - Loss function 如下
λcoord∑i=0S2∑j=0B1objij[(xi−x^i)2+(yi−y^i)2]+λcoord∑i=0S2∑j=0B1objij[(w−−√i−w^i−−√)2+(h√i−h^i−−√)2]+∑i=0S2∑j=0B1objij(Ci−C^i)2+λnoobj∑i=0S2∑j=0B1noobjij(Ci−C^i)2+∑i=0S21obji∑c∈classes(pi(c)−p^i(c))2 - 其中第一二行为每个 bbox 边框的误差,
1objij 表示只计算是 object 的边框,使用λcoord 调节占比 - 第三四行为每个 bbox 判断是否包含物体的误差,有无物体的误差使用
λnoord 调节占比 - 第五行对每个网格计算分类误差
- 文中使用
λcoord=5,λnoord=0.5
- 其中第一二行为每个 bbox 边框的误差,
- 训练使用 PASCAL VOC 2007 & VOC 2012 数据集合,batch_size=64,momentum=0.9,weight decay=0.0005
- dropout rate = 0.5,放在第一个 fc 层后面
- 训练集合在 HSV 通道 1.5 倍曝光和饱和度,随机尺度+平移变换增加训练集
局限
- 由于每个网格只能分一类并且只有 B 个 bbox,导致一些小物体(如小鸟)并不能够被完全检测出来。
- 对新出现的物体或者角度不能够很好检测
- Loss Function 设计还不是很合理,大 bbox 的小误差对 Loss Function 的影响小于小 bbox 大误差
实验
分析如下
0 0
- 我读YOLO
- YOLO
- YOLO
- YOLO
- yolo
- YOLO
- yolo
- Yolo
- YOLO
- YOLO
- yolo
- YOLO
- YOLO 文化
- 复现YOLO
- YOLO install
- YOLO图解
- yolo详解
- 图解YOLO
- python入门常用功能小结
- java利用正则表达式获取一个网页中的所有邮箱地址
- structs2 文件下载
- 【我的Android进阶之旅】解决Android Studio启动时报错:Java 1.8 or later is required.
- 【玲珑杯 1051】【构造】My-graph
- 我读YOLO
- 注解
- 最短路径算法正确性和操作性闲杂谈-Dijkstra&Floyd算法
- 刘未鹏 - 为什么你现在就应该开始写博客
- python菜鸟的心得体会1
- UE4 设置Button触控区域为图片形状
- MyEclipse配置spket插件编写Extjs自动提示代码
- org.apache.jasper.JasperException: Unable to compile class for JSP
- Leetcode397: Integer Replacement