Bu belgede TensorFlow Lite iOS kütüphanesini kendi başınıza nasıl oluşturacağınız açıklanmaktadır. Normalde TensorFlow Lite iOS kitaplığını yerel olarak oluşturmanıza gerek yoktur. 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, TensorFlow Lite'ın yerel bir yapısını kullanmak isteyebilirsiniz, örneğin TensorFlow Lite'ta yerel değişiklikler yapmak ve bu değişiklikleri iOS uygulamanızda test etmek istediğinizde veya sağladığımız dinamik çerçeve yerine statik çerçeve kullanmayı tercih ettiğinizde. 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
kullanan araçları yüklemeniz gerekecektir:
xcode-select --install
Bu yeni bir kurulumsa, aşağıdaki komutla tüm kullanıcılar için lisans sözleşmesini kabul etmeniz gerekecektir:
sudo xcodebuild -license accept
Bazel'i yükleyin
Bazel, TensorFlow'un birincil yapı sistemidir. Bazel'i Bazel web sitesindeki talimatlara göre yükleyin. tensorflow
deposunun kökündeki configure.py
dosyasında _TF_MIN_BAZEL_VERSION
ile _TF_MAX_BAZEL_VERSION
arasında bir sürüm seçtiğinizden emin olun.
WORKSPACE ve .bazelrc'yi yapılandırma
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çevesi oluşturun (önerilir)
Bazel, iOS desteğiyle uygun ş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ında TensorFlowLiteC_framework.zip
dosyasını oluşturacaktır. Varsayılan olarak, oluşturulan çerçeve armv7, arm64 ve x86_64'ü içeren (ancak i386'yı içermeyen) bir "yağ" ikili dosyası içerir. --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çevesi oluşturun
Varsayılan olarak dinamik çerçeveyi yalnızca Cocoapod'lar aracılığıyla dağıtıyoruz. Bunun yerine statik çerçeveyi kullanmak istiyorsanız TensorFlowLiteC
statik çerçevesini aşağıdaki komutla 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
adında bir dosya oluşturacaktır. Bu statik çerçeve, dinamik olanla tamamen aynı şekilde kullanılabilir.
TFLite çerçevelerini seçici olarak oluşturun
Model kümenizde kullanılmayan işlemleri atlayacak ve yalnızca belirli model kümesini çalıştırmak için gereken op çekirdeklerini içerecek seçici yapıyı kullanarak yalnızca bir dizi modeli hedefleyen daha küçük çerçeveler oluşturabilirsiniz. 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, TensorFlow Lite yerleşik ve özel operasyonlar 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 operasyonlarını içeriyorsa bazel-bin/tensorflow/lite/ios/tmp/TensorFlowLiteSelectTfOps_framework.zip
statik çerçevesini oluşturur. --target_archs
bayrağının dağıtım mimarilerinizi belirtmek için 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ı içeren ve yukarıdaki iki bölme tarafından kullanılan temel C API'lerini ortaya çıkaran ortak temel bölme. Kullanıcılar tarafından doğrudan kullanılması amaçlanmamıştır.
Bir geliştirici olarak, uygulamanızın yazıldığı dile göre TensorFlowLiteSwift
veya TensorFlowLiteObjC
podunu seçmelisiniz, ancak ikisini birden seçmelisiniz. TensorFlow Lite'ın yerel yapılarını kullanmanın kesin 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
CocoaPod 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
ödemenizde 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 güncelliğini kaybetmiş olabilecek sabit sürüm yerine,TensorFlowLiteC
API'lerinin (her gece 1-4:00 Pasifik Saati arasında oluşturulur) mevcut en son gecelik sürümüne göre oluşturduğunuzdan emin olmak içindir. Çıkış yapmak. 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).İOS projenizin
Podfile
dosyasında,tensorflow
kök dizininizin yerel yolunu işaret edecek şekilde bağımlılığı aşağıdaki gibi değiştirin.
Swift için:
pod 'TensorFlowLiteSwift', :path => '<your_tensorflow_root_dir>'
Objective-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 özellikler deposu oluşturabilir 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, özel CocoaPod'ları kendi projenizde kullanmak için kullanma talimatlarını takip edebilirsiniz. Ayrıca TensorFlowLite(Swift|ObjC).podspec
özel TensorFlowLiteC
bölmenizi 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ı kolayca ekleyebilirsiniz.
Swift için:
swift_library(
deps = [
"//tensorflow/lite/swift:TensorFlowLite",
],
)
Objective-C için:
objc_library(
deps = [
"//tensorflow/lite/objc:TensorFlowLite",
],
)
Uygulama projenizi oluşturduğunuzda TensorFlow Lite kitaplığında yapılan herhangi bir değişiklik alınıp uygulamanıza yerleştirilecektir.
Xcode proje ayarlarını doğrudan değiştirin
Projenize TensorFlow Lite bağımlılığı eklemek için CocoaPods veya Bazel kullanmanız önemle 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 gerekecektir. TensorFlowLiteC.framework
dizinini almak için yukarıdaki yapıdan oluşturulan TensorFlowLiteC_framework.zip
dosyasını açın. Bu dizin Xcode'un anlayabileceği gerçek çerçevedir.
TensorFlowLiteC.framework
dosyasını hazırladıktan sonra, öncelikle 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
çerçevesini ekleyin. Çerçeve ayrıca 'Bağlantılı Çerçeveler ve Kütüphaneler' bölümünün altına otomatik olarak eklenmelidir.
Çerçeveyi gömülü bir ikili dosya olarak eklediğinizde, Xcode ayrıca çerçevenizin ana dizinini içerecek şekilde 'Yapı Ayarları' sekmesi altındaki 'Çerçeve Arama Yolları' girişini de günceller. Bunun otomatik olarak gerçekleşmemesi durumunda TensorFlowLiteC.framework
dizininin ana 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 aktarabilmeniz ve çağırabilmeniz gerekir.