Tensorflow: استخدم الفئات المعاد تدريبها في Android Camera Demo

تم إنشاؤها على ١ أغسطس ٢٠١٦  ·  1تعليق  ·  مصدر: tensorflow/tensorflow

مشكلات GitHub مخصصة للأخطاء / مشكلات التثبيت / طلبات الميزات.
للحصول على دعم عام من المجتمع ، راجع StackOverflow .
لتسهيل العثور على الأخطاء وطلبات الميزات وتنظيمها ، نقوم بإغلاق المشكلات التي يتم اعتبارها
خارج نطاق مشكلات GitHub وتوجيه الأشخاص إلى StackOverflow.

بالنسبة للأخطاء أو مشكلات التثبيت ، يرجى تقديم المعلومات التالية.
كلما زادت المعلومات التي تقدمها ، زادت سهولة قدرتنا على تقديمها
المساعدة والمشورة.

معلومات البيئة

نظام التشغيل: Docker on Windows

الإصدار المثبت من 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. نجح في إعادة تدريب البيانات الجديدة باستخدام Docker. احصل على الملفين المعاد تدريبهما retrained_graph.pb و retrained_labels.txt
    https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/index.html؟index=..٪2F..٪2Findex#5
  2. حاول تثبيت Bazel على الويندوز لكنها فشلت. لكنني وجدت عرضًا توضيحيًا لنظام Android لا يحتاج إلى Bazel. هذا واحد يعمل بشكل جيد على Windows. يمكنه التعرف على الصور في 1000 فئة مقدمة من ImageNet في كاميرا Android في الوقت الفعلي.
    https://github.com/miyosuda/TensorFlowAndroidDemo

    ماذا حاولت؟

المرجع ; https://github.com/tensorflow/tensorflow/issues/1269
بناءً على الاقتراحات ، جربت الأمور التالية:
1.ابحث عن coded_stream.h في قسم google / protobuf لبناء tensorflow الخاص بك وقم بتعديل 64 إلى 256 في السطر التالي:
ثابت ثابت في kDefaultTotalBytesLimit = 64 << 20 ؛ // قم بتغيير 64 إلى 256 ميجابايت
2- قم بتعديل حجم الإدخال إلى 299 وصورة_المعنى إلى 128 في TensorflowImageListener.java
3- انتقل إلى tensorflow_jni.cc في عرض android وقم بالتعديل على النحو التالي:

  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;

الأمراض المنقولة جنسياً :: المتجه <: pair i = "47">> input_tensors (
{{"Mul"، input_tensor}}) ؛

std :: vectorstd :: string output_names ({"softmax"})؛
4- قم بإجراء التغييرات التالية في TensorflowImageListerner.java:
سلسلة نهائية ثابتة خاصة MODEL_FILE = "file: ///android_asset/retrained_graph.pb" ؛
سلسلة نهائية ثابتة خاصة LABEL_FILE =
"الملف: ///android_asset/retrained_labels.txt" ؛

  1. بناء عرض android

السجلات أو المخرجات الأخرى التي قد تكون مفيدة

(إذا كانت السجلات كبيرة ، يرجى تحميلها كمرفق).
08-01 17: 36: 50.015 14978-15121 / org.tensorflow.tensorflowdemo A / أصلي: jni_utils.cc:107 فشل التحقق: message-> ParseFromZeroCopyStream (ومحول)
08-01 17: 36: 50.015 14978-15121 / org.tensorflow.tensorflowdemo A / libc: إشارة قاتلة 6 (SIGABRT) ، الكود -6 في Tid 15121 (ImageListener)

أعلم أن هذه مشكلة بسبب المتغيرات غير المتوافقة في Inception v3 و Inception 5h. نموذج Android التجريبي الذي أستخدمه هو Inception 5h ، لكن النموذج الذي استخدمته لتدريب بياناتي الجديدة هو Inception 3v. لقد حاولت تحرير المتغيرات المذكورة هنا: https://github.com/tensorflow/tensorflow/issues/1269.
لكن ما زلت أحصل على نفس الأخطاء. يمكن لأي شخص مساعدتي في شرح كيفية تكييف بياناتي الجديدة المدربة التي تعمل في الإصدار التجريبي من Android؟

>كل التعليقات

يُفضل طرح هذا النوع من الأسئلة على موقع StackOverflow. هذا المنتدى مخصص لتقارير الشوائب وما شابه ذلك. يرجى طرح سؤالك هناك ، مع وضع علامة "tensorflow".

إذا كنت تواجه مشكلة مع bazel ، فيمكنك تجربة tensorflow makefile .

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات