基于TensorFlow的移动终端图像识别方法

2018-03-07 06:15熊亚蒙
无线互联科技 2018年21期
关键词:迁移学习图像识别

熊亚蒙

摘 要:文章研究了基于TensorFlow的移动终端图像识别方法。TensorFlow是一种机器学习工具。TensorFlow功能广泛,但是主要用于构建深度神经网络模型。移动应用程序能够理解识别可能非常有用,通过迁移学习帮助识别图像内容可以帮助应用程序应用适当地过滤,或者标记照片以使其易于找到,因此,可以使用图像传感器来检测各种有趣的情况。

关键词:图像识别;TensorFlow;迁移学习

图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术。一般工业使用中,采用工业相机拍摄图片,然后再利用软件根据图片灰阶差作进一步识别处理,图像识别软件国外代表的有康耐视等,国内代表的有图智能等。另外,在地理学中指将遥感图像进行分类的技术[1]。

1 图像识别一般方法

图像识别可能是以图像的主要特征为基础的。每个图像都有它的特征,如字母A有个尖,P有个圈、而Y的中心有个锐角等。对图像识别时眼动的研究表明,视线总是集中在图像的主要特征上,也就是集中在图像轮廓曲度最大或轮廓方向突然改变的地方,这些地方的信息量最大。由此可见,在图像识别过程中,知觉机制必须排除输入的多余信息,抽出关键的信息。同时,在大脑里必定有一个负责整合信息的机制,它能把分阶段获得的信息整理成一个完整的知觉映象[2]。

在人类图像识别系统中,对复杂图像的识别往往要通过不同层次的信息加工才能实现。对于熟悉的图形,由于掌握了它的主要特征,就会把它当作一个单元来识别,而不再注意它的细节了。这种由孤立的单元材料组成的整体单位叫作组块,每一个组块是同时被感知的。在文字材料的识别中,人们不仅可以把一个汉字的笔划或偏旁等单元组成一个组块,而且能把经常在一起出现的字或词组成组块单位来加以识别。

在计算机视觉识别系统中,图像内容通常用图像特征进行描述。事实上,基于计算机视觉的图像检索也可以分为类似文本搜索引擎的3个步骤:提取特征、建索引build以及查詢[3]。

2 TensorFlow 平台

TensorFlow?是一个使用数据流图进行数值计算的开放源代码软件库。图中的节点代表数学运算,而图中的边则代表在这些节点之间传递的多维数组(张量)。借助这种灵活的架构,可以通过一个 API 将计算工作部署到桌面设备、服务器或移动设备中的一个或多个 CPU或GPU。

TensorFlow物体检测API是一个构建在TensorFlow上的框架,用于识别图像中特定的对象。例如,你可以用很多猫的照片训练它,一旦训练完毕,你可以输入一张猫的图像,它就会输出一个方框列表,认为图像中有一只猫。通过TensorFlow支持5个预训练模型的迁移学习(transfer learning),完成迁移学习,提升识别速度。

TensorFlow Lite是TensorFlow针对移动和嵌入式设备的轻量级解决方案。它支持低延迟和小二进制大小的设备上机器学习推理。TensorFlow Lite还支持Android神经网络API的硬件加速。TensorFlow Lite使用许多技术来实现低延迟,如优化移动应用程序内核,预融合激活以及允许更小和更快(定点数学)模型的量化内核。

3 TensorFlow Lite使用

在移动应用中使用TensorFlow Lite模型需要多方面的考虑:您必须选择预先训练好的模型或自定义模型,将模型转换为TensorFLow Lite格式,最后将模型集成到您的应用中(见图1)。

图1 TensorFlow图像识别的步骤

根据用例,可以选择流行的开源模型之一(如InceptionV3或MobileNets),并使用自定义数据集重新训练这些模型,甚至可以构建自己的自定义模型。

3.1 使用预先训练的模型

对图像进行预处理,改变大小、贴标签、将它们分成训练和测试两部分,并修改成Pascal VOC格式;将图片转化成TFRecords文件以符合物体检测API;利用MobileNet在谷歌Cloud ML Engine上训练模型;导出训练好的模型并将其部署到ML Engine上进行服务。

MobileNets是TensorFlow的一系列移动优先计算机视觉模型,旨在有效提高准确性,同时考虑到设备或嵌入式应用的受限资源。MobileNets是参数化的小型低延迟低功耗模型,可满足各种用途的资源限制。它们可以用于分类、检测、嵌入和分割—类似于其他流行的大规模模型,例如Inception。Google为MobileNets提供了16个预先训练的ImageNet分类检查点,可用于各种规模的移动项目。

Inception-v3是一个图像识别模型,可以很高的精度识别1 000个类别的普通物体,例如“Zebra”“Dalmatian”和“Dishwasher”。该模型使用卷积神经网络从输入图像中提取一般特征,并根据那些具有完全连接和softmax层的特征对其进行分类。

