1

Tensorflow는 Android 앱에서 tensorflow를 사용하는 예로서 tutorial을 제공합니다.Android 용 Tensorflow 예제

나는 앱을 성공적으로 만들어 내 장치에서 실행했습니다. 나는 코드도 읽었다.

하지만 여기서 어디로 가야할지 알 수 없습니다! 나는 훈련 데이터가 주어진 정확도를 계산하는 tensorflow 코드를 가지고있다.

내 자신의 Android 앱에서 어떻게 해당 모델을 사용합니까? tensorflow 설명은 빌드 지침을 넘어서는 것이 아닙니다.

도와주세요!

답변

0

단계를 안내하는 좋은 자습서가 나와 있습니다. (안드로이드 데모 애플리케이션과 호환 만드는)을 strip_unused 도구를 사용하여

  • 프로세스 당신의 TensorFlow 모델 :

    우리는 이미지 분류 문제에 대해 얘기하는 가정하면, 당신은 단지 필요합니다.

  • 스트랩 된 TensorFlow .pb 모델과 새 라벨 중 .txt을 Android assets 폴더로 복사하십시오.
  • Android 데모 앱을 다시 빌드하십시오.

자세한 내용은 this blog post 여기에서 내가 어떻게 작성했는지 확인하십시오.

3

먼저 모델을 .pb (protobuf) 파일로 저장해야합니다. 응용 프로그램에서이 .pb 파일을로드해야합니다. 이것을 달성 할 수 있습니다 tf/python/tools freeze_graph.freeze_graph()

또한 모든 C++ 구현을 포함하는 libtensorflow_inference.so가 필요합니다.

마지막으로 libandroid_tensorflow_inference_java.jar가 필요합니다. 다음으로

당신은 쓸 수 있습니다 :

inferenceInterface.initializeTensorFlow(getAssets(), MODEL_FILE); 

inferenceInterface.fillNodeFloat(INPUT_NODE, INPUT_SIZE, inputFloats); 

inferenceInterface.runInference(new String[] {OUTPUT_NODE}); 

inferenceInterface.readNodeFloat(OUTPUT_NODE, resu); 

은 여기 좋은 튜토리얼이있다 : https://omid.al/posts/2017-02-20-Tutorial-Build-Your-First-Tensorflow-Android-App.html

응용 프로그램에 대한

GitHub의의의 repo : https://github.com/omimo/TFDroid

이 이해에 많은 도움이 나를 위해 Android에서 tf의 기본 사항.

0

안드로이드

에 대한
git clone --recurse-submodules https://github.com/tensorflow/tensorflow.git 

참고 TensorFlow을 구축 완성 된 상세한 방법 : --recurse - 서브 모듈은 서브 모듈을 당겨하는 것이 중요합니다.

여기에서 Bazel을 설치하십시오. Bazel은 TensorFlow의 기본 구축 시스템입니다. 이제 WORKSPACE를 편집하면 이전에 복제 한 TensorFlow의 루트 디렉토리에서 WORKSPACE 파일을 찾을 수 있습니다.아래의 SDK와 NDK 경로처럼

# Uncomment and update the paths in these entries to build the Android demo. 
#android_sdk_repository(
# name = "androidsdk", 
# api_level = 23, 
# build_tools_version = "25.0.1", 
# # Replace with path to Android SDK on your system 
# path = "<PATH_TO_SDK>", 
#) 
# 
#android_ndk_repository(
# name="androidndk", 
# path="<PATH_TO_NDK>", 
# api_level=14) 

:

android_sdk_repository(
    name = "androidsdk", 
    api_level = 23, 
    build_tools_version = "25.0.1", 
    # Replace with path to Android SDK on your system 
    path = "/Users/amitshekhar/Library/Android/sdk/", 
) 
android_ndk_repository(
    name="androidndk", 
    path="/Users/amitshekhar/Downloads/android-ndk-r13/", 
    api_level=14) 

이 나서 .so를 파일을 구축 할 수 있습니다.

bazel build -c opt //tensorflow/contrib/android:libtensorflow_inference.so \ 
    --crosstool_top=//external:android/crosstool \ 
    [email protected]_tools//tools/cpp:toolchain \ 
    --cpu=armeabi-v7a 

armeabi-v7a를 원하는 대상 아키텍처로 교체하십시오. 라이브러리가에 위치 할 것입니다 :

bazel-bin/tensorflow/contrib/android/libandroid_tensorflow_inference_java.jar 

이제 우리는 모두 병을 가지고 :

bazel build //tensorflow/contrib/android:android_tensorflow_inference_java 

우리의 JAR 파일을 찾을 수 있습니다 자바 대응을 구축하기 위해

bazel-bin/tensorflow/contrib/android/libtensorflow_inference.so 

. 그래서 파일. 나는 이미 .so 파일과 jar 파일을 모두 빌드했으며, project에서 직접 사용할 수 있습니다.

libandroid_tensorflow_inference_java.jar를 libs 폴더에 넣고 마우스 오른쪽 버튼을 클릭하여 라이브러리로 추가하십시오.

compile files('libs/libandroid_tensorflow_inference_java.jar') 

주요 디렉토리에 jniLibs 폴더를 만들고/armeabi-V7A/폴더 jniLibs에 libtensorflow_inference.so했습니다.

이제 TensorFlow Java API를 호출 할 수 있습니다.

TensorFlow Java API는 TensorFlowInferenceface 클래스를 통해 필요한 모든 메소드를 제공합니다.

이제 모델 경로를 사용하여 TensorFlow Java API를 호출하고로드해야합니다.

나는 완전한 블로그 here을 작성했습니다.

관련 문제