TensorFlow安装及安卓开发环境配置


一、安装tensorflow

mac自带了python2.7 直接输入python可以查看本机python版本

1、安装pip

sudo easy_install pip

sudo easy_install –upgrade six

2、安装tensorflow

pip install tensorflow

如果报错如:error: could not create '/Library/Python/2.7/site-packages/html5lib': Permission denied

使用:pip install tensorflow –user (系统用户提供权限)

3、测试tensorflow

在桌面保存python文件hello.py,例子如下:

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')

sess = tf.Session()

print(sess.run(hello))

终端执行命令:python /Users/XXX/Desktop/hello.py

正确输出:Hello, TensorFlow!,即为安装成功

二、编译使用tensorflow c版本动态链接库

1、下载tensorflow源码

git clone https://github.com/tensorflow/tensorflow

 

2、安装bazel

首先要安装jdk1.8+,使用java –version 查看本机jdk版本,下载地址:

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

安装bazel方法很多,参见https://docs.bazel.build/versions/master/install-os-x.html

我采用homebrew安装:

/usr/bin/ruby -e "$(curl -fsSL \

https://raw.githubusercontent.com/Homebrew/install/master/install)"

brew install bazel

bazel version

brew upgrade bazel

3、配置tensorflow

安装成功后会有bazel和tensorflow两个文件夹

 

进入tensorflow下:cd tensorflow

输入:./configure 在配置过程中会出现一系列问题,基本都填n,若是在GPU下,则CUDA选择y

 

4、编译源码,生成so库文件和jar文件(可选)

进入tensorflow/tensorflow文件夹,执行:

bazel build :libtensorflow.so

当然可以直接在网上下载libtensorflow_inference.so android_tensorflow_inference_java_jar

三、设置android studio

 

打开项目时出现上图情况,是由于gradle下载过慢,需要手动去下载离线包,推荐网址:http://services.gradle.org/distributions/

将下载的zip文件放在/Users/用户名/.gradle/wrapper/dists/gradle-4.1-all/随机文件名/

 

安装所需ndk等工具:

 

 

 

 

四、将so文件,pb文件等导入android工程

新建文件夹:/app/jniLibs/ 将编译好的so库文件和jar文件放入其中,在build.gradle(Module.app)中添加代码:

 

 

 

将训练好的pb模型放入/app/assets/文件夹

 

五、TensorFlow分类器简单例子

从demo中提取出

在页面中写:

private static final int INPUT_SIZE = 224;
private static final int IMAGE_MEAN = 224;
private static final float IMAGE_STD = (float) 1/IMAGE_MEAN;
private static final String INPUT_NAME = "input";
private static final String OUTPUT_NAME  = "InceptionV4/Logits/Predictions";

private static final String MODEL_FILE = "file:///android_asset/graph_quantized.pb";
private static final String LABEL_FILE =
        file:///android_asset/kunchong.txt;

初始化:

classifier = TensorFlowImageClassifier.create(
            getAssets(),
            MODEL_FILE,
            LABEL_FILE,
            INPUT_SIZE,
            IMAGE_MEAN,
            IMAGE_STD,
            INPUT_NAME,
            OUTPUT_NAME);
} catch (final Exception e) {
    throw new RuntimeException("Error initializing TensorFlow!", e);
}

执行分类器,返回结果

final List<Classifier.Recognition> results;

results = classifier.recognizeImage(bitmap);

猜你喜欢

转载自blog.csdn.net/lcking18325/article/details/80724196