Bu belge, TensorFlow Lite iOS kitaplığını kendi başınıza nasıl oluşturacağınızı açıklar. Normalde TensorFlow Lite iOS kitaplığını yerel olarak oluşturmanız gerekmez. Sadece kullanmak istiyorsanız, en kolay yol TensorFlow Lite CocoaPod'ların önceden oluşturulmuş kararlı veya gecelik sürümlerini kullanmaktır. Bunları iOS projelerinizde nasıl kullanacağınızla ilgili daha fazla ayrıntı için iOS hızlı başlangıcına bakın.
Yerel olarak inşa etmek
Bazı durumlarda, örneğin TensorFlow Lite'ta yerel değişiklikler yapmak ve bu değişiklikleri iOS uygulamanızda test etmek istediğinizde veya sağlanan dinamik çerçeve yerine statik çerçeve kullanmayı tercih ettiğinizde, yerel bir TensorFlow Lite yapısı kullanmak isteyebilirsiniz. Yerel olarak TensorFlow Lite için evrensel bir iOS çerçevesi oluşturmak için bunu bir macOS makinesinde Bazel kullanarak oluşturmanız gerekir.
Xcode'u yükleyin
Henüz yapmadıysanız, Xcode 8 veya üstünü ve xcode-select
kullanarak araçları yüklemeniz gerekir:
xcode-select --install
Bu yeni bir kurulumsa, aşağıdaki komutla tüm kullanıcılar için lisans sözleşmesini kabul etmeniz gerekir:
sudo xcodebuild -license accept
Bazel'i yükleyin
Bazel, TensorFlow için birincil yapı sistemidir. Bazel web sitesindeki talimatlara göre Bazel'i yükleyin. tensorflow
deposunun kökündeki configure.py
dosyasında _TF_MIN_BAZEL_VERSION
ve _TF_MAX_BAZEL_VERSION
arasında bir sürüm seçtiğinizden emin olun.
WORKSPACE ve .bazelrc'yi yapılandırın
Kök TensorFlow ödeme dizininde ./configure
komut dosyasını çalıştırın ve komut dosyası TensorFlow'u iOS desteğiyle oluşturmak isteyip istemediğinizi sorduğunda "Evet" yanıtını verin.
TensorFlowLiteC dinamik çerçevesini oluşturun (önerilir)
Bazel, iOS desteğiyle düzgün bir şekilde yapılandırıldıktan sonra, aşağıdaki komutla TensorFlowLiteC
çerçevesini oluşturabilirsiniz.
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_framework
Bu komut, TensorFlow kök dizininizin altındaki bazel-bin/tensorflow/lite/ios/
dizini altındaki TensorFlowLiteC_framework.zip
dosyasını oluşturacaktır. Varsayılan olarak oluşturulan çerçeve, armv7, arm64 ve x86_64 içeren bir "fat" ikili dosyası içerir (ancak i386 içermez). --config=ios_fat
belirttiğinizde kullanılan derleme bayraklarının tam listesini görmek için lütfen .bazelrc
dosyasındaki iOS yapılandırmaları bölümüne bakın.
TensorFlowLiteC statik çerçevesini oluşturun
Varsayılan olarak, dinamik çerçeveyi yalnızca Cocoapod'lar aracılığıyla dağıtırız. Bunun yerine statik çerçeveyi kullanmak istiyorsanız, aşağıdaki komutla TensorFlowLiteC
statik çerçevesini oluşturabilirsiniz:
bazel build --config=ios_fat -c opt --cxxopt=--std=c++17 \
//tensorflow/lite/ios:TensorFlowLiteC_static_framework
Komut, TensorFlow kök dizininizin altındaki bazel-bin/tensorflow/lite/ios/
dizini altında TensorFlowLiteC_static_framework.zip
adlı bir dosya oluşturacaktır. Bu statik çerçeve, dinamik çerçeveyle tamamen aynı şekilde kullanılabilir.
TFLite çerçevelerini seçici olarak oluşturun
Seçici derlemeyi kullanarak yalnızca bir dizi modeli hedefleyen daha küçük çerçeveler oluşturabilirsiniz; bu, model kümenizde kullanılmayan işlemleri atlar ve yalnızca verilen model kümesini çalıştırmak için gereken op çekirdeklerini içerir. Komut aşağıdaki gibidir:
bash tensorflow/lite/ios/build_frameworks.sh \
--input_models=model1.tflite,model2.tflite \
--target_archs=x86_64,armv7,arm64
Yukarıdaki komut, yerleşik TensorFlow Lite ve özel işlemler için bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteC_framework.zip
statik çerçevesini oluşturacaktır; ve isteğe bağlı olarak, modelleriniz Select TensorFlow işlemlerini içeriyorsa, bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
statik çerçevesini oluşturur. Dağıtım mimarilerinizi belirtmek için --target_archs
bayrağının kullanılabileceğini unutmayın.
Kendi uygulamanızda kullanın
CocoaPod geliştiricileri
TensorFlow Lite için üç CocoaPod vardır:
-
TensorFlowLiteSwift
: TensorFlow Lite için Swift API'lerini sağlar. -
TensorFlowLiteObjC
: TensorFlow Lite için Objective-C API'lerini sağlar. -
TensorFlowLiteC
: TensorFlow Lite çekirdek çalışma zamanını yerleştiren ve yukarıdaki iki bölme tarafından kullanılan temel C API'lerini ortaya çıkaran ortak temel bölme. Doğrudan kullanıcılar tarafından kullanılması amaçlanmamıştır.
Bir geliştirici olarak, uygulamanızın yazıldığı dile bağlı olarak TensorFlowLiteSwift
veya TensorFlowLiteObjC
bölmesini seçmelisiniz, ancak ikisini birden değil. TensorFlow Lite'ın yerel yapılarını kullanmanın tam adımları, tam olarak hangi parçayı oluşturmak istediğinize bağlı olarak farklılık gösterir.
Yerel Swift veya Objective-C API'lerini kullanma
CocoaPods kullanıyorsanız ve yalnızca TensorFlow Lite'ın Swift API'lerinde veya Objective-C API'lerinde bazı yerel değişiklikleri test etmek istiyorsanız, buradaki adımları izleyin.
tensorflow
ödeme işleminizde Swift veya Objective-C API'lerinde değişiklik yapın.TensorFlowLite(Swift|ObjC).podspec
dosyasını açın ve şu satırı güncelleyin:
s.dependency 'TensorFlowLiteC', "#{s.version}"
olmak:
s.dependency 'TensorFlowLiteC', "~> 0.0.1-nightly"
Bu, Swift veya Objective-C API'lerinizi, yereltensorflow
kıyasla eski olabilecek kararlı sürüm yerineTensorFlowLiteC
API'lerinin (her gece 1-4AM Pasifik Saati arasında oluşturulur) mevcut en son gece sürümüne göre oluşturmanızı sağlamak içindir. ödeme. Alternatif olarak, kendiTensorFlowLiteC
sürümünüzü yayınlamayı ve bu sürümü kullanmayı seçebilirsiniz (aşağıdaki Yerel TensorFlow Lite çekirdeğini kullanma bölümüne bakın).iOS projenizin Pod
tensorflow
Podfile
dizininizin yerel yolunu işaret etmek için bağımlılığı aşağıdaki gibi değiştirin.
Swift için:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
Amaç-C için:
pod 'TensorFlowLiteObjC', :path => '<your_tensorflow_root_dir>'
Pod kurulumunuzu iOS projenizin kök dizininden güncelleyin.
$ pod update
Oluşturulan çalışma alanını (
<project>.xcworkspace
) yeniden açın ve uygulamanızı Xcode içinde yeniden oluşturun.
Yerel TensorFlow Lite çekirdeğini kullanma
Özel bir CocoaPods teknik özellik deposu kurabilir ve özel TensorFlowLiteC
çerçevenizi özel deponuzda yayınlayabilirsiniz. Bu podspec dosyasını kopyalayabilir ve birkaç değeri değiştirebilirsiniz:
...
s.version = <your_desired_version_tag>
...
# Note the `///`, two from the `file://` and one from the `/path`.
s.source = { :http => "file:///path/to/TensorFlowLiteC_framework.zip" }
...
s.vendored_frameworks = 'TensorFlowLiteC.framework'
...
Kendi TensorFlowLiteC.podspec
dosyanızı oluşturduktan sonra, kendi projenizde kullanmak için özel CocoaPod'ları kullanma talimatlarını takip edebilirsiniz. Ayrıca, TensorFlowLite(Swift|ObjC).podspec
özel TensorFlowLiteC
bölmenize işaret edecek şekilde değiştirebilir ve uygulama projenizde Swift veya Objective-C bölmesini kullanabilirsiniz.
Bazel geliştiricileri
Bazel'i ana derleme aracı olarak kullanıyorsanız, BUILD
dosyanızdaki hedefinize TensorFlowLite
bağımlılığını eklemeniz yeterlidir.
Swift için:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Amaç-C için:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
Uygulama projenizi oluşturduğunuzda, TensorFlow Lite kitaplığındaki tüm değişiklikler alınır ve uygulamanıza eklenir.
Xcode proje ayarlarını doğrudan değiştirin
Projenize TensorFlow Lite bağımlılığı eklemek için CocoaPods veya Bazel kullanmanız şiddetle tavsiye edilir. Yine de TensorFlowLiteC
çerçevesini manuel olarak eklemek istiyorsanız, TensorFlowLiteC
çerçevesini uygulama projenize gömülü bir çerçeve olarak eklemeniz gerekir. TensorFlowLiteC.framework
dizinini almak için yukarıdaki derlemeden oluşturulan TensorFlowLiteC_framework.zip
dosyasını açın. Bu dizin, Xcode'un anlayabileceği gerçek çerçevedir.
TensorFlowLiteC.framework
hazırladıktan sonra, önce onu uygulama hedefinize gömülü bir ikili dosya olarak eklemeniz gerekir. Bunun için tam proje ayarları bölümü, Xcode sürümünüze bağlı olarak farklılık gösterebilir.
- Xcode 11: Uygulama hedefiniz için proje düzenleyicinin 'Genel' sekmesine gidin ve 'Çerçeveler, Kitaplıklar ve Gömülü İçerik' bölümünün altına
TensorFlowLiteC.framework
ekleyin. - Xcode 10 ve altı: Uygulama hedefiniz için proje düzenleyicinin 'Genel' sekmesine gidin ve 'Gömülü İkili Dosyalar' altına
TensorFlowLiteC.framework
ekleyin. Çerçeve ayrıca 'Bağlantılı Çerçeveler ve Kitaplıklar' bölümünün altına otomatik olarak eklenmelidir.
Çerçeveyi gömülü bir ikili dosya olarak eklediğinizde, Xcode ayrıca 'Yapı Ayarları' sekmesi altındaki 'Çerçeve Arama Yolları' girişini çerçevenizin üst dizinini içerecek şekilde günceller. Bunun otomatik olarak gerçekleşmemesi durumunda, TensorFlowLiteC.framework
dizininin üst dizinini manuel olarak eklemelisiniz.
Bu iki ayar yapıldıktan sonra, TensorFlowLiteC.framework/Headers
dizini altındaki başlık dosyaları tarafından tanımlanan TensorFlow Lite'ın C API'sini içe aktarabilmeli ve çağırabilmelisiniz.