TinyML: Chạy các mô hình học sâu trên bộ vi điều khiển

TinyML: Chạy các mô hình học sâu trên bộ vi điều khiển

Khám phá cách TinyML mang đến sự kỳ diệu của deep learning cho các thiết bị nhỏ nhất thế giới.

Giới thiệu

Học máy là một ngành khoa học sử dụng nhiều tài nguyên. Nó đang phát triển mạnh trong đám mây và trung tâm dữ liệu, được hỗ trợ bởi GPU và internet tốc độ cao, nhưng điều gì sẽ xảy ra nếu chúng ta có thể mang trí thông minh đó vào các thiết bị chúng ta sử dụng? Pin đồng xu và ít bộ nhớ hơn ảnh

Đó là nơi TinyML xuất hiện, một lĩnh vực đang phát triển nhanh chóng kết hợp Hệ thống nhúng Học sâu và Xử lý biên để cho phép các ứng dụng AI thời gian thực và năng lượng thấp trên bộ vi điều khiển.

Chính xác thì TinyML là gì?

TinyML (Tiny Machine Learning) đề cập đến việc triển khai. Mô hình học máy Trên các thiết bị phần cứng nhỏ, tiết kiệm năng lượng, chẳng hạn như bộ vi điều khiển (MCU) có hạn chế bộ nhớ. Quá trình xử lý và năng lượng rất cao.

Đặc điểm chung của hệ thống TinyML:

  • Bộ nhớ : Ít hơn 256 KB RAM
  • Cách tính: Không có đơn vị dấu phẩy động (thường là dấu cố định)
  • Công suất tiêu thụ: Được đo bằng miliwatt
  • Không có hệ điều hành hoặc hệ điều hành thời gian thực (RTOS)

Bất chấp những hạn chế này, với thiết kế và tối ưu hóa mô hình hiệu quả, Bạn có thể thực hiện các tác vụ suy luận như:

  • Nhận dạng từ khóa
  • Nhận dạng cử chỉ
  • Phát hiện bất thường
  • Theo dõi hoạt động
  • Phân loại hình ảnh

Tại sao TinyML lại quan trọng?

Đây là lý do tại sao đây không chỉ là một sự tò mò học thuật:

Theo nghiên cứu của ABI, hơn 2,5 tỷ thiết bị sẽ có khả năng TinyML vào năm 2030.

Đường ống TinyML

Hiểu rõ về quy trình làm việc của TinyML sẽ giúp kết hợp mọi thứ lại với nhau. Từ thu thập dữ liệu đến triển khai cuối cùng

Sơ đồ đường ống TinyML

Dưới đây là hình ảnh đại diện của quá trình:

Sự cố đường ống

1. Thu thập dữ liệu

- Thu thập dữ liệu cảm biến (ví dụ: tiếng ồn micrô, độ rung từ gia tốc kế)

2. Tính năng xử lý và chiết xuất ban đầu

- Chuyển đổi tín hiệu thô thành các tính năng có thể sử dụng, chẳng hạn như MFCC cho âm thanh hoặc FFT để rung.

3. Đào tạo người mẫu

- Sử dụng các khung như TensorFlow/Keras để đào tạo mạng nơ-ron nhỏ gọn hoặc các mô hình ML cổ điển.

4. Tối ưu hóa mô hình

- Giảm kích thước và độ phức tạp bằng cách sử dụng định lượng Cắt tỉa hoặc tinh chế

5. Chuyển đổi sang định dạng sử dụng

- Chuyển đổi các mô hình đã đào tạo sang mảng .tflite, .onnx hoặc C (đối với triển khai cấp thấp).

6. Triển khai trên MCU

- Flash mô hình vào bộ vi điều khiển (ví dụ: Arduino Nano, ESP32, STM32) để suy luận trên thiết bị.

7. Suy luận và kết quả theo thời gian thực

- MCU Đưa ra dự đoán ngay lập tức bằng cách sử dụng dữ liệu cảm biến trực tiếp.

Ví dụ về mã thực: Phát hiện từ báo động trên Arduino

Hãy xây dựng một mô hình TinyML có thể nhận ra từ "có" từ giọng nói.

Bước 1: Cài đặt thông số kỹ thuật

pip install tensorflow tensorflow-model-optimization

Bước 2: Thực hành CNN đơn giản

import tensorflow as tf
from tensorflow.keras import layers

model = tf.keras.Sequential([
    layers.Input(shape=(49, 10, 1)),  # 49 MFCC frames, 10 coefficients
    layers.Conv2D(8, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(16, (3, 3), activation='relu'),
    layers.MaxPooling2D(),
    layers.Flatten(),
    layers.Dense(32, activation='relu'),
    layers.Dense(2, activation='softmax')  # yes/no
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

Đào tạo bằng cách sử dụng bộ dữ liệu do MFCC xử lý (ví dụ: lệnh thoại của Google).

Bước 3: Định lượng cho vi điều khiển

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_model = converter.convert()

with open("yes_model.tflite", "wb") as f:
    f.write(tflite_model)

Mô hình của bạn hiện có kích thước khoảng 20–50 KB — sẵn sàng triển khai!

Bước 4: Nhấp nháy Arduino Nano 33 BLE Sense

Sử dụng thư viện Arduino_TensorFlowLite và nhấp nháy mô hình .tflite, giờ đây bạn có thể chạy phát hiện từ khóa trên thiết bị với đầu vào âm thanh thời gian thực từ micrô tích hợp.

Thử thách trong TinyML

Các công cụ bạn nên thử

Bắt đầu: Bản đồ tuyến đường cho người mới bắt đầu

  1. Chọn vấn đề: Âm thanh, Chuyển động, Cử chỉ Phát hiện bất thường
  2. Chọn bo mạch của bạn: Bắt đầu với Arduino Nano 33 BLE Sense hoặc ESP32.
  3. Thu thập dữ liệu: Sử dụng cảm biến tích hợp hoặc nhập tập dữ liệu.
  4. Đào tạo một mô hình nhỏ: sử dụng TensorFlow/Keras
  5. Đo lường và chuyển đổi: TFLite Converter
  6. Triển khai và kiểm tra: Flash và trực quan hóa đầu ra thông qua Màn hình nối tiếp

Tương lai của TinyML

Với sự gia tăng của bộ tăng tốc phần cứng, TPU biên và hệ sinh thái mã nguồn mở, tương lai của TinyML có vẻ đầy hứa hẹn:

  • Học tập trung trên các thiết bị biên
  • Học liên tục trên thiết bị
  • Kiến trúc đám mây lai + Biên
  • Tìm kiếm kiến trúc thần kinh (NAS) cho Embedded

Tí honML đang xác định lại vị trí của các hệ thống thông minh và cách chúng hoạt động. Thay vì chỉ đào tạo các mô hình thông minh hơn, Bây giờ chúng tôi đang xây dựng các thiết bị thông minh hơn.

Kết luận:

Tí honML Nó không chỉ là một "phiên bản đơn giản hóa của ML", mà còn là một sự thay đổi hoàn toàn trong quan điểm của chúng ta về ứng dụng trí tuệ nhân tạo trong thế giới thực. Mở khóa các ứng dụng mà trước đây được cho là không thể

Cho dù bạn là nhà nghiên cứu, người sáng tạo hay người đam mê ML, TinyML được coi là lĩnh vực có ảnh hưởng nhất để khám phá ngay bây giờ.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Win a Raspberry Pi!

Answer 5 questions for your chance to win!
Question 1

What color is the sky?

Tìm kiếm bằng danh mục

Chọn danh mục