比Tensorflow还强?

大家好,我是章北海
Python是机器学习和深度学习的首选编程语言,但绝不是唯一。训练机器学习/深度学习模型并部署对外提供服务(尤其是通过浏览器)JavaScript 是一个不错的选择,市面上也出现了很多 JavaScript 机器学习库,比较著名的就是谷歌的 TensorFlow.js。我在《用浏览器玩机器学习,赞!》一文中已详细介绍TensorFlow.js的用法,感兴趣的同学可以去看看。
今天要向大家介绍一个功能更加强大的 JavaScript 机器学习库——ML5.js。它构建在 Tensorflow 之上,可进一步简化直接从 JavaScript访问机器学习模型的过程。
ml5.js
ml5.js是一个javascript实现的,能在浏览器里面运行的机器学习框架,它封装了tensorflow.js的API,给开发者提供一个更简单的使用环境,降低了机器学习编码的成本。
ml5js官方提供的机器学习案例类型有图像、声音和文本三个类别.

每个模型都有初始化,参数,属性,方法的详细介绍,以ml5.imageClassifier() 为例,大家去对应目录查看即可:
其实大家完全不用担心难以使用,因为ml5.js,太简单了。有多简化?我们看一下核心代码:
// Step 1: 使用MobileNet创建图像分类模型
const classifier = ml5.imageClassifier('MobileNet', onModelReady);
// Step 2: 选择一张图片
const img = document.querySelector("#myImage")
// Step 3: 预测图片分类结果
let prediction = classifier.predict(img, gotResults);
// Step 4: 对结果进行操作
function gotResults(err, results) {
console.log(results);
}
html中使用ml5.js更简单了,只需一行:
<script src="https://unpkg.com/ml5@0.10.5/dist/ml5.min.js" type="text/javascript"></script>
是不是及其简单?
ml5js 如何入门
学习ml5.js最佳方式是从官方实例入手:examples.ml5js.org
大家可以通过 p5.js web editor查看案例,不但可以实时看到效果,还有具体代码:
p5.js 是一个JavaScript的函数库,是一个对初学者非常友好的编程环境,能够将制作出来的有创意,有趣的东西呈现在任何的浏览器上。


不过我更推荐克隆整个项目,然后在本地运行这些案例,步骤如下:
# 1:克隆项目
git clone https://github.com/ml5js/ml5-library.git
cd ml5-library
# 2:安装依赖
npm install
# 3:运行本地服务
npm run develop
# 4:浏览器访问 localhost:8081
ml5js 实例
以图形识别为例,一个项目必须包含一个html页面,代码如下:
<html>
<head>
<meta charset="UTF-8">
<title>Image Classification Example</title>
<script src="https://unpkg.com/ml5@0.10.5/dist/ml5.min.js" type="text/javascript"></script>
</head>
<body>
<h1>Image classification using MobileNet</h1>
<p>The MobileNet model labeled this as <span id="result">...</span> with a confidence of <span id="probability">...</span>.</p>
<img src="data:images/dog.jpeg" id="image" width="400" />
<script src="sketch.js"></script>
</body>
</html>
模型实现在 sketch.js,代码如下:
const image = document.getElementById('image'); // 需要识别的图片
const result = document.getElementById('result'); // html中的结果标签
const probability = document.getElementById('probability'); // 识别概率标签
// 用MobileNet初始化imageClassifier
ml5.imageClassifier('MobileNet')
.then(classifier => classifier.classify(image))
.then(results => {
result.innerText = results[0].label;
probability.innerText = results[0].confidence.toFixed(4);
});
在image目录下放我们要识别的图片,本例中就是dog.jpeg

建议VsCode运行,记得安装 Live Server 插件

用 Live Server 打开index.html,浏览器会自动弹出

