一招识狗!基于函数计算打造柴犬秋田鉴定器

image

▲ 让人傻傻分不清楚的柴犬和秋田

作为一个热爱看柴犬视频“云养柴”多年的观众,很多时候我总是分不清楚柴犬和秋田究竟有什么区别。正巧前几天我在阿里云的开发者云平台上面发现了一个很有趣的试验场景,讲的是基于阿里云的函数计算 Function Compute 服务建立一个TensorFlow Serverless AI 推理平台来分辨猫狗。

图片描述

如果能把试验中的模型换成分辨柴犬和秋田的模型,那不就可以轻松做出一个“柴犬秋田鉴定器”?

如果之前并没有这方面的经验也不要紧,可以使用 Keras 并且以 Tensorflow 作为后端来建立 CNN 模型。

Keras 是一个用 Python 编写的高级神经网络 API,非常容易上手;它能够让用户快速地设计自己想要的高级神经网络。而 CNN 模型的中文名则是卷积神经网络,它很好地提升了人工智能在处理图片时的效率和准确度, 非常适合做图片识别相关的项目。

image.gifimage

Keras 是一个用 Python 编写的高级神经网络 API,非常容易上手。

首先我们提前收集好 500 张柴犬和 500 张秋田的图片,并将它们标注作为区分。

image

然后利用 Keras 来建立我们的 CNN 模型。

CNN 模型一般分为三层:

第一层卷积层,你可以简单把它理解为使用一个过滤器来过滤图像的各个区域,从而提取出这个图片的大概特征。

image

第二层池化层,继续对图片进行“降维打击”,只保留图最关键的特征。

image.gifimage

第三层全连接层,对数据进行分类,得出相应的分析结果。

image

image.gif

模型的建立我参考了这里的代码:https://www.kaggle.com/uysimty/keras-cnn-dog-or-cat-classification

模型建立完成后,我们就可以把图片丢进去训练了,这边示例代码中是将百分之八十的图片作为训练数据,剩下的百分之二十作为验证数据。

保存好模型之后,下一步就是把模型部署到网站的后端了。这个部分可以跟着教程来做,把项目克隆到本地之后只需要以下修改:替换 models 文件夹里面的文件为我的模型文件,在 index.html 和 predict.py 里面把所有猫和狗的相关描述改成秋田和柴犬。

图片描述
具体的过程可以参考实验中的具体步骤,简而言之这个示例采用的是一个基于函数计算的无服务器架构,你可以把它理解为在云端的一个开发环境,你只需要写好代码,打包好,一个命令行部署到阿里云,就能搞定服务的部署。

另外,阿里云还特意为函数计算研发了一个应用部署的工具 Funcraft。和 Docker, Kubernetes, Terraform 的概念类似,Funcraft 的设计思想也是令到用户通过一个模板文件来描述应用中所包含的所有资源,比如函数,API 网关,日志服务等等,然后再通过命令行直接读取这个模板文件来部署。

image

image.gif

▲ 地址:https://github.com/alibaba/funcraft

部署完成之后,让我们来看看效果吧:

image.gifimage

尝试了两个柴犬和秋田的图片,准确度还可以,但是多次试验之后发现模型的准确度还是不高。不知道各位大佬们有没有什么改进的方法~

原文地址:https://www.cnblogs.com/Serverless/p/14148525.html