作者 | 镜子@知乎

来源 | https://zhuanlan.zhihu.com/p/446726196

编辑 | 极市平台

导读

手部姿态估计任务作为一个对空间信息敏感的下游任务,任何改变空间信息的数据增强操作都会改变手部动作,让人很难想象如何将其套入到自监督学习这种“我的增强结果还是我自己”的instance discrimination模板里,因此我在刷到这篇ICCV论文的第一时间进行了学习。

自MoCo等基于contrastive learning的自监督模型横空出世,在各类下游任务上超越监督训练的模型以来,针对各种任务优化的自监督学习框架层出不穷,算是在ViT到来前学术界的一大研究热点。手部姿态估计任务作为一个对空间信息敏感的下游任务,任何改变空间信息的数据增强操作都会改变手部动作,让人很难想象如何将其套入到自监督学习这种“我的增强结果还是我自己”的instance discrimination模板里,因此我在刷到这篇ICCV论文的第一时间进行了学习。

论文名:Self-Supervised 3D Hand Pose Estimation from monocular RGB via Contrastive Learning(基于单目RGB图片,通过对比学习的方式来做自监督3D手部姿态估计)

论文地址:https://openaccess.thecvf.com/content/ICCV2021/papers/Spurr_Self-Supervised_3D_Hand_Pose_Estimation_From_Monocular_RGB_via_Contrastive_ICCV_2021_paper.pdf

代码地址:https://github.com/dahiyaaneesh/peclr

1. 简介

自监督对比学习

为了照顾到一部分没有相关知识的小伙伴,我先对self-supervised contrastive learning做一个简单的回顾。

首先,自监督学习是无监督学习的一个子类,因此用到的数据是无标签的,而自监督的“”体现在,虽然没有人工标注告诉我哪些图片是我的同类,但我至少知道我就是我,我经过数据增强变换以后的图片也都是我自己,由于数据增强的结果千变万化,因此一个我也能衍生出千千万万个同类的我,这千千万万个我也就自然具有了相同的标签,所有不是我变换来的,便都跟我不同标签,如此一来,也就给无标签的数据赋予了标签,这就叫自监督。

而对比学习依赖的标签,正是两个对象的标签相同或不相同,如果相同则把两个特征在特征空间中拉近,不同则远离。

因此在训练中,我们可以任取一张图片作为锚点(anchor),基于它变换得到的同标签样本称为正样本(positive),数据集中剩下的所有样本都视为不同标签,称为负样本(negative)。

以下是一个简单的图例,x代表图片,T代表数据增强变换,E代表模型,f代表特征:

图片来自李沐MoCo论文精读视频,bryanyzhu大佬手绘

姿态估计任务的独特性质

以往的对比学习自监督任务,都是通过对无标注数据进行数据增强,鼓励模型学习出不随数据增强变换而改变的特征表示,这种性质称为不变性(invariance)。这一点在手部姿态估计任务上显然是不太适用的:一张手部图片只有在经过不涉及几何学的变换时(color jittering),我们才期望模型的表征具有不变性;一旦发生了任何几何学上的变换(rotation, flip, resize),便都会导致关键点位置改变,模型提取的表征也理所应当随之改变,这个时候我们则会期望模型表征具有等变性(equivariance)。

3D手部姿态估计任务难点

相对于已经近似于被解决的2D姿态估计任务而言,3D姿态估计目前还是一个具有挑战性的问题,原因主要在于数据标注的难度,普通的2D标注很容易完成,拍一张照片,然后在普通电脑上由一个稍微经过培训的标注员就能完成。3D标注信息的采集却需要依赖专业的器材,往往都在实验室环境下,这些采集器材的场地、摆放限制又会导致数据背景信息的单一,以及动作姿态的单一,这个问题不论在手部姿态还是人体姿态上都是普遍存在的。这也导致了3D标注数据规模受到相当大的限制,很难通过增大数据量、增加数据多样性等常见数据手段来提升模型性能。

既然监督学习有困难,大家又想了很多弱监督学习的办法,依赖丰富的2D标注数据、形态学先验知识等手段自动生成2D标注,但这些方法都不可避免地存在精度不够高的问题,生成的数据存在大量噪声。

2. PeCLR

为了应对以上姿态估计任务的独特性质,和数据标注面临的问题,本文提出了Pose Equivariant Contrastive Learning(PeCLR)方法,即一个具有等变性的对比学习目标函数,能在不利用任何标注信息的情况下学习到几何变换上的等变性特征,并通过实验证明,具有等变性的对比学习自监督训练,能取得比原来只有不变性的对比学习自监督更好的效果,在FreiHAND数据集上取得了14.5%的提升。

本文的主要贡献有:

  1. 第一篇高效利用无标注数据来做3D手部姿态估计对比学习的工作

  2. 提出了一个对比学习目标函数,能对外观变换(appearance transformation)具有不变性(invariance),对几何变换(geometric transformation)具有等变性(equivariance)

  3. 实验探索了该任务上的最佳数据增强方式

  4. 实验证明了本方法的有效性,更多的无标注数据能带来更多的性能提升

  5. 用标准ResNet模型达到了SOTA

