深入浅出Google Clould Platform(3)---- 图像识别入门例子

上一章节,笔者举了一个创建的数据的例子,主要是通过Google的UI控制台来进行操作的,总所周知,Google的机器学习和人工智能一直在业界是遥遥领先的,下面举一个例子,如何使用代码来调用GCP上的图像识别的服务来进行图像识别。比如下面这张图片,如何使用GCP的机器学习的API来识别下面图片上的动物呢? 比如下面的图片,有一条狗,那Google的图像识别的API能识别出来吗?
如果通过调用代码来实现下面这张图片的识别呢?
深入浅出Google Clould Platform(3)---- 图像识别入门例子_第1张图片
假设上面的图片在本地另存为dog.jpg, 那么如何利用GCP的服务器去识别这张图片呢? 假设我们已经有了登录的账号和密码了。其主要步骤如下:

  1. 创建一个Service Account (服务账号),并把key.json的认证文件下载下来并托管保存。
    深入浅出Google Clould Platform(3)---- 图像识别入门例子_第2张图片

  2. 把Google Cloud Vision API 的调用打开,如果已经打开,请忽略此步骤。
    深入浅出Google Clould Platform(3)---- 图像识别入门例子_第3张图片

  3. 通过npm init 新建一个node JS的项目,笔者假设大家已经对具体如何安装和使用NodeJS已经非常的熟悉,并引入:@google-cloud/vision的NodeJS的依赖。

  4. 假设我们的图片已经在本地另存为dog.jpg, 则关键代码如下:

const vision = require('@google-cloud/vision')({
projectId: 'your-project-id',
keyFilename: 'key.json'
});
vision.detectLabels('dog.jpg').then((data) => {
console.log('labels: ', data[0].join(', '));
});

运行完后, 其会显示类似的输出。

 labels: dog, mammal, vertebrate, setter, dog like mammal

上面的输出只是一些简单的信息,只是列出其识别出了什么物体,但是其实我们知道,严格意义上来说,图像识别出来的结果,应该是一个带有概率的结果,大家如果在手机上安装过花伴侣这个App的有应该知道,其App通过拍一张花的图片,从而识别出这张图片上的花的种类是什么,其后面还会加一个可信度,比如一张图片识别出是牡丹花的概率是90.65%, 一般达到90%以上 结果的可信度已经非常高了。 那如何通过代码,能够把识别出来的名称的具体可行度也打印出来呢? Talk is Cheap, Please show me the code. @google-cloud/vision的API提供了很好的易用性,只需要把{verbose: true} 的开关打开即可,代码如下。

const vision = require('@google-cloud/vision')({
projectId: 'your-project-id',
keyFilename: 'key.json'
});
vision.detectLabels('dog.jpg', {verbose: true}).then((data) => {
const labels = data[0];
labels.forEach((label) => {
console.log(label);
});
});

打印出来,类似结果可能如下:

> { desc: 'dog', mid: '/m/0bt9lr', score: 91.969336 }
{ desc: 'dog like mammal', mid: '/m/01z5f', score: 58.510407 }
......

其中上面的score,其实指的就是结果的可行度。

如果要对其可行度的进行过滤的话,只需要加一个filter() 的输入条件,
比如 filter((label) => { return label.score >90; } 其就会把可信度在90%的识别出来的结果打印出来!

const vision = require('@google-cloud/vision')({
projectId: 'your-project-id',
keyFilename: 'key.json'
});
vision.detectLabels('dog.jpg', {verbose: true}).then((data) => {
const labels = data[0]
.filter((label) => { return label.score > 90 ; })
.map((label) => { return label.desc; });
console.log('Accurate labels:', labels.join(', '));
});

上面调用的是detectLabels()的方法进行物体的归类识别。其实图像识别用的最广泛的是人脸识别,如果要进行人脸识别的话,我们就可以调用 下面的API:

vision.detectFaces('xxx.jpg') 

其不但能识别出当前是否是人脸,还能识别出当前的人脸的情绪, Oh, 天啦! 也太神奇了吧! 比如情绪是高兴 还是愤怒,只需要在返回值中,把其相应的属性打印出来即可!

const vision = require('@google-cloud/vision')({
projectId: 'your-project-id',
keyFilename: 'key.json'
});
vision.detectFaces('face.jpg').then((data) => {
const faces = data[0];
faces.forEach((face) => {
console.log('How sure are we that there is a face?', face.confidence + '%');
console.log('Does the face look happy?', face.joy ? 'Yes' : 'No');
console.log('Does the face look angry?', face.anger ? 'Yes' : 'No');
});
});

类似的结果,可能如下:

> How sure are we that there is a face? 94.26401%
Does the face look happy? Yes
Does the face look angry? No

总结:

用了云计算后,是不是感觉比较简单和容易上手。 的的确确,真真切切感受到了云计算对我们带来的快速和方便。

你可能感兴趣的:(Cloud(云计算),人工智能(AI))