Implementation of deep learning neural network lenet5 on stm32 microcontroller for image recognition

TNU Journal of Science and Technology  
226(11): 191 - 199  
IMPLEMENTATION OF DEEP LEARNING NEURAL NETWORK LENET5 ON  
STM32 MICROCONTROLLER FOR IMAGE RECOGNITION  
Huynh Viet Thang*  
University of Science and Technology – University of Danang  
ARTICLE INFO  
Received: 16/5/2021  
Revised: 02/8/2021  
Published: 09/8/2021  
ABSTRACT  
The advent of smart mobile devices, along with the explosion of  
Internet-based applications and services, has led to the birth of a new  
computing paradigm – edge computing. Along with the current  
expanding trend of artificial intelligence applications, deploying  
artificial intelligence and deep learning applications on edge  
computing platforms is a prominent trend. This paper will investigate  
the ability to execute deep learning models using the convolutional  
neural network LeNet5 for deep learning problems implemented on  
low-power microcontrollers based on ARM architecture. We present  
the process of designing and implementing the handwritten digit  
recognition problem on the STM32 development board. We use  
Google Colab and Python language to train the convolutional neural  
network model, then map the trained model to execute on the  
STM32F411 microcontroller development board with the use of X-  
Cube-AI tool. The experimental results show that the implementation  
on the microcontroller achieves nearly the same performance as that  
on the general purpose computers.  
KEYWORDS  
Deep learning  
Edge computing  
STM32 microcontroller  
MNIST  
Internet of Things  
NGHIÊN CỨU TRIỂN KHAI MẠNG HỌC SÂU LENET5  
TRÊN VI ĐIỀU KHIỂN STM32 ỨNG DỤNG TRONG NHẬN DẠNG HÌNH ẢNH  
Huỳnh Việt Thắng  
Trường Đại học Bách Khoa – ĐH Đà Nẵng  
THÔNG TIN BÀI BÁO  
Ngày nhận bài: 16/5/2021  
Ngày hoàn thiện: 02/8/2021  
Ngày đăng: 09/8/2021  
TÓM TẮT  
Sự ra đời của các thiết bị di động thông minh, cùng với sự bùng nổ  
của các ứng dụng và dịch vụ trên nền tảng Internet dẫn đến sự ra đời  
của mô hình tính toán mới – điện toán biên. Cùng với xu hướng ứng  
dụng trí tuệ nhân tạo đang rộng mở hiện nay, triển khai các ứng dụng  
trí tuệ nhân tạo và học sâu trên nền tảng điện toán biên là một xu  
hướng nổi bật. Bài báo này sẽ khảo sát khả năng thực thi mô hình học  
sâu sử dụng mạng nơ-ron tích chập LeNet5 cho các bài toán học sâu  
được triển khai trên các vi điều khiển công suất thấp dựa trên kiến  
trúc ARM. Chúng tôi trình bày quá trình thiết kế và thực thi bài toán  
nhận dạng hình ảnh là chữ số viết tay trên board phát triển STM32.  
Chúng tôi sử dụng Google Colab và ngôn ngữ Python để huấn luyện  
mô hình mạng nơ-ron tích chập, sau đó ánh xạ mô hình đã huấn  
luyện lên thực thi trên board phát triển vi điều khiển STM32F411 với  
công cụ X-Cube-AI. Kết quả đánh giá thực tế trên phần cứng cho  
thấy việc thực thi trên vi điều khiển đạt hiệu năng gần tương đương  
với thực thi trên máy tính đa mục đích.  
TỪ KHÓA  
Học sâu  
Điện toán biên  
Vi điều khiển STM32  
MNIST  
Internet vạn vật  
191  
TNU Journal of Science and Technology  
226(11): 191 - 199  
1. Giới thiệu  
1.1. Internet vạn vật và điện toán biên  
Ngày nay, sự bùng nổ của các thiết bị di động cùng các cảm biến thông minh đã mở rộng  
phạm vi và các ứng dụng dựa trên nền tảng Internet. Internet vạn vật (Internet of Things - IoT) đề  
cập đến mạng lưới các đối tượng và thiết bị được dùng để thu thập và trao đổi dữ liệu, với số  
lượng các thiết bị IoT này ngày càng gia tăng. Báo cáo của Cisco [1] dự đoán sẽ có khoảng 15 tỷ  
thiết bị IoT được kết nối vào năm 2023, ước tính chiếm đến 50% tổng số lượng thiết bị kết nối  
Internet. Cisco cũng ước tính rằng, gần 850 Zettabyte (ZB) dữ liệu sẽ được tạo ra mỗi năm bên  
ngoài các dịch vụ đám mây, trong khi lưu lượng trung tâm dữ liệu toàn cầu chỉ khoảng 20,6 ZB  
[2]. Điều này cho thấy các nguồn dữ liệu cho tính toán dữ liệu lớn đang trải qua một quá trình  
chuyển dịch: chuyển từ các trung tâm dữ liệu đám mây quy mô lớn sang một loạt các thiết bị  
được đặt ở biên của mạng, còn gọi là các thiết bị biên hay Edge Device. Lượng dữ liệu khổng lồ  
được tạo ra bởi các đối tượng này đã thúc đẩy sự ra đời của các giải pháp mới để lưu trữ và phân  
tích dữ liệu. Trong bối cảnh đó, khái niệm điện toán biên (hay tính toán biên) – Edge Computing  
– được đề xuất như một mô hình máy tính mới với việc tính toán chủ yếu được thực hiện trên các  
thiết bị đặt tại biên của mạng, hay là trên các edge device.  
Điện toán biên giúp giải quyết một số thách thức quan trọng liên quan đến các ứng dụng IoT.  
Ví dụ, trong các ứng dụng và dịch vụ chăm sóc sức khỏe, trong điều khiển xe tự hành, việc phản  
hồi nhanh là bắt buộc. Với yêu cầu phản hồi nhanh, thay vì gửi dữ liệu lên tính toán ở các máy  
chủ tại đám mây (cloud), việc tính toán và lưu trữ có thể được thực hiện trực tiếp tại các thiết bị  
biên đặt ngay gần ứng dụng, do vậy điện toán biên giúp giảm thiểu thời gian truyền dữ liệu và  
cho phép đáp ứng với độ trễ thấp [2], [3]. Ứng dụng điện toán biên trong những trường hợp như  
vậy cũng giúp giảm chi phí truyền dữ liệu, tính toán và lưu trữ. Ngoài ra, xử lý dữ liệu ở biên sẽ  
bảo vệ tính riêng tư của người dùng vì không cần tải dữ liệu lên máy chủ.  
Bên cạnh những ưu điểm, việc triển khai mô hình điện toán biên cũng gặp không ít thách  
thức. Thiết bị biên là một thiết bị điện tử cung cấp kết nối với các nhà cung cấp dịch vụ và các  
thiết bị cạnh khác; thông thường, các thiết bị như vậy có tài nguyên (tốc độ tính toán, bộ nhớ, các  
tài nguyên phần cứng khác) hạn chế [3]. Vì các thiết bị biên bị hạn chế về tài nguyên phần cứng,  
nhiệm vụ chạy các thuật toán, phương pháp và ứng dụng trên các thiết bị biên được coi là một  
thách thức đáng kể.  
1.2. Học sâu trên nền điện toán biên  
Là một lớp con của các kỹ thuật học máy, học sâu (Deep Learning – viết tắt DL) là một lĩnh  
vực nghiên cứu và ứng dụng rất nổi bật hiện nay, đã và đang mang lại những thành quả đáng kể  
trong nhiều lĩnh vực bao gồm xử lý hình ảnh [4], nhận dạng giọng nói [5] và điều khiển xe tự  
hành [6]. Với sự ra đời của mô hình điện toán biên, việc triển khai các ứng dụng học sâu kết hợp  
điện toán biên đang là một xu hướng nổi bật hiện nay. Các camera, micrô và nhiều thiết bị cảm  
biến đều được đặt ở biên của mạng, cùng với sự ra đời của rất nhiều thiết bị điện toán biên với  
hiệu năng cao gần đây đã và đang mở ra nhiều cơ hội tuyệt vời để thực thi các thuật toán học sâu  
ở biên của mạng. Hình 1 minh họa các trường hợp triển khai các ứng dụng học sâu, trong đó mô  
hình học sâu có thể được triển khai trên các trung tâm dữ liệu ở đám mây (cloud data center),  
hoặc ở máy chủ biên (edge server), hoặc ở thiết bị điện toán biên (edge device) [3].  
Trên thế giới đã có các nghiên cứu mô hình học sâu trên các thiết bị điện toán biên cũng như  
phát triển các thiết bị điện toán biên cho việc thực thi các thuật toán học sâu [2], [3]. Những giải  
pháp phần cứng bao gồm: i) sử dụng các máy tính nhúng đơn board (single board computer); ii)  
sử dụng các thiết bị tính toán hiệu năng cao như các board phát triển FPGA hay các card đồ họa  
GPU; iii) sử dụng các chip vi điều khiển với công suất thấp và hiệu năng tính toán ở mức chấp  
nhận được phù hợp với các yêu cầu ứng dụng cụ thể.  
192  
TNU Journal of Science and Technology  
226(11): 191 - 199  
Hình 1. Các mô hình triển khai ứng dụng học sâu [2]  
1.3. Đóng góp khoa học của bài báo  
Trong bài báo này, chúng tôi sẽ khảo sát khả năng triển khai thuật toán học sâu trên dòng chip  
vi điều khiển ARM. Chúng tôi sẽ thực thi bài toán nhận dạng hình ảnh là chữ số viết tay [7] với  
tập dữ liệu MNIST [8] trên board phát triển STM32F411 [9] của hãng ST. Vi điều khiển  
STM32F411 (32-bit) có kiến trúc dựa trên lõi ARM Cortex-M và hiện đang được sử dụng phổ  
biến trong các ứng dụng IoT, y tế, chăm sóc sức khỏe và nhiều ứng dụng khác.  
Phần còn lại của bài báo được tổ chức như sau. Phần 2 trình bày mô hình thực hiện hệ thống  
học sâu trên thiết bị điện toán biên cùng các cơ sở lý thuyết liên quan. Phần 3 trình bày chi tiết  
quá trình thực hiện bài toán học sâu với tập dữ liệu chữ số viết tay MNIST trên vi điều khiển  
ARM Cortex-M STM32F411 của hãng ST. Phần 4 là kết quả thực thi và đánh giá mô hình. Cuối  
cùng, kết luận và những hướng nghiên cứu tiếp theo sẽ được trình bày ở Phần 5.  
2. Cơ sở lý thuyết  
2.1. Mạng nơ-ron tích chập cho học sâu  
Mạng nơ-ron tích chập (Convolutional Neural Network - CNN) là một loại mạng học sâu  
thường được sử dụng cho các ứng dụng xử lý hình ảnh và thị giác máy tính. Kiến trúc mạng nơ-  
ron tích chập thường gồm nhiều lớp (layer), trong đó có ba lớp phổ biến là lớp tích chập  
(convolution layer), lớp lấy mẫu xuống (subsampling layer) và lớp liên kết hoàn toàn (fully-  
connected layer). Với kiến trúc như vậy, mạng nơ-ron tích chập thực hiện kết hợp giữa hai chức  
năng trích chọn thuộc tính và phân loại trong cùng một kiến trúc thực thi, do đó mang lại hiệu  
suất nhận dạng rất tốt. Hình 2 minh họa một kiến trúc mạng nơ-ron tích chập tiêu biểu – mạng  
LeNet5 [7] được ứng dụng trong bài toán nhận dạng chữ số viết tay.  
Lớp tích chập thực hiện tính tích chập hai chiều (2D convolution) giữa dữ liệu đầu vào và ma  
trận lọc. Ma trận lọc thường được gọi là kernel và thông thường kernel là một ma trận có kích  
thước 3x3 hoặc 5x5 phần tử. Sau khi tính tích chập, một hàm kích hoạt phi tuyến được áp dụng  
cho kết quả chập để tạo ra bản đồ đặc trưng (feature map). Hàm kích hoạt ReLu thường được sử  
dụng phổ biến trong mạng nơ-ron tích chập. Có nhiều loại kernel được sử dụng trong mỗi lớp của  
mạng nơ-ron tích chập để tạo ra nhiều bản đồ đặc trưng nhằm trích xuất các loại đặc trưng khác  
nhau từ dữ liệu đầu vào. Các bản đồ đặc trưng này sau đó được sử dụng để thực hiện phân loại  
với các lớp mạng nơ-ron liên kết hoàn toàn.  
193  
TNU Journal of Science and Technology  
226(11): 191 - 199  
Hình 2. Kiến trúc mạng nơ-ron tích chập LeNet [7]  
Lớp lấy mẫu xuống thực hiện việc giảm kích thước không gian của các bản đồ đặc trưng từ  
lớp tích chập trước đó. Việc lấy mẫu xuống nhằm trích xuất các đặc điểm nổi trội từ bản đồ đặc  
trưng nhằm đảm bảo tính bất biến không gian của các thuộc tính được trích chọn đối với phép  
toán xoay và dịch chuyển của các điểm ảnh trong tập dữ liệu đầu vào, do đó giúp nâng cao hiệu  
suất của quá trình huấn luyện và nhận dạng mẫu. Ngoài ra, lớp lấy mẫu xuống cũng hữu ích để  
giảm độ phức tạp tính toán của mạng nơ-ron tích chập. Có hai toán tử lấy mẫu xuống thường  
được dùng: lấy mẫu tối đa (max pooling) và lấy mẫu trung bình (average pooling), trong đó lấy  
mẫu tối đa thường được ưa chuộng hơn. Kích thước của mặt nạ lấy mẫu thông thường là 2x2.  
Trong một mạng nơ-ron tích chập, các lớp mạng gồm lớp tích chập và lớp lấy mẫu xuống được  
ghép nối tầng và xen kẽ nhau. Ví dụ, mạng trong Hình 2 có hai lớp tích chập và hai lớp lấy mẫu  
xuống để thực hiện việc trích xuất đặc trưng cho dữ liệu đầu vào.  
Khi việc trích xuất đặc trưng được thực hiện xong, đầu ra của lớp lấy mẫu xuống được làm  
phẳng thành một vectơ giá trị duy nhất và được đưa vào các lớp nơ-ron kết nối đầy đủ. Các lớp  
nơ-ron kết nối đầy đủ tiếp đó thực hiện nhiệm vụ phân loại cho hình ảnh đầu vào. Trong ví dụ ở  
Hình 2, có ba lớp nơ-ron kết nối đầy đủ được sử dụng.  
Để thuận tiện trong trình bày, trong bài báo này các lớp trong mạng nơ-ron tích chập được ký  
hiệu như sau: Lớp tích chập ký hiệu “Conv”, lớp lấy mẫu tối đa ký hiệu “MaxPooling”, lớp nơ-  
ron liên kết hoàn toàn ký hiệu “Dense”, lớp làm phẳng ký hiệu “Flatten”.  
2.2. Vi điều khiển ARM Cortex-M STM32 và công cụ X-Cube-AI  
Dòng vi điều khiển STM32 là một dòng vi điều khiển 32-bit có kiến trúc dựa trên lõi ARM  
Cortex do hãng STMicroelectronics sản xuất hướng đến các ứng dụng IoT và hệ thống nhúng  
hiệu năng cao có khả năng cung cấp sự cân bằng tốt nhất giữa mức năng lượng tiêu thụ khi hoạt  
động và hiệu suất xử lý. Vi điều khiển STM32F411VET6 [7] có dung lượng bộ nhớ chương trình  
(Flash) là 512 KB và dung lượng bộ nhớ dữ liệu (SRAM) là 128 KB, hoạt động với thạch anh  
ngoài ở tần số 8 MHz, và thông qua hệ thống phân phối xung clock bên trong chip cho phép lõi  
vi điều khiển có thể hoạt động ở tần số xung clock tối đa 100 MHz. Trên thị trường,  
STM32F411VET6 được tích hợp trên board phát triển EDiscovery của STMicroelectronics cho  
phép người dùng chạy được các ứng dụng điều khiển nhúng thông thường cũng như phát triển  
các ứng dụng xử lý tín hiệu số như xử lý hình ảnh, âm thanh và video.  
Gần đây, STMicroelectronics đã phát triển các công cụ cho phép thực thi các mô hình mạng  
nơ-ron nhân tạo trên các dòng chip vi điều khiển STM32. Một trong số đó là gói thư viện mở  
rộng X-Cube-AI chuyên cho triển khai các mô hình mạng nơ-ron nhân tạo và học máy. Công cụ  
X-Cube-AI [10] là gói mở rộng của bộ công cụ STM32 CubeMX cho phép người dùng ánh xạ và  
chạy các mô hình mạng nơ-ron nhân tạo đã được huấn luyện trước (pre-trained) trên các chip  
STM32 dòng F3 và F4 trở lên. Công cụ X-Cube-AI hỗ trợ tạo thư viện được tối ưu hóa để thực  
thi các mô hình mạng nơ-ron nhân tạo đã được huấn luyện trước, đồng thời hỗ trợ ánh xạ mô  
194  
TNU Journal of Science and Technology  
226(11): 191 - 199  
hình mạng nơ-ron nhân tạo từ nhiều thư viện phát triển mô hình mạng nơ-ron nhân tạo và học sâu  
phổ biến hiện nay như Keras, TensorFlow Lite, ONNX, PyTorch, Caffe.  
3. Thực hiện mô hình học sâu trên vi điều khiển ARM Cortex-M STM32F411  
3.1. Các bước thực hiện  
Hình 3 minh họa các bước tiêu biểu khi triển khai một ứng dụng nhận dạng và/hoặc học sâu  
lên vi điều khiển STM32 MCU [10].  
Tiền xử lý  
dữ liệu &  
Gán nhãn  
Xây dựng  
mô hình học  
sâu  
Thu nhận  
dữ liệu  
Ánh xạ mô  
hình lên  
STM32 MCU  
Huấn luyện  
mô hình học  
sâu  
Thực thi &  
Đánh giá  
Hình 3. Các bước triển khai một ứng dụng nhận dạng/ học sâu trên vi điều khiển STM32 MCU  
Bước 1. Thu nhận dữ liệu. Trong bước này, các dữ liệu liên quan của bài toán hay ứng  
•
dụng cần triển khai sẽ được thu nhận với số lượng mẫu đủ lớn, làm cơ sở để thực hiện việc mô  
hình hóa hay phân loại dựa trên dữ liệu ở các bước tiếp theo. Để thu nhận dữ liệu có thể sử dụng  
các cảm biến trên hoặc gần đối tượng được theo dõi và thực hiện việc ghi lại trạng thái và những  
thay đổi của đối tượng theo thời gian. Các thông số vật lý có thể bao gồm gia tốc, nhiệt độ, âm  
thanh và hình ảnh tùy thuộc vào ứng dụng.  
•
Bước 2. Tiền xử lý dữ liệu và Gán nhãn. Tiền xử lý dữ liệu có thể bao gồm quá trình  
lọc nhiễu, làm sạch dữ liệu thô. Tiếp đó, dữ liệu được gán nhãn (label) để phục vụ cho việc huấn  
luyện sử dụng các mô hình học sâu có giám sát ở các bước tiếp theo.  
•
Bước 3. Xây dựng mô hình học sâu. Dựa vào mục tiêu của ứng dụng và tập dữ liệu đã  
thu nhận được, người thiết kế cần lựa chọn và xây dựng một mô hình học sâu phù hợp để có thể  
học và suy luận với kết quả tốt nhất từ tập dữ liệu đã có nhằm đáp ứng mục tiêu bài toán. Công  
việc này có thể bao gồm quyết định kiểu mạng nơ-ron nhân tạo cần dùng (ví dụ mạng nơ-ron lan  
truyền thẳng hay mạng nơ-ron tích chập), kiến trúc mạng (số lớp, số nơ-ron trong mỗi lớp, hàm  
kích hoạt cần dùng), phương pháp huấn luyện mạng.  
•
Bước 4. Huấn luyện mô hình học sâu. Quá trình huấn luyện thường được tiến hành trên  
máy tính hoặc sử dụng các dịch vụ học máy với năng lực xử lý lớn và tài nguyên phần cứng (bộ  
nhớ, tốc độ) không hạn chế. Kết quả của quá trình huấn luyện là một mô hình mạng nơ-ron nhân  
tạo đã được huấn luyện (pre-trained model) và được lưu ở định dạng phù hợp với công cụ phát  
triển của STM32.  
•
Bước 5. Ánh xạ mô hình lên vi điều khiển STM32. Sử dụng công cụ X-Cube-AI để  
chuyển đổi mô hình mạng nơ-ron đã được huấn luyện trước đó thành mã C tối ưu hóa về độ phức  
tạp tính toán và yêu cầu bộ nhớ, để thực thi mô hình mạng nơ-ron nhân tạo đã huấn luyện trên vi  
điều khiển STM32.  
•
Bước 6. Thực thi và Đánh giá. Quá trình thực thi và đánh giá mạng nơ-ron đã thiết kế  
trên vi điều khiển STM32 có thể được thực hiện dễ dàng bằng cách sử dụng các hàm hoặc tham  
khảo các ví dụ sẵn có được tạo ra và tích hợp sẵn bởi bộ công cụ X-Cube-AI.  
195  
TNU Journal of Science and Technology  
226(11): 191 - 199  
3.2. Huấn luyện mạng nơ-ron tích chập cho nhận dạng chữ số viết tay với MNIST  
Trong nghiên cứu này, chúng tôi thực hiện việc ánh xạ mô hình mạng nơ-ron tích chập LeNet  
thực thi bài toán nhận dạng chữ số viết tay trên tập dữ liệu MNIST lên board phát triển  
EDiscovery STM32F411VET6. Mô hình mạng nơ-ron tích chập LeNet được huấn luyện trước  
bằng công cụ Google Colab [11] sử dụng thư viện Keras, sau đó mô hình mạng đã huấn luyện sẽ  
được ánh xạ, thực thi và đánh giá lên vi điều khiển STM32F411VET6 sử dụng công cụ X-Cube-  
AI trong môi trường phát triển tích hợp STM32-CubeIDE.  
Tập dữ liệu MNIST được sử dụng để huấn luyện và kiểm tra mạng nơ-ron tích chập. Tập dữ  
liệu MNIST gồm một tập huấn luyện 60.000 mẫu và một tập kiểm tra 10.000 mẫu. Có 10 loại  
chữ số viết tay khác nhau từ 0 đến 9 trong tập dữ liệu MNIST. Mỗi chữ số được chuẩn hóa và căn  
giữa trong các bức ảnh đa mức xám có kích thước 28x28 điểm ảnh.  
Bꢀng 1. Kiến trúc mạng nơ-ron tích chập ứng dụng cho nhận dạng chữ số viết tay với tập MNIST,  
triển khai trên vi điều khiển STM32F411VET6  
Số feature  
Kích thước  
đầu ra  
28x28  
28x28  
14x14  
14x14  
7x7  
Kích thước  
Hàm kích  
Số lượng  
tham số  
TT  
Lớp  
map  
1
6
kernel  
hoạt  
0
1
2
3
4
5
6
7
8
Ảnh đầu vào  
Conv1  
MaxPooling1  
Conv2  
MaxPooling2  
Flatten  
-
5x5  
2x2  
5x5  
2x2  
-
-
-
-
-
ReLu  
-
ReLu  
-
-
156  
-
2416  
-
6
16  
16  
-
-
-
784  
120  
84  
10  
-
-
Dense1  
Dense2  
Dense3  
ReLu  
ReLu  
Softmax  
94200  
10164  
850  
-
Tổng số tham số: 107786.  
Chúng tôi lựa chọn sử dụng mô hình mạng nơ-ron tích chập LeNet-5, chi tiết mô hình mạng  
sử dụng được cho trong Bảng 1, với kiến trúc mạng gồm 2 lớp tích chập (Conv1 và Conv2) ghép  
xen kẽ với 2 lớp lấy mẫu xuống với phương thức lấy mẫu tối đa (MaxPooling1 và MaxPooling2),  
sau đó được chuyển thành vector nhờ lớp Flatten và đưa đến 3 lớp nơ-ron kết nối đầy đủ  
(Dense1, Dense2, Dense3) gồm có 120, 84 và 10 nơ-ron tương ứng trong từng lớp để thực hiện  
việc nhận dạng. Hàm kích hoạt ReLu được sử dụng trong các lớp tích chập và các lớp nơ-ron kết  
nối đầy đủ, riêng lớp cuối cùng (Dense3) chúng tôi sử dụng hàm kích hoạt Softmax để thực hiện  
phân loại. Các lớp tích chập sử dụng mặt nạ 5x5, các lớp lấy mẫu sử dụng cửa sổ lấy mẫu kích  
thước 2x2. Tổng số tham số của mạng là 107786 tham số.  
Để huấn luyện mạng, chúng tôi sử dụng Google Colab [11] với chương trình huấn luyện mạng  
nơ-ron tích chập được phát triển trên nền tảng Python, sử dụng thư viện Keras. Sau 20 vòng huấn  
luyện (epoch), mạng cho độ chính xác (Accurcy) là 99,77% đối với tập dữ liệu huấn luyện và  
99,05% đối với tập dữ liệu kiểm tra. Các kết quả về độ chính xác này rất tốt và có thể so sánh với  
độ chính xác của các mô hình học máy liên quan [7], [8], [12] cho các ứng dụng nhận dạng chữ  
số viết tay với cùng tập dữ liệu MNIST. Tất cả các tham số của mạng nơ-ron tích chập đã huấn  
luyện được lưu lại ở định dạng .h5 phù hợp để sử dụng trong việc ánh xạ mô hình này lên vi điều  
khiển STM32F411VET6.  
3.3. Ánh xạ mô hình mạng nơ-ron tích chập trên vi điều khiển STM32F411VET6  
Hình 4 minh họa việc cài đặt các thông số đầu vào sử dụng bộ công cụ X-Cube-AI (phiên bản  
5.2.0) trong môi trường phát triển tích hợp STM32-CubeIDE (phiên bản 1.5.0) để thực hiện việc  
ánh xạ mạng nơ-ron tích chập đã huấn luyện lên vi điều khiển STM32. Để tối ưu hóa dung lượng  
bộ nhớ sử dụng, X-Cube-AI hỗ trợ nén dữ liệu với các hệ số nén là 4 và 8. Chúng tôi không sử  
196  
TNU Journal of Science and Technology  
226(11): 191 - 199  
dụng chế độ nén dữ liệu, vì vậy dung lượng bộ nhớ sử dụng tương ứng cho mô hình mạng nơ-ron  
đã huấn luyện là: 421,04 KB (82,23%) cho bộ nhớ chương trình (Flash) và 10,95 KB (8,55%)  
cho bộ nhớ dữ liệu (RAM) (xem Hình 4).  
Hình 4. Thiết lập thông số cho mô hình mạng nơ-ron tích chập sử dụng công cụ X-Cube-AI trong môi  
trường phát triển tích hợp STM32-CubeIDE  
Bꢀng 2. Tài nguyên bộ nhớ sử dụng khi lựa chọn các chế độ nén dữ liệu khác nhau  
Chế độ  
Bộ nhớ Flash (KB)  
421,04  
Bộ nhớ RAM (KB)  
Hệ số nén thực tế đạt được  
Không nén dữ liệu  
Nén với hệ số 4  
Nén với hệ số 8  
10,95  
10,95  
10,95  
1
3,64  
6,48  
117,88  
65,15  
Bꢀng 3. Phân tích chi tiết độ phức tạp tính toán và tài nguyên sử dụng của các lớp trong mạng  
Lớp  
Số lượng tham số  
Tỉ lệ MACC thực thi (%)  
Tỉ lệ sử dụng bộ nhớ Flash (%)  
Conv1  
Conv2  
Dense1  
Dense2  
Dense3  
156  
2416  
94200  
10164  
850  
17,9  
67,2  
13,3  
1,4  
0,1  
2,2  
87,5  
9,4  
0,1  
0,8  
Tổng số phép toán nhân cộng tích lũy MACC: 709056 MACC. Dung lượng Flash sử dụng 421,04 KB.  
Dung lượng bộ nhớ RAM sử dụng 10,95 KB.  
Ngoài ra, chúng tôi cũng thử khảo sát sự thay đổi của dung lượng bộ nhớ yêu cầu cho mô hình  
mạng nơ-ron tích chập đã huấn luyện để ánh xạ lên vi điều khiển STM32F411 khi thay đổi các hệ  
số nén dữ liệu là 4 và 8, với kết quả dung lượng bộ nhớ sử dụng tương ứng cho các chế độ này  
được tóm tắt ở Bảng 2. Việc nén dữ liệu ở một khía cạnh sẽ giúp tiết kiệm bộ nhớ, ở khía cạnh  
khác sẽ làm suy giảm độ chính xác khi thực hiện nhận dạng của mạng, vì vậy người thiết kế cần  
cân nhắc trong từng trường hợp sử dụng cụ thể. Trong nghiên cứu này, chúng tôi không thực hiện  
chế độ nén dữ liệu khi thực thi trên board phát triển STM32F411.  
Bảng 3 (được tạo ra bởi phần mềm X-Cube-AI) phân tích chi tiết độ phức tạp tính toán và tài  
nguyên bộ nhớ Flash đã sử dụng tương ứng cho mỗi lớp trong mạng đã triển khai. Tổng số phép  
toán nhân cộng tích lũy MACC (Multiply-ACCumulate operation) được thực hiện trong mạng là  
197  
TNU Journal of Science and Technology  
226(11): 191 - 199  
709056 MACC, trong đó lớp Conv2 có số lượng MACC thực thi lớn nhất chiếm tỉ lệ 67,2%, tiếp  
theo là lớp Conv1 (tỉ lệ 17,9%) và lớp Dense1 (tỉ lệ 13,3%). Nếu xét đến tài nguyên bộ nhớ sử  
dụng thì lớp Dense1 có số lượng tham số nhiều nhất (94200 tham số), do vậy đã sử dụng hầu hết  
bộ nhớ của cả kiến trúc mạng (tỉ lệ 87,5%). Kết quả phân tích chi tiết độ phức tạp tính toán và tài  
nguyên sử dụng của mạng giúp người thiết kế có thể hiểu rõ hơn đặc điểm hoạt động của mạng  
và có những điều chỉnh phù hợp để cải thiện hiệu năng của mạng phù hợp mỗi ứng dụng cụ thể.  
4. Thực thi và đánh giá  
Trong phần này, chúng tôi trình bày kết quả thực thi bài toán nhận dạng chữ số viết tay sử  
dụng mạng nơ-ron tích chập trên board vi điều khiển EDiscovery STM32F411VET6. Quá trình  
thực thi được thiết lập chi tiết như sau: Chúng tôi phát triển chương trình C thực hiện việc nhận  
dạng chữ số viết tay sử dụng mô hình mạng nơ-ron đã được thiết lập trên vi điều khiển  
STM32F411VET6. Dữ liệu đầu vào để nhận dạng được trích xuất từ tập dữ liệu kiểm tra của tập  
dữ liệu MNIST. Để đo chính xác thời gian nhận dạng cho mỗi mẫu dữ liệu đầu vào của mạng,  
chúng tôi sử dụng bộ định thời TIM2 của vi điều khiển STM32F411VET6. Kết quả nhận dạng  
trên vi điều khiển, bao gồm chữ số được nhận dạng và thời gian nhận dạng cho mỗi mẫu của  
mạng nơ-ron, được chuyển đến hiển thị trên máy tính thông qua giao tiếp UART. Trên máy tính  
chúng tôi dùng phần mềm Hercules Terminal kết nối với vi điều khiển và hiển thị kết quả nhận  
dạng chữ số viết tay trên vi điều khiển.  
Chúng tôi cũng so sánh kết quả thực thi mạng nơ-ron trên vi điều khiển STM32F411VET6  
với kết quả thực thi cùng một mô hình mạng nơ-ron với cùng tập dữ liệu MNIST trên máy tính đa  
mục đích có cấu hình CPU Intel Core i5 7200U hoạt động ở tần số 2,5 GHz. Phiên bản mạng nơ-  
ron trên máy tính được phát triển trên phần mềm Matlab.  
Để so sánh, đánh giá năng lực của hệ thống nhận dạng chữ số viết tay sử dụng mạng nơ-ron  
tích chập chạy trên vi điều khiển STM32F411VET6, chúng tôi sử dụng các thông số là: thời gian  
nhận dạng và hiệu năng của mạng. Hiệu năng của mạng được tính bằng số lượng phép toán nhân  
cộng tích lũy MACC được thực thi trong mỗi giây (MACC/s), như trình bày trong công thức (1).  
Hiệu năng = Số phép toán MACC / Thời gian nhận dạng  
(1)  
Bꢀng 4. Kết quả thực thi và đánh giá hiệu năng vi điều khiển STM32F411VET6 trong bài toán nhận dạng  
chữ số viết tay với tập dữ liệu MNIST sử dụng mạng nơ-ron tích chập LeNet5  
Nền tꢀng phần cứng  
Tần số  
(MHz)  
100  
Thời gian nhận dạng  
Hiệu năng  
(MACC/s)  
10,03 x 106  
10,41 x 106  
(ms)  
70,66  
68,14  
STM32F411VET6  
CPU Intel Core i5 7200U  
2500  
Bảng 4 trình bày chi tiết kết quả thực thi và đánh giá. Vi điều khiển STM32F411VET6 thực  
thi mạng nơ-ron tích chập LeNet5 cho bài toán nhận dạng chữ số viết tay với thời gian nhanh gần  
tương đương với phiên bản phần mềm được thực thi trên máy tính (70,66 ms so với 68,14 ms).  
Với thời gian nhận dạng của mạng nơ-ron đã đạt được (70,66 ms cho mỗi mẫu), chúng tôi ước  
lượng được số lượng mẫu chữ số viết tay mà vi điều khiển có thể nhận dạng trong mỗi giây là  
xấp xỉ 14 mẫu/giây. Tốc độ nhận dạng này có thể đáp ứng được yêu cầu của các ứng dụng nhận  
dạng mẫu thực tế triển khai trên các thiết bị điện toán biên công suất thấp trong các ứng dụng và  
hệ thống IoT. Trong tương lai, nếu thực hiện tối ưu hóa việc truyền dữ liệu giữa bộ nhớ và lõi xử  
lý của bộ vi điều khiển bằng cơ chế truy cập bộ nhớ trực tiếp (Direct Memory Access – DMA)  
và/hoặc tối ưu hóa kiến trúc mạng nơ-ron tích chập thì có thể cải thiện hơn nữa tốc độ nhận dạng  
của thiết bị.  
5. Kết luận  
Bài báo đã trình bày khả năng triển khai các thuật toán và ứng dụng học sâu trên nền tảng điện  
toán biên với thiết bị biên là vi điều khiển ARM Cortex-M STM32. Chúng tôi đã giới thiệu các  
198  
TNU Journal of Science and Technology  
226(11): 191 - 199  
bước thực hiện mô hình học sâu trên vi điều khiển STM32 và đã triển khai thực thi và đánh giá  
mô hình mạng nơ-ron tích chập LeNet5 cho bài toán nhận dạng chữ số viết tay trên vi điều khiển  
STM32F411VET6. Kết quả thực thi cho thấy, mô hình mạng nơ-ron tích chập đã triển khai trên  
vi điều khiển hoàn toàn có thể đáp ứng yêu cầu của các ứng dụng nhận dạng trong thực tế. Chúng  
tôi tin rằng, kết quả của nghiên cứu này sẽ góp phần mở ra các khả năng thực thi các ứng dụng  
IoT và học máy với hiệu năng cao và công suất thấp trên các thiết bị điện toán biên.  
Lời cꢀm ơn  
Bài báo này được tài trợ bởi Quỹ Khoa học Công nghệ Murata và Trường Đại học Bách Khoa  
- ĐHĐN với đề tài có mã số T2020-02-04MSF.  
TÀI LIỆU THAM KHẢO/ REFERENCES  
[1] Cisco, "Cisco Annual Internet Report (2018–2023) White Paper", 2020. [Online]. Available:  
report/white-paper-c11-741490.html. [Accessed May 10, 2021].  
[2] X. Wang, Y. Han, V. C. M. Leung, D. Niyato, X. Yan, and X. Chen, "Convergence of edge computing  
and deep learning: A comprehensive survey," IEEE Communications Surveys & Tutorials, vol. 22, no.  
2, pp. 869-904, 2020.  
[3] J. Chen and X. Ran, "Deep Learning With Edge Computing: A Review," Proceedings of the IEEE 107,  
no. 8, pp. 1655-1674, 2019.  
[4] Y. Wei, W. Xia, M. Lin, J. Huang, B. Ni, J. Dong, Y. Zhao, and S. Yan, "HCP: A flexible CNN  
framework for multi-label image classification," IEEE Transactions on Pattern Analysis and Machine  
Intelligence, vol. 38, no. 9, pp. 1901-1907, 2015.  
[5] A. B. Nassif, I. Shahin, I. Attili, M. Azzeh, and K. Shaalan, "Speech recognition using deep neural  
networks: A systematic review," IEEE Access, vol. 7, pp. 19143-19165, 2019.  
[6] M. Bojarski, D. D. Testa, D. Dworakowski, B. Firner, B. Flepp, P. Goyal, and L. D. Jackel, "End to end  
learning for self-driving cars," 2016.  
[7] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner, "Gradient-based learning applied to document  
recognition," Proceedings of the IEEE, vol. 86, no. 11, pp. 2278-2324, 1998.  
[8]  
Y.  
http://yann.lecun.com/exdb/mnist/. [Accessed May 10, 2021].  
[9] ST Microelectronics, “STM32F411 Microcontroller – Product Overview and Documentations”, 2020.  
[Accessed May 10, 2021].  
LeCun  
and  
C.  
Cortes,  
“MNIST  
database”,  
1998.  
[Online].  
Available:  
[10] STMicroelectronics, “STM32 solutions for Artificial Neural Networks”, 2020. [Online]. Available:  
[11] Google, “Google Colaboratory (Colab) Introduction”, 2020.  
[Online]. Available:  
[12] A. Baldominos, Y. Saez, and P. Isasi, "A survey of handwritten character recognition with MNIST  
and EMNIST," Applied Sciences, vol. 9, no. 15, 2019, Art. no. 3169.  
199  
pdf 9 trang Thùy Anh 16380 Free
Bạn đang xem tài liệu "Implementation of deep learning neural network lenet5 on stm32 microcontroller for image recognition", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfimplementation_of_deep_learning_neural_network_lenet5_on_stm.pdf