TensorFlow Lite for Microcontrollers C++ kitaplığı, TensorFlow deposunun bir parçasıdır. Okunabilir, kolayca değiştirilebilecek, iyi test edilmiş, kolay entegre edilebilecek ve normal TensorFlow Lite ile uyumlu olacak şekilde tasarlanmıştır.
Aşağıdaki belgede C++ kitaplığının temel yapısı özetlenmekte ve kendi projenizi oluşturma hakkında bilgi verilmektedir.
Dosya yapısı
micro
kök dizini nispeten basit bir yapıya sahiptir. Ancak, kapsamlı TensorFlow deposunun içinde bulunduğundan, çeşitli yerleştirilmiş geliştirme ortamlarında alakalı kaynak dosyaları ayrı ayrı sağlayan komut dosyaları ve önceden oluşturulmuş proje dosyaları oluşturduk.
Anahtar dosyalar
Mikrodenetleyiciler için TensorFlow Lite yorumlayıcısını kullanmak için en önemli dosyalar, testlerle birlikte projenin kök dizininde bulunur:
[`micro_mutable_op_resolver.h`](https://github.com/tensorflow/tflite-micro/blob/main/tensorflow/lite/micro/micro_mutable_op_resolver.h)
can be used to provide the operations used by the interpreter to run the
model.
micro_error_reporter.h
hata ayıklama bilgilerini çıkarır.micro_interpreter.h
, modelleri işleyip çalıştırmak için gereken kod içerir.
Tipik kullanımla ilgili adım adım açıklamalı kılavuz için Mikrodenetleyicileri kullanmaya başlama bölümüne bakın.
Derleme sistemi, belirli dosyaların platforma özel uygulamalarını sağlar. Bunlar, platform adına sahip bir dizinde bulunur (örneğin, cortex-m
).
Aşağıdakiler de dahil birkaç dizin daha mevcuttur:
- İşlem uygulamalarını ve ilişkili kodu içeren
kernel
. - Derleme araçlarını ve çıktılarını içeren
tools
. - Örnek kod içeren
examples
.
Yeni proje başlatın.
Yeni projeler için şablon olarak Hello World örneğini kullanmanızı öneririz. Bu bölümdeki talimatları uygulayarak videonuzun istediğiniz platforma uygun bir sürümünü edinebilirsiniz.
Arduino kitaplığını kullanma
Arduino kullanıyorsanız Hello World örneği, Arduino IDE ve Arduino Create'e manuel olarak yükleyebileceğiniz Arduino_TensorFlowLite
Arduino kitaplığına dahildir.
Kitaplık eklendikten sonra File -> Examples
sayfasına gidin. Listenin alt kısmına yakın bir yerde TensorFlowLite:hello_world
adlı bir örnek göreceksiniz. Bunu seçin ve örneği yüklemek için hello_world
düğmesini tıklayın. Daha sonra bu örneğin bir kopyasını kaydedip kendi projenizin
temeli olarak kullanabilirsiniz.
Başka platformlar için projeler oluşturun
Mikrodenetleyiciler için TensorFlow Lite, bir Makefile
kullanarak gerekli tüm kaynak dosyaları içeren bağımsız projeler oluşturabilir. Şu anda desteklenen ortamlar Keil, Make ve Mbed'dir.
Bu projeleri Make ile oluşturmak için TensorFlow/tflite-micro deposunu klonlayın ve aşağıdaki komutu çalıştırın:
make -f tensorflow/lite/micro/tools/make/Makefile generate_projects
Bağımlılıklar için bazı büyük araç zincirlerini indirmesi gerektiğinden bu işlem birkaç dakika sürer. İşlem tamamlandığında, bir yolun içinde bazı klasörler (ör. gen/linux_x86_64/prj/
) görürsünüz (tam yol, ana makine işletim sisteminize bağlıdır). Bu klasörlerde, oluşturulan proje ve kaynak dosyaları bulunur.
Komutu çalıştırdıktan sonra gen/linux_x86_64/prj/hello_world
sayfasında Hello World projelerini bulabilirsiniz. Örneğin hello_world/keil
, Keil projesini içerir.
Testleri yapın
Kitaplığı oluşturmak ve tüm birim testlerini çalıştırmak için aşağıdaki komutu kullanın:
make -f tensorflow/lite/micro/tools/make/Makefile test
Tek bir test çalıştırmak için <test_name>
kısmını testin adıyla değiştirerek aşağıdaki komutu kullanın:
make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>
Test adlarını projenin Makefiles dosyalarında bulabilirsiniz. Örneğin examples/hello_world/Makefile.inc
, Hello World örneği için test adlarını belirtir.
İkili programlar oluşturma
Belirli bir projede (örnek bir uygulama gibi) çalıştırılabilir bir ikili program derlemek için <project_name>
komutunu, derlemek istediğiniz projeyle değiştirerek aşağıdaki komutu kullanın:
make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin
Örneğin, aşağıdaki komut Hello World uygulaması için bir ikili program oluşturur:
make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin
Proje varsayılan olarak ana makine işletim sistemi için derlenir. Farklı bir hedef mimari belirtmek için TARGET=
ve TARGET_ARCH=
kullanın. Aşağıdaki örnek, genel bir Cortex-m0 için Hello World örneğinin nasıl oluşturulacağını gösterir:
make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin
Bir hedef belirtildiğinde, orijinal kodun yerine hedefe özel mevcut kaynak dosyalar kullanılır. Örneğin, examples/hello_world/cortex_m_generic
alt dizini, cortex_m_generic
hedefi belirtildiğinde kullanılacak olan constants.cc
ve output_handler.cc
dosyalarının SparkFun Edge uygulamalarını içerir.
Proje adlarını, projenin Makefiles dosyalarında bulabilirsiniz. Örneğin examples/hello_world/Makefile.inc
, Hello World örneği için ikili adları belirtir.
Optimize edilmiş çekirdekler
tensorflow/lite/micro/kernels
kökündeki referans çekirdekler, sadece C/C++ olarak uygulanır ve platforma özgü donanım optimizasyonlarını içermez.
Alt dizinlerde, çekirdeklerin optimize edilmiş sürümleri sağlanır. Örneğin kernels/cmsis-nn
, Arm'un CMSIS-NN kitaplığını kullanan optimize edilmiş çeşitli çekirdekler içerir.
Optimize edilmiş çekirdekleri kullanarak proje oluşturmak için <subdirectory_name>
komutunu, optimizasyonları içeren alt dizinin adıyla değiştirerek aşağıdaki komutu kullanın:
make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects
Kendi optimizasyonlarınızı bunlara ilişkin yeni bir alt klasör oluşturarak ekleyebilirsiniz. Optimize edilmiş yeni uygulamalar için pull isteklerini teşvik ediyoruz.
Arduino kitaplığını oluşturma
Kitaplık için yeni bir derleme oluşturmanız gerekirse TensorFlow deposundan aşağıdaki komut dosyasını çalıştırabilirsiniz:
./tensorflow/lite/micro/tools/ci_build/test_arduino.sh
Oluşturulan kitaplık gen/arduino_x86_64/prj/tensorflow_lite.zip
konumunda bulunabilir.
Yeni cihazlara taşıma
TensorFlow Lite for Microcontrollers'ı yeni platformlara ve cihazlara taşımayla ilgili yönergeleri micro/docs/new_platform_support.md
adresinde bulabilirsiniz.