精华内容
下载资源
问答
  • 介绍 再现代码 结果 内容 src:源代码,包括模型,数据读取器和实用程序 工具:用于运行测试或可视化的主要功能 脚本:用于运行测试或可视化的脚本 其他目录是不言自明的 要求 Python2.7 ... 将模型包括在./checkpoints...
  • 手部21个关键点检测+手势识别-[MediaPipe]

    千次阅读 多人点赞 2021-04-05 17:08:53
    MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架,可以直接调用其API完成目标检测、人脸检测以及关键点检测等。本篇文章介绍其手部21个关键点检测(win10,python版) MediaPipe官网:...

    MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架,可以直接调用其API完成目标检测、人脸检测以及关键点检测等。本篇文章介绍其手部21个关键点检测(win10,python版)
    MediaPipe官网:https://github.com/google/mediapipe
    MediaPipe说明文档

    安装mediapipe

    pip install mediapipe
    

    创建手部检测模型

    import cv2
    import mediapipe as mp
    mp_drawing = mp.solutions.drawing_utils
    mp_hands = mp.solutions.hands
    hands = mp_hands.Hands(
            static_image_mode=True,
            max_num_hands=2,
            min_detection_confidence=0.75,
            min_tracking_confidence=0.5)
    
    hands = mp_hands.Hands(
            static_image_mode=False,
            max_num_hands=2,
            min_detection_confidence=0.75,
            min_tracking_confidence=0.5)
    

    hands是检测手部关键点的函数,其中有4个输入参数量可以选择

    1、static_image_mode:默认为False,如果设置为false, 就是把输入看作一个视频流,在检测到手之后对手加了一个目标跟踪(目标检测+跟踪),无需调用另一次检测,直到失去对任何手的跟踪为止。如果设置为True,则手部检测将在每个输入图像上运行(目标检测),非常适合处理一批静态的,可能不相关的图像。(如果检测的是图片就要设置成True)

    2、max_num_hands:可以检测到的手的数量最大值,默认是2

    3、min_detection_confidence: 手部检测的最小置信度值,大于这个数值被认为是成功的检测。默认为0.5

    4、min_tracking_confidence:目标踪模型的最小置信度值,大于这个数值将被视为已成功跟踪的手部,默认为0.5,如果static_image_mode设置为true,则忽略此操作。

    结果输出

    results = hands.process(frame)
    print(results.multi_handedness)
    print(results.multi_hand_landmarks)
    

    results.multi_handedness: 包括label和score,label是字符串"Left"或"Right",score是置信度

    results.multi_hand_landmarks: 手部21个关键点的位置信息,包括x,y,z 其中x,y是归一化后的坐标。z代表地标深度,以手腕处的深度为原点,值越小,地标就越靠近相机(我暂时也不清楚啥意思)
    在这里插入图片描述

    视频检测代码

    import cv2
    import mediapipe as mp
    
    mp_drawing = mp.solutions.drawing_utils
    mp_hands = mp.solutions.hands
    hands = mp_hands.Hands(
            static_image_mode=False,
            max_num_hands=2,
            min_detection_confidence=0.75,
            min_tracking_confidence=0.75)
    
    cap = cv2.VideoCapture(0)
    while True:
        ret,frame = cap.read()
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 因为摄像头是镜像的,所以将摄像头水平翻转
        # 不是镜像的可以不翻转
        frame= cv2.flip(frame,1)
        results = hands.process(frame)
        frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
        if results.multi_handedness:
            for hand_label in results.multi_handedness:
    			print(hand_label)
        if results.multi_hand_landmarks:
          for hand_landmarks in results.multi_hand_landmarks:
            print('hand_landmarks:' hand_landmarks)
            # 关键点可视化
            mp_drawing.draw_landmarks(
                frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
        cv2.imshow('MediaPipe Hands', frame)
        if cv2.waitKey(1) & 0xFF == 27:
            break
    cap.release()
    

    关键点识别结果

    在这里插入图片描述

    手势识别

    通过对检测到的手部关键点之间的角度计算便可以实现简单的手势识别(有局限性),比如计算大拇指向量0-2和3-4之间的角度,它们之间的角度大于某一个角度阈值(经验值)定义为弯曲,小于某一个阈值(经验值)为伸直。
    在这里插入图片描述

    加入手势判别完整代码

    import cv2
    import mediapipe as mp
    import math
    
    def vector_2d_angle(v1,v2):
        '''
            求解二维向量的角度
        '''
        v1_x=v1[0]
        v1_y=v1[1]
        v2_x=v2[0]
        v2_y=v2[1]
        try:
            angle_= math.degrees(math.acos((v1_x*v2_x+v1_y*v2_y)/(((v1_x**2+v1_y**2)**0.5)*((v2_x**2+v2_y**2)**0.5))))
        except:
            angle_ =65535.
        if angle_ > 180.:
            angle_ = 65535.
        return angle_
    def hand_angle(hand_):
        '''
            获取对应手相关向量的二维角度,根据角度确定手势
        '''
        angle_list = []
        #---------------------------- thumb 大拇指角度
        angle_ = vector_2d_angle(
            ((int(hand_[0][0])- int(hand_[2][0])),(int(hand_[0][1])-int(hand_[2][1]))),
            ((int(hand_[3][0])- int(hand_[4][0])),(int(hand_[3][1])- int(hand_[4][1])))
            )
        angle_list.append(angle_)
        #---------------------------- index 食指角度
        angle_ = vector_2d_angle(
            ((int(hand_[0][0])-int(hand_[6][0])),(int(hand_[0][1])- int(hand_[6][1]))),
            ((int(hand_[7][0])- int(hand_[8][0])),(int(hand_[7][1])- int(hand_[8][1])))
            )
        angle_list.append(angle_)
        #---------------------------- middle 中指角度
        angle_ = vector_2d_angle(
            ((int(hand_[0][0])- int(hand_[10][0])),(int(hand_[0][1])- int(hand_[10][1]))),
            ((int(hand_[11][0])- int(hand_[12][0])),(int(hand_[11][1])- int(hand_[12][1])))
            )
        angle_list.append(angle_)
        #---------------------------- ring 无名指角度
        angle_ = vector_2d_angle(
            ((int(hand_[0][0])- int(hand_[14][0])),(int(hand_[0][1])- int(hand_[14][1]))),
            ((int(hand_[15][0])- int(hand_[16][0])),(int(hand_[15][1])- int(hand_[16][1])))
            )
        angle_list.append(angle_)
        #---------------------------- pink 小拇指角度
        angle_ = vector_2d_angle(
            ((int(hand_[0][0])- int(hand_[18][0])),(int(hand_[0][1])- int(hand_[18][1]))),
            ((int(hand_[19][0])- int(hand_[20][0])),(int(hand_[19][1])- int(hand_[20][1])))
            )
        angle_list.append(angle_)
        return angle_list
    
    def h_gesture(angle_list):
        '''
            # 二维约束的方法定义手势
            # fist five gun love one six three thumbup yeah
        '''
        thr_angle = 65.
        thr_angle_thumb = 53.
        thr_angle_s = 49.
        gesture_str = None
        if 65535. not in angle_list:
            if (angle_list[0]>thr_angle_thumb) and (angle_list[1]>thr_angle) and (angle_list[2]>thr_angle) and (angle_list[3]>thr_angle) and (angle_list[4]>thr_angle):
                gesture_str = "fist"
            elif (angle_list[0]<thr_angle_s) and (angle_list[1]<thr_angle_s) and (angle_list[2]<thr_angle_s) and (angle_list[3]<thr_angle_s) and (angle_list[4]<thr_angle_s):
                gesture_str = "five"
            elif (angle_list[0]<thr_angle_s)  and (angle_list[1]<thr_angle_s) and (angle_list[2]>thr_angle) and (angle_list[3]>thr_angle) and (angle_list[4]>thr_angle):
                gesture_str = "gun"
            elif (angle_list[0]<thr_angle_s)  and (angle_list[1]<thr_angle_s) and (angle_list[2]>thr_angle) and (angle_list[3]>thr_angle) and (angle_list[4]<thr_angle_s):
                gesture_str = "love"
            elif (angle_list[0]>5)  and (angle_list[1]<thr_angle_s) and (angle_list[2]>thr_angle) and (angle_list[3]>thr_angle) and (angle_list[4]>thr_angle):
                gesture_str = "one"
            elif (angle_list[0]<thr_angle_s)  and (angle_list[1]>thr_angle) and (angle_list[2]>thr_angle) and (angle_list[3]>thr_angle) and (angle_list[4]<thr_angle_s):
                gesture_str = "six"
            elif (angle_list[0]>thr_angle_thumb)  and (angle_list[1]<thr_angle_s) and (angle_list[2]<thr_angle_s) and (angle_list[3]<thr_angle_s) and (angle_list[4]>thr_angle):
                gesture_str = "three"
            elif (angle_list[0]<thr_angle_s)  and (angle_list[1]>thr_angle) and (angle_list[2]>thr_angle) and (angle_list[3]>thr_angle) and (angle_list[4]>thr_angle):
                gesture_str = "thumbUp"
            elif (angle_list[0]>thr_angle_thumb)  and (angle_list[1]<thr_angle_s) and (angle_list[2]<thr_angle_s) and (angle_list[3]>thr_angle) and (angle_list[4]>thr_angle):
                gesture_str = "two"
        return gesture_str
    
    def detect():
        mp_drawing = mp.solutions.drawing_utils
        mp_hands = mp.solutions.hands
        hands = mp_hands.Hands(
                static_image_mode=False,
                max_num_hands=1,
                min_detection_confidence=0.75,
                min_tracking_confidence=0.75)
        cap = cv2.VideoCapture(0)
        while True:
            ret,frame = cap.read()
            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            frame= cv2.flip(frame,1)
            results = hands.process(frame)
            frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
    
            if results.multi_hand_landmarks:
                for hand_landmarks in results.multi_hand_landmarks:
                    mp_drawing.draw_landmarks(frame, hand_landmarks, mp_hands.HAND_CONNECTIONS)
                    hand_local = []
                    for i in range(21):
                        x = hand_landmarks.landmark[i].x*frame.shape[1]
                        y = hand_landmarks.landmark[i].y*frame.shape[0]
                        hand_local.append((x,y))
                    if hand_local:
                        angle_list = hand_angle(hand_local)
                        gesture_str = h_gesture(angle_list)
                        cv2.putText(frame,gesture_str,(0,100),0,1.3,(0,0,255),3)
            cv2.imshow('MediaPipe Hands', frame)
            if cv2.waitKey(1) & 0xFF == 27:
                break
        cap.release()
    
    if __name__ == '__main__':
        detect()
    
    展开全文
  • 1. 训练和测试数据集 2. 训练和测试代码(支持的backbone包括resent,mobilenet,shufflenet等) 3. 测试结果和演示图像
  • caffee:https:https://github.com/CMU-Perceptual-Computing-Lab/openpose添加链接描述 这是openpose的原始版本,也是最好用的 keras版本:...同样很流畅,与caffe...

    caffee:https:https://github.com/CMU-Perceptual-Computing-Lab/openpose添加链接描述

    这是openpose的原始版本,也是最好用的
    keras版本:https://github.com/michalfaber/keras_Realtime_Multi-Person_Pose_Estimation添加链接描述

    同样很流畅,与caffee不相上下
    tensorflow版本1:github.com/ildoonet/tf-pose-estimation添加链接描述
    tensorflow版本2:https://github.com/tensorlayer/openpose-plus添加链接描述

    性能下降,tensorflow版本2较好
    pytorch版本:github.com/Hzzone/pytorch-openpose添加链接描述

    作者有些工作尚未完成,实时性有待提高,但是代码简洁

    展开全文
  •  1)带标签点手势关键点数据很少  2)手势变化复杂,人工标记数据,时间和花销代价巨大  3)特殊场景下,人工标记也无法准确标记关键点,只能大概估计,如遮挡、握拳✊等,如下图 思想:  利用 立体几何 ...

    《Hand Keypoint Detection in Single Images using Multiview Bootstrapping》
     作者:Tomas Simon, Hanbyul Joo, Iain Matthews, Yaser Sheikh
     机构:Carnegie Mellon University
     论文:PDF
     实现:OpenPose

    1 Introduction

    现状:
     1)带标签点手势关键点数据很少
     2)手势变化复杂,人工标记数据,时间和花销代价巨大
     3)特殊场景下,人工标记也无法准确标记关键点,只能大概估计,如遮挡、握拳✊等,如下图
    在这里插入图片描述

    思想:
     利用立体几何,以多视图作为监督信号源,生成一致的手部关键点标签,引导训练手部关键点检测器。
     本文提出的是一种弱监督训练方法,在训练数据上,只有少量标注数据,大量未标注的多视图数据

    结论:
     该方法训练的关键点检测器可以实时运行在单RGB图像上,其精度可与深度传感器方法媲美;能够支持复杂对象3D无标记动作捕捉。

    2 Related Work

     相关研究,略
     但它们大部分都是基于深度图,且需要大量带标记的数据来训练;当然对于深度图来说,相对容易合成,而RGB图则困难得多

    3 Multiview Bootstrapped Training

     首先定义一个检测器d:
    在这里插入图片描述

     其中,d表示检测器,I表示图像, x p x_p xp表示预测关键点坐标, c p c_p cp表示点置信度,P表示点个数
     对于初始化训练集 T 0 T_0 T0
    在这里插入图片描述
     其中f表示图像帧,每帧 N 0 N_0 N0个视图,y标识真实标签。初始化检测器 d 0 d_0 d0
    在这里插入图片描述
     这时给定未标定数据集 T 1 T_1 T1 d 0 d_0 d0预测标记 T 1 T_1 T1,再进一步训练检测器 d 1 d_1 d1
    在这里插入图片描述
     在 d 0 d_0 d0预测标记 T 1 T_1 T1需要做额外监督处理,才能保证 T 1 T_1 T1不包含 T 0 T_0 T0中已经存在的信息,才能提升 d 0 d_0 d0 d 1 d_1 d1
     而这个额外监督正是基于立体几何多视图。因为在多视图下,总会有某些视图较其他容易检测,那么只要至少存在2个视图检测成功,就可以利用立体几何方式三角化3D关键点,然后再重投影到检测失败样本上进行标记,进而再训练。如下图

    在这里插入图片描述
     (a)图表示至少2个视图能够成功检测;(b)利用立体几何重建3D关键点;(c)检测失败视图;(d)重投影到失败视图(标记);(e)重新训练(公式4)

    整体算法流程如下:
    在这里插入图片描述
     其中, I v f I_v^f Ivf表示含F帧V个视图,且未标记样本
     迭代K次:
      1)用带标签的 T 0 T_0 T0初始化d为弱检测器
      对每一帧f
       a)预测每一个视图
    在这里插入图片描述
       b)增加3D点鲁棒性
        本文采用 σ = 4 \sigma =4 σ=4RANSAC算法来辅助3D点计算,并且要求2D点置信度大于阈值 λ \lambda λ。也就是在RANSAC inliers内点p,我们最小化重投影误差(公式6, P v ( X ) P_v^{(X)} Pv(X)表示重投影)来获得最终三角点:
    在这里插入图片描述
    在这里插入图片描述
      2)根据点置信度对视图排序,只选择成功视图进行3D重建
       用置信度和排序:
    在这里插入图片描述
      3)重投影到失败视图,共生成 N ≤ V N\leq V NV帧视图,并用于迭代训练检测器
       用N-best 帧参与下一轮训练:
    在这里插入图片描述

    4 Detection Architecture

     本文模型架构采用CPM(Convolutional Pose Machines),详见CPM
    在这里插入图片描述

    5 Performance

    在这里插入图片描述
     实测效果见OpenPose

    展开全文
  • 导读 本期将介绍并演示基于MediaPipe的手势骨架与特征点...我们主要介绍手势骨骼与关键点提取,其他内容大家有兴趣自主学习了解。github地址:https://github.com/google/mediapipe 效果展示 手势骨骼提取与关..

    图片

    导读

    本期将介绍并演示基于MediaPipe的手势骨架与特征点提取步骤以及逐步为基础实现手势识别的方法。

    介绍

    关于MediaPipe以前有相关文章介绍,可以参见以下链接:

    Google开源手势识别-基于TF Lite / MediaPipe

    它能做些什么?它支持的语言和平台有什么?请看下面两张图:

    图片

    图片

    我们主要介绍手势骨骼与关键点提取,其他内容大家有兴趣自主学习了解。github地址:https://github.com/google/mediapipe

    效果展示

    手势骨骼提取与关键点标注:

    手势骨架与关键点提取-计算机视觉

    手势识别0〜6 

    手势识别-提前祝大家新年快乐

    实现步骤

    具体可参考下面链接:

    https://google.github.io/mediapipe/solutions/hands 

    (1)安装mediapipe,执行pip install mediapipe

    图片

    (2)下载手势检测与骨架提取模型,地址:

    https://github.com/google/mediapipe/tree/master/mediapipe/modules/hand_landmark

    图片

    图片

    (3 )代码测试(摄像头实时测试)

    import cv2import mediapipe as mpfrom os import listdirmp_drawing = mp.solutions.drawing_utilsmp_hands = mp.solutions.hands
    
    hands = mp_hands.Hands(    min_detection_confidence=0.5, min_tracking_confidence=0.5)cap = cv2.VideoCapture(0)while cap.isOpened():  success, image = cap.read()  if not success:    print("Ignoring empty camera frame.")    continue
      image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)  image.flags.writeable = False  results = hands.process(image)
      image.flags.writeable = True  image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)  if results.multi_hand_landmarks:    for hand_landmarks in results.multi_hand_landmarks:      mp_drawing.draw_landmarks(          image, hand_landmarks, mp_hands.HAND_CONNECTIONS)  cv2.imshow('result', image)  if cv2.waitKey(5) & 0xFF == 27:    breakcv2.destroyAllWindows()hands.close()cap.release()

    输出与结果:

    图片

    图片

    图片检测(可支持多个手掌):

    import cv2import mediapipe as mpfrom os import listdirmp_drawing = mp.solutions.drawing_utilsmp_hands = mp.solutions.hands
    # For static images:hands = mp_hands.Hands(    static_image_mode=True,    max_num_hands=5,    min_detection_confidence=0.2)img_path = './multi_hands/'save_path = './'index = 0file_list = listdir(img_path) for filename in file_list:  index += 1  file_path = img_path + filename  # Read an image, flip it around y-axis for correct handedness output (see  # above).  image = cv2.flip(cv2.imread(file_path), 1)  # Convert the BGR image to RGB before processing.  results = hands.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
      # Print handedness and draw hand landmarks on the image.  print('Handedness:', results.multi_handedness)  if not results.multi_hand_landmarks:    continue  image_hight, image_width, _ = image.shape  annotated_image = image.copy()  for hand_landmarks in results.multi_hand_landmarks:    print('hand_landmarks:', hand_landmarks)    print(        f'Index finger tip coordinates: (',        f'{hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP].x * image_width}, '        f'{hand_landmarks.landmark[mp_hands.HandLandmark.INDEX_FINGER_TIP].y * image_hight})'    )    mp_drawing.draw_landmarks(        annotated_image, hand_landmarks, mp_hands.HAND_CONNECTIONS)  cv2.imwrite(      save_path + str(index) + '.png', cv2.flip(annotated_image, 1))hands.close()
    # For webcam input:hands = mp_hands.Hands(    min_detection_confidence=0.5, min_tracking_confidence=0.5)cap = cv2.VideoCapture(0)while cap.isOpened():  success, image = cap.read()  if not success:    print("Ignoring empty camera frame.")    # If loading a video, use 'break' instead of 'continue'.    continue
      # Flip the image horizontally for a later selfie-view display, and convert  # the BGR image to RGB.  image = cv2.cvtColor(cv2.flip(image, 1), cv2.COLOR_BGR2RGB)  # To improve performance, optionally mark the image as not writeable to  # pass by reference.  image.flags.writeable = False  results = hands.process(image)
      # Draw the hand annotations on the image.  image.flags.writeable = True  image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)  if results.multi_hand_landmarks:    for hand_landmarks in results.multi_hand_landmarks:      mp_drawing.draw_landmarks(          image, hand_landmarks, mp_hands.HAND_CONNECTIONS)  cv2.imshow('result', image)  if cv2.waitKey(5) & 0xFF == 27:    breakcv2.destroyAllWindows()hands.close()cap.release()

     

    图片

    图片

    总结后续说明

    总结:MediaPipe手势检测与骨架提取模型识别相较传统方法更稳定,而且提供手指关节的三维坐标点,对于手势识别与进一步手势动作相关开发有很大帮助。

    其他说明:

    (1)手部关节点标记与排序定义如下图:

    图片

    (2 )手部关节点坐标(x,y,z)输出为小于1的小数,需要归一化后显示到图像上,这部分可以查看上部分源码后转到定义查看,这里称为演示代码,另外的Z坐标靠近屏幕扩大,超出屏幕尺寸

    def Normalize_landmarks(image, hand_landmarks):  new_landmarks = []  for i in range(0,len(hand_landmarks.landmark)):    float_x = hand_landmarks.landmark[i].x    float_y = hand_landmarks.landmark[i].y    # Z坐标靠近屏幕增大,远离屏幕减小    float_z = hand_landmarks.landmark[i].z    print(float_z)    width = image.shape[1]    height = image.shape[0]     pt = mp_drawing._normalized_to_pixel_coordinates(float_x,float_y,width,height)    new_landmarks.append(pt)  return new_landmarks

    (3 )根据此您可以做一个简单的额度识别识别或手势靠近远离屏幕的小程序,当然还要要考虑关节点的坐标,可能还需要计算角度已经以前的状态等等,某种以下这样:

    图片

    其他演示与相关代码均在知识星球主题中发布,需要的朋友可以加入获取。另外后续有时间更新C ++版本也将直接发布在知识星球中。

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

    展开全文
  • 昨日Satya Mallick又发表了使用OpenCV调用OpenPose工程中的手部关键点检测(hand pose estimation)模型的文章,对于想要使用手部关键点检测手势识别、手语识别、抽烟检测等工程开发的朋友来说这是一个非常简单的...
  • OpenPose是第一个实时地检测人体, 手势, 面部关键点(135点)的检测器. 可以从https://github.com/CMU-Perceptual-Computing-Lab/openpose/releases下载最新版本. 或者从源码安装OpenPose. 1. 源码安装OpenPose git...
  • OpenPose 基于OpenCV DNN 的手部关键点检测

    万次阅读 多人点赞 2019-05-30 21:38:35
    原文:OpenPose 基于OpenCV DNN 的手部关键点检测 - AIUAI 手部关键点检测,旨在找出给定图片中手指上的关节点及指尖关节点. 其类似于面部关键点检测(Facial Landmark Detection) 和人体关键点检测(Human Body Pose ...
  • 本文首先对采集的数据集进行肤色处理, 然后结合调用的手部关键点模型检测出手部22个特征点, 采用八向种子填充算法进行图像分割. 接着对手部轮廓和关键点连接骨架进行傅里叶描述子算法特征提取, 最后通过支持向量机...
  • 关键点检测方法、人体姿态估计

    千次阅读 2019-04-01 20:08:56
    NIPS 2018(oral):通过端到端几何推理发现潜在3D关键点 https://www.itcodemonkey.com/article/9143.html
  • OpenPose是一个利用OpenCV和Caffe并以C++写成的开源库,用来实现多线程的多人关键点实时检测,作者包括Gines Hidalgo,Zhe Cao,Tomas Simon,Shih-En Wei,Hanbyul Joo以及Yaser Sheikh。 即将加入(但是已经实现...
  • 手势识别 技术

    万次阅读 多人点赞 2019-04-19 16:02:27
    手势识别可以分为基于可穿戴设备的识别、基于触摸技术的识别和基于计算机视觉的识别。 一、基于可穿戴设备的识别 1、在手势交互过程中,可以直接采集每根手指的弯曲姿态,通过数据归一化和平滑处理两根手指之间...
  • Mediapipe三维实时人体关键点检测与追踪1.Mediapipe简介2.Mediapipe姿态检测器3.Mediapipe图像姿态检测4.Mediapipe摄像头实时姿态检测 1.Mediapipe简介 Google出了一个开源的、跨平台的、可定制化的机器学习解决方案...
  • 导读本期将介绍并演示基于MediaPipe的手势骨架与特征提取步骤以及以此为基础实现手势识别的方法。介绍关于MediaPipe以前有相关文章介绍,可以参看下面链接:Google开源手势识...
  • 手部预测质量 02 Performance MediaPipe Holistic 每一帧需要协调多达 8 个模型:1 个姿势检测器、1 个姿势关键点模型、3 个 re-crop 模型和 3 个手部和面部的关键点模型。 在构建过程中,作者不仅优化了机器学习...
  • 手部关键点检测的应用场景包括:手势识别、手语识别与理解和手部的行为识别等。 模型检测效果如下图: 模型转换 转换模型首先需要下载源模型,对于一个Caffe模型,一般包括如下两个文件,即模型计算图文件(* ....
  • 基于YOLO+ResNet50的手势识别 (一)项目背景以及系统环境 本文所使用的深度学习框架为pytorch-gpu-1.7.1版本,python3.7版本,需要在特定的系统环境中运行。本文搭建实验所需要的系统环境如下所示。 1.1 项目背景 ...
  • 通过opencv&KNN实现手势识别,代码简单,效果很好。功能包含,图片采集,特征处理,k值调整,手势预测,石头剪刀布小游戏
  • 手部关键点检测是在手指上找到关节以及在给定图像中找到指尖的过程。它类似于在脸部(面部关键点检测)或身体(人体姿势估计)上找到关键点。但是手部检测不同的地方在于,我们将整个手部视为一个对象。 美国卡耐基...
  • 在人机交互场景中,机器可以识别人的手势、肢体动作、表情,你可知背后的核心技术是什么吗?没错,就是关键点检测技术,它能帮你实现精准的人机交互任务,如手势控制、智能健身、体感游戏等, 还可以识...
  • 谈起手势识别技术,由简单粗略的到复杂精细的,大致可以分为三个等级:二维手型识别、二维手势识别、三维手势识别。在具体讨论手势识别之前,我们有必要先知道二维和三维的差别。二维只是一个平面空间,我们可以用...
  • 68个关键点的训练数据集(1.7GB):http://dlib.net/files/data/ibug_300W_large_face_landmark_dataset.tar.gz 194个关键点的数据集(需要翻墙):...
  • 本文转载自微软研究院AI头条。编者按:在拥挤的人群的场景下,由于人群过于密集,重合程度太高,所以每个人的位置难以用人体检测框表示,而传统的一些自下而上的人体姿态估计算法也很难检测到人物的关...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,950
精华内容 2,380
关键字:

手势关键点检测