Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Detection] CNN 之 "物体检测" 篇IndexRCNNFast RCNNFaster RCNNR-FCNYOLOSSDNMS

[Detection] CNN 之 "物体检测" 篇IndexRCNNFast RCNNFaster RCNNR-FCNYOLOSSDNMS

作者头像
zhwhong
发布于 2018-05-16 09:22:40
发布于 2018-05-16 09:22:40
9670
举报
文章被收录于专栏:技术随笔技术随笔

Index

RCNN

Rich feature hierarchies for accurate object detection and semantic segmentation

早期,使用窗口扫描进行物体识别,计算量大。 RCNN去掉窗口扫描,用聚类方式,对图像进行分割分组,得到多个侯选框的层次组。

  • 原始图片通过Selective Search提取候选框,约有2k个
  • 侯选框缩放成固定大小
  • 经过CNN
  • 经两个全连接后,分类

拓展阅读:基于R-CNN的物体检测-CVPR 2014

Fast RCNN

Fast R-CNN

RCNN中有CNN重复计算,Fast RCNN则去掉重复计算,并微调选框位置。

  • 整图经过CNN,得到特征图
  • 提取域候选框
  • 把候选框投影到特征图上,Pooling采样成固定大小
  • 经两个全连接后,分类与微调选框位置

Faster RCNN

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

提取候选框运行在CPU上,耗时2s,效率低下。

Faster RCNN使用CNN来预测候选框。

  • 整图经过CNN,得到特征图
  • 经过核为 3×3×256 的卷积,每个点上预测k个anchor box是否是物体,并微调anchor box的位置
  • 提取出物体框后,采用Fast RCNN同样的方式,进行分类
  • 选框与分类共用一个CNN网络

anchor box的设置应比较好的覆盖到不同大小区域,如下图:

一张1000×600的图片,大概可以得到20k个anchor box(60×40×9)。

R-FCN

R-FCN: Object Detection via Region-based Fully Convolutional Networks

论文翻译详见:[译] 基于R-FCN的物体检测 (zhwhong)

RCNN系列(RCNN、Fast RCNN、Faster RCNN)中,网络由两个子CNN构成。在图片分类中,只需一个CNN,效率非常高。所以物体检测是不是也可以只用一个CNN?

图片分类需要兼容形变,而物体检测需要利用形变,如何平衡?

R-FCN利用在CNN的最后进行位置相关的特征pooling来解决以上两个问题。

经普通CNN后,做有 k^2(C+1) 个 channel 的卷积,生成位置相关的特征(position-sensitive score maps)。

C 表示分类数,加 1 表示背景,k 表示后续要pooling 的大小,所以生成 k^2 倍的channel,以应对后面的空间pooling。

普通CNN后,还有一个RPN(Region Proposal Network),生成候选框。

假设一个候选框大小为 w×h,将它投影在位置相关的特征上,并采用average-pooling的方式生成一个 k×k×k^2(C+1) 的块(与Fast RCNN一样),再采用空间相关的pooling(k×k平面上每一个点取channel上对应的部分数据),生成 k×k×(C+1)的块,最后再做average-pooling生成 C+1 的块,最后做softmax生成分类概率。

类似的,RPN也可以采用空间pooling的结构,生成一个channel为 4k^2的特征层。

空间pooling的具体操作可以参考下面。

训练与SSD相似,训练时拿来做lost计算的点取一个常数,如128。 除去正点,剩下的所有使用概率最高的负点。

YOLO

You Only Look Once: Unified, Real-Time Object Detection

Faster RCNN需要对20k个anchor box进行判断是否是物体,然后再进行物体识别,分成了两步。 YOLO则把物体框的选择与识别进行了结合,一步输出,即变成”You Only Look Once”。

  • 把原始图片缩放成448×448大小
  • 运行单个CNN
  • 计算物体中心是否落入单元格、物体的位置、物体的类别

模型如下:

  • 把缩放成统一大小的图片分割成S×S的单元格
  • 每个单元格输出B个矩形框(冗余设计),包含框的位置信息(x, y, w, h)与物体的Confidence
  • 每个单元格再输出C个类别的条件概率P(Class∣Object)
  • 最终输出层应有S×S×(B∗5+C)个单元
  • x, y 是每个单元格的相对位置
  • w, h 是整图的相对大小

