译者 | 布加迪
成都创新互联是一家专注网站建设、网络营销策划、微信小程序定制开发、电子商务建设、网络推广、移动互联开发、研究、服务为一体的技术型公司。公司成立十载以来,已经为成百上千家隧道混凝土搅拌车各业的企业公司提供互联网服务。现在,服务的成百上千家客户与我们一路同行,见证我们的成长;未来,我们一起分享成功的喜悦。
审校 | 孙淑娟
机器学习是现代世界的一项基础技术。计算机可以学习识别图像、创作艺术品,甚至自行编写代码,所有这些基本上不需要人的干预。
但机器学习是如何工作的?你自己又如何使用它呢?
机器学习是相对简单的概念。计算机系统可以通过分析信息池中的现有数据模式来学习和适应。这通常在没有人类明确指示的情况下完成。
虚拟助手工具就是一个典例。Siri、Cortana和谷歌Assistant都广泛使用机器学习来理解人类语言。这始于现有的音频录音库,但这些工具也可以从它们与用户的交互中学习。这使它们能够自行改进。
大多数机器学习算法和工具使用R或Python编写代码,但ml5.js不一样。作为谷歌的Tensorflow.js库的接口,ml5.js是一个开源项目,将机器学习交到JavaScript开发人员的手中。
只需在HTML中包含单单一段外部脚本,你就可以开始将ml5.js用于自己的Web应用程序。
训练机器学习算法需要时间。计算机的学习速度比人类快得多,但其学习方式也与人类不一样。不过幸好,ml5.js随带一系列预先训练过的模型,因此你可以跳过这一步。
学习机器学习算法如何训练是更好地了解这类工具的好方法。
ml5.js让用户很容易创建在网站上运行的图像分类工具。本例中的HTML页面包含一个用于选择图像的文件输入字段。上传的图像在准备好的HTML元素中显示,使ml5.js能够扫描和识别它们。
这个项目需要两个库来运作:ml5.js和p5.js。ml5.js是机器学习库,而p5.js使用户可以正确处理图像。你需要两行HTML代码来添加这些库:
接下来,该创建一些HTML元素了。最重要的是带有ID和标记为imageResult的类的div,它将存储最终结果:
MakeUseOf Image Classifier
Click "Choose File" to Add an Image
之后,添加一个文件输入元素,以收集供程序分类的图像。
notallow="uploadedImage.src=window.URL.createObjectURL(this.files[0]); startImageScan()">
输入则负责监听oninput事件,并执行两条由分号分隔的语句,作为响应。第一个语句为图像创建对象URL,这让你可以处理数据,不必将数据上传到服务器。第二个语句调用startImageScan()函数,你将在下一步创建该函数。
最后,添加img元素来显示用户上传的图像:
现在你已有了一些HTML,是时候添加一些JavaScript了。先添加一个const变量来存储你在上一步中创建的imageResult元素。
const element = document.getElementById("imageResult");
接下来,添加一个名为startImageScan()的函数,并在其中使用MobileNet初始化ml5.js图像分类器。
随后使用classifier.classify命令。为它传递前面添加的uploadedImage元素的引用,以及处理结果的回调函数。
function startImageScan() {
// Create a variable to initialize the ml5.js image classifier with MobileNet
const classifier = ml5.imageClassifier('MobileNet');
classifier.classify(document.getElementById("uploadedImage"), imageScanResult);
element.innerHTML = "...";
}
还需要一个函数来显示所执行的图像分类的结果。这个函数包含一个简单的if语句,用于检查任何错误。
function imageScanResult(error, results) {
if (error) {
element.innerHTML = error;
} else {
let num = results[0].confidence * 100;
element.innerHTML = results[0].label + "
Confidence: " + num.toFixed(0) + "%";
}
}
最后,是时候将所有这些代码组合起来。留意
、