博客转载自:http://www.cnblogs.com/ironstark/p/6046411.html

RCNN是从图像中检测物体位置的方法,严格来讲不属于三维计算机视觉。但是这种方法却又非常非常重要,对三维物体的检测非常有启发,所以在这里做个总结。

1、RCNN - the original idea

"Rich feature hierarchies for accurate object detection and semantic segmentation"这篇文章提出了用CNN网络来对物体进行检测的思路。

Q:

  a. CNN网络中存在卷积层和池化层,每次池化都会弱化物体的位置信息,强化物体的特征信息,所以CNN网络最终会告诉我们是什么,而不是在哪儿

  b. 要使用CNN网络来检测,直觉上我们可以训练一个识别某物体的网络,来对小方块进行分类。但是这需要大量的训练集,可能对于待检测物体,我们没有收集大量训练集的机会

  c. CNN网络的图像输入层具有固定的维度,任意大小的小方块是无法直接输入到CNN网络里的

A:

  a. 文章提出了可以在已经训练好的网络上利用小规模的训练集进行优化,也能达到很好的效果。

  b.通过 selective search来确定可能含有物体的小方块

  c.将消方块进行拉伸(warp),送入CNN进行分类,最终实现检测

细节:

  1、使用了ILSVRC 2012对网络进行预训练,步长0.01

  2、精训练使用的步长是0.001

  3、mini-batch size = 128, 其中背景96,带东西的32。有意的bias,让网络更大概率判为背景

  4、loss function 中,IoU超过50%判为1,否则为0

  5、使用svm对物体类别进行判断

  6、对box进行线性回归,获得更高的精度(后面还会提到)

2、SPPNet - 结合金字塔

Spatial pyramid pooling in deep convolutional networks for visual recognition -- 在第一步使用rcnn中,检测需要将图片拉伸成特定的大小,便于输入网络。这显然很不合理,很多东西拉伸以后就完全变形了,这会降低检测的精度。所以需要一种不拉伸方块的方法,来对物体进行检测。

Q:

  a.拉伸图像会带来识别精度的下降,在r-cnn中尤其明显

A:

  a.金字塔池化:将任意维度的图片池化成同一维度。例如,图片为256*256,金字塔接受的就是maxpool2dlayer(16,'stride',16),如果图片为128*128,金字塔接受的就是maxpool2dlayer(8,'stride',8)

细节:只用了两种bin size 来构建训练集,180 * 180, 224 * 224. 因为只有两种情况,所以可以很方便的构建bp函数

3、FastCNN - 要啥金字塔,一层就够啦

<Fast R-CNN>

Q:

  a.对于每个 box/proposal 都需要进行一次feed forward.

  b.训练时需要对分类函数和回归函数分开训练

A:

  a.对图像进行一次整体的feed forward,得到总的卷积结果;对总结果中的box,每个box一次,分别进行ROI pooling (其实就是金字塔的第一层)

  b. ROI pooling 后会得到固定维度的向量,送入多次全连接层,直接映射成类别和box的回归

细节:1、训练时,所有的权重都得到迭代

4、Faster R-CNN — 这才是颠覆

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

Q:

  a. 对每张图都要进行一次 selective search 以获得proposal太耗时了

A:

  a.设计一个神经网络 Region Proposal Net 自动来提出proposal 吧!

RPN 本质上可以看作一个非常独立的部分,虽然它号称使用了整幅图像的feature,但功能上RPN是独立的。RPN的任务是输入图像,输出一系列Proposal(四点坐标+是否有物体)

1、使用卷积网络的最后一个卷积层卷积完的结果 Last_Image * final_convolution2dlayer(n,d). 作为RPN的真正输入(前面都是公用的,后面才是RPN)

2、使用一个3*3的小卷积掩模将1中的结果抽象成d 维向量。

3、将该向量送入2个全连接层——分类全连接(2K输出)和坐标全连接(4K输出)————k个proposal (3 scale,2 aspect ratio)

4、在2中,掩模的位置决定了全连接输出参数的"原点"

5、总结

在神经网络中,全连接是最强的非线性映射方式,也是花费最重的。在结果层少量的使用全连接以换取强大的映射方程是很有意义的。

说了那么多,和三维视觉有毛关系?其实关系在这里,在二维图像中检测物体位置和在三维图像中检测物体位姿是对偶的。不信?见 <Deep Sliding Shapes for amodal 3D object detection in RGB-D images>

