Tensorflow: Gunakan kategori yang dilatih ulang di Demo Kamera Android

Dibuat pada 1 Agu 2016  ·  1Komentar  ·  Sumber: tensorflow/tensorflow

Masalah GitHub adalah untuk bug / masalah instalasi / permintaan fitur.
Untuk dukungan umum dari komunitas, lihat StackOverflow .
Untuk membuat bug dan permintaan fitur lebih mudah ditemukan dan diatur, kami menutup masalah yang dianggap
di luar cakupan untuk Masalah GitHub dan mengarahkan orang ke StackOverflow.

Untuk bug atau masalah penginstalan, berikan informasi berikut.
Semakin banyak informasi yang Anda berikan, semakin mudah kami dapat menawarkan
bantuan dan saran.

Informasi lingkungan

Sistem Operasi: Docker di Windows

Versi CUDA dan cuDNN yang diinstal:
(harap lampirkan output dari ls -l /path/to/cuda/lib/libcud* ):

Jika diinstal dari paket pip biner, berikan:

  1. Paket pip mana yang Anda instal.
  2. Keluaran dari python -c "import tensorflow; print(tensorflow.__version__)" .

Jika diinstal dari sumber, berikan

  1. Komit hash ( git rev-parse HEAD )
  2. Keluaran dari bazel version

Langkah-langkah untuk mereproduksi

  1. Berhasil melatih ulang data baru dengan Docker. Dapatkan dua file yang dilatih ulang retrained_graph.pb dan retrained_labels.txt
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html?index=..%2F..%2Findex#5
  2. Coba instal Bazel di windows tapi gagal. Tapi saya menemukan Demo Android yang tidak membutuhkan Bazel. Yang ini bekerja dengan baik di Windows. Itu dapat mengenali gambar ke dalam 1000 kelas yang disediakan oleh ImageNet di kamera real-time Android.
    https://github.com/miyosuda/TensorFlowAndroidDemo

    Apa yang sudah kamu coba?

Referensi; https://github.com/tensorflow/tensorflow/issues/1269
Berdasarkan saran, saya mencoba hal-hal berikut:
1.Temukan coded_stream.h di bagian google/protobuf build tensorflow Anda dan ubah 64 menjadi 256 di baris berikut:
static const int kDefaultTotalBytesLimit = 64 << 20; // Ubah 64 menjadi 256 MB
2.Ubah hanya input_size menjadi 299 dan image_mean menjadi 128 di TensorflowImageListener.java
3.Buka tensorflow_jni.cc di demo android dan modifikasi sebagai berikut:

  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(
{{"Mul", input_tensor}});

std::vectorstd::string output_names({"softmax"});
4.Lakukan perubahan berikut di TensorflowImageListerner.java:
private static final String MODEL_FILE = "file:///android_asset/retrained_graph.pb";
String akhir statis pribadi LABEL_FILE =
"file:///android_asset/retrained_labels.txt";

  1. Bangun demo android

Log atau keluaran lain yang akan membantu

(Jika log berukuran besar, harap unggah sebagai lampiran).
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/native: jni_utils.cc:107 Pemeriksaan gagal: message->ParseFromZeroCopyStream(&adaptor)
08-01 17:36:50.015 14978-15121/org.tensorflow.tensorflowdemo A/libc: Sinyal fatal 6 (SIGABRT), kode -6 di tid 15121 (ImageListener)

Saya tahu ini adalah masalah karena variabel yang tidak kompatibel dari Inception v3 dan Inception 5h. Model Demo Android yang saya gunakan adalah Inception 5h, Tetapi model yang saya gunakan untuk melatih data baru saya adalah Inception 3v. Saya sudah mencoba mengedit variabel yang disebutkan di sini: https://github.com/tensorflow/tensorflow/issues/1269 .
Tapi saya masih mendapatkan kesalahan yang sama. Adakah yang bisa membantu saya menjelaskan cara mengadaptasi data terlatih baru saya yang berjalan di Demo Android?

>Semua komentar

Pertanyaan semacam ini lebih baik ditanyakan di StackOverflow. Forum ini untuk laporan bug dan sejenisnya. Silakan ajukan pertanyaan Anda di sana, dengan menandai 'tensorflow'.

Jika Anda mengalami masalah dengan bazel, Anda dapat mencoba tensorflow makefile .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat