按照前面讲解的内容,用 Andorid Studio,连接 ADB,配置好开发板的 Wi-Fi,然后把应用加载到开发板上。
操作流程如下:
-
重启设备,运行程序,直到 LED 灯开始闪烁;
-
把镜头对准猫啊,狗啊,或者一些家具;
-
按下开关,开始拍摄图片;
-
在 Raspberry Pi 3 中,一般在 1s 之内,可以完成图片抓拍,经 Tensorflow 处理,然后再通过 TTS 放出声音。在运行的过程中 LED 灯是熄灭的;
-
Logcat 中会打印出最终的结果,如果是有显示设备连接的话,图片和结果都会显示出来;
-
如果有扬声器或者是耳机的话,会把结果语音播报出来。
由于代码的结构特别简单,注意一下几段关健的操作即可。想必图形、摄头的操作在Android 的编程中大家都会了,所以不做讲解了。
主要是看
LED
的初始化操作:
有必要说一下
,ImageClassifierActivity
是应用唯一的
Activity
的入口。在
Manifest
中已经有定义
,
它初始化了
LED, Camera, TensorfFlow
等组件。其中
,
我们用到的
Button
是
BCM32
这个管脚
,
用到的
LED
是
BCM6
管脚
,
相关的初始化在这个
Activity
中已经完成。
这部分代码是捕捉按键按下的代码。当按下按键时,摄头开始捕捉数据。
把摄像头拍摄的数据转成
Bitmap
数据之后
,
我们会调用
TensorFlow
来处理图像。
这个函数调用了 TensorFlow 进行处理,最后把结果输出到 logcat 中。如果代码中调用了 tts 引擎,那么则把结果转成语音读出来。看来,最重要的就是 TensorFlowClassifier 类的 recognizeImage() 这个接口了。我们继续往下看。
这是最后的一步,调用
TensorFlow
进行图像识别:
-
把 Bitmap 图像转成
TensorFlow
能够识别的数据;
-
把数据拷到
TensorFlow
中;
-
识别出图像,给出结果。
调用
TensorFlow
的过程还是挺好玩的,也挺方便。那么,为啥
TensorFlow
一下子就能够识别出是什么图片呢?Tensorflow 的官网给出的解答:
www.tensorflow.org/tutorials/image_recognition
有一点需要提示
,TensorFlow
的图像识别分类可以用提交到网络服务器识别
,
也可以在本地用离线数据识别。可以先把
200M
左右的识别数据放在本地
,
然后进行本地识别。现在大概能分出
1000
个类别的图像
,
哪
1000
个类别呢
?
项目代码中已经包含了哦。
是不是运用
TensorFlow
来处理物联网的数据会特别简单,不光是
TensorFlow
, Firebase 也可以用到 Android Things 中来。这功能,强大的没话说了!
今天提到的这个项目,来源于 Google 在 GitHub 上维护的项目,项目的地址是