SimCLR

作为风头最盛的两大自监督对比学习工作,MoCo和SimCLR分别来自Facebook和Google,在MoCov1论文中有指出,自监督对比学习性能提升的关键和限制在于两点,正负样本对的规模大样本一致性,规模主要受限于GPU显存,让我们一个batch做到1024已经到极限了,样本一致性则是针对利用memory bank来扩充样本对导致的encoder历史版本不一致问题,MoCo正是针对这两点做出了改进使普通人在有限显存情况下也能提升自监督性能。而SimCLR实际上就属于第一类工作,但作为Google的工作,他们表示显存并不是个限制,我们有TPU,batch可以开到8192,所以也不需要MoCo那么麻烦了,Money is all you need。

关于MoCo跟SimCLR的对比部分这里不做过多赘述,有兴趣的同学建议看 https://www.bilibili.com/video/BV1C3411s7t9 这个视频,保证获益匪浅。

简单来说,SimCLR采用了一种end-to-end的模式,将N张图片经过两种不同的数据增强T1和T2,得到2N张增强过的图片,于是对于每个样本I而言,都有1个正样本和2(N-1)个负样本,将这些样本送入encoder提取特征后再经过一个MLP投影到一个向量空间,通过NT-Xent(the Normalized Temperature-scaled Cross Entropy loss),将同类样本在向量空间中互相拉近,不同类样本相互远离。

NT-Xent公式如下:

Equivariant contrastive representations

对于NT-Xent而言,这个目标函数会鼓励模型将不同变换得到的样本,提取出相同的表征,具体如下:

代表不同的变换方式

,代表样本经过变换得到一个新样本

即模型从变换前后的样本提取到的特征不变。

然而手部姿态估计要求模型对于几何变换具有等变性,因为几何变换会改变关键点的位置,因此我们的需求变成了:

要满足上面的需求,我们只需要对NT-Xent做一个很小的修改,即:

换句话说,我们不再追求两个正样本对提取的特征一样,而是对这两个特征做逆变换,追求逆变换后得到的特征一样

由于几何变换本质上是一种仿射变换,可以通过矩阵乘法完成,所以逆变换是很容易得到的。

另外需要注意的一个点是,由于图片所在的空间,跟特征所在的向量空间是不同的,而缩放、旋转等变换是与图片尺寸相关的,比如将图片移动x个像素与将特征移动x个单位含义是不同的,因此不能简单地直接把针对图片的逆变换用在特征上,在应用之前还需要根据各自的大小计算比例,进行等比例的变换:

如果理解了上面的内容,剩下的工作就都是顺其自然了,通过自监督对模型进行预训练后,用少量标注数据对模型进行微调即可。模型的结构上本文遵循了SimCLR的做法,在encoder的输出上接了一个线性层做投影。

总结一下:

由于新的目标函数,只比旧的多了一步操作,即对特征向量进行逆变换。因此我们只需要对经过了几何变换的样本特征做逆变换,其他的正常进行自监督学习即可。

3D Hand Pose Estimator

3D姿态估计的部分就不是本文的重点了,本文的设计也非常简单,通过L1 loss来分别监督2D坐标和深度。

3. 实验

实验部分,用ResNet50作为encoder,输入图片为128x128的单目RGB图片。

预训练阶段用LARS和ADAM,batch size取2048,学习率为4.5e-3。微调阶段用ADAM,学习率为5e-4。

由于自监督学习的数据增强选择会很大程度上影响模型性能,本文也从单个变换到多个变换组合递进的方式,探索了适合于手部姿态估计任务的数据增强集合。如下图所示,绿字为外观变化,蓝字为几何变换:

单个变换

本文首先在手部姿态数据上验证了SimCLR使用单个变换的表现,对预训练好的模型使用两层MLP进行全监督微调:

可以看到,尽管SimCLR不那么适用于姿态估计任务,但经过了自监督预训练的模型表现,仍然是超过随机初始化后进行监督训练的表现的。并且我们可以观察到scale变换带来的收益依然是非常大。

接下来又对比了PeCLR跟SimCLR在几何变换上的表现,由于相似度计算采用的是余弦相似度,消除了scale的影响,因此只对比了translate和rotate:

可以看到PeCLR的确在几何变换上大幅超越了SimCLR,而外观变换的模型,由于两种方法目标函数完全一样,模型结果也是一致的。

多个变换

为了压缩搜索空间,本文只取了单独效果最好的4个变换进行组合,结论如下:

对PeCLR,scale+rotation+translation+color jittering的组合表现最好。

对SimCLR,scale+color jittering的组合表现最好。

半监督学习

这个部分实验了只使用一部分数据进行监督学习,以及在更大规模的数据上进行自监督预训练得到的模型表现:

更多的标注、更多的自监督数据量,都带来了更好的性能。

结果对比

