Android城会玩之酷炫的Ten

前方高能,非战斗人员请速速撤离!

年11月,Google宣布将TensorFlow开源。这是Google最新最高大上的机器学习库。它的高大上有三个原因:

机器学习专业技能:Google是机器学习界的中流砥柱。

可扩展性:TensorFlow在开源之前就已经在Google内部被使用。Google有一些产品已经在使用TensorFlow。

可以在移动端运行。

关于这个机器学习库,有哪些有趣的亮点案例?我们一起来看看!

1.初窥识别

这个应用透过你的摄像头来识别物体。

有时效果很好,有时效果稍微差一点。这很神奇。

这个应用使用了一个打包好的TensorFlow模型,就在本机上运行,没有网络请求。这个模型在数百万张图片中训练过。当它看到一个图片,它会对这个图片做最好的分类。

这个Android展示页大概提示了你如何构建这个应用,和如何生成APK。

2.应用架构

TensorFlow核心引擎是用C++构建的,但是程序家们可以用C++或者Python来写他们的软件。安卓TensorFlow例子使用C++接口:

应用启动CameraActivity.java。该Activity再启动CameraConnectionFragment.java

这个Fragment初始化一些东西,启动摄像头,将图片流传给TensorflowImageListener.java

该监听器询问分类器TensorflowClassifier.java每个它得到的图片,得到每个图片的分类和每个分类的分数。

好消息是大多数逻辑都是在AndroidSDK里面实现的,所以大多数Android开发者都不会感到陌生。所以,C++在哪?

如果你仔细看TensorflowClassifier.java,你会注意到以下方法:

publicnativeintinitializeTensorflow();privatenativeStringclassifyImageBmp(Bitmapbitmap);

这个native关键字表明这方法是C++原生代码实现的。这就要使用到JNI(JavaNativeInterface),一个让Java与C++代码通讯的方法。

首先我们要将从摄像头得到的图片转成一个Tensor。Tensor就是多维数组,一个TensorFlow使用的数据结构。这个模型需要一个表示RGB三色通道的三维数组。

3.模型Model

在assets路劲中,我们有两个重要文件:

Tensorflow_inception_graph.pb-一个54MB的文件。这是我们训练好的机器学习模型。这是一个预先构建好的TensorFlowGraph。该Graph描述了分类器的具体操作。这个Graph通过谷歌的ProtocalBuffers序列化了,使之可以在不同平台上反序列化。

Imagenet_







































引起白癜风原因是什么
北京公立医院里哪所治疗白癜风好



转载请注明:http://www.gslnbdf.com/jbxx/1337.html