
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 74
NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG HỖ TRỢ CẢNH BÁO
LÂY NHIỄM BỆNH QUA ĐƯỜNG HÔ HẤP
RESEARCH AND BUILDING A SUPPORT SYSTEM FOR WARNING
OF RESPIRATORY INFECTION INFECTION
Phùng Đức Cần1,*, Đoàn Đại Dương1,
Nguyễn Anh Quân1, Nguyễn Thị Cẩm Ngoan2
1Lớp CNTT 06 - K16, Khoa Công nghệ thông tin, Trường Đại học Công nghiệp Hà Nội
2Khoa Công nghệ thông tin, Trường Đại học Công nghiệp Hà Nội
*Email: phungduccankthd@gmail.com
TÓM TẮT
Trong bài báo này, chúng tôi đã tìm cách để có thể xây dựng một ứng dụng phát hiện và cảnh báo lây nhiễm bệnh qua
đường hô hấp. Sau quá trình sàng lọc tất cả các mô hình truyền thống và mô hình học sâu, cuối cùng chúng tôi xác định
chọn mô hình CNN. CNN cho thấy hiệu suất tốt trong việc phân loại hình ảnh. Cụ thể ở đây là phân loại ảnh người đeo
khẩu trang, từ đó xác định xem có nguy cơ lây nhiễm bệnh truyền qua đường hô hấp. Mặc dù trình mô hình của chúng tôi
chưa đạt chính xác quá cao, nhưng chúng tôi vẫn có thể nhận được kết quả chính xác ở mức độ chấp nhận được và đã xác
định và đưa ra cảnh báo thành công đối tượng khả năng lây bệnh truyền nhiễm qua đường hô hấp dựa vào mô hình đã
đào tạo.
Từ khóa: phân loại; ảnh đeo khẩu trang; nhận diện mặt người; sức khỏe; DNN; CNN
ABSTRACT
In this paper, we explored ways to build an application for detecting and alerting respiratory infections. After screening
various traditional and deep learning models, we ultimately decided to choose a CNN (Convolutional Neural Network)
model. CNN demonstrated excellent performance in image classification, specifically in categorizing images of people
wearing masks, thereby determining the risk of respiratory infection transmission. While our model's accuracy has not
reached an exceptionally high level, we have still achieved acceptable results. The model successfully identified and issued
warnings for individuals with the potential risk of transmitting respiratory infections based on the trained model.
Keywords: classification; facemask images; face recognition; DNN (Deep Neural Network); CNN (Convolutional
Neural Network)
CHỮ VIẾT TẮT
AI Artificial Intelligence Trí tuệ nhân tạo
CNN Convolutional Neural Network Mạng nơ-ron tích chập
ANN Artificial Neural Network Mạng nơ-ron nhân tạo
1. GIỚI THIỆU
Báo cáo này nói về việc sử dụng mô hình mạng tích chập
(CNN) để phát hiện và cảnh báo lây nhiễm bệnh qua đường
hô hấp. Mô hình này đã cho thấy hiệu suất tốt trong việc
phân loại hình ảnh người đeo khẩu trang với người không
đeo khẩu trang và đưa ra cảnh báo lây nhiễm bệnh qua
đường hô hấp. Việc sử dụng các kỹ thuật học sâu để nhận
dạng người đeo khẩu trang được coi là rất cần thiết vì số
lượng người mắc bệnh đường hô ngày càng tăng, đặc biệt
là tình hình dịch bệnh Covid-19 đã hoành hành và gây ra rất
nhiều khó khăn trên toàn cầu. Cùng với sự phát triển của
phần cứng mạnh mẽ cho phép tính toán hàng tỷ phép tính
trong một giây, CNN trở nên phổ biến hơn và được áp dụng
vào nhiều lĩnh vực khác nhau của đời sống như lĩnh vực thị
giác máy tính, lĩnh vực tự động nhận dạng giọng nói, xử lý
ngôn ngữ tự nhiên, lĩnh vực y khoa,...
2. CÁC NGHIÊN CỨU LIÊN QUAN
Hệ thống phát hiện và cảnh báo cảnh báo lây nhiễm bệnh
qua đường hô hấp đang được phát triển bởi nhiều nhóm
nghiên cứu từ nhiều nơi trên thế giới bởi lợi ích mà nó mang

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 75lại trong việc sàng lọc những người bị bệnh cũng như giảm
áp lực cho các bác sĩ chuyên khoa. Đã có rất nhiều bài toán
được ứng dụng trong hệ thống này, tuy nhiên hầu hết đều
phát triển dựa trên bài toán nhận diện hình ảnh.
Cho tới thời điểm hiện tại, các thuật toán nhận diện hình
ảnh vẫn là một trong những thuật toán quan trọng nhất trong
phân ngành thị giác máy tính (Computer Vision) bởi nó là
tiền đề để giải quyết rất nhiều bài toán thực tế khác nhau.
Công ty BA GPS triển khai hệ thống trí tuệ nhân tạo
trong camera trên xe vận tải để giám sát việc đeo khẩu trang.
Hệ thống phân tích hình ảnh và cảnh báo thời gian thực khi
phát hiện người không đeo khẩu trang hoặc đeo không đúng
cách. Mô hình nhận dạng ngày càng hoàn thiện với số lượng
mẫu tăng, đạt độ chính xác trên 95%. Đây là một giải pháp
hữu ích trong việc giữ an toàn và ngăn chặn lây nhiễm bệnh,
đặc biệt là trong môi trường vận tải công cộng. Từ đầu năm
2020, khi Covid-19 bùng phát đầu tiên ở Trung Quốc, công
ty Baidu đã xây dựng công cụ trí tuệ nhân tạo để nhận diện
người đeo khẩu trang. Họ đào tạo mô hình này dựa trên hơn
100.000 hình ảnh và đạt độ chính xác khoảng 96,5%.
AlexNet là một kiến trúc mạng nơ-ron sâu được giới
thiệu bởi Alex Krizhevsky, Ilya Sutskever và Geoffrey
Hinton vào năm 2012 để giành chiến thắng trong cuộc thi
nhận dạng ảnh ImageNet Large Scale Visual Recognition
Challenge (ILSVRC) năm 2012. Kiến trúc của AlexNet
cũng sử dụng các tầng tích chập và tầng Pooling như LeNet-
5, nhưng có kích thước lớn hơn và sâu hơn, đồng thời sử
dụng kỹ thuật Dropout để tránh overfitting và sử dụng các
kỹ thuật tăng cường dữ liệu (Data Augmentation) để tăng
khả năng tổng quát hóa của mô hình.
3. PHƯƠNG PHÁP VÀ TƯ LIỆU
Trong phần này, bài báo sẽ trình bày chi tiết việc xây
dựng CNN. Sử dụng CNN trong xử lý ảnh với mục tiêu của
mô hình là phát hiện và cảnh báo cảnh báo lây nhiễm bệnh
qua đường hô hấp. CNN có thể xử lý ảnh với kích thước lớn
và chất lượng hình ảnh cao rất phù hợp với dữ liệu của
chúng ta là người đeo khẩu trang và người không đeo khẩu
trang. Ngoài ra, mô hình được xây dựng trên CNN còn có
thể được huấn luyện bằng GPU giúp tăng tốc độ huấn luyện
lên rất nhiều lần, với lượng dữ liệu đầu vào lớn thì điều này
rất hữu ích.
3.1. Kiến trúc CNN
Kiến trúc CNN là một tập hợp các lớp Convolution
chồng lên nhau và sử dụng các hàm Nonlinear Activation
như ReLU và Tanh để kích hoạt các trọng số trong các
Nodes. Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ
tạo ra các thông tin trừu tượng hơn cho các lớp tiếp theo.
Mỗi một lớp sau khi thông qua các hàm kích hoạt sẽ tạo
ra các thông tin trừu tượng hơn cho các lớp tiếp theo. Trong
mô hình mạng truyền ngược (Backforward Neural
Network) thì mỗi nơ-ron đầu vào (Input Node) cho mỗi nơ-
ron đầu ra trong các lớp tiếp theo.
Mô hình này gọi là mạng kết nối đầy đủ (Fully
Connected Layer) hay mạng toàn vẹn (Affine Layer). Còn
trong mô hình CNN thì ngược lại. Các Layer liên kết được
với nhau thông qua cơ chế Convolution.
Layer tiếp theo là kết quả Convolution từ Layer trước
đó, nhờ vậy mà ta có được các kết nối cục bộ. Như vậy mỗi
nơ-ron ở lớp kế tiếp sinh ra từ kết quả của Filter áp đặt lên
một vùng ảnh cục bộ của nơ-ron trước đó.
Mỗi một lớp được sử dụng các Filter khác nhau thông
thường có hàng trăm hàng nghìn Filter như vậy và kết hợp
kết quả của chúng lại. Ngoài ra có một số Layer khác như
Pooling/Subsampling Layer dùng để chắt lọc lại các thông
tin hữu ích hơn (loại bỏ các thông tin nhiễu).
Trong quá trình huấn luyện mạng (Training) CNN tự
động học các giá trị qua các lớp Filter dựa vào cách thức mà
bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh, CNN sẽ cố
gắng tìm ra thông số tối ưu cho các Filter tương ứng theo
thứ tự Raw Pixel > Edges > Shapes > Facial > High-Level
Features. Layer cuối cùng được dùng để phân lớp ảnh.
Trong mô hình CNN có 2 khía cạnh cần quan tâm là tính
bất biến (Location Invariance) và tính kết hợp
(Compositionality). Với cùng một đối tượng, nếu đối tượng
này được chiếu theo các góc độ khác nhau (Translation,
Rotation, Scaling) thì độ chính xác của thuật toán sẽ bị ảnh
hưởng đáng kể.
Pooling Layer sẽ cho bạn tính bất biến đối với phép dịch
chuyển (Translation), phép quay (Rotation) và phép co giãn
(Scaling). Tính kết hợp cục bộ cho ta các cấp độ biểu diễn
thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn
thông qua Convolution từ các Filter.
Đó là lý do tại sao CNN cho ra mô hình với độ chính
xác rất cao. Cũng giống như cách con người nhận biết các
vật thể trong tự nhiên.
Mạng CNN sử dụng 3 ý tưởng cơ bản:
●
Các trường tiếp nhận cục bộ (Local Receptive Field)
●
Trọng số chia sẻ (Shared Weights)
●
Tổng hợp (Pooling).
3.1.1. Trường tiếp nhận cục bộ (Local Receptive Field)
Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có
kích thước 28×28 thì tương ứng đầu vào là một ma trận có
28×28 và giá trị mỗi điểm ảnh là một ô trong ma trận. Trong
mô hình mạng ANN truyền thống thì chúng ta sẽ kết nối
các nơ-ron đầu vào vào tầng ảnh.
Tuy nhiên trong CNN chúng ta không làm như vậy mà
chúng ta chỉ kết nối trong một vùng nhỏ của các nơ-ron đầu
vào như một Filter có kích thước 5×5 tương ứng (28 - 5 +
1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng
số và mỗi nơ-ron ẩn sẽ học một Bias. Mỗi một vùng 5×5
đấy gọi là một trường tiếp nhận cục bộ.

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 76
Hình 1. Mô tả một Filter
Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1
hidden Layer bằng các cách sau:
Bước 1: Tạo ra nơ-ron ẩn đầu tiên trong lớp ẩn 1.
Hình 2. Tạo nơ-ron ẩn đầu tiên
Bước 2: Dịch Filter qua bên phải một cột sẽ tạo được
nơ-ron ẩn thứ 2.
Hình 3. Dịch trái tạo nơ-ron ẩn thứ hai
Với bài toán nhận dạng ảnh người ta thường gọi ma trận
lớp đầu vào là Feature Map, trọng số xác định các đặc trưng
là Shared Weight và độ lệch xác định một Feature Map là
Shared Bias. Như vậy đơn giản nhất là qua các bước trên
chúng ta chỉ có 1 Feature Map. Tuy nhiên trong nhận dạng
ảnh chúng ta cần nhiều hơn một Feature Map.
Hình 4. Feature Map
Như vậy, Local Receptive Field thích hợp cho việc phân
tách dữ liệu ảnh, giúp chọn ra những vùng ảnh có giá trị
nhất cho việc đánh giá phân lớp.
3.1.2. Chia sẻ trọng số (Shared Weight and Bias)
Đầu tiên, các trọng số cho mỗi Filter (Kernel) phải giống
nhau. Tất cả các nơ-ron trong lớp ẩn đầu sẽ phát hiện chính
xác Feature tương tự chỉ ở các vị trí khác nhau trong hình
ảnh đầu vào. Một Convolutional Layer bao gồm các Feature
Map khác nhau. Mỗi một Feature Map giúp phát hiện một
vài Feature trong bức ảnh. Lợi ích lớn nhất của trọng số chia
sẻ là giảm tối đa số lượng tham số trong mạng CNN.
3.1.3. Lớp tổng hợp (Pooling Layer)
Lớp Pooling thường được sử dụng ngay sau lớp
Convolutional để đơn giản hóa thông tin đầu ra để giảm bớt
số lượng nơ-ron.
Hình 5. Mô tả Pooling Layer
Thủ tục Pooling phổ biến là Max Pooling, thủ tục này
chọn giá trị lớn nhất trong vùng đầu vào 2×2.
Hình 6. Quá trình Pooling

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 77Như vậy qua lớp Max Pooling thì số lượng nơ-ron giảm
đi phân nửa. Trong một mạng CNN có nhiều Feature Map
nên mỗi Feature Map chúng ta sẽ cho mỗi Max
Pooling khác nhau. Chúng ta có thể thấy rằng Max
Pooling là cách hỏi xem trong các đặc trưng này thì đặc
trưng nào là đặc trưng nhất. Ngoài Max Pooling còn có L2
Pooling.
Cuối cùng ta đặt tất cả các lớp lại với nhau thành một
CNN với đầu ra gồm các nơ-ron với số lượng tùy bài toán.
Hình 7. Mô tả 1 mạng tích chập CNN
2 lớp cuối cùng của các kết nối trong mạng là một lớp
đầy đủ kết nối (Fully Connected Layer). Lớp này nối mọi
nơ-ron từ lớp max-pooled tới mọi nơ-ron của tầng ra.
3.1.4. Cách chọn tham số cho CNN
Số các convolution Layer: càng nhiều các convolution
Layer thì performance càng được cải thiện. Sau khoảng 3
hoặc 4 Layer, các tác động được giảm một cách đáng kể.
Filter size: thường Filter theo size 5×5 hoặc 3×3.
Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào
lớn.
Cách cuối cùng là thực hiện nhiều lần việc train test để
chọn ra được param tốt nhất.
3.2. Tăng cường dữ liệu trong CNN
Để tăng cường dữ liệu chuẩn bị cho việc học sâu của mô
hình CNN, chúng tôi sử dụng lớp ImageDataGenerator của
thư viện Keras để tạo ra các phiên bản tăng cường của dữ
liệu hình ảnh trong quá trình huấn luyện. Việc tăng cường
dữ liệu như xoay, dịch chuyển, thu phóng, lật ngang,... giúp
tăng khả năng tổng quát hóa của mô hình, giảm thiểu hiện
tượng overfitting và cải thiện độ chính xác của mô hình khi
áp dụng vào dữ liệu mới. Đồng thời, chúng tôi cũng khai
báo và khởi tạo các Generators cho tập huấn luyện và tập
kiểm tra, cho phép đọc dữ liệu ảnh từ thư mục và chia thành
các batch để huấn luyện và đánh giá mô hình.
3.3. Phương pháp triển khai
Để triển khai mô hình CNN với mục đích phân loại
người đeo khẩu trang và người không đeo khẩu trang, đầu
tiên chúng là sẽ cài đặt các thư viện như Tensorflow,
OpenCV, NumPy, Pandas,… Sau đó, sử dụng
ImageDataGenerator để tăng cường dữ liệu ảnh. Cụ thể,
đoạn Code tạo một ImageDataGenerator với các tham số
như rotation_range, width_shift_range, height_shift_range,
shear_range, zoom_range, horizontal_flip, fill_mode để tạo
ra những biến thể mới từ các ảnh gốc. Tạo Generator cho
tập Train và Test với train_generator và test_generator. Các
Generator này sử dụng ImageDataGenerator đã tạo ở bước
trước đó để tạo ra các ảnh mới và đưa chúng vào mô hình.
Xây dựng mô hình CNN bằng cách sử dụng Sequential. Mô
hình này bao gồm 1 lớp MobileNetV2, 1 lớp
AveragePooling2D, 1 lớp Flatten, 2 lớp Dense với hàm kích
hoạt relu và softmax và 1 lớp Dropout. Model được xây
dựng cụ thể như sau:
● Lớp đầu tiên là một MobileNetV2 Layer với
weights=”imagenet”. Input shape của Layer này là (224,
224, 3), tương ứng với kích thước của ảnh đầu vào
(224x224) và số lượng kênh màu RGB (3).
● Lớp thứ hai là một AveragePooling2D Layer với kích
thước pool là (7, 7). Layer này giúp giảm kích thước của
Feature Map được tạo ra từ MobileNetV2 Layer trước đó,
đồng thời giữ lại thông tin quan trọng của Feature Map.
● Lớp thứ ba là ta áp dụng một Flatten Layer để chuyển
đổi Feature Map từ 3D sang 1D, để chuẩn bị cho việc kết
nối với các Fully Connected Layers.
● Lớp thứ tư là một lớp Dense có số Filter là 128, sử
dụng hàm kích hoạt `relu`.
● Lớp thứ năm ta áp dụng một Dropout Layer với tỷ lệ
dropout là 0.5 để giảm thiểu overfitting.
● Cuối cùng, ta thêm một lớp Dense có số Filter là 2, sử
dụng hàm kích hoạt `softmax`.
● Model này được tối ưu hóa bằng tối ưu hóa Adam, với
hàm loss được sử dụng là binary_crossentropy.
Sau đó, khởi chạy mô hình bằng cách sử dụng optimizer
Adam, loss function binary_crossentropy và metrics
accuracy, bắt đầu huấn luyện mô hình bằng cách sử dụng
fit_generator và truyền vào train_generator với số lần lặp
epochs = 10 và batch_size trong mỗi lần lặp epoch = 32.
Cuối cùng, ta lưu Model bằng evaluate_generator.
4. THỰC NGHIỆM
4.1. Cơ sở dữ liệu
Hiện nay có rất nhiều bộ dữ liệu về huấn luyện các tác
vụ khác nhau liên quan đến đối tượng là con người, cụ thể
ở đây là ảnh chụp người đeo khẩu trang. Ở đây chúng em
dùng bộ dữ liệu được lấy từ nghiên cứu của Kasetsart
University Sriracha Campus, Thailand và Vishwakarma
University, Pune có tên là “Face Mask Classification”.
https://data.mendeley.com/datasets/8pn3hg99t4/2
4.2. Huấn luyện
Mô hình đều được huấn luyện trên Visual Studio Code.
Mô hình huấn luyện trên một tập dữ liệu chuẩn bị sẵn các

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI HANOI UNIVERSITY OF INDUSTRY Tập san SINH VIÊN NGHIÊN CỨU KHOA HỌC Số 14 ● 2024 78File Train, Test riêng. Thay đổi chu kỳ sau mỗi lần train để
kiểm tra độ fit của mô hình.
4.3. Đánh giá trên tập thực nghiệm
Sau nhiều lần huấn luyện thì hệ thống đã được nâng cao
độ chính xác lên đến 99%.
Hình 8. Độ chính xác của hệ thống
4.4. Triển khai hệ thống
Hình 9. Nhận diện mặt người không đeo khẩu trang
Hình 10. Nhận diện mặt người không đeo khẩu trang
Sau khi đã hoàn thiện việc huấn luyện và thử nghiệm
các mô hình của các bài toán con, chúng tôi sẽ thực hiện
triển khai chạy hoàn chỉnh trên Visual Studio Code. Yêu
cầu về phần cứng, chỉ cần máy tính đáp ứng tác vụ văn
phòng một cách mượt mà là được (CPU 2-4 nhân, GPU 2.4
Hz, RAM 8GB…).
Sử dụng camera của máy tính để nhận diện mặt người
đeo khẩu trang trên thời gian thực.
5. KẾT LUẬN
Bài báo đã đưa ra một phương pháp sử dụng mạng nơ
ron tích chập (CNN) phát hiện và cảnh báo lây nhiễm bệnh
qua đường hô hấp áp dụng các kiến thức về trí tuệ nhân tạo
và học sâu. Đây sẽ là cơ sở để các nghiên cứu về phân loại
ảnh và AI nói chung có thể được phát triển trong tương lai
với những cải tiến về tốc độ và độ chính xác cao.
TÀI LIỆU THAM KHẢO
[1]. Nguyễn Phương Nga, Trần Hùng Cường, 2021. Giáo trình trí tuệ nhân tạo. NXB Thống kê.
[2]. Yogesh Suryawanshi, Vishal Meshram, Vidula Meshram, Kailas Patil, Prawit Chumchu. 2023. Face mask
wearing image dataset: A comprehensive benchmark for image-based face mask detection models. © 2023 The Authors.
Published by Elsevier Inc.
[3]. Yun Liu, Tianyi Zhou, Xiaohong Liu, Fengtong Wen, Haoxiang Li, Weifeng Liu, Shuo Li, Xiaodong Liu, and
Dinggang Shen. 2018. Identifying Medical Diagnoses and Treatable Diseases by Image-Based Deep Learning.
Proceedings of the National Academy of Sciences of the United States of America (PNAS), 11211-11216.
[4]. Ali Abbasian Ardakani, Alireza Rajabzadeh Kanafi, U. Rajendra Acharya, Nazanin Khadem, Afshin Mohammadi.
2020. Application of deep learning technique to manage COVID-19 in routine clinical practice using CT images: Results
of 10 Convolutional neural networks. Computer Methods and Programs in Biomedicine, 105618.
[5]. Prerna Singh, Vishal Sharma, Himanshu Madhu. 2018). Deep Learning-Based Classification of Lung Cancer
Histopathology Images Using Convolutional Neural Networks. Journal of Healthcare Engineering, 12.

