本文由"大众年夜众号:《Android逐日一讲》授权发布。

AI个中一个很主要的运用便是物体识别

本日我们来看看如何在Android上实现这个功能。

物体识别

Android开拓者若何入门AI试试在Android上用AI识别物体

物体识别包括两个方面,一个是物体位置识别,划出图片中的物体在什么位置。
另一个是物体识别,见告你这是个什么物体,是人是狗,是桌子还是鸟。

SSD

目前最精良的物体识别神经网络能够识别1900多种物体。
我们把这个网络落地到Android上看看它的效果若何。

Android导入AI框架

要在Android上利用AI网络,首先须要集成能够解读AI网络的框架。

Google的Tensorflow在Android上做了专门的框架 - Tensorflow-Lite,它能够在移动端上高性能地运算AI模型。

首先须要在app的build.gradle里引入它

dependencies { implementation 'org.tensorflow:tensorflow-lite:1.10.0'}

在Android利用tensorflow我们可以只关注它的 Interpreter 类,

这个类卖力加载 AI模型,同时将图片进走运算,输出预算结果。

AI 的输入和输出

拿物体识别模型来说,这个模型能识别1000多种物体,那么它对一张图片的剖析结果也会有1000多个输出对不对?

我们先大略地理解这个过程。
假设这个模型能识别2种物体,分别是猫和狗,忽略物体的位置的话,那么它的输出结果该当是啥?

仔细想一下,它该当有下面三个输出

background, background_posibilltycat, cat_posibillitydog, dog_posibility

翻译一下,这三个输出分别对应

没有猫狗的概率有猫的概率,猫的位置有狗的概率,狗的位置

于是我们可以布局下面的输出数据构造

float[][] labelProbArray = new float[3][1]

三个维度分别表示三种物体的概率。

把稳这里没有猫狗也必须当做一种情形,不然假如图片里没有猫狗的话它就只能在猫狗里挑一个,就乱套了。

至于输入就大略了,把Camera得到的bitmap当作输入就行。

下面看看怎么利用tensorflow的Interpreter。

开始剖析图片

首先须要把AI网络塞进 Interpreter。

物体识别网络常日有两个模型来构成,一个是网络,另一个是标签。

网络是用来剖析图片并输出结果的,

标签是用来描述网络能识别什么内容。
由于正常来说,网络只能输出一个一维数组表示每个标签的概率,它并不会输出用笔墨描述的物体…

细想一下假如真这样的话那就胆怯了…

在我们的app中须要先把这两个东西放进去,下面这两个便是网络和标签了

assets

lite是网络模型,txt是标签。

初始化 Interpreter 的过程比较大略,代码如下

Interpreter tflite = new Interpreter(loadModelFile(activity));/ Memory-map the model file in Assets. /private MappedByteBuffer loadModelFile(Activity activity) throws IOException { AssetFileDescriptor fileDescriptor = activity.getAssets().openFd(MODEL_PATH); FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor()); FileChannel fileChannel = inputStream.getChannel(); long startOffset = fileDescriptor.getStartOffset(); long declaredLength = fileDescriptor.getDeclaredLength(); return fileChannel.map(FileChannel.MapMode.READ_ONLY, startOffset, declaredLength);}

剖析的过程也相称大略,两行代码

tflite.run(imgData, labelProbArray);

在剖析结束后,labelProbArray 就保存了对图片的剖析后各个可能存在的物体的概率。

源码下载

上面的内容比较零散,我这里整理了一个可以利用的app供应下载。

须要源码的小伙伴可以在公号(《Android逐日一讲》)回答”物体识别“来获取源码回去研究。

下面是AI app的截图。

phone