用机器学习快速实现Android图像识别应用

2,609 阅读1分钟
原文链接: blog.csdn.net

效果

开发准备

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文件夹:

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

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

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

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

⑤训练完成

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

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

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

②AS项目添加tensorflow依赖

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

②根据tensorflow官方给出的安卓Demo,写出我们需要的TF Classify模块,当然我已经写好了,你可以直接下载Android_TF_Classify
这里写图片描述
注意tensorflow更新后INPUT_NAME和OUTPUT_NAME已经改变;
图片分类文件夹名为该类别识别出来的结果名,每类图片应大于20张,否则可能要出错,最好大于40张;
本例生成训练图片使用轻量的生成方式,正常生产pb文件是移动应用pb的8倍大小;
本例为一个demo,如需深入学习,请仔细研究文档;

图片附件:animal.zip