赞
踩
众所周知,用深度学习的方式进行目标识别需要先训练再预测。手势识别也不例外。既然是训练,数据集就是必不可少的!这里采用了两个数据集如下。
这两个数据集都是从飞浆aistudio中搜索到的,。handpose_x_gesture_v1用来做训练用;hand_gesture_dataset在预测时可以从中选择图片,以验证模型。
接下来需要对训练数据集做一些预处理。我们需要将数据集变成VOC或者COCO格式,这里选择VOC格式。处理之后的数据集如下图所示。
其中label_list中是要识别的目标种类的名称,如下。
这里只先训练“1”手势和“3”手势,所以其中只填写one和three就行。另外注意这里的所有文本文档的换行符需要是Unix(LF)。
train文本文档用来指明哪些图片用来做训练的,如下图所示。
每一行的左边是图片路径,右边是与其对应的xml脚本路径。xml脚本中指明了预期对应的图片是属于哪一类,比如“one”或者“three”,以及图片中手势的坐标位置和大小。
valid文本文档的格式和train一样,只不过它用来指明那些图片用来在训练过程中做验证用的。
我这里是将80%的图片用来训练,20%的图片用来在训练过程中做验证。
以上train和valid文档的生成和图片的划分是通过写python代码实现的。
上图中的xml文件是通过labelimg生成的。它可以通过pip进行安装。生成的xml文件统一存在annotations文件夹中。
接下来就可以进行训练了。这里利用百度飞浆赠送的算力卡进行训练。也就是在飞浆页面中创建项目,如下图。
项目类型为notepad
接下来选择经典款就可以。
通过这种方式,只要每天运行项目就可以获得算力卡,这些算力卡足够我们训练手势识别了。
进入项目后,我们首先需要安装paddledet,因为默认是不带的,所有我们需要自己安装。
将下载好的PaddleDetection(可以在gitee下载)传到服务器中解压,然后按照安装说明安装即可。
安装完成后, 将我们刚刚制作好的数据集打包上传。
这里我们选择ppyolo_r50vd_dcn_voc.yml作为训练脚本。我们可以更改其中的snapshot_epoch和epoch。
epoch是训练轮数,snapshot_epoch是隔几次保存一次训练结果。
然后打开ppyolo_reader.yml文件,将target_size修改为训练完成后做预测的图片的真实大小尺寸。
依据是在FAQ中如下描述。
保存后再打开voc.yml,更改如下。
保存后就可以输入如下命令训练了。
python tools/train.py -c configs/ppyolo/ppyolo_r50vd_dcn_voc.yml --eval -o use_gpu=true
训练完成后将我们用来做测试的图片上传到服务器,输入如下命令进行预测。
python tools/infer.py -c configs/ppyolo/ppyolo_r50vd_dcn_voc.yml -o use_gpu=true --infer_img=../demo_img/0062.png
效果如下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。