tensorflow.js相信使用过tf的人不陌生了,这个google推出了一个基于浏览器上使用gpu进行训练的机器学习库,但是他对于初学者不是很好学习,现在ml5诞生了,他是一个基于tensorflow.js封装的一个友好机器学习框架,他编写的代码跟容易被开发者阅读,ml5支持神经网络特征提取器、KNN分类器、均值、图像分类器、姿势识别、身体骨骼识别、UNET、手势识别、脸部识别、人脸接口、风格学习转移、物体检测、声音识别、音高检测、charRNN、文字情绪识别、词向量Word2Vec、对抗网络dcgan、生成模型CVAN、pix2pix、SketchRNN等模型。可以直接引用进行再训练,生成自己的模型数据。
下面的示例介绍了ml5.js通过机器学习的经典应用:图像分类。
此示例演示了如何通过ml5实现对图像的分类识别,比如下面是一只鸟,把他给ml5,他能是识别出这是一只小鸟,具体代码我们来讲解一下。
第 1 步:创建分类器并加载模型
在这里,我们定义创建一个MobileNet的图片分类器,并指定加载模型完成后的回调函数,注意此处加载了谷歌的模型文件mobilenet,请确保自己网络能够访问下载模型,模型文件比较大,需要一点时间。
const classifier = ml5.imageClassifier("MobileNet", onModelReady);
第 2 步:加载图像
const img = document.querySelector("#myImage");
第 3 步:分类预测和显示
在我们的分类器上调用 .classify() 来对我们的图像进行分类
您会注意到.classify()函数接受两个参数:1. 您要分类的图像,以及 2. 一个名为gotResult的回调函数。让我们看看gotResult做了什么。
let prediction = classifier.predict(img, gotResults);
第 4 步:定义 gotResult() 回调函数
所述gotResult()函数有两个参数:1.误差,和2的结果。
当.classify()函数完成对图像的分类时,这些将传递给gotResult()。
如果出现错误,则会记录错误。如果我们的分类器设法识别图像的内容,那么将返回结果。
在我们的程序中,我们创建了一个div,用于显示已分类图像内容的标签和置信度。该NF()函数是一个P5功能格式化我们的号码一个更好的字符串。
// 获取错误和识别结果时候执行 function gotResult(error, results) { //显示错误 if (error) { console.error(error); } else { // 这里会返回一个根据信心值排序的数组. console.log(results); console.log(`Label: ${results[0].label}`); console.log(`Confidence: ${nf(results[0].confidence, 0, 2)}`); } }好了,我们来看看完整的示例代码:
<html> <head> <meta charset="UTF-8"> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/ml5.min.js"></script> </head> <!-- 特征提取器 --> <body> <img src="//repo.bfw.wiki/bfwrepo/image/5f9e2579b3e1f.png?x-oss-process=image/auto-orient,1/resize,m_fill,w_400,h_300,/quality,q_90" crossorigin="anonymous" id="myImage" /> <script> // 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) { if (error) { console.error(error); } else { // 这里会返回一个根据信心值排序的数组. console.log(results); console.log(`Label: ${results[0].label}`); console.log(`Confidence: ${nf(results[0].confidence, 0, 2)}`); } } function onModelReady() { console.log('Model Loaded!'); } </script> </body> </html>官方网址:https://ml5js.org/
网友评论0