C++ kitaplığını anlama

Mikrodenetleyiciler için LiteRT C++ kitaplığı, TensorFlow deposu. Okunabilir, değiştirilmesi kolay, test edilmiş, entegre edilmesi kolay, ve normal LiteRT ile uyumludur.

Aşağıdaki dokümanda C++ kitaplığının temel yapısı ve kendi projenizi oluşturmanızla ilgili bilgi sağlar.

Dosya yapısı

İlgili içeriği oluşturmak için kullanılan micro kök dizin nispeten basit bir yapıya sahiptir. Ancak bulunduğu için oluşturduğumuz için komut dosyaları oluşturduk ve ilgili kaynak dosyaları izole halde sunan, önceden oluşturulmuş proje dosyaları yerleşik olarak bulunan ekipmanları kullanın.

Anahtar dosyalar

Mikrodenetleyiciler için LiteRT'yi kullanmayla ilgili en önemli dosyalar çevirmenler, testler eşliğinde 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.

Ayrıntılı bilgi için Mikrodenetleyicileri kullanmaya başlama adım adım açıklamalı kılavuzu mevcuttur.

Derleme sistemi, standart fonksiyonel bazı modellerin platforma özgü dosyası olarak da kaydedebilir. Bunlar, örneğin platform adının bulunduğu bir dizinde bulunur. cortex-m.

Aşağıdakiler dahil olmak üzere birçok başka dizin mevcuttur:

  • kernel Burada, işlem uygulamalarını ve ilişkili kodu içerir.
  • tools ele alacağız.
  • examples kullanabilirsiniz.

Yeni proje başlatın.

Yeni projeler için şablon olarak Hello World örneğini kullanmanızı öneririz. Siz Aşağıdaki adımları izleyerek seçtiğiniz platform için bunun bir sürümünü edinebilirsiniz: daha fazla bilgi edineceksiniz.

Arduino kitaplığını kullanma

Arduino kullanıyorsanız Hello World örneği Arduino_TensorFlowLite Arduino kitaplığını kullanabilirsiniz. Arduino IDE ve Arduino Create'te.

Kitaplık eklendikten sonra File -> Examples bölümüne gidin. Bir örneğini görmek için TensorFlowLite:hello_world adlı listeye bakın. Seç bunu ve örneği yüklemek için hello_world düğmesini tıklayın. Ardından, projenizin bir kopyasını buna örnek verebilir ve kendi projenizin temeli olarak kullanabilirsiniz.

Diğer platformlar için projeler oluşturma

Mikrodenetleyiciler için LiteRT bağımsız projeler oluşturabilir gerekli tüm kaynak dosyalarını içeren bir Makefile kullanarak oluşturun. Şu anki desteklenen ortamlar Keil, Make ve Mbed'dir.

Bu projeleri Make ile oluşturmak için TensorFlow/tflite-micro deposu şu komutu çalıştırın:

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

Bu işlem birkaç dakika sürer çünkü işlem için büyük araç zincirleri indirilmesi gerekir. ve bildirmeyi konuştuk. İşlem tamamlandıktan sonra, oluşturulan bazı klasörler gösterilir. gen/linux_x86_64/prj/ ( tam yol, ana makinenizin işletim sisteminize bağlıdır). Bu klasörlerde bulunan oluşturulmuş proje ve kaynak dosyalarıdır.

Komutu çalıştırdıktan sonra Hello World projelerini şurada bulabilirsiniz: gen/linux_x86_64/prj/hello_world. Örneğin, hello_world/keil, Keil projesini içerir.

Testleri yapın

Kitaplığı derlemek 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> komutunu değiştirerek aşağıdaki komutu kullanın: yazın:

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

Test adlarını projenin Makefiles dosyasında bulabilirsiniz. Örneğin, examples/hello_world/Makefile.inc, Merhaba World örneği.

İkili programlar derleme

Belirli bir projede (örnek uygulama gibi) çalıştırılabilir bir ikili program derlemek için: <project_name> komutunu istediğiniz projeyle değiştirerek aşağıdaki komutu kullanın inşa etmek için:

make -f tensorflow/lite/micro/tools/make/Makefile <project_name>_bin

Örneğin, aşağıdaki komut Hello World için bir ikili program oluşturur uygulama:

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

Varsayılan olarak proje, ana makine işletim sistemine göre derlenir. Alıcı: farklı bir hedef mimari belirtmek için TARGET= ve TARGET_ARCH= öğelerini kullanın. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnekte, genel bir etkinlik için Hello World örneğinin nasıl oluşturulacağı gösterilmektedir cortex-m0:

make -f tensorflow/lite/micro/tools/make/Makefile TARGET=cortex_m_generic TARGET_ARCH=cortex-m0 hello_world_bin

Bir hedef belirtildiğinde, hedefe özgü tüm kullanılabilir kaynak dosyaları orijinal kodun yerine kullanıldığını görürsünüz. Örneğin, examples/hello_world/cortex_m_generic, SparkFun Edge uygulamaları içeriyor constants.cc ve output_handler.cc dosyaları; bu dosyalar, cortex_m_generic hedefi belirtildi.

Proje adlarını projenin Makefiles dosyasında bulabilirsiniz. Örneğin, examples/hello_world/Makefile.inc, Hello World örneği.

Optimize edilmiş çekirdekler

tensorflow/lite/micro/kernels kök dizinindeki referans çekirdekler: yalnızca C/C++ olarak uygulanır ve platforma özgü donanımlar dahil edilmez. optimize edebilirsiniz.

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

Optimize edilmiş çekirdekleri kullanarak proje oluşturmak için şu komutu kullanın: <subdirectory_name> yerine şunu içeren alt dizinin adını yazın: optimizasyonlar:

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

Kendi optimizasyonlarınızı, yeni bir alt klasör oluşturarak ekleyebilirsiniz. Biz Optimize edilmiş yeni uygulamalar için çekme isteklerini teşvik eder.

Arduino kitaplığını oluşturma

Kitaplığın yeni bir derlemesini oluşturmanız gerekirse aşağıdaki komutu çalıştırabilirsiniz komut dosyasını indirin:

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

Ortaya çıkan kitaplık, gen/arduino_x86_64/prj/tensorflow_lite.zip

Yeni cihazlara taşıma

Mikrodenetleyiciler için LiteRT'i yeni platformlara ve cihazları şurada bulabilirsiniz: micro/docs/new_platform_support.md.