yolov1学习笔记

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

论文概括

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

论文思想

  1. 将一幅图像分成S×S个网格(grid cell),如果某个object

    的中心落在这个网格中,则这个网格就负责预测这个object。
  2. 每个网格要预测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)
  1. 这里的x,y是个相对值(在一个cell中变化在(0-1)之间),这里的w,h相对整幅图像(0-1之间)。这里的x,y,w,h是直接预测位置的。
  2. Confidence : 预测目标与真实目标的交并比×P(Object)(0和1两种情况)当包含物体是为1
  3. 这里的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的局限性:

  • 对于群体性的小目标检测效果很差?

    1. 因为yolov1对于每个cell只预测两个bounding box,都属于同一个类别的
    2. 当目标出现新的尺寸和配置的话检测效果差
    3. 主要的错误原因都来自定位不准确的原因: 主要是作者采用了直接预测的原因,而不是像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学习笔记的更多相关文章

  1. yolov2学习笔记

    Yolov2学习笔记 yolov2在yolov1的基础上进行一系列改进: 1.比如Batch Normalization,High Resolution Classifier,使用Anchor Box ...

  2. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  3. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  4. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  5. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  6. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  7. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  8. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  9. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

随机推荐

  1. JavaScript の 内容属性(HTML属性attribute)和 DOM 属性(property)

    [博文]内容属性(HTML属性)和 DOM 属性 标签: 博文 JavaScript 粗略解读(与jQuery做对比) 内容属性(HTML属性) : attribute DOM 属性(Element属 ...

  2. leetcode-剑指 Offer II 012. 左右两边子数组的和相等

    题目描述: 给你一个整数数组 nums ,请计算数组的 中心下标 . 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和. 如果中心下标位于数组最左端,那么左侧数之和视为 ...

  3. IDEA中 mybatis-config、applicationContext.xml、log4j.properties、SpringMVC等文件没有图标标识符号,不是一个xml文件

    1. 举例说明 mybatis-config.xml文件不显示图标,识别不出该xml文件 2. 解决办法 1)先点击 File -> Settings-,然后贴入下面代码 (2) 具体操作如下图 ...

  4. VSCode使用Settings Sync同步配置和插件

    转载参考地址:https://www.cnblogs.com/zzhaolei/p/12028241.html 1.需求 自己平常工作,一般在公司用公司的电脑,在家里就是自己的,但是vscode如果配 ...

  5. Linux_文件传输工具_FileZilla

    什么是FileZilla? FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版 ...

  6. IP和静态路由技术概述

    1. IP地址的构成 IP地址:32比特的二进制数字,通常采用点分十进制方式表示. IP地址由两部分组成. 网络号码字段(Net-id)用于区分不同的网络.网络号码字段的前几位成为类别字段(又称为类别 ...

  7. 火狐浏览器Hackbar安装破解

    1 下载 https://pan.baidu.com/s/18cKoJAam9by7AB168Im57g 64mt 下载后解压到一个固定文件夹下 2 安装 选择xpi进行安装 3 关闭插件更新 点击插 ...

  8. JAVASE Scanner

    package com.huang.boke.flowPath;import java.util.Scanner;public class test01 { public static void ma ...

  9. Spring Boot-@Value获取值和@ConfigurationProperties获取值的比较

    @Value和@ConfigurationProperties都是用于属性的注入(相当于spring中<bean id=" " class=" "> ...

  10. layui下拉框渲染问题,以及回显问题

    最近实习公司给的新人练手项目用的layui,layui之前自己也接触过但是也就是用了用table组件,没有用过layer弹层这些东西,所以就了解了一下. 首先遇到的一个问题就是下拉框没有样式,然后加样 ...