ml5js入门教程-4行代码搞定图片分类

ml5js入门教程-4行代码搞定图片分类

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/

{{collectdata}}

网友评论0