用Tensorflow实现Android图像识别应用

效果

1.jpg

开发准备

1.tensorflow

2.tensorflow/hub

3.Ubuntu 16.04 LTS

4.Android Studio

一,使用hub训练自己的类别模型

①安装linux环境,推荐Ubuntu

②安装git,克隆tensorflow/hub项目

③进入hub项目,hub/examples/image_retraining目录下

放入自己的图片目录文件(不同类别的图片放在不同子目录下),如放入animal文件夹:

<img src="https://img-blog.csdn.net/20180425150739115?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FtYXppbmc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="906" height="319" >

④在image_retraining目录打开命令终端,输入训练命令,详细参考文档Hub文档

sudo python3 retrain.py --image_dir ./animal 
--tfhub_module https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/feature_vector/1

该命令用于生产轻量的手机模型数据,图片大小为224×224,开始训练如图:

<img src="https://img-blog.csdn.net/20180425151414839?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FtYXppbmc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="386" height="202" >

注意在运行retrain.py之前,记得先使用pip添加相应依赖。

⑤训练完成

<img src="https://img-blog.csdn.net/2018042515181817?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FtYXppbmc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="609" height="71" >

会在计算机/tmp目录下生成相应的pb文件和labels文件,这就是我们要的数据

<img src="https://img-blog.csdn.net/20180425152014760?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FtYXppbmc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="350" height="118" >

二,使用AS开发图像识别应用

①将我们生成的pb文件和labels文件拷贝到项目assets目录下,如:

<img src="https://img-blog.csdn.net/20180425152303866?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FtYXppbmc3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" width="385" height="443" >

②AS项目添加tensorflow依赖

implementation 'org.tensorflow:tensorflow-android:+'

②根据tensorflow官方给出的安卓Demo,写出我们需要的TF Classify模块,当然我已经写好了,你可以直接下载Android_TF_Classify

1.png

注意tensorflow更新后INPUT_NAME和OUTPUT_NAME已经改变;

图片分类文件夹名为该类别识别出来的结果名,每类图片应大于20张,否则可能要出错,最好大于40张;

本例生成训练图片使用轻量的生成方式,正常生产pb文件是移动应用pb的8倍大小;

本例为一个demo,如需深入学习,请仔细研究文档;

图片附件:animal.zip

发表评论

电子邮件地址不会被公开。 必填项已用*标注