Giải pháp của ST giúp triển khai mạng Nơ-ron nhân tạo trên STM32

Hiện nay hãng ST đã cung cấp các giải pháp và công cụ giúp chúng ta có thể thực thi các mô hình trí tuệ nhân tạo đã được huấn luyện trước lên các dòng vi điều khiển STM32. Việc sử dụng sức mạnh của trí tuệ nhân tạo có thể giúp các bạn nâng cao hiệu suất xử lý tín hiệu, tăng hiệu năng và có thể làm giảm năng lượng tiêu thụ cho các ứng dụng sử dụng vi điều khiển STM32. 

Trong bài viết này, mình sẽ giới thiệu về các bước để có thể triển khai mô hình trí tuệ nhân tạo lên vi điều khiển STM32. Một cách tổng quát, quá trình này sẽ bao gồm 5 bước: thu thập dữ liệu; hiệu chỉnh, gắn nhãn dữ liệu và lựa chọn AI framework; huấn luận mô hình trí tuệ nhân tạo; chuyển đổi ANN thành mã được tối ưu hóa cho vi điều khiển STM32; xử lý dữ liệu mới bằng mô hình trí tuệ nhân tạo đã nhúng xuống vi điều khiển. Chi tiết quá trình như sau:
[HỌC ONLINE LẬP TRÌNH VI ĐIỀU KHIỂN STM32 – VI XỬ LÝ ARM CORTEX M TẠI TAPIT]

5 bước để triển khai mạng nơron nhân tạo sử dụng STM32Cube.AI

Bước 1: Thu thập dữ liệu

  • Tại bước đầu tiên này, các bạn cần thu thập đủ số lượng dữ liệu đại diện về đối tượng đang được mô hình hóa. Việc thu thập dữ liệu này thường là lắp đặt các cảm biến để ghi lại, theo dõi trạng thái và sự thay đổi theo thời gian của đối tượng hoặc mọi người cũng có thể dùng các dữ liệu có sẵn đã được công bố và chia sẻ. Các dữ liệu này có thể là các thông số vật lý như gia tốc, nhiệt độ, âm thanh và hình ảnh tùy thuộc vào ứng dụng cụ thể của các bạn.

Bước 2. Hiệu chỉnh, gắn nhãn dữ liệu và lựa chọn AI framework

  • Để tạo được một mạng nơron nhân tạo thì cần có các dữ liệu được gắn nhãn, các dữ liệu này đã được thu thập từ bước 1 và cần xử lý qua trước để có được sự đồng nhất của các mẫu dữ liệu.
  • Với các mô hình “học có giám sát”, các dữ liệu phải mang đặc trưng để các đầu ra có thể được phân loại một cách chính xác. Tập hợp các dữ liệu này được chia thành một tập dữ liệu huấn luyện sẽ được sử dụng để huấn luyện mô hình trí tuệ nhân tạo và một tập dữ liệu kiểm thử để xác nhận mô hình.
  • Các bạn sẽ quyết định lựa chọn loại cấu trúc liên kết phù hợp cho mô hình trí tuệ nhân tạo để phần huấn luyện đạt được kết quả tốt nhất. Chúng ta sẽ sử dụng các AI framework được hỗ trợ bao gồm Keras and TensorFlow™ Lite, các framework có thể xuất mô hình theo chuẩn ONNX như PyTorch, Microsoft Cognitive Toolkit, MATLAB, vv… 

Bước 3: Huấn luận mô hình trí tuệ nhân tạo

  • Việc huấn luyện mô hình trí tuệ nhân tạo chính là việc cho các dữ liệu đã được chuẩn bị sẵn qua mạng nơ-ron một cách lặp đi lặp lại nhiều lần và kiểm tra, đánh giá đầu ra của mạng về các tiêu chí như tỉ lệ lỗi, độ chính xác…vv 
  • Việc cấu hình, huấn luyện và kiểm tra huấn luyện mô hình trí tuệ nhân tạo được thực hiện trên một một máy tính có cấu hình đủ mạnh để có thể hoàn thành nhanh việc huấn luyện trong một thời gian ngắn.
  • Kết quả của quá trình huấn luyện là một file cấu hình mạng nơ-ron nhân tạo gồm các thông số về cấu trúc mô hình, các trọng số weight, các hệ số bias. Đầu ra này có thể được nhập trực tiếp vào công cụ STM32Cube.AI một cách đơn giản để phục vụ cho bước 4. 