Conficence定义如下:

在原论文中,S = 7,B = 2,C = 20,所以输出的单元数为7×7×30。

代价函数:

其中 λ_coord=5λ_noobj=0.5

一般,w与 h 不是在 0,1上的均匀分布,偏小,所以开方。

注: 开方的解释是我自己的估计,可能不对。

SSD

SSD: Single Shot MultiBox Detector

YOLO在 7×7 的框架下识别物体,遇到大量小物体时,难以处理。

SSD则在不同层级的feature map下进行识别,能够覆盖更多范围。

假设在 m 层 feature map 上进行识别,则第 k 层的基本比例为

比如 s_min=0.2,s_max=0.95,表示整张图片识别物体所占比最小 0.2,最大 0.95。

在基本比例上,再取多个长宽比,令 a={1, 2, 3, 1/2, 1/3},长宽分别为

Match策略上,取ground truth与以上生成的格子重叠率大于0.5的。

SSD vs YOLO

位置采用Smooth L1 Regression,分类采用Softmax。

代价函数为:

undefined

undefined

x 表示类别输出,c 表示目标分类,l 表示位置输出,g 表示目标位置, α是比例常数,可取1。

训练过程中负点远多于正点,所以只取负点中,概率最大的几个,数量与正点成 3:1 。

NMS

以上方法,同一物体可能有多个预测值。

可用NMS(Non-maximum suppression,非极大值抑制)来去重。

如上图所示,一共有6个识别为人的框,每一个框有一个置信率。

现在需要消除多余的:

  • 按置信率排序: 0.95, 0.9, 0.9, 0.8, 0.7, 0.7
  • 取最大0.95的框为一个物体框
  • 剩余5个框中,去掉与0.95框重叠率大于0.6(可以另行设置),则保留0.9, 0.8, 0.7三个框
  • 重复上面的步骤,直到没有框了,0.9为一个框
  • 选出来的为: 0.95, 0.9

两个矩形的重叠率计算方式如下:

xywh VS xyxy

系列论文中,位置都用 (x,y,w,h)来表示,没有用左上角、右下角 (x,y,x,y) 来表示。

初衷是当 (w,h)正确时,(x,y) 一点错,会导致整个框就不准了。

在初步的实际实验中,(x,y,x,y) 效果要差一些。

背后的逻辑,物体位置用 (x,y,w,h) 来学习比较容易。

(x,y) 只需要位置相关的加权就能计算出来;

(w,h) 就更简单了,直接特征值相加即可。



