yolov1学习笔记
yolov1学习笔记
yolov1将目标检测归为一个回归问题,具有real-time的特点。局限性是:对于群体性的小目标检测效果很差。
论文概括

本文重新构造目标检测作为一个回归问题。
直接输入图像到神经网络中,得到bounding box的坐标和类别信息。
论文思想

- 将一幅图像分成S×S个网格(grid cell),如果某个object
的中心落在这个网格中,则这个网格就负责预测这个object。 - 每个网格要预测B(这里的B取2)个bounding box,每个bounding box除了要预测位置之外,还要附带预测一个confidence值(也就是说每个bounding box需要预测5个值即:四个坐标和一个confidence值)。每个网格还要预测C个类别的分数。
原文1:
For evaluating YOLO on PASCAL VOC, we use S = 7,
B = 2. PASCAL VOC has 20 labelled classes so C = 20.
Our final prediction is a 7 × 7 × 30 tensor.
原文2:
Each bounding box consists of 5 predictions: x, y, w, h,
and confidence. The (x, y) coordinates represent the center
of the box relative to the bounds of the grid cell. The width
and height are predicted relative to the whole image. Finally
the confidence prediction represents the IOU between the
predicted box and any ground truth box.
原文3:(confidence定义)
Formally we define confidence as Pr(Object) ∗ IOUtruth pred
原文4:
At test time we multiply the conditional class probabilities and the individual box confidence predictions,
Pr(Classi|Object) ∗ Pr(Object) ∗ IOUtruth pred = Pr(Classi) ∗ IOUtruth pred (1)
- 这里的x,y是个相对值(在一个cell中变化在(0-1)之间),这里的w,h相对整幅图像(0-1之间)。这里的x,y,w,h是直接预测位置的。
- Confidence : 预测目标与真实目标的交并比×P(Object)(0和1两种情况)当包含物体是为1
- 这里的Pr(Classi | Object)是指C个类别中的类别分数,这里与faster-rcnn和ssd中的不是一样的
网络结构

Step1:是一个7×7的卷积层,step=2,通过一个maxpool layer2×2,step=2
Step2:是一个3×3卷积层,这里没写s默认step=1,通过一个maxpllo layer2×2,step=2
Step3:通过1×1的卷积层,3×3的卷积层,1×1的卷积层,3×3的卷积层,通过一个maxpool layer
Step4:通过1×1的卷积层,3×3的卷积层(重复4遍),然后再通过1×1卷积层,3×3卷积层,通过一个maxpool layer
Step5: 通过1×1的卷积层,3×3的卷积层(重复2遍),再通过3×3卷积层,3×3卷积层step=2
Step6:通过3×3的卷积层,3×3的卷积层
Step7:得到一个7×7×1024
Step8: 展平,连接一个4096维的全连接层,最后得到一个4096维的向量
Step9: 连接一个1470(对应后面的7×7×30)维的全连接层,最后reshape成7×7×30的特征矩阵

这里的30由来:20个类别,且每个网格需要预测B(=2)个bounding box(包含4个位置信息1个confidence值)
这里的一个黄色柱体可以理解成一个grid cell
这里有两个bounding box最后会根据跟groud truth的IOU比选出最大的一个
损失函数

- 这里的损失函数使用误差平方和进行求解
Bounding box部分损失
- 疑问:宽和高为什么要进行开根号处理???

这里绿色代表真实边界框,蓝色代表预测边界框
假设预测边界框相对于真实边界框都有一个偏移,假设偏移是一摸一样的
对于上面的小目标预测结果很差,对于大目标预测结果还行
对于真实的边界框同样偏移同样的宽度和高度,但对于不同尺度的目标来说他的IOU都是不一样的,即对于小目标
来说他的IOU更小,检测结果更差,所以不能使用预测的宽度减去真实的宽度

- 如上图所示:如果是y=x这条线对于小目标(前面的)和大目标(后面的),他们的差值(图中绿色部分)是一样的

