שימוש ב-build בהתאמה אישית של TensorFlow Lite

אם אתם מפתחי ML מנוסים והספרייה המובנית של TensorFlow Lite לא עומדת בצרכים שלכם, תוכלו להשתמש ב-build בהתאמה אישית של TensorFlow Lite עם ML Kit. לדוגמה, תוכלו להוסיף פעולות בהתאמה אישית.

דרישות מוקדמות

  • סביבת build שפועלת של TensorFlow Lite
  • גרסת checkout של TensorFlow Lite 1.10.1

אפשר לבדוק את הגרסה הנכונה באמצעות Git:

git checkout -b work
git reset --hard tflite-v1.10.1
git cherry-pick 4dcfddc5d12018a5a0fdca652b9221ed95e9eb23

פיתוח ספריית TensorFlow Lite

  1. יוצרים את Tensorflow Lite (עם השינויים) לפי ההוראות הרגילות.
  2. יצירת המסגרת:
tensorflow/lite/lib_package/create_ios_frameworks.sh

אפשר למצוא את המסגרת שנוצרה בכתובת tensorflow/lite/gen/ios_frameworks/tensorflow_lite.framework.zip

יצירת אשכול מקומי

  1. יצירת ספרייה ל-pod המקומי
  2. מריצים את pod lib create TensorFlowLite בספרייה שיצרתם
  3. יצירת ספרייה Frameworks בתוך הספרייה TensorFlowLite
  4. מבטלים את דחיסת הקובץ tensorflow_lite.framework.zip שנוצר למעלה.
  5. מעתיקים את הקובץ tensorflow_lite.framework ללא הארכיון אל TensorFlowLite/Frameworks
  6. משנים את TensorFlowLite/TensorFlowLite.podspec שנוצר כך שיצביע על הספרייה:
    Pod::Spec.new do |s|
      s.name             = 'TensorFlowLite'
      s.version          = '0.1.7' # Version must match.
      s.ios.deployment_target = '9.0'
      
      # ... make other changes as desired
      
      internal_pod_root = Pathname.pwd
      s.frameworks = 'Accelerate'
      s.libraries = 'c++'
      s.vendored_frameworks = 'Frameworks/tensorflow_lite.framework'

      s.pod_target_xcconfig = {
        'SWIFT_VERSION' => '4.0',
        'INTERNAL_POD_ROOT' => "#{internal_pod_root}",
        'HEADER_SEARCH_PATHS' => "$(inherited) '${INTERNAL_POD_ROOT}/Frameworks/tensorflow_lite.framework/Headers'",
        'OTHER_LDFLAGS' => "-force_load '${INTERNAL_POD_ROOT}/Frameworks/tensorflow_lite.framework/tensorflow_lite'"
      }
    end

הפניה ל-pod בהתאמה אישית בפרויקט

כדי לכלול את ה-pod המותאם אישית, אפשר להפנות אליו ישירות מ-Podfile של האפליקציה:

pod 'Firebase/MLModelInterpreter'
pod 'TensorFlowLite', :path => 'path/to/your/TensorflowLite'

אפשרויות נוספות לניהול קטעי קוד פרטיים מפורטות במאמר Private Pods במסמכי העזרה של Cocoapods. הערה: הגרסה חייבת להתאים בדיוק, וצריך להפנות לגרסה הזו כשמצרפים את ה-pod מהמאגר הפרטי, למשל pod 'TensorFlowLite', "1.10.1".