点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

本文由知乎作者黄浴授权转载,不得擅自二次转载。原文链接:https://zhuanlan.zhihu.com/p/112836340

大家都看到谷歌博客的介绍,最新开源工作,手机端的实时3-D目标检测。这里看一下这个软件的论文,即3月7日上载arXiv的论文“MobilePose: Real-Time Pose Estimation for Unseen Objects with Weak Shape Supervision“。

摘要:本文解决的是从RGB图像中检测出没见过的目标并估计其3D姿态的问题。包括两个移动端友好网络:MobilePose-Base和MobilePose-Shape。前者用于只进行姿势监督的情况,而后者用于形状监督,甚至是较弱的情况。回顾一下之前人们使用的形状特征,包括分割和坐标图(coordinate map)。然后解释了什么时候以及为什么像素级形状监督可以改善姿态估计。因此,在MobilePose-Shape中将形状预测添加为中间层,并让网络从形状中学习姿势。其模型在混合真实数据和合成数据上进行训练,并做弱和含噪的形状监督。模型非常轻巧,可以在现代移动设备上实时运行(例如Galaxy S20上为36 FPS)。与以前的单样本学习解决方案相比,该方法具有更高的准确性,使用的模型也要小得多(模型大小或参数数量仅仅占2-3%)。

实例-觉察(instance-aware)方法从一组已知目标中学习姿势,并有望在相同实例上工作。模型-觉察(model-aware)的方法在后期处理中需要目标的3D CAD模型。深度-觉察(depth-aware)方法除RGB图像外还需要深度图像用于姿势估计。检测-觉察(detection-aware)的方法依赖于现有的2D检测器来找到目标边框或ROI。

形状特征已被用于估计姿势,采用的方法在后处理中而不是在网络中使用形状预测。也就是说,它们首先通过CNN推断形状特征,然后使用多视角几何的PnP或点云ICP将其与3D模型对齐。实时解决方案使姿态估计技术更接近于应用,只是这些模型必须轻巧才能实时运行,最好是单次运行。

首先,MobilePose-Base作为基准网络,它可以检测到无锚点的未见目标,并采用单样本估计目标姿势。这种主干网设计为流行的编码器-解码器体系结构。为了构建一个超轻量级的模型,选择MobileNetv2 来构建编码器,该编码器被证明可以在移动设备上实时运行,并且胜过YOLOv2。MobileNetv2建立在反向残差块上(inverted residual blocks),其中快连接(shortcut connections)放在薄的瓶颈层之间。块中使用了ES(expansion-and-squeeze)方案。为使模型更轻,移除了瓶颈处某些带较大通道的块,减少了一半的参数。

如图所示,蓝色和紫色框分别是卷积和反卷积块。橙色框代表反向残差块。图中所示的块数及其尺寸在实现中完全相同。输入是大小为640×480×3的图像。编码器以卷积层开始,然后是五级反转残差块。瓶颈处使用了四个128-通道块,而不是MobileNetv2的四个160-通道块和一个320-通道块。解码器由一个反卷积层、一个和编码器相同尺度层跳连接(skip connection)的连接层和两个反向残差块组成。

在主干之后附加两个头:检测和回归。检测头(detection head)的想法来自2D目标检测中的无锚(anchor-free)方法。将目标建模为围绕它们中心的分布,检测头输出40×30×1的热图(heat map),最终损失函数使用了简单的L2(均方误差)。

锚点图、分割图和分布图

如上图比较了单样本姿势估计中使用的不同检测方法。基于锚点的方法在网格单元处设置锚,并在正的锚点(绿点)处回归边框。通过临时分配多个锚点来处理同一单元的多个目标。分割方法通过分割实例查找目标。对于同一类别的多个目标,需要实例分割以区分目标。将目标建模为高斯分布,并通过找峰值进行检测。为了更好地说明,图中使用了高分辨率,而模型的实际分辨率为(40×30)。

上图中多个目标的位移场(Displacement fields)根据它们的热度合并在一起。回归头(regression head)输出一个40×30×16的张量,其中每个矩形顶点贡献两个位移通道。在图中,只显示了两个位移场。为了容忍峰值提取的误差,所有带明显热度的像素位移参与回归。为此,该头使用L1损失(平均绝对误差)函数,更为稳健。

反过来,看看形状。即使是薄弱的监督,MobilePose- Shape可以预测中间层的形状特征。其思想是引导网络学习与姿势估计有关的高分辨率形状特征。其实,在没有监督的情况下简单引入高分辨率特征不会改善姿势估计,这是因为边框顶点的回归是在低维空间。在无监督情况下,网络可能会在小尺度上过拟合特定于目标的特征。此问题对于实例-觉察的姿势估计方法无效,但不是这里的未知目标情况。