- 但是对于y=√x来说,假设这里的差值是一摸一样的,但是此时小目标的差值是大于大目标的(图中红色部分),也就是说此时更加关注小目标的
定位损失
confidence部分损失?
- 第一个是正样本的损失,第二个是负样本(没有目标)的损失(正样本真实值等于1负样本真实值等于0)
- 其他设置
增加包含目标的loss,减少不包含目标的loss
set λcoord = 5 and λnoobj = .5
Ⅱ(obj/ij):第j个bounding box负责预测第i个单元格
Yolov1的局限性:
- 对于群体性的小目标检测效果很差?
- 因为yolov1对于每个cell只预测两个bounding box,都属于同一个类别的
- 当目标出现新的尺寸和配置的话检测效果差
- 主要的错误原因都来自定位不准确的原因: 主要是作者采用了直接预测的原因,而不是像faster-rcnn,ssd那样
预测anchor的回归参数------再yolov2中会采用anchor形式
实验部分


图4显示了所有20个类中平均的每种错误类型
yolo在定位是产生更多错误
Fast R-CNN参数更少的定位错误但是更多的背景错误

该模型在小的连在一起的表现不太好
例如:
Our system struggles with small objects compared to its closestcompetitors.
On categories like bottle, sheep, and tv/monitor
YOLO scores 8-10% lower than R-CNN or Feature Edit
但是:
However, on other categories like cat and
train YOLO achieves higher performance
Our combined Fast R-CNN + YOLO model is one of the
highest performing detection methods
yolov1学习笔记的更多相关文章
- yolov2学习笔记
Yolov2学习笔记 yolov2在yolov1的基础上进行一系列改进: 1.比如Batch Normalization,High Resolution Classifier,使用Anchor Box ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
随机推荐
- github 上有趣又实用的前端项目(持续更新,欢迎补充)
github 上有趣又实用的前端项目(持续更新,欢迎补充) 1. reveal.js: 幻灯片展示框架 一个专门用来做 HTML 幻灯片的框架,支持 HTML 和 Markdown 语法. githu ...
- 关于CSS的个人理解
CSS的个人理解 一.概念 层叠样式表,主要由属性和属性值(value)组成.(虽然HTML.CSS对代码大小写不敏感,但是属性和属性值对代码大小写是敏感的) 二.工作方式 1.工作原理 由浏览器将C ...
- 每日所学之自学习大数据的Linux环境配置2
今天设置网络 出现报错 明天找时间解决 不用解决了 刚才试了以下 又能下载了 描述一下问题: cannot find a valid baseurl for repo:base/7/x86_64 如果 ...
- Java报错:Failed to execute goal org.eclipse.jetty:jetty-maven-plugin:9.4.26.v20200117:run (default-cli) on project ssm-mybatis-plus: Failure
修改一下端口就好了,不要用80端口. <plugin> <groupId>org.eclipse.jetty</groupId> <!--嵌入式Jetty的M ...
- [ Shell ] 通过 Shell 脚本导出 GDSII/OASIS 文件
https://www.cnblogs.com/yeungchie/ 常见的集成电路版图数据库文件格式有 GDSII 和 OASIS,virtuoso 提供了下面两个工具用来在 Shell 中导出版图 ...
- 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用
前段时间一个小伙伴去面试,遇到这样一个问题. "Fail-safe机制与Fail-fast机制分别有什么作用" 他说他听到这个问题的时候,脑子里满脸问号.那么今天我们来看一下,关于 ...
- spring-bean依赖注入-03
set注入:set注入地址 通过构造方法进行注入 1.创建UserDao接口以及UserDaoImpl实现类(接口代码省略) public class UserDaoImpl implements U ...
- LC-34
package getSecondBiggestNum.nums; public class LC34 { public int[] searchRange(int[] nums, int targe ...
- k8s,coredns内部测试node节点上的pod的calico是否正常的一个小技巧
最近由于master整个挂掉,导致相关一些基础服务瘫掉,修复中测试有些节点网络又出现不通的情况正常的启动相关一些服务后,测试一些节点,比较费劲,还有进入pod,以及还有可能涉及命名空间操作这里可以这样 ...
- nginx配置后端映射(反向代理proxy_pass)
说明:配置反向代理proxy_pass和location无关,location后面加不加 / 都可以 1.配置 proxy_pass 时,当在后面的 url 加上了 /,相当于是绝对路径,则 Ngin ...