针对自定义数据集重新训练Inception-V3或MobileNet,这些预先训练的模型在包含1 000个预定义类的ImageNet数据集上进行了培训。如果这些类不足以满足您的用例,则需要重新训练该模型。这种技术被称为转移学习,并从一个已经对某个问题进行过训练的模型开始,然后对模型进行重新训练以解决类似的问题。从头开始深入学习可能需要数天,但转移学习相当快。为了做到这一点,需要生成一个标有相关类的自定义数据集。

训练一个自定义模型:开发人员可以选择使用Tensorflow来培训自定义模型。如果已经编写了模型,第一步是将其导出到tf.GraphDef文件中。这是必需的,因为有些格式不会将模型结构存储在代码之外,我们必须与框架的其他部分进行通信。请参阅导出推理图以创建自定义模型的.pb文件。

3.2 转换模型格式

通过生成(或下载)的模型是标准的Tensorflow模型,是一个.pb或.pbtxt tf.GraphDef文件。使用转移学习(重新培训)或自定义模型生成的模型必须进行转换,但是,我们必须先冻结图形以将模型转换为Tensorflow Lite格式。这个过程使用以下几种模型格式。

tf.GraphDef(.pb)—代表TensorFlow训练或计算图的protobuf。它包含运算符、张量和变量定义。

CheckPoint(.ckpt)—来自TensorFlow图形的序列化变量。由于这不包含图形结构,因此它本身不能被解释。

FrozenGraphDef—它的一个子类GraphDef不包含变量。A GraphDef可以转换为一个FrozenGraphDef通过采取检查点和一个GraphDef,以及使用从检查点检索到的值的每个变量转换成一个常数。

SavedModel-A GraphDef和CheckPoint的签名将标签输入和输出参数标记为模型。A GraphDef和CheckPoint可以从a中提取SavedModel。

TensorFlow Lite模型(.tflite)—包含TensorFlow Lite操作符和张量的TensorFlow Lite解释器的序列化FlatBuffer,类似于a FrozenGraphDef。

冻结图:要在GraphDefTensorFlow Lite中使用.pb文件,必須具有包含经过训练的权重参数的检查点。.pb文件只包含图形的结构。将检查点值与图结构合并的过程称为冻结图。

应该有一个检查点文件夹或将它们下载到预先训练的模型(例如 MobileNets)。

冻结GraphDef现在已准备好转换为FlatBuffer适用于Android或iOS设备的格式(.tflite)。对于Android,Tensorflow Optimizing Converter工具支持浮点模型和量化模型。将冻结转换为GraphDef.tflite格式。

找到这些值最简单的方法是使用Tensorboard探索图形。在freeze_graph步骤中重新使用用于指定输出节点进行推理的参数。

也可以使用Tensorflow Optimizing Converter和Python或命令行中的protobufs。这允许您将转换步骤集成到模型设计工作流程中,确保模型可以轻松转换为移动推理图。

在回购包含转换后的可视化TensorFlow Lite的工具。构建visualize.py工具。这会生成一个交互式HTML页面列表子图,操作和图表可视化。

3.3 在移动应用程序中使用TensorFlow Lite模型进行推理

在完成前面的步骤之后,会生成一个.tflite模型文件。

由于Android应用程序是用Java编写的,核心TensorFlow库是用C++编写的,因此提供了一个JNI库作为接口。这只是用于推理 - 它提供了加载图形,设置输入以及运行模型来计算输出的功能。

使用Android Studio试用项目代码中的更改并编译演示应用程序:

确保Android SDK版本大于26并且NDK版本大于14(在Android Studio设置中)。

将该tensorflow/contrib/lite/java/demo目录导入为新的Android Studio项目。

安装它请求的所有Gradle扩展。

要获得模型,下载量化的Mobilenet TensorFlow Lite模型,并解压缩并复制mobilenet_quant_v1_224.tflite到assets目录中TensorFlow指定目录。

或者,下载浮点Inception-v3模型 并解压并复制inceptionv3_non_slim_2015.tflite到资产目录。

4 结语

文中我们对TensorFlow Lite在移动平台的通用方法和步骤进行了归纳总结,通过TensorFlow预训练模型、转化格式、推演三步骤详细地描述其操作和原理,对自己的图像识别实践中的问题也进行了总结。当然,TensorFlow应用范围很多,不局限于图像分类,还包括语音识别、序列生成等,这有待于我们去研究使用。

猜你喜欢
迁移学习图像识别
基于Resnet-50的猫狗图像识别
高速公路图像识别技术应用探讨
图像识别在物联网上的应用
图像识别在水质检测中的应用
从认知角度探讨大学英语网络教学模式
奇异值分解与移移学习在电机故障诊断中的应用
浅谈模式识别在图像识别中的应用
大数据环境下基于迁移学习的人体检测性能提升方法
基于多组合内容的图像识别机制