首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Machine Learning(一):基于 TensorFlow 实现宠物血统智能识别

人类喜欢将所有事物都纳入鄙视链的范畴,宠物当然也不例外。一般来说,拥有一只纯种宠物可以让主人占据鄙视链的云端,进而鄙视那些混血或者流浪宠物。甚至还发展出了专业的鉴定机构,可以颁发《血统证明书》。但是考究各类纯种鉴定的常规方法:例如眼睛的大小、颜色、鼻子的特点、身躯长度、尾巴特征、毛发等,当然也包括一些比较玄幻的特征:宠物家族的个性、气质等等。抛开“黑魔法”不在此讨论之外,既然是基于生物外形特征鉴定,判断是否纯种的需求本质上就是一个图像识别服务。

Hello TensorFlow

Tensorflow is not a Machine Learning specific library, instead, is a general purpose computation library that represents computations with graphs.

TensorFlow 开源软件库(Apache 2.0 许可证),最初由 Google Brain 团队开发。TensorFlow 提供了一系列算法模型和编程接口,让我们可以快速构建一个基于机器学习的智能服务。对于开发者来说,目前有四种编程接口可供选择:

C++ source code: Tensorflow 核心基于 C++ 编写,支持从高到低各个层级的操作;

Python bindings & Python library: 对标 C++ 实现,支持 Python 调用 C++ 函数;

Java bindings;

Go binding;

下面是一个简单的实例:

环境准备

安装 TensorFlow C library,包含一个头文件 c_api.h 和 libtensorflow.so

安装 Go 语言环境

安装 Tensorflow Go binding library

下载模型(demo model),包含一个标签文件 label_strings.txt 和 graph.pb

Tensorflow Model Function

Classifying Workflow

基于 Tensorflow 模型实现图像识别的主要流程如下:

图像转换 (Convert to tensor )

图像标准化( Normalize )

图像分类 ( Classifying )

函数makeTensorFromImage() runs an image tensor through the normalization graph.

函数maketransformimagegraph() 将图形的像素值调整到224x224,以符合模型输入参数要求。

最后,将格式化的 image tensor 输入到 Inception model graph 中运算。

Testing

通过上面的案例我们可以发现,这个服务目前可以对于黑天鹅图像的推算概率值为 98.75%,非常准确;但是对于另外两张宠物狗的图像,最高的推算概率值也仅有 30% 左右,虽然也没有被识别成猫咪或者狼,但是和理想效果要求可用性还有一段距离(此处暂时忽略物种本身的复杂性)。

主要是因为现在我们使用的还只是一个非常“原始”的模型,如果需要为小众领域服务(宠物,也可以是其它事物),需要通过训练(Training Models)增强优化,或者引入更丰富的标签,更合适的模型。当然,训练过程中也会存在样本质量不佳的情况,错误样本和各种噪音也会影响准确度。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208G0NG9N00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券