C++ kitaplığını anlama

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.

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.