ml5js助力前端玩转机器学习

ml5js获取服务器上已经训练好的模型,调用ml5js提供的API即可在Web前端玩转典型机器学习案例,ml5js官方提供的机器学习案例类型有图像、声音和文本三个类别,本篇记录我体验ml5js关于图像类别的部分API的过程,对机器学习在大前端应用场景里的趣味性和实用性有感性一个的认知。

1. 机器学习图像分类

ml5js机器学习图像分类识别

我使用ml5.imageClassifier()访问存储在云端的据官方说经过1500万张图像数据集预先训练好的模型与本地待识别图片进行比对。ml5js首先从云端获取预先训练好的模型,与本地待识别的图像比对,最终输出自定义数目的与待识别图像内容相关的多个对象,每个对象中包含一个识别到的图像内容名称,和代表有几成把握的数字,数字越接近1代表对识别结果越有把握。

2. 机器学习肢体姿势

机器学习肢体姿势 - 陈帅华

我使用ml5.poseNet()识别图片中人物的肢体姿势。可以使用单个肢体姿势或多个肢体姿势两个训练模型。识别完毕返回的肢体姿势识别结果定位了人体17个关键点,分别是鼻子、左眼、右眼、左耳、右耳、左手腕、右手腕、左手肘、右手肘、左肩、右肩、左髋、右髋、左膝、右膝、左脚踝和右脚踝17个部位。说句题外话,轻轻拍打这17个部位的四周可以疏通经络。

3. 机器学习图像切割

不知道ml5js官方由于何种原因,虽然官方文档提到了ml5.bodyPix()这一API,但是ml5.js中并没有该接口。

官方文档对该API的使用场景的描述是这样的:通过ml5.bodyPix()接口,在浏览器中使用TensorFlow.js对人体和身体部分进行分割。在计算机视觉中,图像分割是指将图像中的像素分组为语义区域的技术,通常用于定位身体部位。BodyPix模型经过训练,可以为一个人和24个身体部位(左手,右前腿或后躯干等部分)定位像素区域。换句话说,BodyPix可以对图像的像素进行分类,分为两类:代表人的像素和代表背景的像素。

24个部位包括:左脸、有脸,右大腿前侧、右小腿后侧、右大腿后侧、左小腿前侧、左大腿前侧、左大腿后侧、左小腿后侧、右脚、右小腿前侧、左脚、躯干前侧、躯干后侧、右大臂前侧、右大臂后侧、右小臂后侧、右小臂前侧、左大臂前侧、左大臂后侧、左小臂后侧、右手、右小臂前侧、左手。

在线图像标注工具 - 陈帅华

根据官方文档的描述,返回的数据包含24个人体标记部位的编号和对应的颜色。我的开源独立项目——在线图像标注工具,采用人工图像切割标记处理的方法为机器学习提供大量训练数据,最终让机器学会如何按人体24个部位切割和标注图像。

4. 机器学习去除视频背景

ml5.uNet()。U-Net是一个卷积神经网络,是为德国弗莱堡大学计算机科学系的生物医学图像分割而开发的。该网络基于完全卷积网络[2],其架构经过修改和扩展,可以处理更少的训练图像并产生更精确的分割。UNET允许您分割图像,例如,在您坐在办公桌前从您的视频中删除背景。

5. 机器学习混合照片风格

ml5.styleTransfer()。Style Transfer是一种机器学习技术,可以将一个图像的样式转换为另一个图像。这是一个两步过程,首先您需要在一个特定样式上训练模型,然后您可以将此样式应用于另一个图像。


ml5.js旨在使广大的艺术家,创意编码员和学生能够使机器学习变得平易近人。该库提供了对浏览器中机器学习算法和模型的访问,构建在TensorFlow.js之上,没有其他外部依赖。如果想进一步深入机器学习,并不只有调用现成的接口这么简单。


网站参考:

  1. TensorFlow For JS
  2. ml5.js
授权账号 » 
原创声明 » 未经授权,请勿复制转载,谢谢配合
联系方式 » 
微信:huazi19930927
邮箱:lanserdi@163.com
发布日期 » 2019年9月1日 周日
Github账号登录以留言