与先前的方法相似,选择坐标图和分割作为类内(intra-category)形状特征。坐标图具有三通道,分别对应于3-D的坐标轴。如果训练数据有目标的CAD模型,则可以使用归一化坐标作为颜色来渲染坐标图。坐标图是像素级信号的强大特征,但是,它需要目标的CAD模型和姿势,而这些模型和姿势很难获取。因此这里将分割作为另一个形状特征添加。为简单起见,使用语义分割,在形状监控中增加了一个通道。分割是姿势估计的弱项,仅仅给定未见目标的分割,不足以确定其姿势。但是,也不需要目标的CAD模型和姿势,而且更容易获得。

有了形状特征,用解码器中的高分辨率层和形状预测层来修改网络。如上图所示,在解码器中组合了多尺度特征。在解码器的末尾添加一个形状层,以预测形状特征。然后将其与解码器连接起来,在下采样后连接姿势头(pose heads)。具体来说,用四个倒置的残差块来降低分辨率,并最终连接检测头和回归头。形状头(shape head),大小160×120×4,具有四个具有L2损失(均方误差)的通道。在计算该损失时,将跳过没有形状标签的训练示例。通过实验,发现即使在监督不力的情况下,通过引入高分辨率形状预测也可以改善姿势估计。

尽管模型很轻巧,但后处理对移动应用程序也是至关重要的组件。昂贵的算法是不考虑的,比如RANSAC,大规模PnP和ICP。这里将后处理简化为两个便宜的操作:峰提取和EPnP。

为了计算3D边框的投影顶点,提取检测输出的峰值,即40×30热图。

给定投影的2D边框顶点和相机标定的内参数,采用EPnP算法来恢复3D边框的大小。该算法具有恒定的复杂度,可以解决12×12矩阵的特征分解,它不需要已知目标的大小。

缺乏训练数据是6自由度(DoF)姿势估计仍然存在的挑战。先前大多数方法都是实例觉察方法,由一个小数据集进行监督训练。为了解决未见目标的问题,这里开发了一个流水线来收集和注释由AR移动设备记录的视频片段。

尖端AR解决方案(例如ARKit和ARCore)可以用视觉-惯性-里程计算(VIO)实时估算摄像机的姿势和稀疏3D特征。这种设备能够以可承受且可扩展的方式生成3D训练数据。

数据流水线的关键是高效,准确的3D边框标注。这里构建了一个记录序列显示2D和3D视图的可视化工具。注释者在3D视图绘制3D边框,在整个序列的多个2D视图进行验证。基于AR估计的相机姿态,绘制的边框将自动填充到序列中的所有帧。

一个例子是,1800个鞋子的视频进行剪辑添加注释。在各种环境下,不同鞋子的视频片断有几秒钟。只为一个或一双鞋子接受一个视频片断,因此,每个片断的目标完全不同。在这些剪辑中,随机选择了1500个用于训练,其余300个用于评估。最后,考虑到同一剪辑中的相邻帧非常相似,随机选择了10万个图像进行训练,并选择1000个图像进行评估。如表1所示,真实数据仅具有3D边框标签,这是因为,逐帧注释像素级的形状标签非常昂贵。

为了提供形状监督并丰富现有的实际数据集,也生成了两组综合数据。第一个合成3D数据具有3D标签。收集只有背景的场景AR视频剪辑,并将虚拟目标放置到场景中。具体来说,在场景中检测的平面上以随机的姿势渲染虚拟目标,例如桌子或地板。重用估计的灯光在AR会话(AR Session)进行照明。AR 会话数据的度量单位为公制。因此,一致地渲染虚拟目标与周围的几何形状。收集了100个常见场景的视频片段:家庭、办公室和室外。对每个场景,通过渲染50个随机姿势的鞋子来生成100个序列。每个序列包含许多鞋子。从生成的图像随机选择8万进行训练。下图展示一些合成的视频例子。

尽管合成3D数据具有准确的标签,但是目标和背景的数量仍然有限。因此,还通过从互联网上抓取图像来构建合成2D数据集。这里抓取了透明背景下的鞋子图像7.5万个和背景(例如办公室和家庭)图像4万个。滤除有微小错误(例如无透明背景下的)的鞋子图片。按Alpha通道对鞋子进行细分,然后将它们随机粘贴到背景图像中。如上图所示,生成的图像不真实,标签噪声很大。粗略估计大约有20%的图像有轻微的标签错误(例如,小缺失部分和阴影),约10%的图像有严重的标签错误(例如,非鞋子物体和较大的额外背景区域)。

最后,看看一些实验定性结果例子:

上述内容,如有侵犯版权,请联系作者,会自行删文。

推荐阅读:

吐血整理|3D视觉系统化学习路线

那些精贵的3D视觉系统学习资源总结(附书籍、网址与视频教程)

超全的3D视觉数据集汇总

大盘点|6D姿态估计算法汇总(上)

