8月25日计算机视觉理论学习笔记——R-FCN、YOLO


前言

本文为8月25日计算机视觉理论学习笔记,分为四个章节:

  • R-FCN;
  • YOLO v1;
  • YOLO v2;
  • YOLO v3.

一、R-FCN

适应全卷积化 CNN 结构,提出全卷积化设计——共享 ResNet 所有卷积层。

引入变换敏感性(Translation variance):

  1. 位置敏感分值图(Position-sensitive score maps);
  2. 位置敏感池化(Position-sensitive RoI pooling)。

1

1、位置敏感卷积层

使用 k 2 ( C + 1 ) k^2(C+1) k2(C+1) 个通道对组合进行编码:

  • 类别:C个物体类+1个背景类;
  • 相对位置:k×k 个 Grid(k=3);
  • 位置敏感分值图(Position-sensitive score maps):
    • 每个分类 k 2 k^2 k2 个 score map;
    • score map 尺寸=图片尺寸。

2

2、位置敏感RoI池化层

显示编码相对位置的信息:

  • 将 w×h 尺寸的 RoI 拆分成 k×k 个 w k × h k \frac{w}{k}\times \frac{h}{k} kw×kh 尺寸的 bin;
  • 不同颜色的 bin 对应不同颜色的 score map;
  • Bin 内做均值池化;
  • 输出尺寸: k × k × ( C + 1 ) k\times k\times (C+1) k×k×(C+1)

3

3、多任务损失函数

  • 总损失: L ( s , t x , y , w , h ) = L c l s ( s c ∗ ) + λ [ c ∗ > 0 ] L r e g ( t , t ∗ ) L(s, t_{x, y, w, h}) = L_{cls}(s_{c^*}) + \lambda [c^* > 0]L_{reg}(t, t^*) L(s,tx,y,w,h)=Lcls(sc)+λ[c>0]Lreg(t,t)
  • 分类损失函数: L c l s ( s c ∗ ) = − l o g ( s ∗ ) L_{cls}(s_{c^*}) = -log(s^*) Lcls(sc)=log(s)
  • Bounding box 回归损失函数:
    • 4 k 2 4k^2 4k2 通道的位置敏感卷积层: L r e g ( t i , t ∗ ) = R ( t i − t ∗ ) L_{reg}(t_i, t^*) = R(t_i - t^*) Lreg(ti,t)=R(tit)

4、训练

OHEM(Online Hard Example Mining):

  1. 首先对 RPN 获得的候选 RoI 进行排序操作;
  2. 然后在含有正样本的 RoI 中选择前 N个RoI,将正负样本的比例维持在1:3的范围内,保证每次抽取的样本中都会含有一定的正样本。

二、YOLO v1

YOLO 将物体检测任务当做一个 regression 问题来处理:

  1. 将图像 resize 到 448×448 作为神经网络的输入;
  2. 使用一个神经网络,从一整张图像预测出 bounding box 的坐标、box 中包含物体的置信度和物体的可能性;
  3. 然后进行非极大值抑制,筛选 boxes。

4

  • 步骤:

    1. Pretrain;
    2. 将 Pretrain 的结果的前20层卷积层应用到 Detection 中,并加入剩下的4个卷积层及2个全连接;
    3. 将所有的预测结果都归一化到0~1,使用 Leaky ReLu 作为激活函数;
    4. 将一幅图像分成 S × S S\times S S×S 个网格(grid cell);
    5. 每一个栅格预测 B B B个 bounding boxes 以及它们的 confidenc scores。confidenc scores 反映了模型对于这个栅格的预测:该栅格是否含有物体,以及这个 box 的坐标预测的有多准;
    6. c o n f i d e n c e = P r ( O b j e c t ) × I o U p r e d t r u t h confidence = Pr(Object)\times IoU_{pred}^{truth} confidence=Pr(Object)×IoUpredtruth
    7. 若该栅格不存在 object,则 confidenc scores 为 0;否则,confidenc scores 为 predicted bounding box 和 ground truth box 之间的 IoU(Intersection over union)。
  • 网络结构: 由24个卷积层与2个全连接层构成,网络入口为 448×448,输出结果为一个张量:

    • 输出维度: S × S × ( B × 5 + C ) S\times S\times (B\times 5 + C) S×S×(B×5+C)
    • 其中, S S S 为划分网格数, B B B 为每个网格负责目标个数, C C C 为类别个数。
  • NMS(非极大值抑制):

    1. 首先从所有的检测框中找到置信度最大的那个框;
    2. 然后挨个计算其与剩余框的 IoU,若其值大于一定阈值(重合度过高),那么就将该框提出;
    3. 重复上述过程,直到处理完所有的检测框。
  • 优点:

    1. 检测物体的速度很快;
    2. 假阳性率低;
    3. 能学到更加抽象的物体的特征。
  • 不足:

    1. 检测精度较低;
    2. 容易产生物体的定位错误;
    3. 对小物体的检测效果不好。

三、YOLO v2

5

  • Batch Normalization: 提高模型收敛速度;

  • Dimension Clusters: 使用 K-means 聚类方法训练 bounding boxes,可自动找到更好的 boxes 宽高维度;

  • Multi-scale Training: 模型只包含卷积层和 pooling 层,因此可以随时改变输入尺寸。每经过10次训练,就会随机选择新的图片尺寸进行训练。


四、YOLO v3

6

  • 使用了一个 53层的卷积网络,由残差单元叠加而成;
  • 使用逻辑回归预测每个编辑框的分数;
  • 损失函数:binary cross-entropy。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340