在移动平台上使用tensorflow图片分类 (android and ios)

项目github

我做的参考项目

我完成了一个简单了android上的图片分类相册,tf部分已经正常工作了,你可以参考,项目github

效果展示

添加了app预览如下,更详细请到github
分类预览1:
这里写图片描述
拍照分类:
这里写图片描述
程序启动:
这里写图片描述
自动分类为相册:
这里写图片描述

这里有几篇博客你可以参考

博客零,忽略docker部分,用bazel训练一个pc可用的图片分类模型

博客一,将上面的模型处理为移动端可用的

博客二,可参考

博客三,使用的是python脚本训练模型,可能需要翻墙

如果没有训练图片?

可以使用py爬虫到百度图片爬以获取所需类别的训练用图片,python3下的爬虫脚本请到我的github

  • spider.py从百度图片爬相应类别的图片,到config.py中编写你需要的类别。注意爬之前先到百度图片上按照类名搜一下,对同一类的图片不同的名字爬取的效果不同
  • deal_pics.py处理下载后的图片,因为tf处理过程中如果图片格式错误或者无法打开会终止处理,所以需要先把不合法的图删除。自己看一下改一下或者自己写一下。

注:脚本核心算法非原创

使用自己的模型出现了问题?

  1. 什么jpegdecoder问题,这个我遇到了,原因是tf为了保证移动端的体积,一部分功能没有加进去(猜的),所以pc上的模型需要进一步处理才可以用。我建议将tf升级到0.12以上。对了处理自己的模型只需要两条指令,具体看下面的代码部分。
  2. 其他问题?我没遇到过,我经过第1步后就可以用了,我建议你到git上提出一个issue,那里的大牛很热心,我遇到这个问题就是到那里提问然后他们回答的。

一般需要的命令

########################
# build 图片分类工具,在tensorflow根目录下
bazel build -c opt --copt=-mavx tensorflow/examples/image_retraining:retrain
# 运行图片处理
bazel-bin/tensorflow/examples/image_retraining/retrain \
--bottleneck_dir=/tf_files/bottlenecks \
--model_dir=/tf_files/inception \
--output_graph=/tf_files/retrained_graph.pb \ # 训练后得到的模型位置和名称
--output_labels=/tf_files/retrained_labels.txt \ # 模型的lable,都有啥类别(处理后得到的是索引,然后到这里相应的位置对应类别
--image_dir /tf_files/flower_photos # 待训练的图片的位置,flower_photos是总目录,下面按照类别还有子目录,类别名就是子目录名,子目录下是相应的图片,
########################
# pc上使用分类模型
# build工具
bazel build tensorflow/examples/label_image:label_image
#分类
bazel-bin/tensorflow/examples/label_image/label_image \
--graph=/tf_files/retrained_graph.pb \
--labels=/tf_files/retrained_labels.txt \
--output_layer=final_result \
--image=/tf_files/flower_photos/daisy/21652746_cc379e0eea_m.jpg #待分类图片位置

#########################
# 移动端迁移,为了保证tf在移动端较小,因此部分pc上可用的功能并不在移动端的动态链接库上,一次模型不能直接使用,需要预处理
# 移动端需要的动态链接库可以到tf的github上直接下载,现在已经有了
# 预处理工具
bazel build tensorflow/python/tools:optimize_for_inference
# 处理
bazel-bin/tensorflow/python/tools/optimize_for_inference \
--input=/tf_files/retrained_graph.pb \
--output=/tf_files/optimized_graph.pb \ #处理后的模型名
--input_names=Mul \
--output_names=final_result

# ios请参考0和1两篇博客,以上命令都可以在上面找到
# ios上博客https://petewarden.com/2016/09/27/tensorflow-for-mobile-poets/
评论 19 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

dongchangzhang

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值