比Tensorflow还强?的更多相关文章
- win10安装Tensorflow
win10安装Tensorflow 前提: 保证你的pip>=8.1版本 否则利用python -m pip install -U pip 进行升级,或下载pip源文件 确定你的显卡是否支持c ...
- Caffe、TensorFlow、MXnet三个开源库对比
库名称 开发语言 支持接口 安装难度(ubuntu) 文档风格 示例 支持模型 上手难易 Caffe c++/cuda c++/python/matlab *** * *** CNN ** MXNet ...
- TensorFlow入门学习(让机器/算法帮助我们作出选择)
catalogue . 个人理解 . 基本使用 . MNIST(multiclass classification)入门 . 深入MNIST . 卷积神经网络:CIFAR- 数据集分类 . 单词的向量 ...
- 深入浅出TensorFlow(二):TensorFlow解决MNIST问题入门
2017年2月16日,Google正式对外发布Google TensorFlow 1.0版本,并保证本次的发布版本API接口完全满足生产环境稳定性要求.这是TensorFlow的一个重要里程碑,标志着 ...
- tensorflow学习笔记——图像识别与卷积神经网络
无论是之前学习的MNIST数据集还是Cifar数据集,相比真实环境下的图像识别问题,有两个最大的问题,一是现实生活中的图片分辨率要远高于32*32,而且图像的分辨率也不会是固定的.二是现实生活中的物体 ...
- TensorFlow 学习(3)——MNIST机器学习入门
通过对MNIST的学习,对TensorFlow和机器学习快速上手. MNIST:手写数字识别数据集 MNIST数据集 60000行的训练数据集 和 10000行测试集 每张图片是一个28*28的像素图 ...
- tensorflow学习
tensorflow安装时遇到gcc: error trying to exec 'as': execvp: No such file or directory. 截止到2016年11月13号,源码编 ...
- TensorFlow中权重的随机初始化
一开始没看懂stddev是什么参数,找了一下,在tensorflow/python/ops里有random_ops,其中是这么写的: def random_normal(shape, mean=0.0 ...
- (转) TensorFlow深度学习,一篇文章就够了
TensorFlow深度学习,一篇文章就够了 2016/09/22 · IT技术 · TensorFlow, 深度学习 分享到:6 原文出处: 我爱计算机 (@tobe迪豪 ) 作者: 陈迪 ...
随机推荐
- linux可以这样玩 之 杂乱无章的随笔(不定期更新)
文章目录 快速重命名 vim的进化 vim高亮当前行 vim列编辑 vim块编辑 vim行编辑 vim 中替换内容 vim保留当前已经编辑的内容,切换到其他用户继续编辑 修改服务的进程限制 CentO ...
- 【数据共享】基于Landsat提取的全球河网(河宽)GDWL数据库
GRWL数据库,全称Global River Widths from Landsat Database,是由Allen, George H & Pavelsky. Tamlin M等人基于La ...
- 面渣逆袭:二十二图、八千字、二十问,彻底搞定MyBatis!
大家好,我是老三,面渣逆袭系列继续,这节我们的主角是MyBatis,作为当前国内最流行的ORM框架,是我们这些crud选手最趁手的工具,赶紧来看看面试都会问哪些问题吧. 基础 1.说说什么是MyBat ...
- python-利用json模块处理json数据几个函数总结
1.前言 json是一种轻量级的数据交换格式,它是JavaScript的子集,易于人阅读和编写. 前端和后端进行数据交互,其实就是JS和Python进行数据交互. 接口间或者前后端间的语言不一致,不同 ...
- 使用讯飞tts+ffmpeg自动生成视频
参考 FFmpeg 讯飞离线语音合成 起因 某日,看到一个营销号的视频说做视频日进斗金,大意是用软件识别文章小说,搭配一些图片转换成自己的视频.看完当时脑海里冒出一个念头,我也可以,于是有了这番尝试. ...
- ASP.NET Core 6框架揭秘实例演示[11]:诊断跟踪的几种基本编程方式
在整个软件开发维护生命周期内,最难的不是如何将软件系统开发出来,而是在系统上线之后及时解决遇到的问题.一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根 ...
- 一文带你看懂HarmonyOS应用上架
大家一直以来都很关心如何上架HarmonyOS应用,现在它来了!它终于来了! 我们为大家梳理了HarmonyOS应用从创建.调试到上架的流程和注意事项,希望能为你的上架之旅带来帮助! 一.创建/添加应 ...
- 学习Spring5必知必会(6)~Spring DAO
一.Spring 对持久层技术的支持 Spring DAO 1.模板类: 2.基类: 二.spring JDBC [JDBCTemplate 模板类] 1.案例:使用jdbc 完成crud操作 (1) ...
- 商业智能BI与用户行为分析的联系
什么是BI? BI(Business Intelligence)即商业智能,它是一套完整的解决方案,用来将企业中现有的数据进行有效的整合,分析利用企业已有的各种商用数据来了解企业的经营状况和外部环境 ...
- 【C# Task】 ValueTask/Task<TResult>
概要 1.如果异步方法的使用者使用 Task.WhenAll 或 Task.WhenAny,则在异步方法中使用 ValueTask<T> 作为返回类型可能会产生高昂的成本.这是因为您需要使 ...