窝牛号

基于mediapipe的人手21点姿态检测模型—CPU上检测速度惊人

前期的文章,我们介绍了MediaPipe对象检测与对象分类任务,也分享了MediaPipe的人手手势识别。在进行人手手势识别前,MediaPipe首先需要进行人手的检测与人手坐标点的检测,经过以上的检测后,才能把人手的坐标点与手势结合起来,进行相关的手势识别。

MediaPipe人手坐标点检测模型可以根据用户输入的图片或者视频,进行人手21个关键点的检测,并输出相关的关键点的坐标。

MediaPipe人手坐标点检测模型可以识别人手的21个关键点。MediaPipe人手关键点检测模型共有三种输入模式:

IMAGE:单图像输入模式。VIDEO:视频模式。LIVE_STREAM:输入数据实时流的模式,例如来自摄像机的输入数据。在这种模式下,必须调用resultListener来设置监听器以异步接收结果。

MediaPipe人手坐标点检测模型包含2个模型:

一个是人手检测模型,其模型需要检测出输入图像或者视频中人手的位置。另外一个模型是人手关键点检测模型,当检测到人手后,启用此模型来进行人手关键点的预测。

当我们使用MediaPipe人手坐标点检测模型时,其模型后台是调用了以上2个模型。由于运行手掌检测模型比较耗时,因此在视频或直播运行模式下,Hand Landmarker人手检测使用一帧中手部位置模型定义的边界框来定位后续帧中的手部区域。仅当手部检测模型不再识别手的存在或无法跟踪帧内的手时,手部关键点检测模型才会重新触发手掌检测模型。这减少了 Hand Landmarker 触发手掌检测模型的次数,有效降低了运算量,提高了运行速度。(基于CPU延时17.12ms,而GPU模式延时12.27ms)

代码实现人手21个关键点检测

在运行本节代码前,首先需要安装python以及MediaPipe库。并下载人手关键点检测模型hand_landmarker.task。

!pip install -q mediapipe==0.10.0 !wget -q https://storage.googleapis.com/mediapipe-models/hand_landmarker/hand_landmarker/float16/1/hand_landmarker.task

然后准备一张需要检测的图片或者一段视频,并输入如下代码:

首先需要导入相关的包,这里需要确认一下是否已经安装了MediaPipe然后创建人手坐标点检测器detector = vision.HandLandmarker.create_from_options(options)加载图片或者视频,当然也可以加载视频流。模型检测,输出相关的坐标点可视化模型检测结果 创建 人手检测模型检测器 base_options = python.BaseOptions(model_asset_path=&39;) options = vision.HandLandmarkerOptions(base_options=base_options, num_hands=2) detector = vision.HandLandmarker.create_from_options(options) 34;image.jpg& 人手坐标点检测 detection_result = detector.detect(image) 坐标点输出格式如下: HandLandmarkerResult: Handedness: Categories 0: x : 0.638852 y : 0.671197 z : -3.41E-7 Landmark 0: x : 0.067485 y : 0.031084 z : 0.055223 Landmark pixels FONT_SIZE = 1 FONT_THICKNESS = 1 HANDEDNESS_TEXT_COLOR = (88, 205, 54) 34;{handedness[0].category_name}",(text_x, text_y), cv2.FONT_HERSHEY_DUPLEX, FONT_SIZE, HANDEDNESS_TEXT_COLOR, FONT_THICKNESS, cv2.LINE_AA) return annotated_image

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除

窝牛号 wwww.93ysy.com   沪ICP备2021036305号-1