Bước 4. Chuyển đổi mô hình trí tuệ nhân tạo thành mã được tối ưu hóa cho vi điều khiển STM32

  • Bước này được thực hiện rất dễ dàng và trực quan nhờ gói phần mềm mở rộng STM32Cube.AI được tích hợp vào STM32CubeMX. Từ mô hình trí tuệ nhân tạo đã được huấn luyện, công cụ của ST sẽ hỗ trợ chuyển đổi tạo thành một thư viện code STM32 với các hàm (API) và thư viện này thêm sẵn vào project STM32. Các bạn có thể gọi vào chương trình chính của vi điều khiển để thực thi.
  • Có thể cấu hình lựa chọn tại phần mềm STM32Cube.AI để thư viện code tạo ra được tối ưu hóa để giảm thiểu độ phức tạp và yêu cầu kích cỡ tài nguyên bộ nhớ.
  • Công cụ STM32CubeAI cung cấp các chỉ dẫn để người dùng lựa chọn các vi điều khiển phù hợp và cung cấp các thông tin về hiệu suất thực thi của mạng nơ-ron nhân tạo trên thiết bị vi điều khiển. Các bạn có thể chạy thử mô hình từ công cụ và trên vi điều khiển STM32 và nhận các thông tin kết quả.

5. Xử lý dữ liệu mới trên vi điều khiển bằng mô hình trí tuệ nhân tạo đã nhúng

  • Đến đây, các bạn có thể sử dụng mô hình trí tuệ nhân tạo đã được nhúng trong vi điều khiển để phục vụ cho ứng dụng của các bạn. Việc sử dụng này có thể chia làm 3 phần. 
    • Thu thập dữ liệu các cảm biến bằng cách sử dụng các ngoại vi của vi điều khiển và sau đó hiệu chỉnh dữ liệu để đưa vào mô hình
    • Gọi hàm thực thi mô hình
    • Nhận kết quả nhận dạng từ đầu ra của mô hình và thực hiện các hiển thị/ thông báo/ truyền dữ liệu qua Internet…vv 

Vậy là với công cụ STM32CubeMX – một công cụ được rất nhiều người sử dụng để cấu hình và sinh mã chương trình cho các vi điều khiển STM32 lõi ARM Cortex M, giờ đây công cụ này có thể giúp các bạn triển khai mô hình trí tuệ nhân tạo xuống vi điều khiển STM32 nhờ vào gói cài đặt mở rộng STM32Cube.AI. Gói phần mềm STM32Cube.AI được ST thiết kế với nhiều tính năng như:

  • Có thể tương tác với các công cụ huấn luyện Deep Learning, AI frameworks phổ biến
  • Tương thích với nhiều IDE và trình biên dịch khác nhau cho lập trình STM32
  • Cho phép nhiều mạng thần kinh nhân tạo chạy trên một vi điều khiển STM32
  • Đầy đủ các hỗ trợ cho dòng vi điều khiển STM32L – dòng tiết kiệm năng lượng

Bên cạnh gói công cụ phần mềm tích hợp vào STM32CubeMX thì ST còn cung cấp các tài liệu đào tạo, các video hướng dẫn, các module kit phần cứng thực nghiệm, các chương trình ứng dụng mẫu như phát hiện người, phân loại thực phẩm, nhận dạng hoạt động của người, phân loại âm thanh…vv để hỗ trợ các bạn có thể tiếp cận, thử nghiệm và triển khai được các ứng dụng Edge AI trên thiết bị vi điều khiển STM32. 

Mọi người có thể xem thêm video trình bày một đề tài Edge AI được thực hiện tại Cộng đồng Kỹ thuật TAPIT  “Ứng dụng Edge AI và IoT trong hệ thống giám sát văn phòng”. Với nghiên cứu này, các hoạt động trong phòng làm việc sẽ được nhận dạng tức thời bởi mạng nơ-ron tích chập (AI) dựa vào các âm thanh thu thập được, đồng thời các thông số môi trường cũng được đo đạt bởi các cảm biến. Hệ thống được xây dựng và thực thi trên vi điều khiển STM32F7 – lõi ARM Cortex M7. Kết quả nhận dạng và các dữ liệu thu thập hiển thị trực tiếp tại màn hình thiết bị và được gửi lên Webserver để có thể giám sát, quản lý từ xa.

Tài liệu tham khảo: 
– Slide STM32 Artificial Intelligence Solutions, STMicroelectronics
– STM32 solutions for Artificial Neural Networks, STMicroelectronics

Tìm hiểu thêm:
Fanpage Cộng đồng Kỹ thuật TAPIT: TAPIT – Learning, Research and Sharing Community

Chúc các bạn thành công!
Thuong Nguyen