【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测

“你比个手势,AI就识别出Emoji,浏览器上跑:已开源,推特2.8万赞”

本文运行了尼克小哥的开源代码,其中有那么一点点坑吧。zxx让我把这个跑一下,跑是跑成了,但他没用上。

尼克用的是TensorFlow.js,用IBM云上的GPU训练的,免费的k80,半小时训练时间,在IBM的annotations上准备数据标注手势图。作者写的教程,其实真的蛮手把手的,就是细心一点就好了。当然,我跑出来没有作者那么炫酷,毕竟给的标签是文字,如果要想转换成这种emjo的贴纸,好像是要再写代码,将文字类型的label转成贴纸.....

我在ubuntu16.04上跑的,展示一下结果~~

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第1张图片

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第2张图片

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第3张图片

主要的步骤:

1.开始前的准备

这是尼克小哥的github:https://github.com/cloud-annotations/training

这个github里给了两个教程,一个是在IBM Cloud上训练分类模型,一个是训练目标检测模型,大家老老实实按照教程左侧的几步一步步往下走就行了,我的这个网页chrome自动翻译成中文了。

  • Training a Classification Model – How to train your own model to label images on IBM Cloud.
  • Training an Object Detection Model – How to train your own model to find objects in an image on IBM Cloud.

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第4张图片

无论是创建对象存储实例还是创建机器学习实例,都要记录服务凭证中的apikeyaccess_key_idsecret_access_keyresource_instance_idinstance_idpasswordurland username. 这些东西。可以一键复制下来存到txt里,方便之后登录要用到的时候查看。

第三步准备训练数据的时候会要求登录到Cloud Annotations Tool,分类模型和目标检测模型,前两步都是一样的,就是准备训练数据的区别。分类模型就是给标签就行,目标检测需要在线打框。以目标检测为例,可以上传图片逐一打框,也可以上传视频,它会自动把上传的视频按帧切割。我标注了数据,剪刀石头布的各50张,一张图片上可以打多个框。必须要提醒的是,标签一定要用英文,因为它不支持中文,训练会报编码错误的,给你们看,在github上找到的同款错误,https://github.com/cloud-annotations/training/issues/67 。

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第5张图片

2.训练并下载模型

2.1首先需要安装Cloud Annotation CLI:

npm install -g cloud-annotations

特别要注意的是,需要安装Node 10.13.0或更高版本

怎么安装呢,我给大家找个教程,按着这个安就行https://blog.51cto.com/xiaok007/2335337?source=dra

里面安装最新的nodejs和升级npm为最新版本会自动带你到比Node 10.13.0更高的版本的。不要做死走什么,从源码编译安装npm,哈哈哈哈,仰天长笑。

 

2.2安装好了之后尝试在终端输入cacli命令,应该能看到:

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第6张图片

cacli init里面可以配置训练名称,epoch之类的,

cacli logs可以查看训练日志,如果长时间没反应那就看看logs是不是有报错,

cali train就可以训练模型,选择你之前准备数据的bucket进行训练就好;模型开始训练可能得稍微等一会儿,训练好了之后会告诉你完成。失败了的话会告诉你error。给你的model ID要记录一下,查看logs,还有下载的时候也好知道自己要看的是哪个模型呀。

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第7张图片

cacli progress就是监管训练的进程,训练到第多少步了,

cacli list可以查看之前训练过的,额,其实你们可以在init里面给模型重命名,不要像我一样都是一个名字,很容易分不清楚哪个是哪个的....

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第8张图片

2.3下载模型

cacli download 后面加模型的名字,就可以下载模型了,下载好后会告诉你Done。

比如我的是cacli download model-m3fdnbrf

并且会有三个文件夹保存到本地:

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第9张图片

因为我们只需要在web浏览器上跑,所以仅使用model_web文件夹就可以了~这里面的东西,给你们看看:

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第10张图片

 

3.在网页上跑模型

参考尼克小哥的这个https://github.com/cloud-annotations/object-detection-react

3.1克隆这个github,并进入相应目录

git clone https://github.com/cloud-annotations/object-detection-react.git
cd object-detection-react

3.2在上面的终端路径下,输入npm install

这步很关键,但也会等很久,因为一直在下载东西,出现的warning都不需要管,只要没有error就行。成功之后在object-detection-react文件夹下会多出一个node_modules文件夹,这个很关键啊。200M+呢,这个文件夹没有,休想启动。

3.3把2.3中下载下来的model_web文件夹复制到object-detection-react的public文件夹里面

3.4终端输入npm start

【手势识别】笔记本摄像头实时手势识别,同理可进行其它目标检测_第11张图片

确保你的摄像头正常工作,然后.....

请进入相应的网址http://localhost:3000,进行愉快的玩耍,谢谢!!!!

=========================================================================================

感觉和google的teachable machine异曲同工,之前截图都做好了本来打算弄教程的,但是那个不知道是官方有个bug还是怎么回事,我就搁置了,今天中午,先把IBM这个弄上来,希望你们喜欢~蹭个热度。喜欢点个赞吧!

 

 

你可能感兴趣的:(目标检测玩一玩)