介绍4款开放的人工智能模型,包含图像分类、姿势检测、目标检测、声音识别
创建和训练自己的机器学习模型并不容易。你不仅需要知道模型应该是什么样子,还需要收集和准备大量好的训练数据。
有时依靠现有的训练模型更实际。亚马逊、IBM、谷歌、微软和阿里巴巴等大型云服务提供商的产品组合中有越来越多的机器学习产品。
这些服务的缺点是您需要访问internet。尤其是如果你为移动设备编写应用程序,这可能是一个问题。
这个领域的一个有趣的提议来自Firebase和ML-Kit。这些是本地Android和iOS应用程序的库。这些库中提供的某些服务能够在设备上本地运行,而无需向后端服务发送任何信息。有关更多信息,请访问产品页面:https://firebase.google.com/products/ml-kit/
在这篇博客文章中,我们将看到一组JavaScript库,它们在浏览器中本地运行,不需要后端服务。这对于移动web应用程序尤其有用。
所有这些库都来自tfjs模型项目。这些是为Tensorflow.js构建的预先训练的模型。所有这些模型都在浏览器中本地运行,但它们必须从internet下载模型。所有这些模型都存储在Google云存储上,并且相当大(介于5MB到28MB之间)。
一、图像分类MobileNet
这个模型是用来自ImageNet的图像训练的。ImageNet是目前根据WordNet层次结构组织的超过1400万张图像的集合。数据库是开放的,你可以用它进行自己的研究。npm install @tensorflow-models/mobilenet npm install @tensorflow/tfjs代码如下
import * as mobilenet from '@tensorflow-models/mobilenet'; //加载模型 this.modelPromise = mobilenet.load(); //分类图片 this.predictions = model.classify(this.image.nativeElement, 4).then(predictions => { loading.dismiss(); console.log(predictions); return predictions; });
该模型的大小约为16.3MB,load()方法从Google云存储下载它。
classify()方法可以将任何图像元素(<img>,<video>,<canvas>)作为输入,并返回最可能的预测及其置信度的数组。可以将第二个可选参数传递给classifiy()方法。这是一个数字,告诉该方法应该返回多少个最高概率。默认情况下,该方法返回3个标签。
classify()返回的对象是一个具有类名和概率分数属性的对象数组。如下
[ {
className: "lynx, catamount",
probability: 0.35078904032707214
}, {
className: "Egyptian cat",
probability: 0.33066123723983765
}, {
className: "carton",
probability: 0.09258472919464111
}, {
className: "tiger cat",
probability: 0.027597373351454735
} ]
二、目标检测 (coco-ssd)
该模型试图定位和识别图像中的多个对象。该模型基于上下文中COCO公共对象的数据集,能够检测90类对象。npm install @tensorflow-models/coco-ssd npm install @tensorflow/tfjs代码如下
import * as ...
点击查看剩余70%
网友评论0