C++ kitaplığını anlama

Mikrodenetleyiciler için TensorFlow Lite C++ kitaplığı, TensorFlow deposunun bir parçasıdır. Okunabilir, değiştirilmesi kolay, iyi test edilmiş, entegrasyonu kolay ve normal TensorFlow Lite ile uyumlu olacak şekilde tasarlanmıştır.

Aşağıdaki belge C++ kitaplığının temel yapısını özetlemekte ve kendi projenizi oluşturma konusunda bilgi sağlamaktadır.

Dosya yapısı

micro kök dizin nispeten basit bir yapıya sahiptir. Bununla birlikte, kapsamlı TensorFlow deposunun içinde yer aldığından, ilgili kaynak dosyalarını çeşitli gömülü geliştirme ortamlarından ayrı olarak sağlayan komut dosyaları ve önceden oluşturulmuş proje dosyaları oluşturduk.

Anahtar dosyalar

Mikrodenetleyiciler için TensorFlow Lite yorumlayıcısını kullanmaya yönelik en önemli dosyalar, testlerle birlikte projenin kökünde 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ıma ilişkin bir kılavuz için Mikrodenetleyicileri kullanmaya başlama konusuna 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 olmak üzere birkaç başka dizin daha mevcuttur:

  • kernel , işlem uygulamalarını ve ilgili kodu içerir.
  • build araçları ve bunların çıktılarını içeren tools .
  • examples , örnek kodu içerir.

Yeni bir proje başlat

Merhaba Dünya örneğini yeni projeler için şablon olarak kullanmanızı öneririz. Bu bölümdeki talimatları izleyerek seçtiğiniz platforma uygun bir sürümünü edinebilirsiniz.

Arduino kütüphanesini kullanın

Arduino kullanıyorsanız, Arduino IDE ve Arduino Create'e manuel olarak yükleyebileceğiniz Arduino_TensorFlowLite Arduino kütüphanesinde Merhaba Dünya örneği bulunur.

Kütüphane eklendikten sonra File -> Examples gidin. Listenin alt kısmına yakın bir yerde TensorFlowLite:hello_world adlı bir örnek görmelisiniz. Örneği yüklemek için onu seçin ve hello_world tıklayın. Daha sonra örneğin bir kopyasını kaydedebilir ve bunu kendi projenizin temeli olarak kullanabilirsiniz.

Diğer platformlar için projeler oluşturun

Mikrodenetleyiciler için TensorFlow Lite, Makefile kullanarak gerekli tüm kaynak dosyaları içeren bağımsız projeler oluşturabilir. Mevcut desteklenen ortamlar Keil, Make ve Mbed'dir.

Bu projeleri Make ile oluşturmak için TensorFlow/tflite-micro deposunu kopyalayı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ç zincirlerinin indirilmesi gerektiğinden bu işlem birkaç dakika sürecektir. Tamamlandığında, gen/linux_x86_64/prj/ gibi bir yol içinde oluşturulmuş bazı klasörleri görmelisiniz (tam yol, ana bilgisayar işletim sisteminize bağlıdır). Bu klasörler oluşturulan proje ve kaynak dosyalarını içerir.

Komutu çalıştırdıktan sonra Merhaba Dünya projelerini gen/linux_x86_64/prj/hello_world konumunda bulabileceksiniz. Örneğin hello_world/keil Keil projesini içerecektir.

Testleri çalıştırı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 testi çalıştırmak için <test_name> yerine testin adını koyarak aşağıdaki komutu kullanın:

make -f tensorflow/lite/micro/tools/make/Makefile test_<test_name>

Test adlarını projenin Makefiles'ında bulabilirsiniz. Örneğin, examples/hello_world/Makefile.inc Merhaba Dünya örneğinin test adlarını belirtir.

İkili dosyalar oluşturun

Belirli bir proje için (örnek uygulama gibi) çalıştırılabilir bir ikili dosya oluşturmak için aşağıdaki komutu kullanın ve <project_name> yerine oluşturmak istediğiniz projeyi yazı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 dosya oluşturacaktır:

make -f tensorflow/lite/micro/tools/make/Makefile hello_world_bin

Varsayılan olarak proje ana bilgisayar işletim sistemi için derlenecektir. Farklı bir hedef mimari belirtmek için TARGET= ve TARGET_ARCH= kullanın. Aşağıdaki örnek, genel bir cortex-m0 için Merhaba Dünya ö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 belirlendiğinde, orijinal kodun yerine hedefe özgü mevcut herhangi bir kaynak dosyası kullanılacaktır. Örneğin, examples/hello_world/cortex_m_generic alt dizini, hedef cortex_m_generic belirtildiğinde kullanılacak constants.cc ve output_handler.cc dosyalarının SparkFun Edge uygulamalarını içerir.

Proje adlarını projenin Makefiles'ında bulabilirsiniz. Örneğin, examples/hello_world/Makefile.inc Merhaba Dünya örneğinin ikili adlarını belirtir.

Optimize edilmiş çekirdekler

tensorflow/lite/micro/kernels kökündeki referans çekirdekler saf C/C++ dilinde uygulanır ve platforma özgü donanım optimizasyonlarını içermez.

Çekirdeklerin optimize edilmiş sürümleri alt dizinlerde sağlanır. Örneğin, kernels/cmsis-nn Arm'ın CMSIS-NN kütüphanesini kullanan optimize edilmiş birkaç çekirdek içerir.

Optimize edilmiş çekirdekler kullanarak projeler oluşturmak için, <subdirectory_name> yerine optimizasyonları içeren alt dizinin adını koyarak aşağıdaki komutu kullanın:

make -f tensorflow/lite/micro/tools/make/Makefile TAGS=<subdirectory_name> generate_projects

Kendi optimizasyonlarınızı onlar için yeni bir alt klasör oluşturarak ekleyebilirsiniz. Yeni optimize edilmiş uygulamalar için çekme isteklerini teşvik ediyoruz.

Arduino kütüphanesini oluşturun

Kütüphanenin yeni bir yapısını oluşturmanız gerekiyorsa TensorFlow deposundan aşağıdaki betiği çalıştırabilirsiniz:

./tensorflow/lite/micro/tools/ci_build/test_arduino.sh

Ortaya çıkan kütüphane gen/arduino_x86_64/prj/tensorflow_lite.zip dosyasında bulunabilir.

Yeni cihazlara bağlantı noktası

Mikrodenetleyiciler için TensorFlow Lite'ın yeni platformlara ve cihazlara taşınmasına ilişkin rehberlik micro/docs/new_platform_support.md adresinde bulunabilir.