TinyML
TinyMLを解説し、低消費電力のマイクロコントローラにUltralytics YOLO26をデプロイする方法を紹介します。量子化とUltralytics Platformを使用してIoT向けにモデルを最適化する方法を学びます。
TinyMLとも呼ばれるTiny machine learningは、マイクロコントローラーや小型のIoTデバイスなど、超低消費電力でリソースが限られたデバイスにモデルをデプロイすることに特化した、machine learningの専門分野です。膨大な計算リソースに依存する従来のクラウドベースシステムとは異なり、TinyMLは完全にエッジ上で動作します。消費電力がわずか数ミリワット単位に制限されるデバイス上でインテリジェントなアルゴリズムをローカルに実行することで、このアプローチはレイテンシを最小限に抑え、データプライバシーを確保し、帯域幅の使用量を大幅に削減します。このパラダイムは、TinyML Foundationなどのコミュニティによって支えられ、発展してきました。
ARM Cortex-Mプロセッサなどの極めて制約の多いハードウェアに複雑なニューラルネットワークアーキテクチャを正常に適合させるには、モデルに厳格な最適化を施す必要があります。32ビット浮動小数点の重みを8ビット整数に変換するモデル量子化や、モデルプルーニングなどの手法により、全体のメモリフットプリントを大幅に削減します。現在では、GoogleのTensorFlow Lite for MicrocontrollersやPyTorchのExecuTorchなどの専用フレームワークが、こうした精密な圧縮ワークフローを可能にし、日常的な組み込みハードウェアに高度な視覚・聴覚インテリジェンスをもたらしています。
TinyMLとEdge AIの比較#
TinyMLはEdge AIと密接に関連していますが、主な違いはハードウェアの規模と電力予算にあります。Edge AIは、AIモデルをローカルで実行するあらゆる形態を含む、より広い用語です。多くの場合、Raspberry Piなどのシングルボードコンピューターや、NVIDIA Jetsonなどの高性能な組み込みGPUが使用されます。一方、TinyMLは、ArduinoボードやSTMicroelectronicsチップなど、数か月から数年間バッテリーで動作する、深く組み込まれたシステムを対象としています。これらのデバイスが搭載するRAMは通常、数百キロバイト程度にすぎないため、積極的なモデル圧縮が必須です。
実世界での利用例#
最小限のハードウェア上にインテリジェンスを直接デプロイできることで、さまざまな業界に数多くの実用的なユースケースが開かれています。
- スマート製造における予知保全:工場では、超低消費電力の振動センサーや音声センサーを機械に直接設置します。これらのTinyMLセンサーはモーターの周波数を継続的に分析し、差し迫った故障を示す微細な異常を検出します。これにより、保全チームは高額なダウンタイムが発生する前に問題へ対処できます。
- スマート精密農業:バッテリー駆動のTinyMLデバイスを広大な農地全体に配置し、局所的な環境条件を監視するとともに、基本的なカメラモジュールを使用して害虫の発生や病気の初期兆候を検出します。重い画像ファイルではなく、軽量なアラートのみを送信します。
- 野生生物保護の音響モニタリング:研究者は、TinyMLを搭載した目立たない音響センサーアレイを使用して、密林内で絶滅危惧種の特有の鳴き声や違法伐採活動(チェーンソーなど)の音を検出します。これらのデバイスは太陽光またはバッテリーで動作し、音声をローカルで分析して、長距離アラートを即座に発報します。
TinyML向けのモデルのエクスポート#
マイクロコントローラー向けにモデルを準備するには、厳密なエクスポート形式が必要です。Ultralytics YOLO26を使用すると、開発者は堅牢な物体検出パイプラインを構築し、組み込み向けに圧縮できます。ローカルでエクスポートする前に、Ultralytics Platform上でデータセットとモデルのバージョン管理をシームレスに行えます。ネイティブのTFLite統合により、マイクロコントローラーに必要な8ビット整数形式へ簡単に変換できます。また、AppleのCoreML、GoogleのEdge TPU、NVIDIAのTensorRTなど、ハードウェア固有の他のモデルデプロイオプションも利用できます。
次の例では、INT8量子化で特に最適化した軽量なUltralytics YOLO26モデルをエクスポートする方法を示します。TinyMLに対応したエッジプラットフォームへのデプロイに適しています。
from ultralytics import YOLO
# Initialize the lightweight YOLO26 Nano model for edge use cases
model = YOLO("yolo26n.pt")
# Export to TFLite format with INT8 quantization and a reduced image size
# This minimizes the memory footprint and accelerates inference on microcontrollers
model.export(format="tflite", int8=True, imgsz=160)





