MobilePose: Real-Time Pose Estimation for Unseen Objects with Weak Shape Supervision

谷歌最新论文:从图像中进行3-D目标检测
https://arxiv.org/pdf/2003.03522.pdf
转自知乎 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(均方误差)。


锚点图、分割图和分布图
如上图比较了单样本(single shot)姿势估计中使用的不同检测方法。 基于锚点(anchor-based)的方法在网格单元处设置锚,并在正的锚点(绿点)处回归边框。 临时分配多个锚点可处理同一网格单元的多个目标。 分割方法通过分割实例查找目标。 对同一类别的多个目标,需要实例分割以区分不同目标。 目标建模为高斯分布,并通过峰值搜索进行检测。 为了更好地说明,图中使用了高分辨率,而模型的实际分辨率为(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个图像进行评估。如下表数据集(一共包括三个,即真实数据、合成3D数据和合成2D数据)所示,真实数据仅具有3D边框标签,这是因为,逐帧注释像素级的形状标签非常昂贵。

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


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

整个训练流程在TensorFlow中实现。 使用Adam优化器在8个GPU上训练批量(batch)大小为128的网络。 初始学习率是0.01,在30个时期(epochs)内逐渐下降到0.001。 为了在移动设备上部署经过训练的模型,将它们转换为TFLite模型。 转换时将删除一些层,例如批处理归一化(batch normalization),推理时它们是没有用的。 基于MediaPipe框架(注:它是一个跨平台框架,即安卓、IOS 、网页和边缘设备等各种平台,用于构建多模态应用机器学习流水线,详细内容见网页https://mediapipe.dev),这里构建了一个可以在各种移动设备上运行的应用程序。

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

MobilePose: Real-Time Pose Estimation for Unseen Objects with Weak Shape Supervision相关推荐

  1. T-LESS: An RGB-D Dataset for 6D Pose Estimation of Texture-less Objects

    T-LESS: An RGB-D Dataset for 6D Pose Estimation of Texture-less Objects 如有错误,欢迎指正 摘要 1 介绍 2. Related ...

  2. 笔记:PoseCNN:A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes

    PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes (Robotics: ...

  3. Survey on Human pose estimation

    关于姿态估计的一些总结,GitHub上搬的 Papers 2D Pose estimation Learning Human Pose Estimation Features with Convolu ...

  4. Towards 3D Human Pose Estimation in the Wild: a Weakly-supervised Approach论文翻译

    论文地址:https://arxiv.org/abs/1704.02447 code:https://github.com/xingyizhou/pytorch-pose-hg-3d Towards ...

  5. 物体6-Dof pose estimation主流方法汇总

    作者丨孙文@知乎 来源丨https://www.zhihu.com/question/63159179/answer/257832184 编辑丨3D视觉工坊 主流的方法有下面几种: 基于模板匹配的方法 ...

  6. Paper:《Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ∗》翻译并解读

    Paper:<Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ∗>翻译并解读 目录 Abstract ...

  7. 6D Pose Estimation各方法对应的经典论文

    单目RGB.传统方法 (1) D. G. Lowe. Object recognition from local scale-invariant features. In ICCV, 1999. (2 ...

  8. 重新思考人体姿态估计 Rethinking Human Pose Estimation

    Newly updated by 2019-11-19 ----------------------------------------------------- 浅谈:2D人体姿态估计基本任务.研究 ...

  9. 基于深度学习的3D pose estimation总结(包括几篇2D pose estimation)

    声明:此文章是作者自己学习过程中的简单总结,也是作者第一次上传,仅供各位同行参考,也请对文中错误和不足多多指教,敬请指正,谢谢! 一.任务描述 给定一幅图或者是一段视频,人体姿态估计就是恢复出其中的人 ...

最新文章

  1. Axure RP使用攻略--入门级(五)系统函数与变量
  2. 使用 docker 部署 mdnice
  3. Scrapy+ Selenium处理广告
  4. 程序员职业自由6个阶段,你处于哪个?
  5. fameview搅拌机控件_搅拌机爱好者齐聚第十五届年会
  6. RabbitMQ的简单示例
  7. 数据:DeFi总锁定价值突破170亿美元
  8. python列表[]中括号
  9. [转]如何撰写学术论文
  10. 计算机一级在线模拟试题,全国计算机等级考试一级模拟试题(一)
  11. 记录一下C#使用SmtpClient发送网易163、126邮件使用sll协议失败的坑
  12. 密码学朋克宣言(1993)
  13. java手机刷机精灵,按钮救星(按键精灵所有者读写权限)
  14. Python基础—内置函数、匿名函数、递归函数
  15. mysql为什么需要中间件_为什么要用数据库中间件
  16. java古诗词打印_java古诗词自动生成程序.doc
  17. 背景设置为透明RGB
  18. 【Android初级】什么是ANR?如何防止?如何修复?
  19. 新概念第三册背诵: Lesson 2 - Thirteen equals one
  20. 【人工智能】课堂测验集锦

热门文章

  1. 程序员客栈2020年项目整包收入排行榜
  2. 7-65 字符串替换 (15 分) 本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换: 原字母 对应字母 A Z B Y C X D W … … X C Y B Z A
  3. 入门c语言(四)顺序结构程序设计
  4. MongoDB在信息资源共享建设的应用实践
  5. 计算机内存主要有哪几种,内存类型有哪些
  6. 潘超和你聊 DeFi
  7. Qcom 平台 LK 阶段配置 I2C
  8. 【题解】P4516 [JSOI2018] 潜入行动
  9. 【【重要通知】HCIE-Routing Switching切换HCIE-Datacom补充公告】
  10. 设备树下的platform驱动编写