最后与过往SOTA进行了对比,其中包括去年CVPR2020的Oral。

也验证了在FredHAND+Youtube3D数据上自监督预训练,再在FreiHAND上微调的模型,跨数据集的泛化能力。

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

13.重磅!四旋翼飞行器:算法与实战

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

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

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

觉得有用,麻烦给个赞和在看~  

自监督3D手部姿态估计方法相关推荐

  1. 3d人体姿态估计资料

    人字姿态估计数据集 - 知乎 SMPL论文解读和相关基础知识介绍 - 知乎 3D人体姿态估计方法 MHFormer:Multi-Hypothesis Transformer - 知乎 论文阅读笔记: ...

  2. AAAI论文首发:几何驱动的自监督的人体3D姿态估计方法

    徐亦达团队和北理工李侃老师的共同博士生李杨在AAAI 的发表了一篇机器学习论文,本人得到徐老师授权在本站发布论文. Geometry-driven Self-supervised Method for ...

  3. 跳过人脸检测和关键点定位,Facebook等提出实时3D人脸姿态估计新方法

    本文转载自机器之心. 来自 Facebook AI 和美国圣母大学的研究者提出了一种 6 自由度的实时 3D 人脸姿态估计技术,可以不依赖人脸检测和人脸关键点定位独立运行. 人脸检测是给照片中的每个人 ...

  4. ECCV 2020 论文大盘点-3D人体姿态估计篇

    本文盘点ECCV 2020 中所有与3D姿态估计(3D Human Pose Estimation)相关的论文,总计 14 篇,其中一篇Oral 论文,7 篇已经或者将开源代码. 下载包含这些论文的 ...

  5. 3D人体姿态估计论文汇总(CVPR/ECCV/ACCV/AAAI)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Vegetabird | 来源:知乎 https://zhuanlan.zhihu.com/p/ ...

  6. 2D/3D人体姿态估计 (2D/3D Human Pose Estimation)

    1. 基本概念 算法改进入口 网络设计 特征流 损失函数 数据集的重要性:只要有一个好的.针对性的数据集,问题都可以解决 过集成新一代AutoML技术,可降低算法试错成本 人体姿态估计(Human P ...

  7. 网络摄像头+net_今日 Paper | 神经网络结构搜索;视觉目标;人物识别;视频3D人体姿态估计等...

    目录 基于进化算法和权值共享的神经网络结构搜索 检测视频中关注的视觉目标 包含状态信息的弱监督学习方法进行人物识别 基于解剖学感知的视频3D人体姿态估计 RandLA-Net:一种新型的大规模点云语义 ...

  8. 3D 人体姿态估计简述

    0 前言 3D Human Pose Estimation(以下简称 3D HPE )的目标是在三维空间中估计人体关键点的位置.3D HPE 的应用非常广泛,包括人机交互.运动分析.康复训练等,它也可 ...

  9. 视频中的3D人体姿态估计(3D human pose estimation in vide)--------Facebook research: VideoPose3D

    视频中的3D人体姿态估计(3D human pose estimation in video) 解读Facebook AI Research in CVPR2019: <3D human pos ...

最新文章

  1. 2021年大数据HBase(十一):Apache Phoenix的视图操作
  2. 华3r2900g3服务器配置信息,H3C UniServer R2900 G3
  3. 书评 – 程序员经典读物(1)
  4. 前端学习(3028):vue+element今日头条管理-使用icon图标的处理
  5. iview form 表单 自定义参数验证 validate
  6. 使用onclick跳转到其他页面/跳转到指定url
  7. c语言下面程序的功能是求圆的周长和面积.请改正程序中带*行中,2012年计算机等级考试二级C语言上机题(5)...
  8. java ext pagesize_更改透明图像的不透明度/更改extgstate字典的值
  9. 一段可自动点击运行代码(只偷偷的点一次)
  10. 我的MyGeneration
  11. jQuery Gantt Package控件发布v3.0版本
  12. 模糊C均值聚类算法及实现
  13. 字典(数字大小写转换器)
  14. google浏览器截取长图
  15. csb反编译_GitHub - lyzz0612/csb2csd: cocostudio csb反编成csd
  16. linux内核一直输出系统日志,系统日志出现大量:kernel: printk: xxxx messages suppressed...
  17. java的几种基本数据类型及其大小
  18. 一番谈话,深自反思。
  19. adb通过wifi连接真机
  20. Element type is invalid: expected a string (for built-in components) or a class/function (for compos

热门文章

  1. docker探索-使用docker service管理swarm(十一 )
  2. Maven使用笔记(四)pom.xml配置详解
  3. (转) eclipse项目中.classpath文件详解
  4. Kettle数据采集 部署安装
  5. Java:OpenOffice方式实现Word转pdf/html/htm
  6. HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据过程
  7. 安装RADOS gateway(CEPH对象存储)
  8. 西瓜书第二章 模型评估与选择
  9. POJ 3260 多重背包+完全背包
  10. GlusterFS 安装与配置