TensorFlow Lite for Microcontrollers được thiết kế để chạy các mô hình học máy trên bộ vi điều khiển và các thiết bị khác chỉ với vài kilobyte bộ nhớ. Môi trường thời gian chạy cốt 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. Tính năng này không yêu cầu hỗ trợ hệ điều hành, bất kỳ thư viện C hoặc C++ chuẩn nào hay phân bổ bộ nhớ động.
Tại sao bộ vi điều khiển lại quan trọng
Bộ vi điều khiển thường là các thiết bị điện toán nhỏ, công suất thấp được nhúng trong phần cứng cần đến các phép tính cơ bản. Bằng cách đưa công nghệ học máy vào những bộ vi điều khiển nhỏ xíu, chúng ta có thể tăng cường trí thông minh của hàng tỷ thiết bị mà chúng ta sử dụng trong cuộc sống, bao gồm cả thiết bị gia dụng và thiết bị Internet của vạn vật, mà không cần dựa vào phần cứng đắt đỏ hoặc kết nối Internet đáng tin cậy. Những thiết bị này thường bị hạn chế về băng thông và điện năng, 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 vấn đề và hoạt động bình thường, hay đồ chơi kỳ diệu có thể giúp trẻ học tập theo cách thú vị và thú vị.
Nền tảng được hỗ trợ
TensorFlow Lite cho Vi điều khiển được viết bằng C++ 17 và cần có nền tảng 32 bit. API này đã được thử nghiệm rộng rãi trên nhiều bộ 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 cả ESP32. Khung này được cung cấp dưới dạng một thư viện Arduino. Thư viện này cũng có thể tạo các dự án cho môi trường phát triển, chẳng hạn như Mbed. Đây là mã nguồn mở và có thể được đưa vào mọi dự án C++ 17.
Các bảng phát triển sau đây được hỗ trợ:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Bộ STM32F746 Discovery
- Huy hiệu viền Adafruit
- Adafruit TensorFlow Lite cho Bộ vi điều khiển
- Khu vui chơi Adafruit Circuit – Trái cây xanh
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Cổng Wio: ATSAMD51
- Ban phát triển thiết bị đầu cuối AI của Himax WE-I Plus
- Nền tảng phát triển phần mềm Synopsys DesignWare ARC EM
- Sony Spresense
Khám phá ví dụ
Mỗi ứng dụng mẫu nằm trên GitHub và có một tệp README.md
giải thích cách triển khai ứng dụng đó cho các nền tảng được hỗ trợ. Một số ví dụ cũng có hướng dẫn toàn diện sử dụng một nền tảng cụ thể, như minh hoạ dưới đây:
- Hello World – Trình bày kiến thức cơ bản về cách sử dụng TensorFlow Lite cho Bộ vi điều khiển
- Giọng nói vi mô – Ghi âm bằng micrô để phát hiện các từ "có" và "không"
- Phát hiện người – Chụp dữ liệu của camera bằng cảm biến hình ảnh để phát hiện sự hiện diện hay vắng mặt của người
Quy trình làm việc
Bạn cần thực hiện các bước sau để triển khai và chạy mô hình TensorFlow trên bộ vi điều khiển:
- Đào tạo mô hình:
- Tạo mô hình TensorFlow nhỏ có thể vừa với thiết bị mục tiêu của bạn và chứa các thao tác được hỗ trợ.
- Chuyển đổi sang mô hình TensorFlow Lite bằng bộ chuyển đổi TensorFlow Lite.
- Chuyển đổi sang mảng byte C bằng các công cụ tiêu chuẩn để lưu trữ mảng đó 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ả.
Các điểm hạn chế
TensorFlow Lite dành cho Bộ vi điều khiển được thiết kế cho những hạn chế cụ thể trong quá trình phát triển bộ vi điều khiển. Nếu bạn đang làm việc trên các thiết bị mạnh mẽ hơn (ví dụ: một thiết bị Linux được nhúng như Rappberry Pi), thì khung TensorFlow Lite tiêu chuẩn có thể dễ tích hợp hơn.
Bạn nên cân nhắc các giới hạn sau:
- Hỗ trợ một tập hợp con có giới hạn của các thao tác TensorFlow
- Chỉ hỗ trợ một số thiết bị
- API C++ cấp thấp yêu cầu quản lý bộ nhớ theo cách thủ công
- Không hỗ trợ tính năng huấn luyện trên thiết bị
Các bước tiếp theo
- Bắt đầu sử dụng bộ vi điều khiển để dùng thử ứng dụng mẫu và tìm hiểu cách sử dụng API này.
- Tìm hiểu về 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ề việc huấn luyện và chuyển đổi mô hình để triển khai trên vi điều khiển.