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

    xiaoxiao2021-03-25  124

    项目github

    我做的参考项目

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

    效果展示

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

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

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

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

    博客二,可参考

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

    如果没有训练图片?

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

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

    注:脚本核心算法非原创

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

    什么jpegdecoder问题,这个我遇到了,原因是tf为了保证移动端的体积,一部分功能没有加进去(猜的),所以pc上的模型需要进一步处理才可以用。我建议将tf升级到0.12以上。对了处理自己的模型只需要两条指令,具体看下面的代码部分。其他问题?我没遇到过,我经过第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/
    转载请注明原文地址: https://ju.6miu.com/read-7896.html

    最新回复(0)