Tensorflow: Android рдХреИрдорд░рд╛ рдбреЗрдореЛ рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЕрдЧре░ 2016  ┬╖  1рдЯрд┐рдкреНрдкрдгреА  ┬╖  рд╕реНрд░реЛрдд: tensorflow/tensorflow

рдЧрд┐рдЯрд╣рдм рдореБрджреНрджреЗ рдмрдЧ/рд╕реНрдерд╛рдкрдирд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ/рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВред
рд╕рдореБрджрд╛рдп рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП, StackOverflow рджреЗрдЦреЗрдВред
рдмрдЧ рдФрд░ рдлреАрдЪрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЧрд┐рдЯрд╣рдм рдореБрджреНрджреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкрд░ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред

рдмрдЧ рдпрд╛ рд╕реНрдерд╛рдкрдирд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
рдЖрдк рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдЙрддрдиреА рд╣реА рдЖрд╕рд╛рдиреА рд╕реЗ рдкреЗрд╢рдХрд╢ рдХрд░ рдкрд╛рдПрдВрдЧреЗ
рдорджрдж рдФрд░ рд╕рд▓рд╛рд╣ред

рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА

рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо: рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдбреЙрдХрд░

CUDA рдФрд░ cuDNN рдХрд╛ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдг:
(рдХреГрдкрдпрд╛ ls -l /path/to/cuda/lib/libcud* рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ):

рдпрджрд┐ рдмрд╛рдЗрдирд░реА рдкрд╛рдЗрдк рдкреИрдХреЗрдЬ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ:

  1. рдЖрдкрдиреЗ рдХреМрди рд╕рд╛ рдкрд╛рдЗрдк рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
  2. python -c "import tensorflow; print(tensorflow.__version__)" рд╕реЗ рдЖрдЙрдЯрдкреБрдЯред

рдпрджрд┐ рд╕реНрд░реЛрдд рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рддреЛ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ

  1. рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрд╢ ( git rev-parse HEAD )
  2. bazel version . рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

  1. рдбреЙрдХрд░ рдХреЗ рд╕рд╛рде рдирдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреБрдирдГ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВред рджреЛ рдкреБрди: рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ retrained_graph.pb рдФрд░ retrained_labels.txt
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдмреЗрдЬрд╝рд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рд▓реЗрдХрд┐рди рдЕрд╕рдлрд▓ рд░рд╣рд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ Android рдбреЗрдореЛ рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ Bazel рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдВрдбреНрд░реЙрдЗрдб рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдХреИрдорд░реЗ рдореЗрдВ рдЗрдореЗрдЬрдиреЗрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ 1000 рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддрд╛ рд╣реИред
    https://github.com/miyosuda/TensorFlowAndroidDemo

    рдЖрдкрдиреЗ рдХреНрдпрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛?

рд╕рдВрджрд░реНрдн: https://github.com/tensorflow/tensorflow/issues/1269
рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреАрдЬреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА:
1. рдЕрдкрдиреЗ рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдмрд┐рд▓реНрдб рдХреЗ google/protobuf рд╕реЗрдХреНрд╢рди рдореЗрдВ coded_stream.h рдвреВрдВрдвреЗрдВ рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдореЗрдВ 64 рд╕реЗ 256 рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:
рд╕реНрдерд┐рд░ рд╕реНрдерд┐рд░рд╛рдВрдХ int kDefaultTotalBytesLimit = 64 << 20; // 64 рд╕реЗ 256 рдПрдордмреА рдмрджрд▓реЗрдВ
2. TensorflowImageListener.java рдореЗрдВ рдХреЗрд╡рд▓ input_size рдХреЛ 299 рдФрд░ image_mean рдХреЛ 128 рдореЗрдВ рдмрджрд▓реЗрдВ
3. рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрдореЛ рдореЗрдВ tensorflow_jni.cc рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ:

  input_tensor_mapped(0, i, j, 0) =
      (static_cast<float>(src->red) - g_image_mean)/g_image_mean;
  input_tensor_mapped(0, i, j, 1) =
      (static_cast<float>(src->green) - g_image_mean)/g_image_mean;
  input_tensor_mapped(0, i, j, 2) =
      (static_cast<float>(src->blue) - g_image_mean)/g_image_mean;
  ++src;

std::vector<:pair i="47"> > input_tensors(
{{"рдореВрд▓", input_tensor}});

std::vectorstd::string output_names({"softmax"});
4. TensorflowImageListerner.java рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:
рдирд┐рдЬреА рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ MODEL_FILE = "рдлрд╝рд╛рдЗрд▓: ///android_asset/retrained_graph.pb";
рдирд┐рдЬреА рд╕реНрдерд┐рд░ рдЕрдВрддрд┐рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ LABEL_FILE =
"рдлрд╝рд╛рдЗрд▓: ///android_asset/retrained_labels.txt";

  1. рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрдореЛ рдмрдирд╛рдПрдВ

рд▓реЙрдЧ рдпрд╛ рдЕрдиреНрдп рдЖрдЙрдЯрдкреБрдЯ рдЬреЛ рдорджрджрдЧрд╛рд░ рд╣реЛрдВрдЧреЗ

(рдпрджрд┐ рд▓реЙрдЧ рдмрдбрд╝реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд░реЗрдВ)ред
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo рдПрдХ/рджреЗрд╢реА: jni_utils.cc:107 рдЬрд╛рдБрдЪ рд╡рд┐рдлрд▓: рд╕рдВрджреЗрд╢-> ParseFromZeroCopyStream(&adaptor)
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/libc: рдШрд╛рддрдХ рд╕рдВрдХреЗрдд 6 (SIGABRT), рдХреЛрдб -6 tid 15121 рдореЗрдВ (ImageListener)

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрдВрд╕реЗрдкреНрд╢рди v3 рдФрд░ рдЗрдВрд╕реЗрдкреНрд╢рди 5h рдХреЗ рдЕрд╕рдВрдЧрдд рдЪрд░ рдХреЗ рдХрд╛рд░рдг рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ Android рдбреЗрдореЛ рдореЙрдбрд▓ рдЗрдВрд╕реЗрдкреНрд╢рди 5h рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдирдП рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЗрдВрд╕реЗрдкреНрд╢рди 3v рд╣реИред рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЪрд░реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ: https://github.com/tensorflow/tensorflow/issues/1269ред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╡рд╣реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓рддреА рд╣реИрдВред рдХреЛрдИ рднреА рдореБрдЭреЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдВрдбреНрд░реЙрдЗрдб рдбреЗрдореЛ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдореЗрд░реЗ рдирдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП?

>рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

StackOverflow рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рд╢реНрди рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдлрд╝реЛрд░рдо рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд▓рд┐рдП рд╣реИред рдХреГрдкрдпрд╛ рд╡рд╣рд╛рдВ рдЕрдкрдирд╛ рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВ, 'рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ' рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд░рдирд╛ред

рдпрджрд┐ рдЖрдкрдХреЛ рдмреЗрдЬрд╝рд▓ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдЖрдк рдЯреЗрдВрд╕рд░рдлрд╝реНрд▓реЛ рдореЗрдХрдлрд╝рд╛рдЗрд▓ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ilblackdragon picture ilblackdragon  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

as1ndu picture as1ndu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ppwwyyxx picture ppwwyyxx  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

RahulKulhari picture RahulKulhari  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nicholaslocascio picture nicholaslocascio  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