大盘点|6D姿态估计算法汇总(下)

机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划

汇总|3D点云目标检测算法

汇总|3D人脸重建算法

那些年,我们一起刷过的计算机视觉比赛

总结|深度学习实现缺陷检测

深度学习在3-D环境重建中的应用

汇总|医学图像分析领域论文

大盘点|OCR算法汇总

重磅!3DCVer-知识星球和学术交流群已成立

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导,660+的星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

欢迎加入我们公众号读者群一起和同行交流,目前有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加群或投稿

谷歌最新论文:手机端的实时3-D目标检测相关推荐

  1. 谷歌最新论文:从图像中进行3-D目标检测

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 作者:黄浴 知乎链接:https://zhuanlan.zhihu.com/p/1 ...

  2. AAAI 2021 | 在手机上实现19FPS实时的YOLObile目标检测

    作者|机器之心编辑部 来源|机器之心 本文提出了一套模型压缩和编译结合的目标检测加速框架,根据编译器的硬件特性而设计的剪枝策略能够在维持高 mAP 的同时大大提高运行速度,压缩了 14 倍的 YOLO ...

  3. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

  4. Google又发大招:高效实时实现视频目标检测

    首发于极市平台微信号:Google又发大招:高效实时实现视频目标检测 作者:陈泰红 如有兴趣可以**点击加入极市CV专业微信群**,获取更多高质量干货 图像目标检测是图像处理领域的基础.自从2012年 ...

  5. AAAI 2020 Oral论文--TANet:提升点云3D目标检测的稳健性

    点击上方"深度学习技术前沿",选择"星标"公众号 资源干货,第一时间送达 来自华中科技大学白翔教授组的刘哲的 AAAI Oral 论文<TANet: Ro ...

  6. yolov5在线检测目标检测网页实时识别python目标检测flask

    yolov5在线检测目标检测网页实时识别python目标检测flask #!/usr/bin/env python from importlib import import_module import ...

  7. 4、Android 手机端进行实时目标检测,并使用FFMPEG将检测的视频流推到服务器显示

    基本思想:记录一下上次工业检测项目的Android推流代码,客户要求在终端检测结果推到服务器上,以最大化发挥终端的算力,而把服务器只当做中转站~ 一.先将up的GitHub - nihui/ncnn- ...

  8. Google最新论文:Youtube视频推荐如何做多目标排序

    作者 | 深度传送门 来源 | 深度传送门(ID:deep_deliver) 导读:本文是"深度推荐系统"专栏的第十五篇文章,这个系列将介绍在深度学习的强力驱动下,给推荐系统工业界 ...

  9. Google又放大招:高效实时实现视频目标检测 | 技术头条

    点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」,购票请扫码咨询 ↑↑↑ 作者 | 陈泰红,算法工程师,研究方向为机器学习.图像处理 来源 | 极市平台(ID:extrememart) ...

最新文章

  1. postgresql 编码_开源力量与职业发展 --写给对PostgreSQL有志趣的朋友们
  2. [JAVA]deep copy链表
  3. Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
  4. 永磁同步电机试验系统的设计
  5. SAP Backgroud job
  6. wxWidgets:wxListCtrl 示例
  7. 和硕裁员4.5万真相调查:工人入不敷出无奈走人
  8. 系统设置参数说明11
  9. fragment的懒加载
  10. 启发式算法、寻路算法A*算法
  11. 记一次悲惨的excel导出事件
  12. 电信移动中兴B860AV2.1-1.1T-1.2系列晶晨S905L芯片-刷机固件包
  13. VBA实例6 CorelDraw 批量生成设备位号、连续编号
  14. mysql列名变更_如何在MySQL中更改列名
  15. 腾讯语音合成V3鉴权失败
  16. 当你不能够再拥有,你唯一可以做的,就是令自己不要忘记
  17. 利用shell脚本解决区块链Fabric学习时下载Docker镜像失败和费时问题
  18. matlab解方java_如何在MATLAB中获得该方程的所有解?
  19. 最新史上最大数据泄露,名为“Collection #1”的7.73亿数据!
  20. GatewayWorker 与 Workerman的关系

热门文章

  1. Asp.net MVC JsonResult 忽略属性
  2. ios(iphone/ipad)一个简单的用代码判断当前设备的方法
  3. 安全攻防技能——安全基础概念
  4. 基于Flink SQL构建流批一体实时数仓
  5. Redis 过滤请求绝技 — 布隆过滤器与布谷鸟过滤器
  6. 劝大家逃离互联网!某前互联网员工自述:从互联网到传统行业,工资多,不加班,有户口,能买房!...
  7. 超长JVM总结,面试必备
  8. 程序化广告(4):考核指标
  9. 饿了么交付中心语言栈转型总结
  10. 在项目管理情境下,如何做多项目管理?