传统的手势辨识主要采用图像处理手法,针对手部图片进行影像分析,着重在于形状及特征点的取得,缺点是需要控制严格的外在环境因子(如灯光、背景、颜色等),才能避免造成影像分析时的干扰,而近年来得利于 AI 技术,透过深度学习自动萃取特征并进行影像分类及对象侦测,可让手势辨识变得更加精确,也不易受外在环境所干扰。
不过,如果您打算自行训练一个手势辨识模型,首先要面对的第一项工作便是图片的搜集及标记,这是一项相当繁杂且花时间的人力密集工作,因此如果有个方便好用的工具能自动将影片或摄影机中的手势,自动裁切并依手势类型分类好,甚至还能将手势自动标记好,是不是非常方便呢?
这是可能的,只要先训练好一个侦测手部的模型,便可以利用它来制作一个手势自动分类及标记的工具,产生两种类型的 dataset:
1.Classified image dataset
2.VOC labeled dataset
本文目的是希望透过该工具,节省图片数据搜集、图片分类、图片标记这三项工作的时间,而我们唯一的工作仅是准备影片、在镜头前比出需要的各种手势,让该工具直接替我们产生出可直接用来训练影像分类或对象侦测使用的 dataset。
制作手部侦测模型
在设计这套工具前,我们需要训练一个手部侦测模型,这个模型的目的是「无论任何姿势,只要是人的手掌都要能侦测到」,至于如何训练该模型,您可使用任何常用的开源对象侦测 framework,下方我们分别以 YOLOV3-Tiny 以及 SSD-Mobilenet 2 作为训练示范,dataset 则是使用两种开源 hand dataset 以及一个自制的 hand dataset 来训练。
•训练的 dataset
下方介绍两个开源的 dataset 以及一个自己制作的 dataset:
A)EgoHands:A Datasetfor Hands in Complex Egocentric Interactions,
http://vision.soic.indiana.edu/projects/egohands/
该 dataset 来源为 48 个影片(二个人在进行互动游戏,以第一人称视角拍摄);图片尺寸为 720×1280 px,每个影片汇出 100 frames并已 labeled,总计 4800 张;Label 的格式为 matlab 的 mat 檔,poly 多边形(每个手部约 200~300 points)。
B)VGG hand dataset:
http://www.robots.ox.ac.uk/~vgg/data/hands/
VGG(Visual GeometryGroup)为牛津大学工程科学系的社群。内容分为train/test/validation 三个 dataset,图片来源为其它开源影像数据库(如 PASCAL VOC)及电影片段;
Label 为依物体长宽而变化倾斜的矩形,不是常用的左右垂直上