LiteRT cho Vi điều khiển đượ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ỉ có vài kilobyte bộ nhớ. Chiến lược phát hành đĩa đơn 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 cơ bản người mẫu. Phiên bản này không yêu cầu hệ điều hành hỗ trợ, mọi ngôn ngữ C hoặc C++ tiêu chuẩn hoặc phân bổ bộ nhớ động.
Tại sao vi điều khiển lại quan trọng
Vi điều khiển thường là thiết bị tính toán nhỏ, công suất thấp nhúng trong phần cứng yêu cầu phép tính cơ bản. Bằng cách đưa máy móc học các bộ vi điều khiển nhỏ bé, chúng ta có thể nâng cao trí tuệ của hàng tỷ mà chúng ta sử dụng trong cuộc sống, bao gồm cả thiết bị gia dụng và Internet của Sử dụng thiết bị mà không cần dựa vào phần cứng đắt tiền hay Internet ổn định thường bị hạn chế về băng thông, nguồn điện và dẫn đến độ trễ cao. Việc này cũng có thể giúp bảo vệ quyền riêng tư vì không có dữ liệu 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 hoạt động hằng ngày của bạn các cảm biến công nghiệp thông minh, 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 cũng như những đồ chơi phép thuật có thể giúp trẻ học tập một cách vui vẻ và thú vị.
Nền tảng được hỗ trợ
LiteRT cho vi điều khiển được viết bằng C++ 17 và yêu cầu phải có 32 bit chủ. API này đã được thử nghiệm rộng rãi với nhiều bộ xử lý dựa trên Dòng Arm Cortex-M và đã được chuyển sang các kiến trúc khác bao gồm ESP32. Chiến lược phát hành đĩa đơn khung có sẵn dưới dạng thư viện Arduino. Nền tảng này cũng có thể tạo các dự án cho phát triển ứng dụng như Mbed. Đây là mã nguồn mở và có thể được đưa vào bất kỳ dự án C++ 17 nào.
Sau đây là các bảng phát triển được hỗ trợ:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Bộ công cụ Khám phá STM32F746
- Huy hiệu cạnh Adafruit
- Bộ công cụ Adafruit LiteRT cho bộ vi điều khiển
- Khu vui chơi giải trí Adafruit Circuit Playground
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Thiết bị đầu cuối Wio: ATSAMD51
- Bộ phát triển thiết bị đầu cuối AI cho thiết bị đầu cuối Himax WE-I Plus
- Nền tảng phát triển phần mềm Synopsys DesignWare ARC EM
- Sony Spresense
Tìm hiểu ví dụ
Mỗi ứng dụng mẫu đang được bật
GitHub
và có một tệp README.md
giải thích cách triển khai cho ứng dụng được hỗ trợ
nền tảng. Một số ví dụ cũng có hướng dẫn toàn diện sử dụng
nền tảng, như được cung cấp dưới đây:
- Hello World (Xin chào mọi người) – Minh hoạ kiến thức cơ bản tuyệt đối về việc sử dụng LiteRT cho Vi điều khiển
- Lời nói vi mô – Ghi âm bằng micrô để phát hiện từ "có" và "no"
- 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ự có mặt hay vắng mặt của một người
Luồng công việc
Bạn cần thực hiện các bước sau đây để 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ột 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 LiteRT bằng Công cụ chuyển đổi LiteRT.
- Chuyển đổi sang mảng byte C bằng các công cụ tiêu chuẩn để lưu trữ mã này trong bộ nhớ chương trình chỉ có thể đọc trên thiết bị.
- Chạy suy luận trên thiết bị bằng cách sử dụng thư viện C++ và quy trình kết quả.
Các điểm hạn chế
LiteRT cho Vi điều khiển được thiết kế cho những hạn chế cụ thể của 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 hơn (cho ví dụ: thiết bị Linux được nhúng như Raspberry Pi), Khung LiteRT có thể dễ tích hợp hơn.
Bạn nên xem xét các giới hạn sau:
- Hỗ trợ cho một nhóm nhỏ giới hạn Toán tử trên TensorFlow
- Hỗ trợ cho 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ợ huấn luyện trên thiết bị
Các bước tiếp theo
- Làm quen với vi điều khiển để thử ứng dụng mẫu và tìm hiểu cách sử dụng API.
- 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ề quy trình huấn luyện và chuyển đổi các mô hình để triển khai trên vi điều khiển.