TensorFlow Lite dành cho Vi điều khiển được thiết kế để chạy mô hình học máy trên vi điều khiển và các thiết bị khác với bộ nhớ chỉ vài kilobyte. Thời gian chạy lõi chỉ vừa với 16 KB trên Arm Cortex M3 và có thể chạy nhiều mô hình cơ bản. Nó không yêu cầu hỗ trợ hệ điều hành, bất kỳ thư viện C hoặc C ++ tiêu chuẩn nào hoặc cấp phát bộ nhớ động.
Tại sao vi điều khiển lại quan trọng
Bộ vi điều khiển thường là các thiết bị tính toán nhỏ, công suất thấp được nhúng trong phần cứng yêu cầu tính toán cơ bản. Bằng cách đưa công nghệ máy học vào các bộ vi điều khiển nhỏ, chúng ta có thể nâng cao trí thông minh của hàng tỷ thiết bị mà chúng ta sử dụng trong cuộc sống của mình, bao gồm cả thiết bị gia dụng và thiết bị Internet of Things, mà không cần phụ thuộc vào phần cứng đắt tiền hoặc kết nối internet đáng tin cậy, thường phụ thuộc vào băng thông và hạn chế về nguồn điện và dẫn đến độ trễ cao. Điều này cũng có thể giúp bảo vệ quyền riêng tư, vì không có dữ liệu nào rời khỏi thiết bị. Hãy tưởng tượng các thiết bị thông minh có thể thích ứng với thói quen hàng ngày của bạn, các cảm biến công nghiệp thông minh hiểu được sự khác biệt giữa các vấn đề và hoạt động bình thường và đồ chơi kỳ diệu có thể giúp trẻ học theo những cách vui vẻ và thú vị.
Nền tảng được hỗ trợ
TensorFlow Lite dành cho Vi điều khiển được viết bằng C ++ 11 và yêu cầu nền tảng 32 bit. Nó đã được thử nghiệm rộng rãi với nhiều bộ vi xử lý dựa trên kiến trúc Arm Cortex-M Series và đã được chuyển sang các kiến trúc khác bao gồm ESP32 . Khung có sẵn dưới dạng thư viện Arduino. Nó cũng có thể tạo ra các dự án cho các môi trường phát triển như Mbed. Nó là mã nguồn mở và có thể được đưa vào bất kỳ dự án C ++ 11 nào.
Các bảng phát triển sau được hỗ trợ:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Bộ khám phá STM32F746
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite dành cho Bộ vi điều khiển
- Sân chơi Adafruit Circuit Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Thiết bị đầu cuối Wio: ATSAMD51
- Ban phát triển AI điểm cuối của Himax WE-I Plus EVB
- Synopsys DesignWare ARC EM Software Development Platform
- Sony Spresense
Khám phá các ví dụ
Mỗi ứng dụng ví dụ đều có trên Github và có tệp README.md
giải thích cách nó có thể được triển khai trên các nền tảng được hỗ trợ. Một số ví dụ cũng có hướng dẫn từ đầu đến cuối bằng cách sử dụng một nền tảng cụ thể, như được đưa ra bên dưới:
- Hello World - Trình bày những kiến thức cơ bản tuyệt đối của việc sử dụng TensorFlow Lite cho Vi điều khiển
- Micro speech - Ghi âm bằng micrô để phát hiện các từ "có" và "không"
- Cây đũa thần - Thu thập dữ liệu gia tốc kế để phân loại ba cử chỉ vật lý khác nhau
- Phát hiện người - Chụp dữ liệu camera bằng cảm biến hình ảnh để phát hiện sự hiện diện hoặc vắng mặt của một người
Quy trình làm việc
Các bước sau là bắt buộc để triển khai và chạy mô hình TensorFlow trên vi điều khiển:
- Đào tạo một mô hình :
- Tạo một mô hình TensorFlow nhỏ có thể phù hợp với thiết bị mục tiêu của bạn và chứa các hoạt động được hỗ trợ .
- Chuyển đổi sang mô hình TensorFlow Lite bằng công cụ chuyển đổi TensorFlow Lite .
- Chuyển đổi thành mảng byte C bằng cách sử dụng các công cụ tiêu chuẩn để lưu trữ nó trong bộ nhớ chương trình chỉ đọc trên thiết bị.
- Chạy suy luận trên thiết bị bằng thư viện C ++ và xử lý kết quả.
Hạn chế
TensorFlow Lite dành cho Vi điều khiển được thiết kế cho các hạn chế cụ thể của việc phát triển vi điều khiển. Nếu bạn đang làm việc trên các thiết bị mạnh hơn (ví dụ: thiết bị nhúng Linux như Raspberry Pi), thì khung TensorFlow Lite tiêu chuẩn có thể dễ dàng tích hợp hơn.
Các hạn chế sau đây cần được xem xét:
- Hỗ trợ cho một tập hợp con hạn chế của các hoạt động TensorFlow
- Hỗ trợ cho một số thiết bị giới hạn
- API C ++ cấp thấp yêu cầu quản lý bộ nhớ thủ công
- Đào tạo trên thiết bị không được hỗ trợ
Bước tiếp theo
- Bắt đầu với bộ vi điều khiển để thử ứng dụng mẫu và tìm hiểu cách sử dụng API.
- Hiểu thư viện C ++ để tìm hiểu cách sử dụng thư viện trong dự án của riêng bạn.
- Xây dựng và chuyển đổi mô hình để tìm hiểu thêm về đào tạo và chuyển đổi mô hình để triển khai trên vi điều khiển.