(哥俩好)Multiview Bootstrapping:多视角采集图像,破解手部细节数据标注难题

Hand Keypoint Detection in Single Images using Multiview Bootstrapping,2017


自说自话:

  • 这篇文章主要采用多个相机拍摄,解决手部细节数据难以标注的问题(手指灵活、容易遮挡);
  • 采用迭代地逐步丰富训练样本、优化模型的策略,从初始的 basic 检测器逐步提升表现;
  • 我自己觉得这个策略不好的地方就是复现的门槛更高了,因为有硬件(多角度图像采集设备),还要做 3D 数据之间的映射,数据逐步丰富的过程也是严重依赖人工调整,对个人而言不太玩得起,不仅仅只需要电脑了,还需要团队和场地。场地可以看下图,是一个专门的房间:

在这里插入图片描述

Abstract

  • 使用多目视觉系统协助训练细粒度的手部关键点检测Multiview bootstrapping,作者称其为多视角引导。
  • 首先,进行较为粗糙的、初始的关键点检测,来生成含有噪声的检测结果作为 label;其次,使用 multiview geometry 进行 3D 三角剖分,或者被标记为 outlier;最后,reprojected 之后的信息被当做 label 丰富训练集训练更优的检测器。
  • 上述过程迭代地进行,每次迭代都会生成更多的训练数据。在给定模型目标的前提下,还推导了达成该目标所需要的最小视角数量。
  • 输出的模型可以在单张 RGB 图像上生成 2D 关键点检测(如图 1 左图所示),还可以通过三角剖分输出 3D 信息(如图 1 右图所示),效果堪比用 depth 传感器的方法。

在这里插入图片描述

Introduction

手作为人体的一部分充当着极其重要的角色,但是遗憾的是,不同于人脸或者肢体,手部的详细标注数据极其得少。因为各种原因,手部容易出现遮挡,这对人为标注都造成了很大的困扰。如下图 2 所示:

在这里插入图片描述
本文提出了一种解决这个困境的方法/策略/流程,作者称其为 Multiview bootstrapping,基本出发点为,即使在某个角度出现了某些信息的遮挡,在其他角度,这些信息是可以被观察到的(多目视觉)。整个策略的流程分为以下几个步骤:

  • 通过较小的标注数据集训练一个初始检测器,检测一些有良好视角的手部关键点,并且通过鲁棒的 3D 三角剖分来滤出一些错误的检测;
  • 被遮挡的部分信息未被初始检测器成功检测到,这部分通过 reprojection 3D 手部信息来进行标注
  • 前面直接检测得到的 + 补充标注的作为扩充后的训练集,继续用于训练检测器,如此迭代进行,逐步提升检测器性能
  • 在多视角应用这个检测器还可以重建 3D 信息。

Related Work

Multiview Bootsrapped Training

这部分原文是用数学符号来讲的,但其实还是在反复说明摘要以及介绍中的过程。

  • 手部关键点检测器可以看作是一个映射 d ( ⋅ ) d(\cdot) d(),将输入的三维图像 I ∈ R w ∗ h ∗ 3 I \in \mathcal R ^{w * h*3} IRwh3,映射为 P 个(种/类)关键点(比如右手拇指尖儿,而且同一张图,某一类关键点最多只能有一个)的位置信息 x p ∈ R 2 x_p \in \mathcal R^2 xpR2,位置信息是携带了 confidence c p c_p cp 的,这个过程连起来就是: d ( I ) → { ( x p , c p ) f o r p ∈ [ 1 , . . . , P ] } d(I) \rightarrow \{(x_p, c_p) for p \in [1, ..., P]\} d(I){(xp,cp)forp[1,...,P]}
  • 刚刚说的输入图像 I I I 在本文中是按照 frame 来衡量的(因为同一个 pose 同时被很多个相机采集,同一个 pose 某个时刻被多个相机采到多张图片的就叫一个 frame,一个 frame 中的所有图片包含的实际 3D 信息一致);
  • 此时初始标注的训练集叫 T 0 \mathcal{T_0} T0,使用这个训练集得到初始的检测器 d 0 d_0 d0
  • 刚刚说了,同一个 pose 是有多个相机一起采集的,所以 d 0 d_0 d0 检测得不好的地方,可以通过 3D 重建来恢复出来,得到新的数据集 T 1 \mathcal T_1 T1,新数据集和之前的数据集合并在一起,使得训练集质量整体得以提升,继而训练更好的检测器 d 1 d_1 d1

上述这个过程,可以通过图 3 来说明:

在这里插入图片描述

  • 图 3 中所有的子图都是同一个 pose,只是来自于不同摄像机;
  • 图 a 展示的视角(有两个)比较好,所以初始的检测器能够比较好地检测到正确合适的结果;
  • 通过图 a 两个视角(或者更多个视角)可以 3D 重建出来这个 pose 的 3D 信息(双目视觉或者多目视觉),得到图 b;
  • 图 c 中是初始检测器的检测结果,可以看到,这个角度比较刁钻,一开始检测器并没有给出很好的结果;
  • 针对图 c 这种情况,结合图 b 得到的 3D 信息,将其映射到图 c 对应的坐标系中,得到图 d,“补充标注”数据;
  • 图 d 汇总到整体的训练集中,用于迭代训练,得到更好的检测器,之后可以成功检测到原本不能检测的关键点,也就是图 e 所示。

下图 4 是手指关键点示意图:
在这里插入图片描述

具体算法实施时,要考虑到可能有些 pose/frame 很难正确地 3D 重建(遮挡极其严重,多个视角都没有明确清晰地展示关键点信息),这种 pose/frame 就会通过打分被删除掉,只有分数满足要求的 pose/frame 才会保存其对应的 V 个视角。所以会多一个 scoring and sorting triangulated frames 的步骤。算法流程如下,其中标红的 3 个步骤也就是论文接下来讲述的 3 个步骤。

在这里插入图片描述

Triangulating Keypoints from Weak Detections

多视角重建 3D 信息如图所示,相机标定之后,重建工作就可以实现。
在这里插入图片描述

Scoring and Sorting Triangulated Frames

Retraining with N-best Reprojections

Detection Architecture

Keypoint Detection via Confidence Maps

这部分是分阶段的,非常类似 OpenPose 论文 PAF 中多阶段的训练,只是这里就一个分支而已,一共 6 个 stage,我懒得再写了……

Hand Bounding Box Detection

这里手部关键点的检测,必须依赖一个初步的“手部”大致的检测,也就是应该送进来手部站 C 位的图片来处理。这里论文说用的就是 OpenPose 的 PAF 论文里面的模型做身体检测,检测到手腕了,再来这儿检测手的细节信息。模型只做一只手,另一只手直接镜像拿来做。

When dose Multiview Bootstrapping Work?

这部分做了在给定视角数量前提下一个初始的 detector 应该具备什么样的性能,以及在给定初始 detector 性能的前提下至少需要多少个不同的视角的讨论,因为时间有点紧张,暂时不写这部分的分析学习了。

Evaluation

Improvement with Multiview Bootstrapping

Comparison to Depth-based Methods

Markerledd Hand Motion Capture

Discussion

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值