(注:感谢您的阅读,希望本文对您有所帮助。如果觉得不错欢迎分享转载,但请先点击 这里 获取授权。本文由 版权印 提供保护,禁止任何形式的未授权违规转载,谢谢!)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.12.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
《金字塔原理》​必知的28条金句
1.金字塔原理的四个基本原则:结论先行:每篇文章只有一个中心思想,并放在文章的最前面;以上统下:每一层次上的思想必须是对下一层次思想的总结概括;归类分组:每一组中的思想必须属于同一逻辑范畴;逻辑递进:每一组中的思想必须按照逻辑顺序排列。
用户1278550
2020/05/15
3.4K0
高效解决问题四步法
第一步,准确的界定问题,定义很重要,避免被表面现象所迷惑,界定问题的3个步骤,明确关键问题、创建议题树、形成基本假设。
春哥大魔王
2023/03/22
4940
高效解决问题四步法
结构化思维
思维导图 第一章 初识思维 思维,是我们解读事实的起点,是产生行为的源头,是决定结果的根本 思维是人脑对信息有意识的反映 思维是大脑对接收到的信息进行加工处理,并最终形成认识的一种过程 图1-3 思考循环图 思维过程重复多次,就会形成固定的思维方式,从而形成思维惯性 做过销售的人,往往更在乎结果。因为他们在做销售的过程中,业绩、收入取决于销售结果,所以有销售经验的人做其他工作往往更加看重结果是否达成 查理·芒格说:“一个人只要掌握80到90个思维模型,就能够解决90%的问题 认知心理学认为,一个人的
yeedomliu
2022/03/29
9220
结构化思维
微信工程师关于如何写好一篇技术文章的小Tips
在学习和工作过程中,作为工程师的大家都会试着写一些技术文章,或用于沉淀总结,或用于分享经验,或用于传播知识。最近几年笔者在工作之余也会写一些技术文章,也经常会思考“如何写好一篇技术文章”这个问题。但看网络上虽然好的技术文章文章很多,但探讨“如何写好技术文章”的文章比较少,本文试着就这个话题谈一下自己的一点浅见。笔者才疏学浅,目的是抛砖引玉,希望和大家一起探讨学习。
ruoyuliu
2023/03/24
1.3K1
微信工程师关于如何写好一篇技术文章的小Tips
思考力|《金字塔原理》
正如封面所写,这本书是麦肯锡40年经典培训教材,不仅如此,它甚至是整个咨询业的标准。 来帮助我们提高清晰思考问题,表达观点的能力, 成为写作和表达方面的能手。 本文结构: 什么是金字塔原理? 组织思想的方法? 如何让别人对你的话题感兴趣? ---- 1. 什么是金字塔原理? 它是一种组织思想的工具。 一个中心论点,3到7个分论据,每个论据再分出3个论据: 注意: 结论先行,要优先说出结论 每个论点的论据不要超过7条,不然不容易记忆 当论点很多时要想办法归类,减少分支数量 每个论点要言之有物,
杨熹
2018/04/03
1.1K0
思考力|《金字塔原理》
设计结构化实践手册(一)
一、前言 虽然这本手册冠上了设计的前缀,但其实结构化是一个通用的能力,无论我们是设计师、产品还是开发,都是需要培养这种抽象化的思维模式,而本文更多会聚焦在设计师日常的学习和工作场景来给大家支点实用的招。 我们不追求醍醐灌顶,只要学到的东西能真的用到工作上就好哈。 本手册分为三章,你能获得什么: 1. 设计师为什么需要结构化思维:有脑就懂的结构化思维和实践原理。 2. 如何系统化地进行学习:化整为零的设计学习和知识输入技巧。 3. 如何有效组织设计输出:有手就会的设计输出技巧与表达实战能力。 本手册主要面向
腾讯ISUX
2023/05/10
7320
设计结构化实践手册(一)
干货 | 金字塔原理图文演示:演讲和写作的必杀技
读书的时候,有人觉得自己写作能力较弱,等到工作就可以躲开这件事。事实是,工作中需要写作的时间只会多、不会少。 你是文科、理科还是工科背景,都不是先入为主判断写作水平的标准。文字是否能入大家的眼,大多与你写得是否清晰、有条理更相关。 写作、汇报、思考问题都需要有一定的逻辑,这方面比较好用的方法是金字塔原理。转来一篇好文,讲解一下金字塔原理的组织方式和应用。 版权信息|文 luoluoatbj 来源:她理财 《金字塔原理》麦肯锡的经典培训教材。 学习金字塔原理的目标是,整理自己的思路,清晰地思考、写作、汇
用户1756920
2018/07/20
1.5K0
《结构思考力》| 李忠秋 [中国]
结构存在于每个整体与局部关系的无穷变化中,每个局部表现整体,而局部的意义又由整体来决定。因此,当面临一个问题时,如果可以从结构的视角去审视和思考,可以让我们看得更全面、更清晰。
素履coder
2022/08/30
1.5K0
《结构思考力》| 李忠秋 [中国]
MECE分析法
前段时间在对项目进行问题分析的时候,领导要求要符合MECE原则,做到逻辑完整而不能遗漏。虽然没听过这个原则,但是总感觉很有道理(领导说的都对)。于是乎,就找了一些资料了解了一下。
有一只柴犬
2024/01/25
2860
MECE分析法
如何做任务分解
任务分解是一种可以通过练习来掌握和运用的技能,并不是什么了不起的天赋。只要在日常工作和生活当中有意识地练习和使用,我们每个人都能借助这个强有力的思维工具获得一开始完全想象不到的好处。
十毛
2022/08/23
4550
怎样成为解决问题的高手(连载四)
在上一篇我们讲了系统思维——透过框架来理解世界的思维方式。这一篇我们继续学习构建框架:自下而上提炼框架。在介绍自下而上提炼框架前,我先补充一些基础、常用的思考工具。比如:逻辑思维导图、逻辑树、MECE原则、5WHY法、鱼骨图、多重原因图等。当然思考工具远不止这些,还有SWOT法、二维矩阵、复杂矩阵思考法、PDCA循环、帕累托法则等。大家可以自行百度、知乎。
黄成甲
2018/09/12
1.4K0
怎样成为解决问题的高手(连载四)
我对“结构化思维”的理解 - 直播分享
参加码出架构的班,孤尽老师发现很多同学回答问题不全面,没有结构化思维。 我发现自己也没有系统化掌握结构化思维。
明明如月学长
2021/08/31
3520
我对“结构化思维”的理解 - 直播分享
结构化思维学习笔记
结果 - 原因 提炼重点 思考过程:要素分类 >>> 最终结果 >>> 关键要素
林清猫耳
2020/03/20
7950
[ 成为架构师系列 ] 6. BeanFactory refresh 思想启示
自下而上的总结概括的过程就是抽象的过程,构建金字塔的过程就是寻找逻辑关系,抽象概括的过程。经常锻炼用结构化的方式去处理问题,搭建自己的金字塔,可以帮助我们理清问题的脉络,提升我们的抽象能力。
一个会写诗的程序员
2019/12/03
4850
[ 成为架构师系列  ] 6. BeanFactory refresh 思想启示
从故障处理流程看结构化思维
在数据库出现故障时,务必和运维、开发、产品等其他团队保持高效沟通。DBA在遇到故障时,一定不要忘了沟通的重要性,即使时间紧迫,简要的沟通往往也能带来事半功倍的效果。从长远来看,也有利于培养和其他人、其他团队之间的合作和信任关系。
用户5548425
2019/09/30
7470
从故障处理流程看结构化思维
邮件这样写,PK 掉 99% 的同事
工作中总免不了需要正式的邮件来沟通协调工作,有跨大团队沟通的,也有向老板汇报工作情况的。每每此时,总是小心谨慎,邮件发出后又常洋洋自得,总觉得自己的邮件条理清晰、结构合理、内容详实,横竖都算得上是专业度颇高的邮件了。
张磊BARON
2019/10/23
8710
邮件这样写,PK 掉 99% 的同事
每日思考第 84 期:程序员必备的思维能力-结构化思维
结合维基百科的定义,我们在顾名思义拆解分析下,结就是指 结合组成,构就是指 搭配构造。合起来就是对元素(要素、构建)的结合构造之意。
蜗牛互联网
2021/07/21
7200
如何运用结构化思维进行故障处理
导读:运用结构化思维进行故障处理,其目的是为了将故障应急操作标准化,进而提升处理效率。
宜信技术学院
2019/10/16
1.5K0
如何做有说服力的PPT ——从胡乱堆积到有理有据
|导语 本文会分享PPT的逻辑攻略四部曲:一,情境分析;二,结构设计;三,提炼要点;四,逻辑呈现。这将有效帮助大家梳理出有说服力的逻辑框架。 当你接到一个PPT任务,会不会出现这样的场景,懵逼、迷茫、心烦、焦躁,随便找个模板,复制WORD、EXCEL材料到每一页,想到哪写到哪,写了1稿、2稿…N稿就是没定稿。 结果可以预见的不理想,领导不满意打回重写,听众昏昏欲睡讲了等于白讲,或者感觉不知所云。 还有一种情况,花费很多时间研究色彩如何搭配、图形怎么才好看、母板究竟怎么用、文字怎样突出重点、图表如何有
腾讯大讲堂
2020/12/08
1.5K0
如何把数据整出花?
民间有一句俗语叫做:“看花容易绣花难”,画龙点睛的添花之笔就更难了,同数据分析是一个道理。
herain
2022/04/27
5710
如何把数据整出花?
相关推荐
《金字塔原理》​必知的28条金句
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档