CN116997941A - 用于姿态估计的基于关键点的采样 - Google Patents
用于姿态估计的基于关键点的采样 Download PDFInfo
- Publication number
- CN116997941A CN116997941A CN202280019720.5A CN202280019720A CN116997941A CN 116997941 A CN116997941 A CN 116997941A CN 202280019720 A CN202280019720 A CN 202280019720A CN 116997941 A CN116997941 A CN 116997941A
- Authority
- CN
- China
- Prior art keywords
- joint
- keypoints
- pose
- image
- machine learning
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000005070 sampling Methods 0.000 title description 7
- 238000000034 method Methods 0.000 claims abstract description 153
- 238000010801 machine learning Methods 0.000 claims abstract description 116
- 238000013528 artificial neural network Methods 0.000 claims description 88
- 239000013598 vector Substances 0.000 claims description 71
- 238000013519 translation Methods 0.000 claims description 20
- 230000015654 memory Effects 0.000 claims description 19
- 230000003190 augmentative effect Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 abstract description 62
- 210000004247 hand Anatomy 0.000 description 77
- 238000012549 training Methods 0.000 description 35
- 238000011176 pooling Methods 0.000 description 33
- 230000006870 function Effects 0.000 description 30
- 238000012545 processing Methods 0.000 description 29
- 238000013527 convolutional neural network Methods 0.000 description 24
- 230000004913 activation Effects 0.000 description 23
- 238000001994 activation Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 19
- 238000004891 communication Methods 0.000 description 14
- 230000003993 interaction Effects 0.000 description 9
- 239000011521 glass Substances 0.000 description 8
- 210000003811 finger Anatomy 0.000 description 7
- 210000002478 hand joint Anatomy 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 5
- 238000013500 data storage Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000003936 working memory Effects 0.000 description 4
- 210000000707 wrist Anatomy 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000001537 neural effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000007844 bleaching agent Substances 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 210000004932 little finger Anatomy 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000000306 recurrent effect Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 241000219198 Brassica Species 0.000 description 1
- 235000003351 Brassica cretica Nutrition 0.000 description 1
- 235000003343 Brassica rupestris Nutrition 0.000 description 1
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 1
- 241000289581 Macropus sp. Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- QKSKPIVNLNLAAV-UHFFFAOYSA-N bis(2-chloroethyl) sulfide Chemical compound ClCCSCCCl QKSKPIVNLNLAAV-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 235000020992 canned meat Nutrition 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 210000000811 metacarpophalangeal joint Anatomy 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 235000010460 mustard Nutrition 0.000 description 1
- -1 or other XR devices) Substances 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/20—Movements or behaviour, e.g. gesture recognition
- G06V40/28—Recognition of hand or arm movements, e.g. recognition of deaf sign language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/243—Classification techniques relating to the number of classes
- G06F18/2431—Multiple classes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/09—Supervised learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/80—Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/002—Image coding using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/443—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
- G06V10/449—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters
- G06V10/451—Biologically inspired filters, e.g. difference of Gaussians [DoG] or Gabor filters with interaction between the filter responses, e.g. cortical complex cells
- G06V10/454—Integrating the filters into a hierarchical structure, e.g. convolutional neural networks [CNN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/46—Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
- G06V10/469—Contour-based spatial representations, e.g. vector-coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/764—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/107—Static hand or arm
- G06V40/11—Hand-related biometrics; Hand pose recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/08—Indexing scheme for image data processing or generation, in general involving all processing steps from image acquisition to 3D model generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20084—Artificial neural networks [ANN]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30244—Camera pose
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Biodiversity & Conservation Biology (AREA)
- Psychiatry (AREA)
- Social Psychology (AREA)
- Computer Hardware Design (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
- Manipulator (AREA)
Abstract
提供了用于确定一个或多个对象的一个或多个姿态的系统和技术。例如,过程可以包括使用机器学习系统从图像中确定多个关键点。多个关键点与图像中的至少一个对象相关联。该过程可以包括基于多个关键点从机器学习系统中确定多个特征。该过程可以包括将多个特征分类为多个关节类型。该过程可以包括基于多个关节类型来确定用于至少一个对象的姿态参数。
Description
技术领域
概括而言,本公开内容涉及确定或估计在图像或帧中的对象的姿态。例如,本公开内容的各方面涉及执行用于确定或估计在图像或帧中的对象(例如,多只手、一只手和物理对象等)的姿态的基于关键点的采样。
背景技术
确定图像中存在的对象以及这些对象的属性对许多应用是有用的。例如,系统可以确定图像中的对象(例如,人、人的一部分(诸如手或脸)、车辆、建筑物等)的姿态。在一些情况下,系统可以使用姿态来确定或生成用于表示对象的模型(例如,三维(3D)模型)。例如,模型可以利用被确定用于对象的姿态来生成。
被确定用于图像中的对象的姿态(以及在一些情况下被生成为具有该姿态的模型)可以用于促进各种系统和/或应用的高效操作。除了许多其它应用和系统之外,这类应用和系统的示例包括扩展现实(XR)系统(例如,增强现实(AR)系统、虚拟现实(VR)系统和/或混合现实(MR)系统)、机器人、汽车和航空、3D场景理解、对象抓取、对象跟踪。在各种说明性示例中,具有确定姿态的3D模型可以被显示(例如,由移动设备、由XR系统和/或由其它系统或设备),用于确定由3D模型表示的对象的位置(例如,用于场景理解和/或导航、用于对象抓取、用于自动驾驶车辆操作和/或用于其它用途),以及其它用途。
确定对象的准确姿态可以允许系统生成对象的精确定位的和定向的表示(例如,模型)。
发明内容
在一些示例中,描述了用于执行用于确定或估计图像中的对象的姿态的基于关键点的采样的系统和技术。例如,这些系统和技术可以用于确定图像中的人的两只手的姿态、一只手的姿态和相对于该手定位的物理对象的姿态(例如,由该手拿着或靠近该手的杯子或其它对象)、人的两只手的姿态和相对于两只手中的一只手或两只手定位的物理对象的姿态和/或其它对象。
根据至少一个示例,提供了一种确定一个或多个对象的一个或多个姿态的方法。该方法包括:使用机器学习系统从图像中确定多个关键点,多个关键点与图像中的至少一个对象相关联;基于多个关键点从机器学习系统中确定多个特征;将多个特征分类为多个关节类型;以及基于多个关节类型来确定用于至少一个对象的姿态参数。
在另一示例中,提供了一种用于确定一个或多个对象的一个或多个姿态的装置。该装置包括至少一个存储器和耦合到至少一个存储器的(例如,在电路中实现的)处理器。至少一个处理器被配置为并且能够进行以下操作:使用机器学习系统从图像中确定多个关键点,多个关键点与图像中的至少一个对象相关联;基于多个关键点从机器学习系统中确定多个特征;将多个特征分类为多个关节类型;以及基于多个关节类型来确定用于至少一个对象的姿态参数。
在另一示例中,提供了一种其上存储有指令的非暂时性计算机可读介质,所述指令当由一个或多个处理器执行时可以使一个或多个处理器进行以下操作:使用机器学习系统从图像中确定多个关键点,多个关键点与图像中的至少一个对象相关联;基于多个关键点从机器学习系统中确定多个特征;将多个特征分类为多个关节类型;以及基于多个关节类型来确定用于至少一个对象的姿态参数。
在另一示例中,提供了一种用于确定一个或多个对象的一个或多个姿态的装置。该装置包括:用于使用机器学习系统从图像中确定多个关键点的单元,多个关键点与图像中的至少一个对象相关联;用于基于多个关键点从机器学习系统中确定多个特征的单元;用于将多个特征分类为多个关节类型的单元;以及用于基于多个关节类型来确定用于至少一个对象的姿态参数的单元。
在一些方面中,至少一个对象包括两个对象。在此类方面中,多个关键点包括用于两个对象的关键点。在此类方面中,姿态参数可以包括用于两个对象的姿态参数。
在一些方面中,至少一个对象包括至少一只手。在一些情况下,至少一只手包括两只手。在这种情况下,多个关键点可以包括用于两只手的关键点。在这种情况下,姿态参数可以包括用于两只手的姿态参数。
在一些方面中,至少一个对象包括单手。在此类方面中,上述方法、装置和计算机可读介质可以进一步包括:使用机器学习系统从图像中确定多个对象关键点,多个对象关键点与跟单手相关联的对象相关联;以及基于多个对象关键点来确定用于对象的姿态参数。
在一些方面中,多个关键点中的每个关键点都对应于至少一个对象的关节。
在一些方面中,为了基于多个关键点从机器学习系统中确定多个特征,上述方法、装置和计算机可读介质可以进一步包括:从机器学习系统的第一特征图中确定与多个关键点相对应的第一特征集合,第一特征图包括第一分辨率;以及从机器学习系统的第二特征图中确定与多个关键点相对应的第二特征集合,第二特征图包括第二分辨率。
在一些方面中,上述方法、装置和计算机可读介质可以进一步包括:针对多个关键点中的每个关键点生成特征表示,其中,使用针对每个关键点的特征表示将多个特征分类为多个关节类型。在一些情况下,针对每个关键点的特征表示包括编码向量。
在一些方面中,机器学习系统包括神经网络,该神经网络使用图像作为输入。
在一些方面中,多个特征由变换器神经网络的编码器分类为多个关节类型,并且被确定用于至少一个对象的姿态参数由变换器神经网络的解码器基于多个关节类型来确定。
在一些方面中,姿态参数基于多个关节类型并且基于一个或多个经学习的关节查询被确定用于至少一个对象。在一些情况下,至少一个对象包括第一对象和第二对象。在这种情况下,一个或多个经学习的关节查询可以用于预测在第一对象与第二对象之间的相对平移、对象形状参数集合以及相机模型参数中的至少一者。
在一些方面中,用于至少一个对象的姿态参数包括针对多个关节类型中的每个关节的三维向量。在一些情况下,针对多个关节类型中的每个关节的三维向量包括水平分量、垂直分量和深度分量。在一些情况下,针对多个关节类型中的每个关节的三维向量包括每个关节和与每个关节相关联的父关节之间的向量。
在一些方面中,用于至少一个对象的姿态参数包括每个关节的位置,以及在每个关节的深度和与每个关节相关联的父关节的深度之间的差。
在一些方面中,用于至少一个对象的姿态参数包括至少一个对象相对于图像中另一对象的平移。
在一些方面中,用于至少一个对象的姿态参数包括至少一只手的形状。
在一些方面中,上述方法、装置和计算机可读介质可以进一步包括基于姿态参数来确定用户输入。
在一些方面中,上述方法、装置和计算机可读介质可以进一步包括基于姿态参数来渲染虚拟内容。
在一些方面中,装置可以包括移动设备(例如,移动电话或所谓的“智能手机”)、可穿戴设备、扩展现实设备(例如,虚拟现实(VR)设备、增强现实(AR)设备或混合现实(MR)设备,诸如头戴式显示器(HMD)、XR眼镜等)、个人计算机、膝上型计算机、车辆(或车辆的计算设备或组件)、服务器计算机、电视机、视频游戏机或其它设备,或者是上述设备的一部分。在一些方面中,该装置还包括用于捕捉一个或多个图像或视频帧的至少一个相机。例如,该装置可以包括用于捕捉一个或多个图像和/或包括视频帧的一个或多个视频的一个相机(例如,RGB相机)或多个相机。在一些方面中,该装置包括显示器,显示器用于显示一个或多个图像、一个或多个3D模型、一个或多个视频、一个或多个通知、其任意组合和/或其它可显示数据。在一些方面中,该装置包括发射机,其被配置为通过传输介质向至少一个设备发送数据(例如,代表图像、视频、3D模型等的数据)。在一些方面中,处理器包括神经处理单元(NPU)、中央处理单元(CPU)、图形处理单元(GPU)或其它处理设备或组件。
该发明内容既不旨在标识所要求保护的主题的关键或必要特征,也不旨在孤立地用于确定所要求保护的主题的范围。主题应当参照本专利的整个说明书的适当的部分、任何或者全部的附图、以及每条权利要求来理解。
在参照以下说明书、权利要求以及附图之后,前述内容以及其它特征和实施例将变得更加显而易见。
附图说明
下文参照以下附图来详细地描述本申请的说明性实施例:
图1A-图1D是示出根据一些示例的图像中手的交互的示例的图像;
图2A是示出根据一些示例的姿态估计系统的示例的图;
图2B是示出根据一些示例的从输入图像确定一个或多个对象的姿态的过程的示例的图;
图3是示出根据一些示例的从输入图像确定一个或多个对象的姿态的过程的另一示例的图;
图4是示出根据一些示例的具有各种关节和相关联的关节标签或标识符的手的示例的图;
图5包括根据一些示例的来自H2O-3D数据集和注释的姿态的示例图像;
图6是示出根据一些示例的用于右手的三个关节查询的交叉关注的图;
图7是示出根据一些示例的确定一个或多个对象的一个或多个姿态的过程的示例的流程图;
图8是示出根据一些示例的深度学习神经网络的示例的方框图;
图9是示出根据一些示例的卷积神经网络(CNN)的示例的方框图;
图10示出了根据一些示例的可以实现本文描述的技术中的一种或多种技术的计算系统的示例。
具体实施方式
以下提供本公开内容的某些方面和实施例。如对于本领域技术人员将是显而易见的,这些方面和实施例中的一些可以独立地应用,并且它们中的一些可以组合应用。在以下描述中,出于解释的目的,阐述了具体细节,以便提供对本申请的实施例的透彻理解。然而,将显而易见的是,可以在没有这些特定细节的情况下实践各个实施例。附图和描述不旨在是限制性的。
随后的描述仅提供示例实施例,而不旨在限制本公开内容的范围、适用性或配置。而是,对示例实施例的随后描述将向本领域技术人员提供用于实现示例实施例的实现描述。应当理解的是,在不脱离如所附权利要求所阐述的本申请的精神和范围的情况下,可以对元素的功能和安排做出各种改变。
如上所述,系统可以确定在图像或帧中的对象的姿态。术语图像和帧在本文中互换地使用。例如,图像或帧可以指独立图像(例如,静止图像),可以指来自帧序列(例如,来自视频)的图像或帧,可以指包括深度信息的深度图像和/或其它类型的图像或帧。姿态可以包括位置(例如,三维平移)和方位(例如,俯仰、翻滚和偏航)。在一些情况下,系统可以使用姿态生成模型(例如,三维模型)来表示对象。被确定用于图像中的对象的姿态(以及在一些情况下利用确定的姿态生成的模型)可以用于促进各种系统和/或应用的高效操作。可以利用姿态信息的系统和应用的示例包括扩展现实(XR)系统(例如,增强现实(AR)系统、虚拟现实(VR)系统和/或混合现实(MR)系统)、机器人、汽车和航空、3D场景理解、对象抓取、对象跟踪和/或其它系统和应用。
在一个示例中,基于确定图像中对象的姿态,系统可以利用确定的姿态生成对象的三维(3D)模型。三维模型可以被显示(例如,由移动设备、由XR系统和/或由其它系统或设备),用于确定由3D模型表示的对象的位置(例如,用于场景理解和/或导航、用于对象抓取、用于自动驾驶车辆操作和/或用于其它用途),以及其它用途。
例如,在一些AR系统中,用户可以查看包括将人工或虚拟图形与用户的自然环境相结合的图像。在一些情况下,用户可以通过AR系统的显示器(例如,AR眼镜的镜片)来查看真实世界,其中,还可以显示虚拟对象或图形。在一些情况下,用户查看真实世界环境的图像以及虚拟对象或图形。此类AR应用程序允许处理真实图像,以将虚拟对象添加到图像,并且在多个维度上将虚拟对象与图像对齐。例如,现实中存在的真实世界对象可以使用与真实世界对象相似或完全匹配的模型来表示。在一个示例中,当用户继续查看AR环境中的他的或她的自然环境时,虚拟飞机的模型可以在AR设备(例如,眼镜、护目镜或其它设备)的视图中呈现,该模型表示坐在跑道上的真实飞机。观众可能能够在查看真实世界场景的同时操纵模型。在另一示例中,坐在桌子上的实际对象在AR环境中可以利用具有不同颜色或不同物理属性的模型来识别和渲染。在一些情况下,现实中不存在的人造虚拟对象或用户的自然环境的实际对象或结构的计算机生成的副本还可以被添加到AR环境。
确定图像中的对象的准确姿态可以有助于生成对象的精确定位的和定向的表示(例如,3D模型)。例如,3D手部姿态估计有可能诸如通过使其更高效和/或更直观来增强各种系统和应用(例如,XR系统(诸如VR、AR、MR等)与计算机和机器人的交互等)。在使用AR系统作为说明性示例的一种情况下,改进3D手姿态估计可以允许AR系统更准确地解释来自用户的基于手势的输入。在另一示例中,改进的3D手估计可以通过允许系统准确地确定手在一个或多个图像(例如,图像或帧的视频)中的正确位置和方位来大大提高远程控制操作(例如,自动驾驶汽车的远程操作、使用机器人系统的远程手术等)的准确性。
在一些情况下,准确地确定某些对象的姿态可能是困难的。例如,确定或估计图像中彼此交互的对象的姿态可能是困难的。在一个说明性示例中,用户的一只手可以与图像中的用户的另一只手密切交互。图1A-图1D是示出手的密切交互的示例的图像。例如,如图1A所示,用户的右手102与左手104以重叠的方式紧握在一起,这造成关于哪些手指和关节在哪只手下面的遮挡和模糊。如图1B所示,用户的右手102和左手104合在一起,其中,右手102的指尖接触左手104的指尖。如图1C所示,用户的右手102正在抓着左手104。在图1D中,右手102和左手104合在一起,其中,两只手102、104的手指在垂直方向(相对于图像平面)上交替。
如上所述,确定图像中彼此交互的对象(例如,图1B-图1D中所示的手)的姿态可能是具有挑战性的问题。使用手作为说明性示例,手的关节可以从图像中识别,并且用于确定手的姿态。然而,在手的关节之间可能存在遮挡,以及关于图像中可见的哪些关节属于哪只手的不确定性。参考图1A-图1D作为说明性示例,系统可能无法轻易确定哪些关节属于右手102并且哪些关节属于左手104。此外,由于遮挡,关节中的一些关节可能不可见(例如,图1A中的图像中的拇指关节、图1D中的左手104的关节中的一些关节等)。在处理具有正在交互的其它对象的图像时,会出现类似的问题,这导致遮挡和/或其它模糊。例如,图像可能包含用户拿着咖啡杯的一只或多只手。但是,由于(一只或多只)手彼此交互并且(一只或多只)手与咖啡杯的交互,一只手或两只手的一部分和/或咖啡杯的一部分可能被遮挡。
根据深度图和单色图像(例如,具有每个像素红色(R)分量、蓝色(B)分量和绿色(G)分量的图像(称为RGB图像)、包括每个像素亮度(luma)或亮度(luminance)分量Y和色度(chroma)或色度(chrominance)分量U和V或Cb和Cr的YUV或YCbCr图像、或其它类型的图像)进行单手姿态估计已经取得重大进展。能够确定RGB图像中的对象的姿态可以是有吸引力的,因为它不要求消耗大量功率(例如,基于持续活动的传感器)的活动传感器(例如,深度传感器)。已经提出了许多用于执行手姿态估计(例如使用利用不同的卷积网络架构直接预测3D关节位置或角度以及依赖渲染进行精细姿态估计和跟踪)的方法。
与单手姿态估计相比,双手姿态估计的进展较小。与单手姿态估计相比,双手姿态估计问题可能更加困难。例如,图像中两只手的关节之间外观相似,可能很难准确识别手关节(例如,如图1A-图1D所示)。此外,一只手的关节中的一些关节很可能被另一只手或相同只手遮挡(例如,如图1A-图1D所示)。在这种情况下,现有解决方案无法正确估计手姿态。例如,在独立预测它们的3D姿态之前首先检测左手和右手在双手彼此密切交互的场景中执行很差,例如图1A-图1D所示。在另一示例中,在试图识别图像中的关节时,首先估计2D关节位置及其深度的自下而上的方法可能很难处理关节相似性和遮挡。
本文描述了用于执行用于确定或估计图像中的对象(例如,手、一只手和物理对象等)的姿态的基于关键点的采样的系统、方法(还称为过程)、装置和计算机可读介质(统称为“系统和技术”)。本文描述的系统和技术可以用于确定一个或多个图像中任何类型的对象或对象的组合(例如,相同类型的对象、不同类型的对象等)的姿态。例如,这些系统和技术可以用于估计或确定图像中人的两只手的姿态、一只手的姿态和相对于该一只手定位的物理对象的姿态(例如,由该一只手拿着或靠近该一只手(诸如被该一只手遮挡)的杯子或其它对象)、人的两只手的姿态和相对于两只手中的一只手或两只手定位的物理对象的姿态、和/或图像中其它类型的对象的姿态。虽然本文使用手和与手进行交互或靠近手的对象作为对象的说明性示例来描述了示例,但是将理解的是,这些系统和技术可以用于确定任何类型的对象的姿态。
图2A是示出姿态估计系统200的示例的图,姿态估计系统200被配置为执行用于确定或估计图像中对象的姿态的基于关键点的采样。姿态估计系统200包括一个或多个图像传感器224、存储器226、一个或多个深度传感器222(例如,其是可选的,如通过图2A中所示的虚线轮廓指示的)、处理系统230、关键点确定引擎250、特征确定引擎254和姿态估计引擎256。在一些示例中,关键点确定引擎250包括机器学习系统252,其可以包括一个或多个神经网络和/或其它机器学习系统。在一个说明性示例中,关键点确定引擎250的机器学习系统252可以包括U网神经网络。在一些示例中,姿态估计引擎256包括机器学习系统257,其可以包括一个或多个神经网络和/或其它机器学习系统。在一个说明性示例中,姿态估计引擎256的机器学习系统257可以包括变换器神经网络(例如,包括变换器编码器和变换器解码器)。下文关于图8和图9描述了神经网络的说明性示例。
处理系统230可以包括组件,例如包括但不限于中央处理单元(CPU)232、图形处理单元(GPU)234、数字信号处理器(DSP)236、图像信号处理器(ISP)238、高速缓冲存储器251和/或存储器253等,处理系统230可以使用这些组件执行本文描述的操作中的一个或多个操作。例如,CPU 232、GPU 234、DSP 236和/或ISP 238可以包括电子电路或其它电子硬件,诸如一个或多个可编程电子电路。CPU 232、GPU 234、DSP 236和/或ISP 238可以实现或执行计算机软件、固件或其任意组合,以执行本文描述的各种操作。软件和/或固件可以包括在计算机可读存储介质上存储并且可由处理系统230的一个或多个处理器执行的一个或多个指令。在一些情况下,CPU 232、GPU 234、DSP 236和/或ISP 238中的一者或多者可以实现关键点确定引擎250、特征确定引擎254和/或姿态估计引擎256。应该注意的是,在一些示例中,处理系统230可以实现未在图2A中示出的一个或多个计算引擎。出于说明和解释的目的本文提供了关键点确定引擎250、特征确定引擎254和姿态估计引擎256,并且为简单起见,未示出其它可能的计算引擎。
姿态估计系统200可以是单个计算设备或多个计算设备的一部分或者由单个计算设备或多个计算设备实现。在一些示例中,姿态估计系统200可以是一个(或多个)电子设备的一部分,例如扩展现实(XR)设备(例如,用于渲染虚拟现实(VR)、增强现实(AR)、和/或混合现实(MR)的头戴式显示器(HMD)、XR眼镜等、AR眼镜或其它扩展现实设备)、平视显示器(HUD)、移动设备(例如,智能手机、蜂窝电话或其它移动设备)、车辆或车辆中的计算组件或系统(例如,自动驾驶车辆或人类驾驶车辆)、相机系统或设备(例如,数字相机、相机电话、视频电话、IP相机、视频相机、安全相机或其它相机系统或设备)、膝上型计算机或笔记本计算机、平板计算机、机顶盒、电视、显示设备、数字媒体播放器、游戏机、视频流设备、无人机、物联网(IoT)设备、智能可穿戴设备或任何其它合适的电子设备。
在一些实现方式中,一个或多个深度传感器222、图像传感器224、存储装置226、处理系统230、关键点确定引擎250、特征确定引擎254和姿态估计引擎256可以是相同计算设备的一部分。例如,在一些情况下,一个或多个深度传感器222、图像传感器224、存储装置226、处理系统230、关键点确定引擎250、特征确定引擎254和姿态估计引擎256可以集成到XR设备、车辆的计算系统、智能手机、相机、膝上型计算机、平板计算机、智能可穿戴设备、HMD、IoT设备、游戏系统和/或任何其它计算设备中。然而,在一些实现方式中,深度传感器222、图像传感器224、存储装置226、处理系统230、关键点确定引擎250、特征确定引擎254和/或姿态估计引擎256中的一者或多者可以是两个或更多个独立计算设备的一部分,或由两个或更多个独立计算设备来实现。
图2B是示出可以由姿态估计系统200执行用于从输入图像中确定一个或多个对象的姿态的过程260的说明性示例的图。姿态估计系统200可以从图像源(未示出)获得输入图像,诸如图2B中所示的输入图像261。图像源可以包括一个或多个图像传感器(例如,相机)(被包括在姿态估计系统200中或与姿态估计系统200相通信)、图像和/或视频存储设备(例如,存储装置226或系统200或另一系统或设备的其它存储设备)、包含已存储图像的图像和/或视频档案、提供图像和/或视频数据的图像和/或视频服务器或内容提供商、从视频服务器或内容提供商接收图像的图像和/或视频馈送接口、用于生成计算机图形图像和/或视频数据的计算机图形系统、此类源的组合、或图像帧内容的其它源。在一些情况下,多个图像源(例如,多个图像传感器、多个存储设备等)可以向姿态估计系统200提供图像。图像可以是具有每像素红色、绿色、蓝色分量的红-绿-蓝(RGB)图像;具有每像素亮度分量和两个色度(颜色)分量(色度-红色和色度-蓝色)的亮度、色度-红色、色度-蓝色(YCbCr)图像;或任何其它合适类型的颜色图像或单色图像。在一些情况下,图像可以包括深度信息,例如包含RGB颜色分量和每个像素深度信息的RGB深度(RGB-D)图像。
在图2B的过程260的框262处,关键点确定引擎250可以处理输入图像261,以确定与图像261中的一个或多个对象(例如,一只手、多只手或其它对象)相关联的关键点。在一个说明性示例中,关键点可以使用机器学习系统252从图像261中确定。例如,图像261可以被输入到机器学习系统252。机器学习系统252可以处理图像261,以输出从图像261中检测到的关键点。机器学习系统252可以包括被训练以从图像中确定关键点(例如使用关于图8和图9描述的反向传播技术)的神经网络。
关键点对应于图像261中的一个或多个对象的特定部分。在一个说明性示例中,图像261可以包括一只或多只手。在一些情况下,图像261可以包括由一只或多只手握住或靠近一只或多只手(例如,被一只或多只手遮挡)的物理对象。在这种示例中,每个关键点都可以对应于图像261中的一只或多只手的关节(并且在一些情况下,对应于手所持或靠近手的物理对象的点)。在一些情况下,机器学习系统252可以处理图像261,以生成与输入图像相关联的图(其可以称为热图)或点阵列,诸如图2B中所示的图263。图或阵列可以是二维(2D)图或点阵列。例如,图可以是一个具有2D数字阵列的图像,其中每个数字包括在值的特定范围内(例如,在0到1之间的值范围)的值。
在一些示例中,关键点确定引擎250(例如,机器学习系统252)可以至少部分地通过从图263中提取一只或多只手(和/或物理对象)的关节的候选2D位置集合来确定与图像261中的一只或多只手(以及在一些情况下,物理对象)相关联的关键点。在一个示例中,关键点确定引擎250(例如,机器学习系统252)选择图263的极值作为关节的候选2D位置集合。例如,在图263中与图像261中感兴趣的特征(例如,一只或多只手的关节)相对应的位置处,图263可以具有接近(例如,在门限差内,诸如0.1、0.15、0.2等)图263的可能值的范围的最大值(例如,当范围包括在0和1之间的值时,该示例中为1的值)的值。由关键点确定引擎250选择的极值可以包括图263中接近最大值的位置(例如,值接近1的位置),诸如在门限差内。在一些示例中,关键点确定引擎250可以使用非最大值抑制技术来确保两个极值彼此不过于接近。
虽然本文中使用关节作为手的表示特征,但是手的其它部分可以用于其它示例中。在一些实现方式中,当一个或多个物理对象在图像中(例如,被一只或多只手握住或靠近一只或多只手)时,关键点确定引擎250可以针对手生成图(例如,图263),并且可以针对一个或多个对象生成单独的图。在一些示例中,当图像包括手以外的一个或多个物理对象时,关键点确定引擎250(例如,使用机器学习系统252)可以执行对象分割,以将一个或多个物理对象从背景和/或图像中的其它对象(例如,从图像中的一只或多只手)中分割出来。例如,关键点确定引擎250可以生成包括与一个或多个对象相对应的值的分割图或图像。关键点确定引擎250可以在分割图内选择(例如,通过随机选择)点,并且将所选择的点用作一个或多个对象的关键点。在图像包括一个或多个对象和一只或多只手的示例中,关键点确定引擎250还可以针对一只或多只手生成图(例如,图263,诸如热图),并且针对一只或多只手确定关键点,如上所述。
在一些情况下,不要求所有关键点位置都正确对应于图像261中的一个或多个对象(例如,手的关节)的特定部分。在一些情况下,图像261中的一个或多个对象的所有特定部分(例如,图像261中的一只或多只手的所有关节)可能无法从图像261中检测到,例如,由于遮挡和/或其它因素。
在图2B的过程260的框264处,姿态估计系统200的特征确定引擎254可以基于从图像261确定的关键点来确定特征。例如,如上所述,机器学习系统252可以包括用于确定关键点(例如,基于2D图263)的神经网络。机器学习系统252的神经网络可以包括用于处理图像261的图像数据的多个层(例如,卷积层,卷积层之后可以跟随有其它层,诸如池化层、激活功能等)。如关于图8和图9所描述的,每一层都可以包括用于处理与图像261相关联的数据的滤波器或节点,从而导致由每一层生成的一个或多个特征图(或特征阵列)。特征图可以被存储在诸如存储装置226中。例如,每个滤波器或节点可以包括参数值阵列(例如,权重、偏置等),这些参数值应用于机器学习系统252的神经网络中的前一层的输出。可以在训练期间调谐参数值,如关于图8和图9的示例所描述的。在一个说明性示例中,机器学习系统252的神经网络包括U网神经网络,其包括编码器部分和解码器部分。
使用关键点,特征确定引擎254可以从机器学习系统252的神经网络的某些层(例如,最后M层,其中M为正整数值)的特征图中的一个或多个特征图中确定或提取特征。例如,特征图中共享与2D图263中的关键点相同的空间位置(在2D中)的特征可以被提取用于表示关键点。在一些示例中,特征确定引擎254可以确定来自机器学习系统252的神经网络的解码器部分的多个层的线性插值特征,由于每层具有不同的尺度或分辨率,因此产生多尺度特征。在一些情况下,当特征图与由机器学习系统252的神经网络输出的2D图相比较具有不同的分辨率或维度时,特征图或2D图可以被放大或缩小,使得特征图和2D图具有相同的分辨率。在一个说明性示例中,图263可以具有128x128像素(在水平和垂直方向上)的分辨率,并且来自各个层的特征图可以具有不同的分辨率。图263可以被放大(通过提高分辨率)或缩小(通过降低分辨率),以与从其提取特征的每个特征图的分辨率相匹配。这种缩放可以允许特征确定引擎254从特征图内的正确位置(例如,精确对应于图263中的关键点的位置)提取特征。
特征确定引擎254可以生成用于表示所确定的特征的特征表示。特征表示的一个示例是特征向量。在一些情况下,特征确定引擎254可以针对由关键点确定引擎250确定的每个关键点确定特征表示(例如,特征向量)。例如,特征确定引擎254可以组合来自机器学习系统252的神经网络中的与特定关键点相对应的多个层的特征(例如,通过串接特征),以形成针对特定关键点的单个特征向量。在一个示例中,对于图263中的位置(3,7)处的关键点(对应于图263的2D阵列中的第三列和第七行),特征确定引擎254可以将来自神经网络的各种特征图中与位置(3,7)相对应的所有特征组合(例如,串接)成单个特征向量。在一些示例中,特征表示可以作为来自图263的位置的外观和空间编码来生成。例如,如下文更详细描述的,特征确定引擎254可以将位置编码与针对特定关键点提取的特征进行组合(例如,串接),以形成针对特定关键点的特征表示(例如,特征向量)。
姿态估计引擎256可以使用特征表示作为输入,用于确定一个或多个对象的特定部分(例如,一只或多只手的关节)的正确配置以及一个或多个对象的3D姿态(例如,图像中两只手的3D姿态、一只或多只手以及由手握住或靠近手的物理对象的3D姿态等)。例如,在图2B的过程260的框266处,机器学习系统257的编码器可以处理由特征确定引擎254输出的特征表示,以确定一个或多个对象的特定部分的分类。例如,机器学习系统257的神经网络的编码器可以处理图像261中的一只或多只手的特征表示,以确定针对特征表示中的每个特征表示的关节类别或关节类型。关节类别(或分类)如图2B的图像267所示。在图2B的过程260的框268处,机器学习系统257的神经网络的解码器可以处理分类(以及在一些情况下,经学习的查询,例如下文描述的经学习的关节查询),以确定图像261中的一个或多个对象的3D姿态(图像269中所示)。例如,使用分类和经学习的查询,机器学习系统257的神经网络的解码器可以确定图像261中的一只或多只手的3D姿态和/或由一只或多只手所持或靠近一只或多只手(例如,被一只或多只手遮挡)的物理对象的姿态。机器学习系统257可以包括独立于机器学习系统252的神经网络的神经网络。在一个说明性示例中,机器学习系统257的神经网络包括变换器神经网络,其包括变换器编码器和变换器解码器。如下文详细描述的,一只或多只手(和/或物理对象)的3D姿态可以使用各种类型的姿态表示(例如,父相对关节向量、父相对2.5维(2.5D)姿态或关节角度(或其它点角度))来确定。
如上所述,双手姿态估计可能是困难的,并且现有的解决方案由于各种原因存在不足。图2A中的姿态估计系统200可以用于识别两只手的关节(或一只手或两只手的关节以及图像中由一只或多只手握住或靠近一只或多只手的另一个物理对象上的点的位置),并且使用机器学习系统257的神经网络(例如,变换器神经网络)联合预测它们的3D位置和/或角度,如本文所描述的。例如,如上所述,关键点确定引擎250和特征确定引擎254可以使用所确定的关键点(例如,被确定为在2D图或热图中的局部最大值)在2D中定位关节,这可以导致准确的3D姿态。在这一阶段,关键点可能尚未与特定关节相关联。在一些情况下,一个或多个关键点可能完全不对应于关节,并且一些关节点可能无法被检测为关键点(例如,由于遮挡或其它因素)。不过,关键点可以针对预测用于双手(和/或一只或两只手以及图像中由一只或多只手握住或靠近一只或多只手的物理对象)的准确3D姿态提供有用的起点。姿态估计引擎256可以使用端到端训练的机器学习系统257的神经网络(例如,变换器编码器-解码器架构)以及用于检测关键点的机器学习系统252的神经网络来执行关节关联(或分类)和姿态估计。这种系统架构协同分析输入图像中的手关节位置,与其它现有方法相比,这能得出更可靠的姿态估计,例如在手和/或其它物理对象密切交互期间。机器学习系统257的神经网络架构(例如,变换器神经网络架构)还可以接受不同数量的输入,允许系统处理在不同输入图像中可以检测到不同数量的关键点这一事实。变换器神经网络的自我关注和输入数量变化的两个特性可以允许机器学习系统257准确地确定图像中的手和/或其它物理对象的3D姿态。
如前所述,在一些实现方式中,姿态估计引擎256的机器学习系统257可以包括变换器神经网络。变换器架构可以被设计为从输入图像(例如,RGB图像)中估计单手姿态、双手姿态和手-对象姿态(其中,图像中的一只或多只手正在握住或靠近物理对象)。变换器神经网络可以对图像中的不同位置(例如,每个位置)的特征之间的关系进行建模,在一些情况下,这可能随着特征图的分辨率的提高而增加计算复杂度。一般来说,由于变换器神经网络的这种约束,变换器通常在较低分辨率特征图上工作,较低分辨率特征图无法捕捉到更精细的图像细节,诸如间距较近的手关节。如下文提供的实验结果所指示的,较低分辨率特征图可能不足以准确估计手姿态。解决这一问题的一个解决方案是,允许每个空间位置的特征关注来自跨越不同尺度的采样位置的小特征集合,从而更准确地检测到图像中的小对象。姿态估计系统200可以对来自高分辨率和低分辨率特征图中的采样特征之间的关系进行建模,其中采样位置是由卷积神经网络(CNN)提供的关键点,CNN在检测更精细的图像细节方面是高效的。对于姿态估计的任务,稀疏采样特征在准确估计手和/或物理对象在密切彼此交动时的3D姿态方面是高效的。
图3是示出可以由姿态估计系统200执行的过程300的另一示例的图。在示例过程300中,U网神经网络(包括编码器部分和解码器部分)用作关键点确定引擎250的机器学习系统252的示例实现方式,并且变换器神经网络(包括变换器编码器366和变换器解码器368)用作姿态估计引擎256的机器学习系统257的示例实现方式。过程300将被描述为估计图像中两只手(例如,图1A中的图像的两只手)的姿态。然而,将理解的是,过程300可以用于估计单手的姿态和正在被该手握住或靠近该手(例如,被该手遮挡或遮挡该手)的物理对象(例如,瓶子)的姿态、两只手的姿态和被这两只手握住或靠近这两只手的一个或多个物理对象的姿态、和/或正在彼此交互(例如,彼此接触、彼此遮挡等)的两个或更多个的物理对象的姿态。
在操作362处,姿态估计系统200的机器学习系统252可以处理输入图像361以生成关键点热图363。如上所述,机器学习系统252在图3中被示为U网神经网络。机器学习系统252可以执行关键点检测,以(从关键点热图363中)检测出可能与输入图像361中的2D手位置相对应的关键点。在操作364处,姿态估计系统200的特征确定引擎254可以对基于来自热图363的关键点从机器学习系统252中提取的特征进行编码(例如,编码为特征向量)。例如,特征确定引擎254可以使用关键点来确定从由U网神经网络的解码器部分生成的特征图中的一个或多个特征图中提取哪些特征。
在操作365处,姿态估计系统200可以使用编码特征作为变换器编码器366(其可以是姿态估计引擎256的机器学习系统257的一部分)的输入。变换器编码器366可以针对图像361中的一只或多只手的每个特征表示(对应于图像361中的每个可见关节)确定关节类型类别或类型。利用经学习的关节查询367(下文所述)和由变换器编码器366输出的关节类别,变换器解码器368可以预测相对于双手的每个关节的姿态参数。在一些情况下,变换器解码器368还可以预测额外参数,诸如在手之间的平移和/或手形状参数。在一些示例中,姿态估计系统200可以考虑变换器编码器366上的辅助损失以识别关键点。辅助损失可能不直接影响姿态估计,但是可以引导变换器解码器368选择更合适的特征,从而显著提高精度。
现在将描述关于过程300的操作362和364(执行关键点检测和编码)的进一步详情。在操作362处,给定输入图像361,关键点确定引擎250(例如,使用机器学习系统252)可以提取可能与2D手关节位置相对应的关键点。在一个说明性示例中,机器学习系统252可以使用U网架构从输入图像361预测关键点热图363(其可以表示为热图H)。所预测的热图363可以具有单通道(例如,单值,诸如如上文描述的在0和1之间的值)。例如,热图363可以具有128x128x1的维度(对应于128x1282D阵列,该2D阵列中的每个位置具有单值)。在一些情况下,关键点确定引擎250可以选择热图363的局部最大值作为关键点,如上文关于图2A所述。在一个说明性示例中,关键点确定引擎250可以例如通过确定热图363的N局部最大值来确定N个关键点的最大值(例如,具有N=100或其它整数值)。在此阶段,姿态估计系统200可能不尝试识别哪个关键点对应于哪个关节。
关键点确定引擎250可以通过在数个地面实况关节位置中的每个地面实况关节位置应用2D高斯核并且使用L2范数(L2norm)损失来学习预测热图来计算地面实况热图
地面实况关节位置可以包括注释的关节位置(用于训练的标签),注释的关节位置与用于训练(以及在一些情况下测试)的数据集一起提供。注释的关节位置标签可以作为训练数据,用于机器学习系统252和/或机器学习系统257的监督训练。例如,由等式(1)提供的损失函数可以用于基于由机器学习系统252输出的热图中的关节的预测位置和由标签提供的地面实况关节位置来确定损失。基于每个训练迭代或历元处的损失,可以调谐机器学习系统252的参数(例如,权重、偏置等),使损失最小化。
在一些情况下,U网架构使用ResNet架构直至C5层作为骨干,然后紧跟着是具有跳转连接的上采样层和卷积层。在一个说明性示例中,输入图像361可以具有256×256像素的分辨率,并且热图363可以具有128×128像素的分辨率。
在操作364处,特征确定引擎254然后可以从机器学习系统252的一个或多个特征图(例如,来自U网架构的解码器部分的全部或一些特征图)中提取每个关键点周围的特征。例如,在一些示例中,如图3中的点369a、369b、369c、369d、369e、369f、369g、369h和369i所示,特征确定引擎254可以确定来自U网解码器的多个层的线性插值特征。线性插值特征可以从特征图中提取。特征确定引擎254可以使用所提取的特征以及在一些情况下空间编码来将关键点表示为特征表示(例如,特征向量)。特征确定引擎254可以组合特征(例如,通过串接来自不同特征图的特征)以形成特征表示,诸如特征向量。例如,特征确定引擎254可以串接特征,以生成3968维(3968-D)特征向量。在一些情况下,特征确定引擎254可以使用三层多层感知器(MLP)将3968-D特征向量向下缩减为224-D编码向量。在一些示例中,特征确定引擎254可以进一步组合(例如,串接)空间或位置编码(例如,32-D正弦位置编码)。使用来自上文示例的224-D编码向量,可以将32-D正弦位置编码向量与224-D编码向量相结合,以形成每个关键点的256-D向量表示。每个关键点的256-D向量表示可以作为变换器编码器366的输入来提供。在一些情况下,通过非最大值抑制进行的关键点检测是无差别的,并且梯度在训练时不流经峰值检测操作。
特征确定引擎254可以将特征表示输出到存储装置226(在这种情况下,变换器编码器366可以从存储装置226获得特征表示),和/或可以将特征表示作为输入提供给变换器编码器366。变换器编码器366和变换器解码器368可以使用特征表示(例如,上述每个256-D向量表示)来预测输入图像361的中两只手的3D姿态。一旦执行了操作362和364,就针对每个关键点Ki生成编码向量例如,编码向量/>可以是上述256-D向量表示。变换器编码器366可以使用编码向量/>作为输入。变换器编码器366可以包括自我关注模块或引擎,自我关注模块或引擎可以对在与编码向量/>相关联的关键点之间的关系进行建模,并且可以生成全局上下文感知特征,全局上下文感知特征帮助将每个关键点与手关节进行关联(例如,通过将编码向量/>分类为关节类别或类型)。在一些实现方式中,为了帮助变换器编码器366对这种关系进行建模,可以使用辅助关节关联损失来训练变换器编码器366。使用经学习的关节查询367作为输入,变换器解码器368处理来自变换器编码器366的关节感知(基于关节类别或类型)特征,以预测输入图像361中的手的3D姿态。
由变换器解码器368使用的经学习的关节查询367可以与关节类型嵌入相对应。关节查询367可以通过解码器中的一系列自我关注和交叉关注模块进行变换。例如,对于每个关节查询,解码器368中的交叉关注模块或引擎可以从变换器编码器366中软选择最能表示正在被查询的手关节的特征,并且可以对所选择的特征进行变换(例如,通过将特征通过一个或多个层,诸如一个或多个MLP层)。例如,交叉关注模块或引擎可以通过确定特征的线性组合来软选择特征。经变换的特征可以被提供给变换器解码器368内的前馈网络(FFN),以预测与关节相关的姿态参数。FFN可以包括两个MLP层:一个线性投影层和一个具有标准交叉熵损失的softmax层。在一些示例中,可以使用多个解码器层。在一些情况下,变换器解码器368可以使用具有共享权重的FFN来预测每个解码器层之后的姿态。例如,可以在每一层之后应用交叉熵损失。用于关节类型预测的FFN可以跨层共享权重。在一些示例中,与关节查询367一起,变换器解码器368可以使用额外的经学习的查询来预测在手之间的相对平移/>MANO手形状参数/>(例如,其可以是10维或10-D)和/或弱透视相机模型参数(比例和2D平移/>)。
在一些示例中,通过执行邻近性测试可以获得(xi,yi)处针对检测到的关键点的地面实况关节类型。例如,如果关键点到最近关节的距离小于门限距离γ,则可以将该关键点指派为2D图像平面中最近关节的关节类型。当多个关节在距关键点的门限距离γ的距离内时,可以选择具有最小深度的关节作为该关键点的关节类型。如果门限距离γ内没有关节,则关键点可以被指派给背景类。在一些情况下,这种关节关联可能导致多个关键点被指派给单个关节类型。然而,如上所述,关节关联不直接用于姿态估计中,而是作为变换器解码器的指导,以针对姿态估计选择适当的特征。
姿态估计系统200可以针对输入图像中的一个或多个对象输出3D姿态258。在一些情况下,3D姿态可以包括定义输入图像中的对象的(例如,图像中的手的)方位和/或平移的3D姿态参数。如下所述,姿态参数可以使用各种姿态表示来定义。姿态估计系统200可以将3D姿态258用于各种目的,例如,以生成在所确定的姿态中的对象的3D模型,以基于姿态执行操作(例如,导航在对象周围的车辆、机器人设备或其它设备或系统),以及其它用途。在当生成3D模型的实现方式中,3D模型可以被显示(例如,由移动设备、由XR系统和/或由其它系统或设备),用于确定由3D模型表示的对象的位置(例如,用于场景理解和/或导航、用于对象抓取、用于自动驾驶车辆操作和/或用于其它用途),以及其它用途。
各种姿态表示和损失可以用于所估计的3D姿态258。在一些情况下,直接回归3D关节位置可以比回归模型参数(例如,来自CNN架构的MANO关节角度)更精确(就关节误差而言)。然而,对MANO关节角度进行回归提供了对在交互期间对接触进行建模和相互渗透或在弱监督设置下进行学习所需的完整的手网格的访问。姿态估计系统200可以被配置为输出多种类型的姿态表示(例如,3D关节位置和关节角度)。使用本文所述的技术,姿态估计系统200可以提供关节角度表示,同时实现与关节位置表示的性能相比具有竞争力的性能。
可以使用的姿态表示的示例包括父相对关节向量父相对2.5D姿态/>和MANO关节角度/>父相对关节向量和MANO关节角度可以是根相对姿态。对于父相对2.5D姿态,使用绝对根深度从估计参数重建完整姿态,从而得到绝对姿态。
在一些情况下,使用弱透视相机模型将每只手的根相对3D关节位置投影到图像平面
其中,Π表示正投影,指弱透视相机模型的比例参数,/>指弱透视相机模型的平移参数。
对于父相对关节向量表示,每个关节j可以与由Vj=J3D(j)-J3D(p(j))J3Dp(j)给出的3D“关节向量”Vj相关联,其中J3D是3D关节位置,并且p(j)是指点j的父关节索引。父相对关节向量/>表示的优点是,它定义了相对于其根的手姿态,而无需了解相机固有参数。当相机固有参数无法获得或需要大量计算来确定时,这种解决方案可以是有用的。
图4是示出具有各种关节的手的示例的图。图4中的每个关节根据关节类型具有标签,包括拇指指尖(F0)、食指指尖(F1)、中指指尖(F2)、无名指指尖(F3)、小指指尖(F4)、远端指间(DIP)关节、近端指间(PIP)关节、掌指(MCP)关节、指间(IP)关节和Carpo-Metacarpal(CMC)关节。每个关节具有父关节。在一个示例中,DIP关节的父关节是PIP关节,PIP关节的父关节是MCP关节,等等。使用父相对关节向量表示,3D向量可以从每个关节到其父关节(或替代地从父关节到子关节)确定。在一些情况下,可以确定每只手20个关节向量,例如针对图4中所示的每个关节到每个相应的父关节(或者替代地从父关节到每个相应的子关节)的一个关节向量。根据关节向量,姿态估计系统200可以通过执行累加函数(例如,通过对父相对关节向量求和)计算出每个关节的根相对3D位置。
当使用父相对关节向量表示时,姿态估计引擎256的机器学习系统257的神经网络可以使用3D关节损失(表示为/>)和关节向量损失(表示为/>其中/>和V*表示地面实况值)来训练。在一些情况下,机器学习系统257的神经网络可以使用重投影损失(被表示/>)进行训练,其中/>是地面实况2D关节位置,并且/>是弱透视相机投影(例如,上文等式(2)中定义的弱透视相机投影)。损失可以使用在估计值与地面实况值之间的L1距离来计算。姿态损失可以被定义为:/>
对于父相对2.5D姿态表示,每个关节被其2D位置J2D以及在其深度和其父关节的深度之间的差Zp参数化。然后,相机固有参数矩阵K、以及根(手腕)关节的绝对深度Zroot或手的比例用于在相机坐标系中重建手的3D姿态,如下所示:
其中,Zr是从Zp获得的关节的根相对深度,并且是J2D的x和y坐标。每个关节查询被用作变换器解码器368的输入,以预测针对20个关节中的每个关节和手腕上的点(图4中标记为“手腕”)的J2D和Zp。在一些情况下,当估计2.5D姿态时可以使用43个关节查询(包括针对相对手平移的一个查询,诸如在图4中的手腕位置处)。
姿态估计引擎256可以使用机器学习系统257分别预测根深度Zroot。例如,机器学习系统257的神经架构可以使用在2D关节位置和相对深度/>上的L1损失进行训练,其中/>和/>是所估计的2.5D姿态和地面实况2.5D姿态。姿态损失可以由/>给出。
在MANO关节角度表示中,每个3D手部姿态都可以由手部运动学树中的16个3D关节角度来表示。在这种示例中,为了训练姿态估计引擎256的机器学习系统257的神经网络架构,可以在3D关节位置关节角度/>和关节重投影/>上使用L1损失。总姿态损失可以由/>给出。关节角度损失可以表现为正则化,并且可以避免不切实际的姿态。在一些情况下,姿态估计引擎256仅可以估计该表示中的根相对姿态,并且因此可能不要求相机固有参数来估计姿态。因此,在无法获得相机固有参数的情况下,这种表示可能是有利的。
在一些示例中,姿态估计系统200(例如,机器学习系统252和机器学习系统257)可以通过执行端到端训练来端到端地进行训练,其中,所有阶段与最终损失相连接,如下所示:
在训练的最初几个历元期间(在这种情况下,所估计的关键点热图可能不太准确),地面实况热图可以被提供给多尺度特征采样器,并且之后切换到所估计的热图。
下表1示出了在InterHandV0.0数据集上具有三个不同姿态表示的本文描述的系统和技术的结果(表的最后三行)。如图3所示,与InterNet(在Gyeongsik Moon等人,“Interhand2.6m:A data set and baseline for 3d interacting hand poseestimation from a single rgb image”中描述的)相比,姿态估计系统200实现高出14%的精度。ECCV中,其使用CNN架构。
表1
针对表1的第一MANO关节角度条目的“*”指示根据拟合的MANO模型获得的地面实况3D关节。MPJPE测量在根关节对准后的在预测3D关节位置与地面实况3D关节位置之间的欧几里得(Euclidean)距离(单位为mm),并且指示根相对3D姿态的准确性。分别针对右手和左手执行对准。MRRPE以欧几里得距离测量左手相对于右手的定位(单位为mm)。InterNet系统使用完整的CNN架构来预测交互的手的2.5D姿态。即使在使用不要求相机固有参数来重建姿态的关节向量表示时,姿态估计系统200比InterNet实现了更好的精度,特别是关于交互的手。在预测类似的2.5D姿态时,姿态估计系统200在交互的手上实现了3mm(或14%)的改进。这些结果建议,使用变换器对属于手关节的CNN特征之间的关系进行明确建模比直接利用CNN估计姿态更准确。
父相对关节向量表示(其不要求相机固有参数来重建根相对姿态)也优于InterNet(其要求相机固有参数,并且精度略低于2.5D姿态表示)。这种精度下降可以归因于如下的事实:父相对关节向量表示完全预测3D姿态,而2.5D表示则不同,2.5D表示部分预测2D姿态,并且依赖已知的相机固有参数将姿态投影到3D。表1还示出,使用MANO关节角度表示,姿态估计系统200类似于InterNet执行,InterNet输出直接的3D关节位置。这是重要的,因为估计关节角度表示或其PCA分量的先前工作已经报告了通常不如直接估计3D关节位置的方法的结果,这表明回归模型参数比估计关节位置更难。在变换器架构的帮助下,软选择特定于输入图像中的每个关节位置的多尺度CNN特征的上文描述的机器学习系统257的示例神经网络架构实现了对任何关节相关的参数的准确估计,而与其表示无关。
可以在其上评估姿态估计系统200的另一数据集是HO-3D数据集。当估计一只或多只手的姿态以及由该手握住或靠近该手的对象的姿态时,HO-3D数据集有助于评估姿态估计系统200。HO-3D数据集包括仅有右手和来自YCB对象数据集的10个对象的手-对象交互序列。用于使用HO-3D数据集进行训练的注释可以自动获得,并且可以包括66,000张训练图像和11,000张测试图像。在一些情况下,可以使用20个手姿态关节查询、一个弱透视相机模型参数查询和二个对象姿态查询。根关节的缩放平移对齐后的平均关节误差和曲线下面积(AUC)度量可以用于评估手姿态结果。对象姿态可以相对于手的参照系进行计算。平均3D角误差可以用来评估对象姿态的准确性。在一些情况下,可以使用3D角误差的变型来考虑对象对称性,其中/>和P*分别指估计姿态矩阵和地面实况姿态矩阵。对象姿态误差度量可以定义为:/>
其中Bi表示对象边界框的第i个角,并且S表示不改变对象外观的对象的3D旋转集。HO-3D的测试集包含三个可见对象(芥末瓶、漂白清洁剂和罐装肉)和一个在训练数据中未见的对象。仅可见对象用于下面的评估。手姿态可以使用关节向量表示来估计,并且该技术可以在256x256松散裁剪的图像斑块上进行训练和测试。
下表2示出了在HO-3D数据集上评估的姿态估计系统200相对于其它方法的准确性,所述其它方法包括由Shreyas Hampali等人在2020年CVPR中“Honnotate:Amethodfor3dannotationofhandandobjectposes,”(下文称为“Honnotate”)所描述的技术;由YanaHasson等人在2019年CVPR中“Learning joint reconstruction of hands andmanipulated objects,”(下文称为“Learning Joint Reconstruction(学习关节重建)”)所描述的技术;以及由Yana Hasson等人在2020年CVPR中“Leveraging photometricconsistency over time for sparsely supervised hand-object reconstruction,”(下文称为“Leveraging Photometric Consistency(利用光度一致性)”)所描述的技术。
下表3比较了使用姿态估计系统和使用平均对象角误差的"利用光度一致性"估计的对象姿态的准确性。利用光度一致性使用CNN骨干以及随后的全连接层来估计对象姿态,全连接层在摄像头坐标系中回归对象旋转(轴角表示)和对象平移。由于利用光度一致性不考虑对象的对称性,因此在训练和测试中考虑和不考虑对称性的情况下显示结果。姿态估计系统200获得更精确的手相对对象姿态。如表2和表3所示,姿态估计系统200比现有方法执行得好得多。所有误差均以厘米(cm)为单位。
表2
表3
引入被称为H2O-3D数据集的数据集,该数据集包含双手+对象3D姿态注释并且是自动注释的数据集。该数据集是利用六个受试者使用双手操纵具有功能意图的十个不同的YCB对象来捕获的。该数据集是在具有五个RGB深度(RGBD)相机的多视角设置中捕获的,并且包括50,000个训练图像和12,000个测试图像。H2O-3D数据集可以比先前的手交互数据集更具挑战性,因为在手和对象之间的大量遮挡。图5包括来自H2O-3D数据集的示例图像和注释姿态。姿态估计系统200可以估计两只手姿态的父相对关节向量表示(40个关节查询)、左手的右手相对平移(1个查询)以及右手相对对象姿态(2个查询),在变换器解码器处总共43个查询。可以使用来自HO-3D数据集的训练数据,并且可以在训练期间随机翻转图像,以获得仅右手和左手图像。然后,可以将该数据与H2O-3D训练数据集进行组合。H2O-3D的测试集包括在训练数据中可见的三个对象(水罐底座、漂白清洁剂和电钻)。仅在这些对象上才可以评估对象姿态估计准确性。
在根关节对齐后,使用MPJPE度量来评估手姿态的准确性,以及使用MRRPE度量来评估手之间的相对平移。使用等式(5)中定义的对称感知平均3D角距离度量来评估对象姿态。下表5示出了在H2O-3D数据集上使用姿态估计系统200估计手姿态的准确性。由于大量相互遮挡,据观察,估计双手之间的平移更具挑战性。表4示出了由姿态估计系统200估计的对象姿态的准确性。
表4
表5
图6是示出右手的三个关节查询的交叉关注的图,右手的三个关节查询包括食指指尖关节(红色)、中指PIP关节(蓝色)和小指MCP关节(黄色)。第一列包括输入图像,并且第二列包括由关键点确定引擎250针对输入图像生成的关键点热图。对于每个关节查询,第三列(标记为“关节关注”)中相应的有颜色的圆指示由该查询关注的关键点的位置。关节关注列中的圆的半径与关注权重成正比。对于每个关节查询,图3的变换器解码器368(作为可以用于姿态估计引擎256的机器学习系统257的神经网络的示例)可以仅从关节的位置中选择图像特征。关节特定特征使得能够估计不同的关节相关姿态参数,诸如关节角度和关节向量。针对输入图像的输出姿态在图6的第四列中示出。
图7示出了使用本文所描述的技术确定一个或多个对象的一个或多个姿态的过程700的示例。用于执行图7所示的框中的一个或多个框的功能性的单元可以包括计算机系统的硬件和/或软件组件,例如具有图2A的姿态估计系统200的组件中的一个或多个组件和/或图10中所示的计算设备架构1000的计算机系统。
在框702处,过程700包括使用机器学习系统从图像中确定多个关键点。多个关键点与图像中的至少一个对象相关联。在一些情况下,至少一个对象包括至少一只手。在一些示例中,多个关键点中的每个关键点都对应于至少一个对象的关节(例如,至少一只手的关节)。在一些方面中,机器学习系统包括使用图像作为输入的神经网络。在一个说明性示例中,神经网络是图2A的关键点确定引擎250的机器学习系统252的一部分。用于执行框702的功能性的单元可以包括计算机系统的一个或多个软件和/或硬件组件,例如关键点确定引擎250(例如,利用机器学习系统252)、处理系统230的一个或多个组件(例如,CPU 232、GPU234、DSP 236和/或ISP 238)、图10中的处理器1010和/或计算机系统的其它软件和/或硬件组件。
在框704处,过程700包括基于多个关键点从机器学习系统中确定多个特征。在一些示例中,为了基于多个关键点从机器学习系统中确定多个特征,过程700可以包括从机器学习系统的第一特征图中确定与多个关键点相对应的第一特征集合。第一特征图包括第一分辨率。过程700可以进一步包括从机器学习系统的第二特征图中确定与多个关键点相对应的第二特征集合。第二特征图包括与第一分辨率不同的第二分辨率。
用于执行框704的功能性的单元可以包括计算机系统的一个或多个软件和/或硬件组件,例如特征确定引擎254(例如,利用机器学习系统252)、处理系统230的一个或多个组件(例如,CPU 232、GPU 234、DSP 236和/或ISP 238)、图10中的处理器1010和/或计算机系统的其它软件和/或硬件组件。
在框706处,过程700包括将多个特征分类为多个关节类型。在一些方面中,过程700可以包括针对多个关键点中的每个关键点生成特征表示。在此类方面中,过程700可以使用针对每个关键点的特征表示来将多个特征分类为多个关节类型。在一些情况下,针对每个关键点的特征表示包括编码向量。
用于执行框706的功能性的单元可以包括计算机系统的一个或多个软件和/或硬件组件,例如姿态估计引擎256(例如,利用机器学习系统257)、处理系统230的一个或多个组件(例如,CPU 232、GPU 234、DSP 236和/或ISP 238)、图10中的处理器1010和/或计算机系统的其它软件和/或硬件组件。
在框708处,过程700包括基于多个关节类型来确定用于至少一个对象(例如,至少一只手或其它对象)的姿态参数。在一些示例中,神经网络可以用于将多个特征分类为多个关节类型,并确定姿态参数。例如,过程700可以使用变换器神经网络的编码器来将多个特征分类为多个关节类型,并且可以使用变换器神经网络的解码器基于多个关节类型来确定用于至少一个对象(例如,至少一只手或其它对象)的姿态参数。
在一些示例中,至少一个对象包括两个对象。例如,多个关键点包括用于两个对象的关键点,并且姿态参数包括用于两个对象的姿态参数。在一个说明性示例中,使用手作为对象的示例,至少一个对象包括两只手。在此类示例中,多个关键点可以包括用于两只手的关键点,并且姿态参数可以包括用于两只手的姿态参数。在另一说明性示例中,至少一个对象包括单手。在一些示例中,图像包括至少一只手(例如,作为至少一个对象的示例的单手或双手)和由该至少一只手握住或靠近该至少一只手(例如,被该至少一只手遮挡)的至少一个物理对象。在此类示例中,过程700可以包括使用机器学习系统从图像中确定多个对象关键点。多个对象关键点与跟至少一只手相关联的对象(例如,由该至少一只手握住的对象或靠近该至少一只手的对象)相关联。过程700可以包括使用本文所描述的技术基于多个对象关键点来确定用于对象的姿态参数。
在一些示例中,姿态参数基于多个关节类型并且基于一个或多个经学习的关节查询被确定用于至少一个对象(例如,至少一只手或其它对象)。在一些情况下,至少一只手包括第一手和第二手。在这种情况下,一个或多个经学习的关节查询可以用于预测在第一手和第二手之间的相对平移、对象(例如,手或其它对象)形状参数集合和相机模型参数中的至少一者。
如上文所描述的,各种类型的姿态表示可以用于姿态参数。在一些方面中,用于至少一个对象(例如,至少一只手或其它对象)的姿态参数包括针对多个关节类型中的每个关节的三维向量。例如,针对多个关节类型中的每个关节的三维向量可以包括水平分量、垂直分量和深度分量。在另一示例中,针对多个关节类型中的每个关节的三维向量可以包括在每个关节和与每个关节相关联的父关节之间的向量。在一些方面中,用于至少一个对象(例如,至少一只手或其它对象)的姿态参数包括每个关节的位置以及在每个关节的深度和与每个关节相关联的父关节的深度之间的差。在一些方面中,用于至少一个对象(例如,至少一只手或其它对象)的姿态参数包括至少一个对象(例如,至少一只手或其它对象)相对于图像中的另一对象(例如,另一只手或物理对象)的平移。在一些情况下,用于至少一个对象(例如,至少一只手或其它对象)的姿态参数包括至少一个对象(例如,至少一只手或其它对象)的形状。
用于执行框708的功能性的单元可以包括计算机系统的一个或多个软件和/或硬件组件,例如姿态估计引擎256(例如,利用机器学习系统257)、处理系统230的一个或多个组件(例如,CPU 232、GPU 234、DSP 236和/或ISP 238)、图10中的处理器1010和/或计算机系统的其它软件和/或硬件组件。
20、根据权利要求1所述的设备,其中,所述至少一个处理器被配置为基于所述姿态参数来确定用户输入。
21、根据权利要求1所述的设备,其中,所述至少一个处理器被配置为基于所述姿态参数来渲染虚拟内容。
(例如,手的上方、下方等)。手对于遮挡非常重要。我们可能希望在手“下方”渲染内容,并且还可能有渲染“上方”的用例(例如,为了不破坏/遮挡虚拟屏幕,但是仍然允许用户输入)。
在一些示例中,过程700可以由计算设备或装置(例如具有图10中所示的计算设备架构1000的计算设备)执行。在一个示例中,过程700可以由具有实现图2A中所示的姿态估计系统200的计算设备架构1000的计算设备执行。在一些情况下,计算设备或装置可以包括输入设备、关键点确定引擎(例如,关键点确定引擎250)、特征确定引擎(例如,特征确定引擎254)、姿态估计引擎(例如,姿态估计引擎256)、输出设备、一个或多个处理器、一个或多个微处理器、一个或多个微型计算机和/或被配置为执行过程700的步骤的其它组件。在一些示例中,计算设备或装置可以包括被配置为捕获图像的相机。例如,计算设备可以包括相机设备。作为另一示例,计算设备可以包括移动设备或是移动设备的一部分,移动设备可以包括一个或多个相机(例如,包括一个或多个相机的手机或平板电脑)、XR设备(例如,头戴式显示器、XR眼镜或其它XR设备)、车辆、机器人设备或可以包括一个或多个相机的其它设备。在一些情况下,计算设备可以包括通信收发机和/或视频编解码器。在一些情况下,计算设备可以包括用于显示图像的显示器。在一些示例中,捕获视频数据的相机或其它捕获设备与计算设备是分开的,在这种情况下,计算设备接收所捕获的视频数据。计算设备可以进一步包括被配置为传送视频数据的网络接口。网络接口可以被配置为传送基于互联网协议(IP)的数据或任何其它合适的数据。
计算设备的组件(例如,一个或多个处理器、一个或多个微处理器、一个或多个微型计算机和/或其它组件)可以在电路中实现。例如,组件可以包括电子电路或其它电子硬件,和/或可以使用电子电路或其它电子硬件来实现,所述电子电路或其它电子硬件可以包括一个或多个可编程电子电路(例如,微处理器、图形处理单元(GPU)、数字信号处理器(DSP)、中央处理单元(CPU)、和/或其它合适的电子电路),和/或者可以包括用于执行本文中描述的各种操作的计算机软件、固件或其组合和/或可以使用用于执行本文中描述的各种操作的计算机软件、固件或其组合来实现。
过程700被示为逻辑流程图,其操作表示可以以硬件、计算机指令或其组合实现的操作的序列。在计算机指令的上下文中,操作表示被存储在一个或多个计算机可读存储介质上的计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时,执行所记载的操作。一般,计算机可执行指令包括执行特定功能或实现特定数据类型的例程、程序、对象、组件、数据结构等。以其描述操作的顺序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何顺序和/或并行地组合以实现过程。
此外,过程700可以在被配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、通过硬件来实现、或其组合。如上所述,代码可以例如以包括由一个或多个处理器可执行的多个指令的计算机程序的形式被存储在计算机可读或机器可读存储介质上。计算机可读或机器可读存储介质可以是非暂时性的。
如上所述,本公开内容的各个方面都可以使用机器学习系统,例如关键点确定引擎的机器学习系统252和姿态估计引擎256的机器学习系统257。图8是可以用于实现上文描述的整体视频理解系统的深度学习神经网络800的说明性示例。输入层820包括输入数据。在一个说明性示例中,输入层820可以包括表示输入视频帧的像素的数据。神经网络800包括多个隐藏层822a、822b至822n。隐藏层822a、822b至822n包括“n”个隐藏层,其中“n”是大于或等于一的整数。可以使隐藏层的数量包括给定应用所需的尽可能多的层。神经网络800还包括输出层821,其提供由隐藏层822a、822b至822n执行的处理产生的输出。在一个说明性示例中,输出层821可以提供输入视频帧中的对象的分类。分类可以包括标识活动的类型的类别(例如,踢足球、弹钢琴、听钢琴、弹吉他等)。
神经网络800是互连节点的多层神经网络。每个节点可以表示一条信息。与节点相关联的信息在不同层之间共享,并且每一层在信息被处理时保留信息。在一些情况下,神经网络800可以包括前馈网络,在前馈网络中,不存在网络的输出被反馈回其自身的反馈连接。在一些情况下,神经网络800可以包括递归神经网络,其可以具有允许在读入输入时跨节点携带信息的循环。
可以通过各个层之间的节点到节点互连来在节点之间交换信息。输入层820的节点可以激活第一隐藏层822a中的节点集合。例如,如图所示,输入层820的输入节点中的每个输入节点连接到第一隐藏层822a的节点中的每个节点。第一隐藏层822a的节点可以通过将激活函数应用于输入节点信息来变换每个输入节点的信息。然后可以将从该变换导出的信息传递到下一隐藏层822b的节点并且可以激活下一隐藏层822b的节点,该下一隐藏层822b的节点可以执行其自己的指定功能。示例功能包括卷积、上采样、数据变换和/或任何其它合适的功能。然后,隐藏层822b的输出可以激活下一隐藏层的节点,等。最后的隐藏层822n的输出可以激活输出层821的一个或多个节点,在该一个或多个节点处提供输出。在一些情况下,虽然神经网络800中的节点(例如,节点826)被示出为具有多条输出线,但是节点具有单个输出,并且被示出为从节点输出的所有线表示相同的输出值。
在一些情况下,每个节点或在节点之间的互连可以具有权重,该权重是从神经网络800的训练导出的参数集合。一旦神经网络800被训练,它就可以被称为经训练的神经网络,其可以用于对一个或多个活动进行分类。例如,节点之间的互连可以表示关于互连节点学习的一条信息。互连可以具有可以被调谐(例如,基于训练数据集)的可调谐数字权重,从而允许神经网络800适应于输入并且能够随着越来越多的数据被处理而进行学习。
神经网络800被预训练,以使用不同的隐藏层822a、822b至822n处理来自输入层820中的数据的特征,以便通过输出层821提供输出。在神经网络800用于识别由驾驶员在帧中正在执行的活动的示例中,可以使用包括帧和标签两者的训练数据对神经网络800进行训练,如上文所描述的。例如,可以将训练帧输入到网络中,其中每个训练帧都具有用于指示帧中的特征(用于特征提取机器学习系统)的标签或用于指示每个帧中的活动的类别的标签。在出于说明目的而使用对象分类的一个示例中,训练帧可以包括数字2的图像,在这种情况下,图像的标签可以是[0010000000]。
在一些情况下,神经网络800可以使用被称为反向传播的训练过程来调整节点的权重。如上所述,反向传播过程可以包括前向传递、损失函数、后向传递和权重更新。针对一个训练迭代执行前向传递、损失函数、后向传递和参数更新。针对每个训练图像集合,该过程可以被重复一定次数的迭代,直到神经网络800被训练得足够好为止,使得各层的权重被准确地调谐。
对于识别帧中的对象的示例,前向传递可以包括将训练帧传递通过神经网络800。在训练神经网络800之前,最初使权重随机化。作为说明性示例,帧可以包括表示图像的像素的数字阵列。阵列中的每个数字可以包括从0到255的值,其描述阵列中该位置处的像素强度。在一个示例中,阵列可以包括28×28×3数字阵列,其具有28行和28列像素和3个颜色分量(例如,红色、绿色和蓝色、或亮度和两个色度分量等)。
如上文所述,对于神经网络800的第一训练迭代,输出将可能包括由于在初始化时随机选择的权重而不优先考虑任何特定类别的值。例如,如果输出是具有对象包括不同类别的概率的向量,则针对不同类别中的每个不同类别的概率值可以相等或至少非常相似(例如,对于十个可能的类别,每一类别可以具有0.1的概率值)。利用初始权重,神经网络800不能确定低级特征,并且因此不能准确地确定对象的分类可能是什么。可以使用损失函数来分析输出中的误差。可以使用任何合适的损失函数定义,例如交叉熵损失。损失函数的另一示例包括均方误差(MSE),定义为 可以将损失设置为等于Etotal的值。
对于第一训练图像,损失(或误差)将是高的,因为实际值将与所预测的输出大不相同。训练的目标是使损失量最小化,使得所预测的输出与训练标签相同。神经网络800可以通过确定哪些输入(权重)对网络的损失贡献最大来执行反向传递,并且可以调整权重以使得损失减小并且最终是最小化的。可以计算损失相对于权重的导数(表示为dL/dW,其中W是特定层处的权重),以确定对网络的损失贡献最大的权重。在计算导数之后,可以通过更新滤波器的所有权重来执行权重更新。例如,可以更新权重,使得它们在梯度的相反方向上改变。权重更新可以表示为其中w表示权重,表示wi初始权重,并且η表示学习速率。学习速率可以被设置为任何合适的值,其中高学习速率包括较大的权重更新,并且较低的值指示较小的权重更新。
神经网络800可以包括任何合适的深度网络。一个示例包括卷积神经网络(CNN),其包括输入层和输出层,在输入层和输出层之间具有多个隐藏层。CNN的隐藏层包括一系列卷积层、非线性层、池化(用于下采样)层和全连接层。神经网络800可以包括除了CNN之外的任何其它深度网络,诸如自动编码器、深度信念网(DBN)、递归神经网络(RNN)等。
图9是卷积神经网络(CNN)900的说明性示例。CNN 900的输入层920包括表示图像或帧的数据。例如,数据可以包括表示图像的像素的数字阵列,其中阵列中的每个数字包括描述阵列中该位置处的像素强度的从0到255的值。使用来自上文的先前示例,阵列可以包括具有28行和28列像素和3个颜色分量(例如,红色、绿色和蓝色,或亮度和两个色度分量等)的28×28×3数字阵列。图像可以被传递通过卷积隐藏层922a、可选的非线性激活层、池化隐藏层922b和全连接隐藏层922c,以在输出层924处获得输出。虽然图9中仅示出了每个隐藏层中的一个隐藏层,但是普通技术人员将理解,多个卷积隐藏层、非线性层、池化隐藏层和/或全连接层可以被包括在CNN 900中。如前所描述的,输出可以指示对象的单个类别,或者可以包括最佳地描述图像中的对象的类别的概率。
CNN 900的第一层是卷积隐藏层922a。卷积隐藏层922a分析输入层920的图像数据。卷积隐藏层922a的每个节点连接到被称为感受野的输入图像的节点(像素)的区域。卷积隐藏层922a可以被认为是一个或多个滤波器(每个滤波器对应于不同的激活或特征图),其中滤波器的每个卷积迭代是卷积隐藏层922a的节点或神经元。例如,滤波器在每个卷积迭代处覆盖的输入图像的区域将是滤波器的感受野。在一个说明性示例中,如果输入图像包括28×28阵列,并且每个滤波器(和对应的感受野)是5×5阵列,则在卷积隐藏层922a中将存在24×24个节点。在节点与该节点的感受野之间的每个连接学习权重,并且在一些情况下学习整体偏置,使得每个节点学习分析输入图像中的其特定局部感受野。隐藏层922a的每个节点将具有相同的权重和偏置(被称为共享权重和共享偏置)。例如,滤波器具有权重(数字)阵列和与输入相同的深度。对于视频帧示例,滤波器将具有深度3(根据输入图像的三个颜色分量)。滤波器阵列的说明性示例大小是5×5×3,其对应于节点的感受野的大小。
卷积隐藏层922a的卷积性质是由于卷积层的每个节点被应用于其对应的感受野。例如,卷积隐藏层922a的滤波器可以在输入图像阵列的左上角开始,并且可以围绕输入图像进行卷积。如上文所述,滤波器的每次卷积迭代可以被认为是卷积隐藏层922a的节点或神经元。在每次卷积迭代中,滤波器的值乘以图像的对应数量的原始像素值(例如,5x5滤波器阵列乘以在输入图像阵列的左上角处的5x5输入像素值阵列)。可以将来自每次卷积迭代的乘法相加在一起以获得该迭代或节点的总和。接下来,根据卷积隐藏层922a中的下一节点的感受野,在输入图像中的下一位置处继续该过程。例如,滤波器可以移动一个步进量(称为步幅)到下一个感受野。步幅可以被设置为1或其它合适的量。例如,如果步幅被设置为1,则滤波器将在每次卷积迭代处向右移动1个像素。在输入体积的每个唯一位置处处理滤波器产生表示该位置的滤波器结果的数字,这导致针对卷积隐藏层922a的每个节点确定总和值。
从输入层到卷积隐藏层922a的映射被称为激活图(或特征图)。激活图包括表示针对每个节点的在输入体积的每个位置处的滤波器结果的值。激活图可以包括阵列,该阵列包括由滤波器对输入体积的每次迭代产生的各种总和值。例如,如果将5×5滤波器应用于28×28输入图像的每个像素(步幅为1),则激活图将包括24×24阵列。卷积隐藏层922a可以包括若干激活图,以便识别图像中的多个特征。图9中所示的示例包括三个激活图。使用这三个激活图,卷积隐藏层922a可以检测三个不同种类的特征,其中每个特征在整个图像上是可检测的。
在一些示例中,可以在卷积隐藏层922a之后应用非线性隐藏层。非线性层可以用于将非线性引入到已经计算线性运算的系统。非线性层的一个说明性示例是修正线性单元(ReLU)层。ReLU层可以将函数f(x)=max(0,x)应用于输入体积中的值中的所有值,这将所有负激活改变为0。因此,ReLU可以增加CNN 900的非线性特性,而不影响卷积隐藏层922a的感受野。
可以在卷积隐藏层922a之后(并且在使用时在非线性隐藏层之后)应用池化隐藏层922b。池化隐藏层922b用于简化来自卷积隐藏层922a的输出中的信息。例如,池化隐藏层922b可以获取从卷积隐藏层922a输出的每个激活图,并且使用池化函数来生成浓缩的激活图(或特征图)。最大池化是由池化隐藏层执行的函数的一个示例。池化隐藏层922a使用其它形式的池化函数,诸如平均池化、L2范数池化或其它合适的池化函数。将池化函数(例如,最大池化滤波器、L2范数滤波器或其它合适的池化滤波器)应用于卷积隐藏层922a中包括的每个激活图。在图9所示的示例中,三个池化滤波器被用于卷积隐藏层922a中的三个激活图。
在一些示例中,可以通过将具有步幅(例如,等于滤波器的维度,例如步幅为2)的最大池化滤波器(例如,具有2x2的大小)应用于从卷积隐藏层922a输出的激活图来使用最大池化。来自最大池化滤波器的输出包括滤波器卷积的每个子区域中的最大数。使用2x2滤波器作为示例,池化层中的每个单元可以汇总上一层中2×2个节点的区域(每个节点都是激活图中的值)。例如,激活映射中的四个值(节点)将在滤波器的每次迭代处由2x2最大池化滤波器进行分析,四个值中的最大值作为“最大”值被输出。如果将这种最大池化滤波器应用于来自具有24x24个节点的维度的卷积隐藏层922a的激活滤波器,则来自池化隐藏层922b的输出将是12x12个节点的阵列。
在一些示例中,还可以使用L2范数池化滤波器。L2范数池化滤波器包括计算激活图的2×2区域(或其它合适的区域)中的值的平方的和的平方根(而不是如在最大池化中所进行的计算最大值),并且使用所计算的值作为输出。
直观地,池化函数(例如,最大池化、L2范数池化或其它池化函数)确定是否在图像的区域中的任何地方找到给定特征,并且丢弃确切的位置信息。这可以在不影响特征检测的结果的情况下完成,因为一旦已经找到特征,特征的确切位置就不如其相对于其它特征的近似位置那么重要。最大池化(以及其它池化方法)提供了以下益处:池化特征少得多,从而减少了CNN 900的后续层中所需的参数的数量。
网络中的最后一层连接是全连接层,其将来自池化隐藏层922b的每个节点连接到输出层924中的输出节点中的每个输出节点。使用上文的示例,输入层包括用于对输入图像的像素强度进行编码的28x28个节点;卷积隐藏层922a包括基于对三个激活图应用5×5的局部感受野(用于滤波器)的3×24×24个隐藏特征节点;池化隐藏层922b包括基于对跨越三个特征图中的每个特征图的2×2区域应用最大池化滤波器的3×12×12个隐藏特征节点的层。扩展该示例,输出层924可以包括十个输出节点。在这样的示例中,3x12x12池化隐藏层922b的每个节点都连接到输出层924的每个节点。
全连接层922c可以获得先前池化隐藏层922b的输出(其应该表示高级特征的激活图),并且确定与特定类别最相关的特征。例如,全连接层922c层可以确定与特定类别最强相关的高级特征,并且可以包括针对高级特征的权重(节点)。可以计算在全连接层922c和池化隐藏层922b的权重之间的乘积,以获得针对不同类别的概率。例如,如果CNN 900被用于预测视频帧中的对象是人,则在表示人的高级特征的激活图中将存在高值(例如,存在两条腿,在对象的顶部存在面部,在面部的左上和右上存在两只眼睛,在面部的中间存在鼻子,在面部的底部存在嘴,和/或人常见的其它特征)。
在一些示例中,来自输出层924的输出可以包括M维向量(在先前的示例中,M=10)。M指示CNN 900在对图像中的对象进行分类时必须从中选择的类别的数量。还可以提供其它示例输出。M维向量中的每个数字可以表示对象属于某个类别的概率。在一个说明性示例中,如果10维输出向量表示十个不同类别的对象是[000.050.800.150000],则该向量指示图像是第三类别的对象(例如,狗)的概率为5%,图像是第四类别的对象(例如,人)的概率为80%,并且图像是第六类别的对象(例如,袋鼠)的概率为15%。针对类别的概率可以被认为是对象是该类别的一部分的置信水平。
图10示出了具有计算设备架构1000的示例计算设备,计算设备架构1000合并可以用于执行本文描述的技术中的一种或多种技术的计算设备的部件。如图10中所示的计算设备可以被合并为本文中的任何计算机化系统的一部分。例如,计算设备架构1000可以表示移动设备或执行3D模型检索系统或工具的计算设备的组件中的一些组件。计算设备架构1000的示例包括但不限于台式机、工作站、个人计算机、超级计算机、视频游戏机、平板计算机、智能手机、膝上型计算机、上网本或其它便携式设备。图10提供了具有架构1000的计算设备的一个实施例的示意图,该架构1000可以执行由如本文所描述的各种其它实施例提供的方法,和/或可以用作主机计算设备、远程自助终端/终端、销售点设备、移动多功能设备、机顶盒和/或计算设备。图10仅意在提供各种组件的概括说明,可以酌情地使用其中任何或所有组件。因此,图10大致示出了如何以相对分离或相对更集成的方式来实现各个系统元件。
示出了包括硬件元件的计算设备架构1000,这些硬件元件可以经由总线1005进行电气耦合(或可以酌情地以其它方式进行通信)。硬件元件可以包括一个或多个处理器1010,包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如,数字信号处理芯片、图形加速处理器等);一个或多个输入设备1015,其可以包括但不限于相机、传感器1050、鼠标、键盘等;以及一个或多个输出设备1020,其可以包括但不限于显示单元、打印机等。
计算设备架构1000可以进一步包括(和/或与之通信)一个或多个非暂时性存储设备1025,其可以包括但不限于本地和/或网络可访问存储,和/或可以包括但不限于磁盘驱动器、驱动器阵列、光存储设备、固态存储设备(诸如随机存取存储器(“RAM”)和/或只读存储器(“ROM”)),其可以是可编程的、可闪存更新的等。这样的存储设备可以被配置为实现任何适当的数据存储,包括但不限于各种文件系统、数据库结构等。
计算设备架构1000还可能包括通信子系统1030。通信子系统1030可以包括用于接收和发送数据的收发机或有线和/或无线介质。通信子系统1030还可以包括但不限于调制解调器、网卡(无线或有线)、红外通信设备、无线通信设备和/或芯片组(例如,蓝牙TM设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设施等)等。通信子系统1030可以允许与网络(例如下文所述的网络,仅举一例)、其它计算设备和/或本文描述的任何其它设备交换数据。在许多实施例中,计算设备架构1000将进一步包括非暂时性工作存储器1035,其可以包括RAM或ROM设备,如上文所描述的。
计算设备架构1000可以包括被示为当前位于工作存储器1035内的软件元素,包括操作系统1040、设备驱动器、可执行库和/或其它代码(例如一个或多个应用程序代码1045),这些代码可以包括由各种实施例提供的计算机程序,和/或可以被设计为实现由其它实施例提供的方法和/或配置系统,如本文所描述的。仅举例来说,相对于上文讨论的方法所描述的一个或多个过程可以被实现为可由计算机(和/或计算机内的处理器)执行的代码和/或指令;在一方面中,这些代码和/或指令可以用于配置和/或调整通用计算机(或其它设备),以根据所描述的方法来执行一个或多个操作。
这些指令和/或代码的集合可以被存储在计算机可读存储介质上,诸如上文描述的存储设备1025。在一些情况下,存储介质可能合并在计算设备(例如具有计算设备架构1000的计算设备)内。在其它实施例中,存储介质可能与计算设备(例如,可移动介质,诸如光盘)分离,和/或以安装包的形式提供,使得存储介质可以用于对具有存储在其上的指令/代码的通用计算机进行编程、配置和/或调整。这些指令可能采取可执行代码的形式(其由计算设备架构1000可执行)和/或可能采取源代码和/或可安装代码的形式(其然后在计算设备架构1000上编译和/或安装时(例如,使用各种普遍可用的编译器、安装程序、压缩/解压缩实用程序等中的任何一种)采取可执行代码的形式)。
可以根据具体要求进行实质性变型。例如,还可以使用定制的硬件,和/或可以在硬件、软件(包括便携式软件,例如小程序等)或两者中实现特定元件。此外,可以采用与诸如网络输入/输出设备的其它计算设备的连接。
一些实施例可以采用计算设备(例如具有计算设备架构1000的计算设备)来执行根据本公开内容的方法。例如,所描述的方法的部分或全部过程可以由具有计算设备架构1000的计算设备可以响应处理器1010执行工作存储器1035中包含的一个或多个指令(其可以并入操作系统1040和/或其它代码(诸如应用程序1045)中)的一个或多个序列来执行。这些指令可以从另一计算机可读介质(例如,存储设备1025中的一个或多个存储设备1025)读入工作存储器1035。仅举例来说,执行工作存储器1035中包含的指令的序列可能导致处理器1010执行本文所描述的方法的一个或多个过程。
术语“计算机可读介质”包括但不限于便携式或非便携式存储设备、光存储设备以及能够存储、包含或携带指令和/或数据的各种其它介质。计算机可读介质可以包括其中可以存储数据并且不包括无线地或通过有线连接传播的载波和/或暂时性电子信号的非暂时性介质。非暂时性介质的示例可以包括但不限于磁盘或磁带、诸如压缩盘(CD)或数字多功能盘(DVD)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以在其上存储有代码和/或机器可执行指令,其可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。通过传递和/或接收信息、数据、自变量、参数或存储器内容,代码段可以耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由包括存储器共享、消息传递、令牌传递、网络传输等的任何合适的方式来传递、转发或发送。
在一些实施例中,计算机可读存储设备、介质和存储器可以包括包含比特流等的电缆或无线信号。然而,当被提及时,非暂时性计算机可读存储介质明确地排除诸如能量、载波信号、电磁波和信号本身的介质。
在以上描述中提供了具体的细节,以提供对本文中提供的实施例和示例的透彻理解。然而,本领域普通技术人员将理解的是,可以在没有这些特定细节的情况下实践实施例。为了清楚解释,在一些情况下,本技术可以被呈现为包括单独的功能块,包括包含设备、设备部件、在以软件或硬件和软件的组合体现的方法中的步骤或例程的功能块。可以使用除了附图中所示和/或本文中所描述的那些组件之外的额外组件。例如,电路、系统、网络、过程和其它组件可以被示为框图形式的组件,以免在不必要的细节上模糊实施例。在其它实例中,可以在没有不必要的细节的情况下示出公知的电路、过程、算法、结构和技术,以避免模糊实施例。
单独的实施例可以在上文被描述为过程或方法,过程或方法被描绘为流程图、流图、数据流图、结构图或框图。尽管流程图可以将操作描述为顺序过程,但是操作中的许多操作可以被并行或同时执行。此外,可以对操作的顺序进行重新布置。当完成其操作时,过程终止,但是可以具有图中未包括的额外步骤。过程(process)可以对应于方法、函数、过程(procedure)、子例程、子程序等。当过程对应于函数时,其终止可以对应于函数返回到调用函数或主函数。
根据上文描述的示例的过程和方法可以使用被存储或以其它方式从计算机可读介质可获得的计算机可执行指令来实现。这样的指令可以包括例如使得或以其它方式配置通用计算机、专用计算机或处理设备以执行某个功能或功能组的指令和数据。所使用的计算机资源的部分可以通过网络访问。例如,计算机可执行指令可以是二进制文件、中间格式指令(例如,汇编语言)、固件、源代码等。可以用于存储指令、所使用的信息、和/或根据所描述的示例在方法期间产生的信息的计算机可读介质的示例包括磁盘或光盘、闪存、被提供有非易失性存储器的USB设备、网络存储设备等。
实现根据这些公开内容的过程和方法的设备可以包括硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合,并且可以采取多种形状因子中的任何形状因子。当在软件、固件、中间件或微代码中实现时,用于执行必要任务的程序代码或代码段(例如,计算机程序产品)可以被存储在计算机可读或机器可读介质中。一个(或多个)处理器可以执行必要的任务。形状因子的典型示例包括膝上型电脑、智能电话、移动电话、平板设备或其它小形状因子个人计算机、个人数字助理、机架安装设备、独立设备等。本文中描述的功能性还可以被体现在外围设备或内插式卡中。通过进一步的示例,这样的功能性还可以被实现在不同芯片或在单个设备中执行的不同过程之间的电路板上。
指令、用于传送这种指令的介质、用于执行它们的计算资源以及用于支持这种计算资源的其它结构是用于提供本公开内容中描述的功能的示例单元。
在前述描述中,参照本申请的具体实施例描述了本申请的各方面,但是本领域技术人员将认识到,本申请不限于此。因此,尽管在本文中已经详细描述了本申请的说明性实施例,但是应当理解,这些发明构思可以以其它方式被不同地体现和采用,并且所附权利要求旨在被解释为包括这样的变型,除了现有技术所限制的以外。上文描述的应用的各种特征和方面可以单独地或联合地使用。此外,在不脱离本说明书的更广泛的精神和范围的情况下,实施例可以用于超出本文中描述的环境和应用的任何数量的环境和应用中。因此,说明书和附图被认为是说明性的而非限制性的。出于说明的目的,以特定顺序描述了方法。应当理解,在替代实施例中,这些方法可以以与所描述的顺序不同的顺序来执行。
本领域普通技术人员将理解,在不脱离本说明书的范围的情况下,本文所使用的小于(“<”)和大于(“>”)符号或术语可以分别由小于或等于(“≤”)和大于或等于(“≥”)符号代替。
在组件被描述为“被配置为”执行某些操作的情况下,这样的配置可以例如通过设计电子电路或其它硬件以执行操作、通过对可编程电子电路(例如,微处理器或其它合适的电子电路)进行编程以执行操作、或其任何组合来实现。
短语“耦合到”是指直接或间接物理连接到另一组件的任何组件,和/或直接或间接与另一组件进行通信(例如,通过有线或无线连接和/或其它合适的通信接口连接到所述另一组件)的任何组件。
记载集合“中的至少一个”和/或集合中的“一个或多个”的权利要求语言或其它语言指示集合中的一个成员或集合中的多个成员(以任何组合)满足权利要求。例如,记载“A或B中的一种或多种”的权利要求语言意指A、B或A和B。在另一示例中,记载“A、B或C中的一种或多种”的权利要求语言意指A、B、C或A和B、或A和C、或B和C、或A和B和C。集合“中的至少一个”和/或集合中的“一个或多个”的语言不将集合限制为集合中列出的项目。例如,记载“A或B中的至少一个”的权利要求语言可以意指A、B或A和B,并且可以另外包括在A和B的集合中未列出的项目。
结合本文公开的实施例描述的各种说明性逻辑框、模块、电路和算法步骤可以实现为电子硬件、计算机软件、固件或其组合。为了清楚地说明硬件和软件的这种可互换性,上文已经在其功能性方面大致描述了各种例示性组件、方框、模块、电路和步骤。这种功能性实现为硬件还是软件取决于具体的应用和对整个系统施加的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能性,但是这种实现决定不应被解释为造成脱离本申请的范围。
本文中描述的技术还可以被实现在电子硬件、计算机软件、固件或其任何组合中。这样的技术可以被实现在多种设备中的任何设备中,诸如通用计算机、无线通信设备手持设备、或具有多种用途(包括在无线通信设备手持设备和其它设备中的应用)的集成电路设备。被描述为模块或组件的任何特征可以一起被实现在集成逻辑设备中或分开地实现为分立但是可互操作的逻辑设备。如果以软件实现,则所述技术可以至少部分地由包括程序代码的计算机可读数据存储介质实现,所述程序代码包括在被执行时执行上文所描述的方法中的一个或多个方法的指令。计算机可读数据存储介质可以形成可以包括封装材料的计算机程序产品的一部分。计算机可读介质可以包括存储器或数据存储介质,例如随机存取存储器(RAM)(例如,同步动态随机存取存储器(SDRAM))、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、FLASH存储器、磁或光数据存储介质等。另外地或可替代地,技术可以至少部分地由计算机可读通信介质来实现,该计算机可读通信介质携带或传送指令或数据结构形式的并且可以由计算机存取、读取和/或执行的程序代码,诸如传播的信号或波。
程序代码可以由处理器执行,所述处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或分立逻辑电路系统。这样的处理器可以被配置为执行本公开内容中所描述的技术中的任何技术。通用处理器可以是微处理器,但是在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、一个或多个微处理器与DSP核心,或任何其它这样配置。因此,如本文中所使用的术语“处理器”可以指前述结构中的任何结构、前述结构的任何组合或适合于实现本文中所描述的技术的任何其它结构或装置。
本公开内容的说明性方面包括:
方面1:一种确定一个或多个对象的一个或多个姿态的方法,所述方法包括:使用机器学习系统从图像中确定多个关键点,所述多个关键点与所述图像中的至少一个对象相关联;基于所述多个关键点从所述机器学习系统中确定多个特征;将所述多个特征分类为多个关节类型;以及基于所述多个关节类型来确定用于所述至少一个对象的姿态参数。
方面2:根据方面1所述的方法,其中,所述至少一个对象包括至少一只手。
方面3:根据方面1或2中任一方面所述的方法,其中,所述至少一个对象包括两个对象,其中,所述多个关键点包括用于所述两个对象的关键点,并且其中,所述姿态参数包括用于所述两个对象的姿态参数。
方面4:根据方面1或2中任一方面的方法,其中,所述至少一个对象包括两只手,其中,所述多个关键点包括用于所述两只手的关键点,并且其中,所述姿态参数包括用于所述两只手的姿态参数。
方面5:根据方面1或2中任一方面所述的方法,其中,所述至少一个对象包括单手,并且还包括:使用所述机器学习系统从所述图像中确定多个对象关键点,所述多个对象关键点与跟所述单手相关联的对象相关联;以及基于所述多个对象关键点来确定用于所述对象的姿态参数。
方面6:根据方面1至5中任一方面所述的方法,其中,所述多个关键点中的每个关键点都对应于所述至少一个对象的关节。
方面7:根据方面1至6中任一方面所述的方法,其中,基于所述多个关键点从所述机器学习系统中确定所述多个特征包括:从所述机器学习系统的第一特征图中确定与所述多个关键点相对应的第一特征集合,所述第一特征图包括第一分辨率;以及从所述机器学习系统的第二特征图中确定与所述多个关键点相对应的第二特征集合,所述第二特征图包括第二分辨率。
方面8:根据方面1到7中任一方面所述的方法,还包括:针对所述多个关键点中的每个关键点生成特征表示,其中,使用针对每个关键点的所述特征表示将所述多个特征分类为所述多个关节类型。
方面9:根据方面8所述的方法,其中,针对每个关键点的所述特征表示包括编码向量。
方面10:根据方面1至9中任一方面所述的方法,其中,所述机器学习系统包括神经网络,所述神经网络使用所述图像作为输入。
方面11:根据方面1至10中任一方面所述的方法,其中,所述多个特征由变换器神经网络的编码器分类为所述多个关节类型,并且其中,被确定用于所述至少一个对象的所述姿态参数是由所述变换器神经网络的解码器基于所述多个关节类型来确定的。
方面12:根据方面1至11中任一方面所述的方法,其中,所述姿态参数基于所述多个关节类型并且基于一个或多个经学习的关节查询而被确定用于所述至少一个对象。
方面13:根据方面12所述的方法,其中,所述至少一个对象包括第一对象和第二对象,并且其中,所述一个或多个经学习的关节查询用于预测在所述第一对象与所述第二对象之间的相对平移、对象形状参数集合以及相机模型参数中的至少一者。
方面14:根据方面1至13中任一方面所述的方法,其中,用于所述至少一个对象的所述姿态参数包括针对所述多个关节类型中的每个关节的三维向量。
方面15:根据方面14所述的方法,其中,针对所述多个关节类型中的每个关节的所述三维向量包括水平分量、垂直分量和深度分量。
方面16:根据方面14所述的方法,其中,针对所述多个关节类型中的每个关节的所述三维向量包括在每个关节和与每个关节相关联的父关节之间的向量。
方面17:根据方面1至13中任一方面所述的方法,其中,用于所述至少一个对象的所述姿态参数包括每个关节的位置以及在每个关节的深度和与每个关节相关联的父关节的深度之间的差。
方面18:根据方面1至17中任一方面所述的方法,其中,用于所述至少一个对象的所述姿态参数包括所述至少一个对象相对于所述图像中的另一对象的平移。
方面19:根据方面1至18中任一方面所述的方法,其中,用于所述至少一个对象的所述姿态参数包括所述至少一个对象的形状。
方面20:根据方面1至19中任一方面所述的方法,还包括:基于所述姿态参数来确定用户输入。
方面21:根据方面1至20中任一方面所述的方法,还包括:基于所述姿态参数来渲染虚拟内容。
方面22:根据方面1至21中任一方面所述的方法,其中,所述装置是扩展现实设备(例如,头戴式显示器、扩展现实眼镜或其它扩展现实设备)。
方面23:一种用于确定一个或多个对象的一个或多个姿态的装置,包括:至少一个存储器;以及耦合到所述至少一个存储器的至少一个处理器,所述至少一个处理器被配置为:使用机器学习系统从图像中确定多个关键点,所述多个关键点与所述图像中的至少一个对象相关联;基于所述多个关键点从所述机器学习系统中确定多个特征;将所述多个特征分类为多个关节类型;以及基于所述多个关节类型来确定用于所述至少一个对象的姿态参数。
方面24:根据方面23所述的装置,其中,所述至少一个对象包括至少一只手。
方面25:根据方面23或24中任一方面所述的装置,其中,所述至少一个对象包括两个对象,其中,所述多个关键点包括用于所述两个对象的关键点,并且其中,所述姿态参数包括用于所述两个对象的姿态参数。
方面26:根据方面23或24中任一方面所述的设备,其中,所述至少一个对象包括两只手,其中,所述多个关键点包括用于所述两只手的关键点,并且其中,所述姿态参数包括用于所述两只手的姿态参数。
方面27:根据方面23或24中任一方面所述的装置,其中,所述至少一个对象包括单手,并且其中,所述至少一个处理器被配置为:使用所述机器学习系统从所述图像中确定多个对象关键点,所述多个对象关键点与跟所述单手相关联的对象相关联;以及基于所述多个对象关键点来确定用于所述对象的姿态参数。
方面28:根据方面23至27中任一方面所述的装置,其中,所述多个关键点中的每个关键点都对应于所述至少一个对象的关节。
方面29:根据方面23至28中任一方面所述的装置,其中,为了基于所述多个关键点从所述机器学习系统中确定所述多个特征,所述至少一个处理器被配置为:从所述机器学习系统的第一特征图中确定与所述多个关键点相对应的第一特征集合,所述第一特征图包括第一分辨率;以及从所述机器学习系统的第二特征图中确定与所述多个关键点相对应的第二特征集合,所述第二特征图包括第二分辨率。
方面30:根据方面23至29中任一方面所述的装置,其中,所述至少一个处理器被配置为:针对所述多个关键点中的每个关键点生成特征表示,其中,使用针对每个关键点的所述特征表示将所述多个特征分类为所述多个关节类型。
方面31:根据方面23所述的装置,其中,针对每个关键点的所述特征表示包括编码向量。
方面32:根据方面23至31中任一方面所述的装置,其中,所述机器学习系统包括神经网络,所述神经网络使用所述图像作为输入。
方面33:根据方面23至32中任一方面所述的装置,其中,所述多个特征由变换器神经网络的编码器分类为所述多个关节类型,并且其中,被确定用于所述至少一个对象的所述姿态参数是由所述变换器神经网络的解码器基于所述多个关节类型来确定的。
方面34:根据方面23至33中任一方面所述的装置,其中,所述姿态参数基于所述多个关节类型并且基于一个或多个经学习的关节查询而被确定用于所述至少一个对象。
方面35:根据方面34所述的装置,其中,所述至少一个对象包括第一对象和第二对象,并且其中,所述一个或多个经学习的关节查询用于预测在所述第一对象和所述第二对象之间的相对平移、对象形状参数集合和相机模型参数中的至少一者。
方面36:根据方面23至35中任一方面所述的装置,其中,用于所述至少一个对象的所述姿态参数包括针对所述多个关节类型中的每个关节的三维向量。
方面37:根据方面36所述的装置,其中,针对所述多个关节类型中的每个关节的所述三维向量包括水平分量、垂直分量和深度分量。
方面38:根据方面36所述的装置,其中,针对所述多个关节类型中的每个关节的所述三维向量包括在每个关节和与每个关节相关联的父关节之间的向量。
方面39:根据方面23至35中任一方面所述的装置,其中,用于所述至少一个对象的所述姿态参数包括每个关节的位置以及在每个关节的深度和与每个关节相关联的父关节的深度之间的差。
方面40:根据方面23至39中任一方面所述的装置,其中,用于所述至少一个对象的所述姿态参数包括所述至少一个对象相对于所述图像中的另一对象的平移。
方面41:根据方面23至40中任一方面所述的装置,其中,用于所述至少一个对象的所述姿态参数包括所述至少一个对象的形状。
方面42:根据方面23至41中任一方面所述的装置,其中,所述至少一个处理器被配置为:基于所述姿态参数来确定用户输入。
方面43:根据方面23至42中任一方面所述的装置,其中,所述至少一个处理器被配置为:基于所述姿态参数来渲染虚拟内容。
方面44:根据方面23至43中任一方面所述的装置,其中,所述装置包括移动设备。
方面45:根据方面23至44中任一方面所述的装置,其中,所述装置包括扩展现实设备(例如,头戴式显示器、扩展现实眼镜或其它扩展现实设备)。
方面46:根据方面23至45中任一方面所述的装置,其中,所述至少一个处理器包括神经处理单元(NPU)。
方面47:根据方面23至46中任一方面所述的装置,还包括:被配置为显示一个或多个图像的显示器。
方面48:根据方面23至47中任一方面所述的装置,还包括:被配置为捕获一个或多个图像的图像传感器。
方面49:一种包括指令的非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行根据方面1至48中的任一方面所述的操作。
方面50:一种用于确定一个或多个对象的一个或多个姿态的装置,所述装置包括一个或多个用于执行根据方面1至48中的任一方面所述的操作的单元。
Claims (30)
1.一种用于确定一个或多个对象的一个或多个姿态的装置,包括
至少一个存储器;以及
耦合到所述至少一个存储器的至少一个处理器,所述至少一个处理器被配置为:
使用机器学习系统从图像中确定多个关键点,所述多个关键点与所述图像中的至少一个对象相关联;
基于所述多个关键点,从所述机器学习系统中确定多个特征;
将所述多个特征分类为多个关节类型;以及
基于所述多个关节类型来确定用于所述至少一个对象的姿态参数。
2.根据权利要求1所述的装置,其中,所述至少一个对象包括至少一只手。
3.根据权利要求1所述的装置,其中,所述至少一个对象包括两个对象,其中,所述多个关键点包括用于所述两个对象的关键点,并且其中,所述姿态参数包括用于所述两个对象的姿态参数。
4.根据权利要求1所述的装置,其中,所述至少一个对象包括两只手,其中,所述多个关键点包括用于所述两只手的关键点,并且其中,所述姿态参数包括用于所述两只手的姿态参数。
5.根据权利要求1所述的装置,其中,所述至少一个对象包括单手,并且其中,所述至少一个处理器被配置为:
使用所述机器学习系统从所述图像中确定多个对象关键点,所述多个对象关键点与跟所述单手相关联的对象相关联;以及
基于所述多个对象关键点来确定用于所述对象的姿态参数。
6.根据权利要求1所述的装置,其中,所述多个关键点中的每个关键点对应于所述至少一个对象的关节。
7.根据权利要求1所述的装置,其中,为了基于所述多个关键点从所述机器学习系统中确定所述多个特征,所述至少一个处理器被配置为:
从所述机器学习系统的第一特征图中确定与所述多个关键点相对应的第一特征集合,所述第一特征图包括第一分辨率;以及
从所述机器学习系统的第二特征图中确定与所述多个关键点相对应的第二特征集合,所述第二特征图包括第二分辨率。
8.根据权利要求1所述的装置,其中,所述至少一个处理器被配置为:
针对所述多个关键点中的每个关键点生成特征表示,其中,使用针对每个关键点的所述特征表示将所述多个特征分类为所述多个关节类型。
9.根据权利要求8所述的装置,其中,针对每个关键点的所述特征表示包括编码向量。
10.根据权利要求1所述的装置,其中,所述机器学习系统包括神经网络,所述神经网络使用所述图像作为输入。
11.根据权利要求1所述的装置,其中,所述多个特征由变换器神经网络的编码器分类为所述多个关节类型,并且其中,被确定用于所述至少一个对象的所述姿态参数由所述变换器神经网络的解码器基于所述多个关节类型来确定。
12.根据权利要求1所述的装置,其中,所述姿态参数基于所述多个关节类型并且基于一个或多个经学习的关节查询而被确定用于所述至少一个对象。
13.根据权利要求12所述的装置,其中,所述至少一个对象包括第一对象和第二对象,并且其中,所述一个或多个经学习的关节查询用于预测以下各项中的至少一项:在所述第一对象与所述第二对象之间的相对平移、对象形状参数集合、以及相机模型参数。
14.根据权利要求1所述的装置,其中,用于所述至少一个对象的所述姿态参数包括针对所述多个关节类型中的每个关节的三维向量。
15.根据权利要求14所述的装置,其中,针对所述多个关节类型中的每个关节的所述三维向量包括水平分量、垂直分量和深度分量。
16.根据权利要求14所述的装置,其中,针对所述多个关节类型中的每个关节的所述三维向量包括在每个关节和与每个关节相关联的父关节之间的向量。
17.根据权利要求1所述的装置,其中,用于所述至少一个对象的所述姿态参数包括每个关节的位置以及在每个关节的深度和与每个关节相关联的父关节的深度之间的差。
18.根据权利要求1所述的装置,其中,用于所述至少一个对象的所述姿态参数包括所述至少一个对象相对于所述图像中的另一对象的平移。
19.根据权利要求1所述的装置,其中,用于所述至少一个对象的所述姿态参数包括所述至少一个对象的形状。
20.根据权利要求1所述的装置,其中,所述至少一个处理器被配置为:基于所述姿态参数来确定用户输入。
21.根据权利要求1所述的装置,其中,所述至少一个处理器被配置为:基于所述姿态参数来渲染虚拟内容。
22.根据权利要求1所述的装置,其中,所述装置是扩展现实设备。
23.一种确定一个或多个对象的一个或多个姿态的方法,所述方法包括:
使用机器学习系统从图像中确定多个关键点,所述多个关键点与所述图像中的至少一个对象相关联;
基于所述多个关键点从所述机器学习系统中确定多个特征;
将所述多个特征分类为多个关节类型;以及
基于所述多个关节类型来确定用于所述至少一个对象的姿态参数。
24.根据权利要求23所述的方法,其中,所述至少一个对象包括至少一只手。
25.根据权利要求23所述的方法,其中,所述至少一个对象包括两只手,其中,所述多个关键点包括用于所述两只手的关键点,并且其中,所述姿态参数包括用于所述两只手的姿态参数。
26.根据权利要求23所述的方法,其中,所述至少一个对象包括单手,并且所述方法还包括:
使用所述机器学习系统从所述图像中确定多个对象关键点,所述多个对象关键点与跟所述单手相关联的对象相关联;以及
基于所述多个对象关键点来确定用于所述对象的姿态参数。
27.根据权利要求23所述的方法,其中,基于所述多个关键点从所述机器学习系统中确定所述多个特征包括:
从所述机器学习系统的第一特征图中确定与所述多个关键点相对应的第一特征集合,所述第一特征图包括第一分辨率;以及
从所述机器学习系统的第二特征图中确定与所述多个关键点相对应的第二特征集合,所述第二特征图包括第二分辨率。
28.根据权利要求23所述的方法,还包括:
针对所述多个关键点中的每个关键点生成特征表示,其中,使用针对每个关键点的所述特征表示将所述多个特征分类为所述多个关节类型。
29.根据权利要求23所述的方法,其中,所述多个特征由变换器神经网络的编码器分类为所述多个关节类型,并且其中,被确定用于所述至少一个对象的所述姿态参数由所述变换器神经网络的解码器基于所述多个关节类型来确定。
30.根据权利要求23所述的方法,其中,所述姿态参数基于所述多个关节类型并且基于一个或多个经学习的关节查询而被确定用于所述至少一个对象。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163162305P | 2021-03-17 | 2021-03-17 | |
US63/162,305 | 2021-03-17 | ||
US17/457,408 | 2021-12-02 | ||
US17/457,408 US11804040B2 (en) | 2021-03-17 | 2021-12-02 | Keypoint-based sampling for pose estimation |
PCT/US2022/013754 WO2022197367A1 (en) | 2021-03-17 | 2022-01-25 | Keypoint-based sampling for pose estimation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116997941A true CN116997941A (zh) | 2023-11-03 |
Family
ID=83283894
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280019720.5A Pending CN116997941A (zh) | 2021-03-17 | 2022-01-25 | 用于姿态估计的基于关键点的采样 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11804040B2 (zh) |
EP (1) | EP4309151A1 (zh) |
KR (1) | KR20230156056A (zh) |
CN (1) | CN116997941A (zh) |
BR (1) | BR112023018094A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117292407A (zh) * | 2023-11-27 | 2023-12-26 | 安徽炬视科技有限公司 | 一种3d人体姿态估计方法及系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220189195A1 (en) * | 2020-12-15 | 2022-06-16 | Digitrack Llc | Methods and apparatus for automatic hand pose estimation using machine learning |
US11804040B2 (en) * | 2021-03-17 | 2023-10-31 | Qualcomm Incorporated | Keypoint-based sampling for pose estimation |
KR20230079618A (ko) * | 2021-11-29 | 2023-06-07 | 삼성전자주식회사 | 인체를 3차원 모델링하는 방법 및 장치 |
CN115984384B (zh) * | 2023-03-20 | 2023-07-21 | 乐歌人体工学科技股份有限公司 | 一种基于面部姿态图像估计的桌面升降控制方法 |
CN116129228B (zh) * | 2023-04-19 | 2023-07-18 | 中国科学技术大学 | 图像匹配模型的训练方法、图像匹配方法及其装置 |
CN116486489B (zh) * | 2023-06-26 | 2023-08-29 | 江西农业大学 | 基于语义感知图卷积的三维手物姿态估计方法及系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9383895B1 (en) * | 2012-05-05 | 2016-07-05 | F. Vinayak | Methods and systems for interactively producing shapes in three-dimensional space |
AU2016341196B2 (en) * | 2015-10-20 | 2021-09-16 | Magic Leap, Inc. | Selecting virtual objects in a three-dimensional space |
US10096125B1 (en) * | 2017-04-07 | 2018-10-09 | Adobe Systems Incorporated | Forecasting multiple poses based on a graphical image |
EP3467707B1 (en) | 2017-10-07 | 2024-03-13 | Tata Consultancy Services Limited | System and method for deep learning based hand gesture recognition in first person view |
US10796452B2 (en) * | 2017-12-03 | 2020-10-06 | Facebook, Inc. | Optimizations for structure mapping and up-sampling |
US11494932B2 (en) * | 2020-06-02 | 2022-11-08 | Naver Corporation | Distillation of part experts for whole-body pose estimation |
US11804040B2 (en) * | 2021-03-17 | 2023-10-31 | Qualcomm Incorporated | Keypoint-based sampling for pose estimation |
-
2021
- 2021-12-02 US US17/457,408 patent/US11804040B2/en active Active
-
2022
- 2022-01-25 CN CN202280019720.5A patent/CN116997941A/zh active Pending
- 2022-01-25 EP EP22704155.5A patent/EP4309151A1/en active Pending
- 2022-01-25 KR KR1020237030455A patent/KR20230156056A/ko unknown
- 2022-01-25 BR BR112023018094A patent/BR112023018094A2/pt unknown
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117292407A (zh) * | 2023-11-27 | 2023-12-26 | 安徽炬视科技有限公司 | 一种3d人体姿态估计方法及系统 |
CN117292407B (zh) * | 2023-11-27 | 2024-03-26 | 安徽炬视科技有限公司 | 一种3d人体姿态估计方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US11804040B2 (en) | 2023-10-31 |
KR20230156056A (ko) | 2023-11-13 |
EP4309151A1 (en) | 2024-01-24 |
BR112023018094A2 (pt) | 2023-10-03 |
US20220301304A1 (en) | 2022-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11804040B2 (en) | Keypoint-based sampling for pose estimation | |
US10769411B2 (en) | Pose estimation and model retrieval for objects in images | |
CN109635621B (zh) | 用于第一人称视角中基于深度学习识别手势的系统和方法 | |
US10861225B2 (en) | Neural network processing for multi-object 3D modeling | |
US20200241646A1 (en) | On-device classification of fingertip motion patterns into gestures in real-time | |
US20190392587A1 (en) | System for predicting articulated object feature location | |
EP3987443A1 (en) | Recurrent multi-task convolutional neural network architecture | |
EP3942529A1 (en) | Predicting three-dimensional articulated and target object pose | |
US11488320B2 (en) | Pose estimation method, pose estimation apparatus, and training method for pose estimation | |
US20160334877A1 (en) | Real-time 3d gesture recognition and tracking system for mobile devices | |
US20220351405A1 (en) | Pose determination method and device and non-transitory storage medium | |
US20220277489A1 (en) | Modeling objects from monocular camera outputs | |
Avola et al. | 3D hand pose and shape estimation from RGB images for keypoint-based hand gesture recognition | |
Zhang et al. | Handsense: smart multimodal hand gesture recognition based on deep neural networks | |
CN115661336A (zh) | 一种三维重建方法及相关装置 | |
CN112199994B (zh) | 一种实时检测rgb视频中的3d手与未知物体交互的方法和装置 | |
EP3639193A1 (en) | Human feedback in 3d model fitting | |
US20230093827A1 (en) | Image processing framework for performing object depth estimation | |
Jain et al. | Gestarlite: An on-device pointing finger based gestural interface for smartphones and video see-through head-mounts | |
KR20230128284A (ko) | 변형가능 모델들에 의한 3차원 스캔 등록 | |
WO2022197367A1 (en) | Keypoint-based sampling for pose estimation | |
CN116152334A (zh) | 图像处理方法及相关设备 | |
Jain et al. | [POSTER] AirGestAR: Leveraging Deep Learning for Complex Hand Gestural Interaction with Frugal AR Devices | |
Bajaj et al. | A Survey on 3D Hand Detection and Tracking Algorithms for Human Computer Interfacing | |
Welsh | Real-time pose based human detection and re-identification with a single camera for robot person following |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |