Mikrodenetleyiciler için TensorFlow Lite, mikrodenetleyiciler ve yalnızca birkaç kilobayt belleği olan diğer cihazlarda makine öğrenimi modelleri çalıştırmak için tasarlanmıştır. Çekirdek çalışma zamanı, Arm Cortex M3'te 16 KB'lık alana sığar ve birçok temel model çalıştırabilir. İşletim sistemi desteği, standart C veya C++ kitaplıkları ya da dinamik bellek ayırma gerektirmez.
Mikrodenetleyiciler neden önemlidir?
Mikrodenetleyiciler genellikle temel hesaplama gerektiren donanımlara gömülü, küçük ve düşük güçlü bilgi işlem cihazlarıdır. Makine öğrenimini küçük mikrodenetleyicilerle kullanıma sunarak, pahalı donanımlara veya güvenilir internet bağlantılarına ihtiyaç duymadan ev aletleri ve Nesnelerin İnterneti cihazları dahil hayatımızda kullandığımız milyarlarca cihazın zekasını güçlendirebiliyoruz. Bu da genellikle bant genişliği ve güç kısıtlamalarına tabi olan ve yüksek gecikmeyle sonuçlanıyor. Ayrıca cihaza hiçbir veri gitmediği için bu şekilde gizlilik de korunabilir. Günlük rutininize uyum sağlayabilen akıllı cihazlar, problemler ile normal çalışma arasındaki farkı anlayan akıllı endüstriyel sensörler ve çocukların eğlenceli ve keyifli şekillerde öğrenmelerine yardımcı olabilecek sihirli oyuncaklar hayal edin.
Desteklenen platformlar
Mikrodenetleyiciler için TensorFlow Lite, C++ 17'de yazılmıştır ve 32 bit platform gerektirir. Arm Cortex-M Serisi mimariye dayalı birçok işlemciyle kapsamlı şekilde test edilmiş ve ESP32'yi de içeren diğer mimarilere aktarılmıştır. Çerçeve, Arduino kitaplığı olarak da kullanılabilir. Ayrıca Mbed gibi geliştirme ortamları için projeler oluşturabilir. Açık kaynaklıdır ve tüm C++ 17 projelerine eklenebilir.
Aşağıdaki geliştirme kartları desteklenmektedir:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery kiti
- Adafruit EdgeBadge
- Mikrodenetleyiciler için Adafruit TensorFlow Lite Seti
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal: ATSAMD51
- Himax WE-I Plus EVB Endpoint AI Geliştirme Kartı
- Synopsys DesignWare ARC EM Yazılım Geliştirme Platformu
- Sony Spresense
Örnekleri inceleyin
Her örnek uygulama GitHub'da bulunur ve desteklenen platformlara nasıl dağıtılabileceğini açıklayan bir README.md
dosyasına sahiptir. Bazı örneklerde, aşağıda belirtildiği gibi belirli bir platformun kullanıldığı uçtan uca eğiticiler de bulunur:
- Hello World - Mikrodenetleyiciler için TensorFlow Lite kullanımıyla ilgili mutlak temel bilgileri gösterir
- Mikro konuşma - "Evet" ve "hayır" kelimelerini algılamak için mikrofonla sesi yakalar
- Kişi algılama: Bir kişinin varlığını veya yokluğunu algılamak için görüntü sensörüyle kamera verilerini yakalar
İş akışı
Mikrodenetleyiciler üzerinde TensorFlow modeli dağıtmak ve çalıştırmak için aşağıdaki adımlar gereklidir:
- Model eğitme:
- Hedef cihazınıza sığabilen ve desteklenen işlemleri içeren küçük bir TensorFlow modeli oluşturun.
- TensorFlow Lite dönüştürücüyü kullanarak TensorFlow Lite modeline dönüştürün.
- Standart araçları kullanarak bunu cihazdaki salt okunur program belleğinde depolamak için C bayt dizisine dönüştürün.
- C++ kitaplığını kullanarak cihazda çıkarım çalıştırın ve sonuçları işleyin.
Sınırlamalar
Mikrodenetleyiciler için TensorFlow Lite, mikrodenetleyici geliştirmenin belirli kısıtlamalarına göre tasarlanmıştır. Daha güçlü cihazlar (örneğin, Raspberry Pi gibi yerleşik bir Linux cihaz) üzerinde çalışıyorsanız standart TensorFlow Lite çerçevesinin entegre edilmesi daha kolay olabilir.
Aşağıdaki sınırlamalar göz önünde bulundurulmalıdır:
- TensorFlow işlemlerinin sınırlı bir alt kümesi için destek
- Sınırlı sayıda cihaz için destek
- Manuel bellek yönetimi gerektiren düşük düzey C++ API'leri
- Cihaz üzerinde eğitim desteklenmez
Sonraki adımlar
- Örnek uygulamayı denemek ve API'yi nasıl kullanacağınızı öğrenmek için mikrodenetleyicileri kullanmaya başlayın.
- Kitaplığı kendi projenizde nasıl kullanacağınızı öğrenmek için C++ kitaplığını anlayın.
- Mikrodenetleyici dağıtımı için modelleri eğitme ve dönüştürme hakkında daha fazla bilgi edinmek amacıyla modeller oluşturun ve dönüştürün.