PCL —— RCNN Family 中层次点云处理的更多相关文章

  1. PCL — Point Pair Feature 中层次点云处理

    博客转载自:http://www.cnblogs.com/ironstark/p/5971976.html 机器人视觉中有一项重要人物就是从场景中提取物体的位置,姿态.图像处理算法借助Deep Lea ...

  2. 从PCD文件中读取点云数据

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=84 在本小节我们学习如何从PCD文件中读取点云数据. 代码 章例1文件夹中, ...

  3. MeshLab中进行点云配准

    MeshLab是一个开源.可移植和可扩展的三维几何处理系统,主要用于交互处理和非结构化编辑三维三角形网格.它支持多种文件格式: import:PLY, STL, OFF, OBJ, 3DS, COLL ...

  4. 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

  5. 【阿里云产品公测】在Laravel4框架中使用阿里云ACE的缓存服务

    作者:阿里云用户dvbhack 受论坛排版和格式限制,这篇帖子的格式不是很利于阅读,如果你看帖子觉得不那么舒服,可以看我发表在自己博客上的原文:http://www.ofcss.com/2014/04 ...

  6. Ubuntu系统中登陆阿里云服务器的方法

    如果您购买了阿里云服务器,恰巧又在使用Ubuntu操作系统,那么恭喜你来对地方了,今天给大家分享一下如何在Ubuntu中登陆阿里云服务器: 主要使用两款软件:1.SecureCRT:2.SecureF ...

  7. 在VSCode中使用码云

    在VSCode中使用码云 一.SSH公钥 使用SSH公钥可以让你在你的电脑和码云通讯的时候使用安全连接(Git的Remote要使用SSH地址) 链接 https://gitee.com/profile ...

  8. 如何在 Centos7 中使用阿里云的yum源

    如何在 Centos7 中使用阿里云的yum源 1. 备份原来的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...

  9. 在我的电脑中删除wps云文档图标

    在我的电脑中删除wps云文档图标 右键点击win10左下角选择运行,输入regedit打开注册表后,找到以下注册表路径: HKEY_CURRENT_USER\Software\Microsoft\Wi ...

随机推荐

  1. 2016 ACM-ICPC 区域赛(大连站)题解

    题目链接 A - Wrestling Match (二分图染色) 题意略坑(没有说好的玩家一定能打过差的玩家啊啊~~) 典型的二分图染色问题,每个玩家看成一个点,把相互较量过的玩家之间连边,好的玩家染 ...

  2. idea 创建maven工程(入门)

    转:http://blog.csdn.net/qq_32588349/article/details/51461182 1. 下载Maven 官方地址:http://maven.apache.org/ ...

  3. LeetCode Reshape the Matrix

    原题链接在这里:https://leetcode.com/problems/reshape-the-matrix/#/description 题目: In MATLAB, there is a ver ...

  4. Bootstrap确定样式让屏幕缩小后布局不乱

    解决方案是如下 结果如下:

  5. 开放群组架构TOGAF

    作于一个架构师尤其是企业架构师来说,丰富的理论知识可以帮助他在架构规划及管理过程中站在更高的角度去看待问题,历史发展原因有很多已成体系的架构理论,TOGAF是近年来比较接地气的,受到了政府和银行业的重 ...

  6. Linux sed 批量替换多个文件中的字符串【转载】

    原文网址:http://blog.sina.com.cn/s/blog_730edb930100qzz5.html     比如,要将目录/modules下面所有文件中的zhangsan都修改成lis ...

  7. OpenWrt添加启动脚本

    1.在 /etc/init.d 目录下建立文件 vi silabs #!/bin/sh /etc/rc.common # Copyright (C) 2006 OpenWrt.org START=93 ...

  8. 机器学习:SVM(scikit-learn 中的 SVM:LinearSVC)

    一.基础理解 Hard Margin SVM 和 Soft Margin SVM 都是解决线性分类问题,无论是线性可分的问题,还是线性不可分的问题: 和 kNN 算法一样,使用 SVM 算法前,要对数 ...

  9. Set,Sorted Set相关命令操作,批量插入及管道,事务

    Set SADD key member [member ...] 向key指定的set集合添加成员,次集合是排重的,从2.4版本后才支持添加多个如果key不存在则创建key以及set集合返回当前操作成 ...

  10. c语言-单链表(二)

    继续复习链表知识点,本章包含单链表的增加,删除,判断是否为空,和链表长度,以及链表的排序 几个知识点 1.链表的判断是否为空 //1.判断链表是否为空 bool isempty_list(PNODE ...