HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
---------------------------------------
Nguyễn Phước Đại
ỨNG DỤNG PHƯƠNG PHÁP HỌC SÂU VÀO NHẬN
DẠNG CẢM XÚC ĐỂ ĐÁNH GIÁ ĐỘ HÀI LÒNG
KHÁCH HÀNG
ĐỀ ÁN TỐT NGHIỆP THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)
THÀNH PHỐ HỒ CHÍ MINH - 2023
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG
---------------------------------------
Nguyễn Phước Đại
ỨNG DỤNG PHƯƠNG PHÁP HỌC SÂU VÀO NHẬN
DẠNG CẢM XÚC ĐỂ ĐÁNH GIÁ ĐỘ HÀI LỊNG
KHÁCH HÀNG
Chun ngành: Hệ thống thơng tin
Mã số:
8.48.01.04
ĐỀ ÁN TỐT NGHIỆP THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS. HUỲNH TRỌNG THƯA
THÀNH PHỐ HỒ CHÍ MINH - 2023
i
LỜI CAM ĐOAN
Tôi xin cam đoan đề án thạc sĩ hệ thống thông tin “Ứng dụng phương pháp
học sâu vào nhận dạng cảm xúc để đánh giá độ hài lòng khách hàng” là do tôi
nghiên cứu, tổng hợp và thực hiện.
Tất cả các nội dung, các số liệu, kết quả nêu trong đề án tốt nghiệp này là trung
thực và chưa từng được ai công bố trong bất kỳ công trình nào khác. Tơi hồn tồn
chịu trách nhiệm cho mọi hành vi sao chép trái phép hoặc vi phạm quy chế đào tạo.
TPHCM, ngày 12 tháng 10 năm 2023
Học viên thực hiện đề án
Nguyễn Phước Đại
ii
LỜI CÁM ƠN
Tôi xin gửi lời cảm ơn chân thành và sâu sắc đến TS. Huỳnh Trọng Thưa, người
thầy đã tận tâm và nhiệt tình trong việc hướng dẫn và động viên tơi suốt q trình
thực hiện đề án. Nhờ sự hỗ trợ của người thầy, tôi đã được định hướng và hồn thành
các mục tiêu mà tơi đã đề ra.
Tôi xin gửi lời tri ân chân thành đến các Thầy, Cơ đã đồng hành và tận tình
giảng dạy cho tơi suốt thời gian học tập trong chương trình Thạc sĩ Hệ thống thông
tin tại khoa Đào tạo Sau đại học, Học viện Cơng nghệ Bưu chính Viễn thơng cơ sở
tại thành phố Hồ Chí Minh.
Tơi muốn bày tỏ lịng biết ơn đến ban Giám Đốc Trung tâm Công nghệ Thông
tin – Viễn thông Tây Ninh đã tạo điều kiện thuận lợi cho q trình học tập của tơi.
Tơi biết ơn đến tất cả bạn bè đã động viên, hỗ trợ và đóng góp những ý kiến quý
báu cho đề án này. Đóng góp của các bạn đã giúp tơi hoàn thiện nghiên cứu này.
Đề án đã hoàn thành và đạt được một số kết quả nhất định, tuy vậy tơi thừa nhận
rằng cịn tồn tại những hạn chế và thiếu sót. Vì vậy, tơi chân thành mong nhận được
sự thơng cảm, sự đóng góp q báu từ q thầy cơ và các bạn để tơi có thể cải thiện,
nâng cao chất lượng của nghiên cứu này.
Một lần nữa tôi xin chân thành cảm ơn !
TPHCM, ngày 12 tháng 10 năm 2023
Học viên thực hiện đề án
Nguyễn Phước Đại
iii
MỤC LỤC
LỜI CAM ĐOAN ...................................................................................................... i
LỜI CÁM ƠN ........................................................................................................... ii
MỤC LỤC ................................................................................................................ iii
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT ............................................v
DANH SÁCH HÌNH VẼ ......................................................................................... vi
DANH SÁCH BẢNG ............................................................................................ viii
MỞ ĐẦU ....................................................................................................................1
CHƯƠNG 1 – TỔNG QUAN ...................................................................................2
2.1. Lý do chọn đề tài ..........................................................................................2
2.2. Mục đích nghiên cứu ...................................................................................2
2.3. Đối tượng và phạm vi nghiên cứu ..............................................................2
2.4. Phương pháp nghiên cứu ............................................................................3
2.5. Tính thực tiễn ...............................................................................................3
2.6. Bố cục trình bày đề án .................................................................................3
CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN ...5
2.1. Cơ sở lý thuyết .............................................................................................5
2.1.1.
Giới thiệu TensorFlow ........................................................................5
2.1.2.
Giới thiệu về OpenCV .........................................................................6
2.1.3.
Giới thiệu về Python ............................................................................8
2.2. Các nghiên cứu liên quan ............................................................................9
2.2.1.
Mơ hình VGG ......................................................................................9
2.2.2.
Mơ hình ResNet .................................................................................11
iv
2.2.3.
Mơ hình MobileNet ...........................................................................12
2.2.4.
Kiến trúc Finetune-MobileNet ..........................................................15
CHƯƠNG 3 – MƠ HÌNH ĐỀ XUẤT ....................................................................19
3.1. Chuẩn bị dữ liệu ........................................................................................19
3.1.1.
Tập dữ liệu .........................................................................................19
3.1.2.
Xử lý dữ liệu ......................................................................................19
3.2. Huấn luyện mơ hình ..................................................................................21
3.2.1.
Xử lý dữ liệu đầu vào ........................................................................21
3.2.2.
Xây dựng mơ hình .............................................................................22
3.2.3.
Huấn luyện mơ hình ..........................................................................24
3.2.4.
Kết quả huấn luyện mơ hình..............................................................24
3.2.5.
Mơ hình được chọn............................................................................29
3.3. Cải tiến mơ hình .........................................................................................30
3.3.1.
Kiến trúc Finetune-MobileNetV2 .....................................................30
3.3.2.
Phân nhóm độ hài lịng ......................................................................31
3.3.3.
Kết quả huấn luyện sau cải tiến .......................................................312
Chương 4 – THỰC NGHIỆM ................................................................................36
4.1. Thu thập thêm dữ liệu cảm xúc thực tế .....................................................36
4.2. Huấn luyện mơ hình .....................................................................................36
4.3. Triển khai mơ hình.......................................................................................36
4.4. Cài đặt thực nghiệm .....................................................................................38
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .............................................................41
DANH MỤC CÁC TÀI LIỆU THAM KHẢO .....................................................42
v
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Viết tắt
DCNN
Tiếng Anh
Deep Convolutional Neural
Networks
Mạng nơron tích chập sâu
Finetune
Tinh chỉnh
MobileNet
Mạng di động
VGG
Visual Geometry Group
ResNet
Residual Network
OpenCV
Tiếng Việt
Open Source Computer Vision
Thư viện thị giác máy tính
Library
mã nguồn mở
vi
DANH SÁCH HÌNH VẼ
Hình 1.1: Cấu hình ConvNet .............................................................................10
Hình 1.2: Kiến trúc cho ImageNet ....................................................................11
Hình 1.3: Tỷ lệ lỗi khi xác thực ImageNet. Mơ hình VGG-16, ResNet50/101/152 chỉ sử dụng phép chiếu để tăng kích thước ....................................12
Hình 1.4: Kiến trúc thân MobileNet .................................................................13
Hình 1.5: Lớp tích chập tiêu chuẩn: (a) với định mức hàng loạt và ReLU, (b)
Lớp tích chập theo chiều sâu với Depthwise và Pointwise ...............................14
Hình 1.6: Kiến trúc hệ thống MobileNet tinh chỉnh .........................................16
Hình 1.7: Mơ hình MobileNet CNN .................................................................17
Hình 1.8: Kiến trúc Finetuned MobileNet ........................................................18
Hình 2.1: Xử lý dữ liệu input ............................................................................22
Hình 2.2: Mơ hình ResNet50 ............................................................................23
Hình 2.3: Mơ hình VGG16 ...............................................................................23
Hình 2.4: Mơ hình MobileNetV2 ......................................................................23
Hình 2.5: Kết quả training với ResNet50..........................................................24
Hình 2.6: Kết quả training với VGG16 .............................................................25
Hình 2.7: Kết quả training với MobileNetV2 ...................................................25
Hình 2.8: Kết quả độ chính xác nhãn cảm xúc với VGG16 .............................26
Hình 2.9: Kết quả độ chính xác nhãn cảm xúc với ResNet50 ..........................27
Hình 2.10: Kết quả độ chính xác nhãn cảm xúc với MobileNetV2 ..................28
Hình 2.11: Biểu đồ so sánh giữa 3 mơ hình ......................................................29
Hình 3.1: Kiến trúc MobileNetV2 ....................................................................30
vii
Hình 3.2: Kết quả training với MobileNetV2 sau cải tiến ................................32
Hình 3.3: Biểu đồ độ chính xác của các nhãn cảm xúc với MobileNetV2 .......33
Hình 3.4: Biểu đồ so sánh giữa 4 mơ hình theo nhãn cảm xúc .........................35
Hình 4.1: Kiến trúc hệ thống thực nghiệm ........................................................36
Hình 4.2: Giao diện hệ thống demo ..................................................................38
Hình 4.3: Các bước đưa dữ liệu vào hệ thống để nhận dạng ............................39
Hình 4.4: Kết quả dự đốn cảm xúc qua nhận dạng khn mặt .......................39
Hình 4.5: Kết quả dữ liệu nhận dạng chưa chuẩn xác hoàn toàn ......................40
viii
DANH SÁCH BẢNG
Bảng 1.1: Kết quả kiểm thử mơ hình VGG16 đã training ................................26
Bảng 1.2: Kết quả kiểm thử mô hình ResNet50 đã training .............................27
Bảng 1.3: Kết quả kiểm thử mơ hình MobileNetV2 đã training ......................28
Bảng 1.4: Kết quả so sánh giữa 3 mơ hình .......................................................29
Bảng 2.1: Kết quả 8 lớp cảm xúc chạy thử MobileNetV2 sau cải tiến .............32
Bảng 2.2: Kết quả so sánh giữa kỹ thuật đóng băng 5 lớp, 20 lớp và 40 lớp ...33
Bảng 2.3: Kết quả kiểm thử mơ hình Finetune20-MobileNetV2 đã training ...34
Bảng 2.4: Kết quả kiểm thử 4 mơ hình .............................................................34
1
MỞ ĐẦU
Trong thời đại số hóa và phát triển cơng nghệ như hiện nay, ứng dụng của trí
tuệ nhân tạo và học máy đã mang lại những tiến bộ đáng kể trong nhiều lĩnh vực, đặc
biệt là trong việc nhận dạng và xử lý dữ liệu hình ảnh. Một trong những ứng dụng
quan trọng của học máy trong lĩnh vực này là khả năng nhận dạng cảm xúc mặt người,
góp phần nâng cao khả năng tương tác giữa con người và máy tính.
Cảm xúc mặt người chứa đựng những thơng điệp quan trọng về tâm trạng, tình
cảm và thái độ của một cá nhân tại thời điểm cụ thể. Để hiểu được những thơng điệp
này, máy tính cần có khả năng xử lý và nhận biết các đặc điểm trong hình ảnh khn
mặt, từ đó phân loại cảm xúc như vui vẻ, buồn bã, tức giận, sợ hãi, kinh ngạc, và ghét
bỏ. Trong bối cảnh này, việc sử dụng mô hình Deep Convolutional Neural Networks
(DCNN) và kỹ thuật Fine-tune đã chứng minh sự hiệu quả trong việc xây dựng các
hệ thống nhận dạng cảm xúc mặt người.
Mơ hình MobileNet, một loại mơ hình DCNN, đã được phát triển để đáp ứng
nhu cầu trong việc xử lý hình ảnh trên các thiết bị có tài nguyên hạn chế như điện
thoại di động và thiết bị nhúng. Kết hợp với kỹ thuật Fine-tune, mơ hình MobileNet
có thể được tinh chỉnh và đào tạo lại trên dữ liệu cụ thể, giúp nâng cao khả năng nhận
dạng cảm xúc mặt người trên các tập dữ liệu cụ thể.
Đề án tốt nghiệp này nhằm khám phá tiềm năng của mơ hình MobileNet và kỹ
thuật Fine-tune trong việc xây dựng hệ thống nhận dạng cảm xúc mặt người. Qua
việc nghiên cứu và thực nghiệm, mong muốn rằng luận văn sẽ đóng góp vào sự phát
triển của lĩnh vực này và mở ra những hướng nghiên cứu tiềm năng trong tương lai.
2
CHƯƠNG 1 – TỔNG QUAN
2.1.
Lý do chọn đề tài
Hiện nay, một phần rất quan trọng trong chiến lược sản xuất kinh doanh của
nhiều doanh nghiệp là công tác đánh giá độ hài lịng của khách hàng. Ngồi các
phương pháp truyền thống là khảo sát trực tiếp ý kiến khách hàng ngay tại điểm giao
dịch, gửi liên kết đánh giá trực truyến…, thì một phương pháp được đề cập đến là
nhận dạng cảm xúc khuôn mặt để đánh giá độ hài lòng của khách hàng khi trải nghiệm
dịch vụ.
Xây dựng một ứng dụng thử nghiệm khả năng nhận dạng cảm xúc trên mặt
người từ các tập dữ liệu mở trên internet, đánh giá tính khả thi trước khi phát triển ý
tưởng thành ứng dụng hoàn chỉnh áp dụng vào thực tế. Nên việc đề xuất giải pháp
“Ứng dụng phương pháp học sâu vào nhận dạng cảm xúc để đánh giá độ hài
lịng khách hàng” là có tính thiết thực và mang tính ứng dụng cao.
2.2.
Mục đích nghiên cứu
Đề án “Ứng dụng phương pháp học sâu vào nhận dạng cảm xúc để đánh giá độ
hài lòng khách hàng” hướng tới một ứng dụng có chức năng phát hiện ra khn mặt
người và nhận dạng cảm xúc trên khn mặt đó như giận giữ, khinh thường, sợ hãi,
vui vẻ/hạnh phúc, bình thường, buồn, ngạc nhiên. Thông qua nghiên cứu các phương
pháp học máy cho bài toán nhận dạng cảm xúc mặt người và ngơn ngữ lập trình
Python, đề án muốn xây dựng một ứng dụng có thể nhận dạng được cảm xúc của
khn mặt người từ đó đánh giá độ hài lịng của khách hàng.
2.3.
Đối tượng và phạm vi nghiên cứu
Với mục tiêu đặt ra ở trên, đề án thực hiện những vấn đề sau:
- Đối tượng nghiên cứu là các phương pháp phát hiện khuôn mặt người và nhận
dạng cảm xúc của khn mặt qua đó lựa chọn một phương pháp phù hợp. Tìm hiểu
và đề xuất một phương pháp cụ thể.
- Nghiên cứu và sử dụng phương pháp học máy, cụ thể là là mơ hình MobileNet
để phân loại cảm xúc của khách hàng.
3
- Phạm vi thực hiện: sử dụng tập dữ liệu trên Kaggle để huấn luyện và đưa ra
kỹ thuật tối ưu mơ hình áp dụng.
2.4.
Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Mô tả kiến thức về mạng nơron và học
sâu cần thiết để hiểu về mơ hình MobileNet. Phân tích chi tiết cách MobileNet hoạt
động, cách áp dụng vào bài toán phân loại cảm xúc.
- Phương pháp nghiên cứu thực nghiệm: Trình bày quy trình xây dựng tập dữ
liệu, tiền xử lý, huấn luyện và đánh giá mơ hình. Thử nghiệm nhiều mơ hình khác
nhau như VGG,Resnet, thử nghiệm kỹ thuật Finetune với mơ hình MobileNet để tăng
độ chính xác.
2.5.
Tính thực tiễn
Đề án nghiên cứu một số kỹ thuật, các mơ hình hỗ trợ cho việc phát hiện và
nhận dạng cảm xúc mặt người.
Bên cạnh đó, đề án này góp phần xây dựng ứng dụng nhận dạng cảm mặt người
để áp dụng đánh giá độ hài lòng khách hàng trong thực tiễn.
2.6.
Bố cục trình bày đề án
Nội dung của đề án được chia thành các phần như sau:
MỞ ĐẦU
CHƯƠNG 1 – TỔNG QUAN
- Lý do thực hiện đề tài, mục đích nghiên cứu Ứng dụng phương pháp học sâu
vào nhận dạng cảm xúc để đánh giá độ hài lòng khách hàng.
- Đối tượng nghiên cứu, phạm vi nghiên cứu và phương pháp nghiên cứu
- Tính thực tiễn
- Trình bày bố cục chính của đề án
CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU LIÊN QUAN
- Giới thiệu các thư viện sử dụng: Tensorflow, Python , OpenCV
- Giới thiệu các mơ hình pretrained: VGG, Resnet, MobilenetV2
CHƯƠNG 3 – MƠ HÌNH ĐỀ XUẤT
4
- Phương pháp đề xuất được huấn luyện trên bộ dữ liệu “Facial Expressions
Training Data” trên Kaggle
- Để giải quyết bài toán cần xem xét thực hiện hai bước: giai đoạn huấn luyện
và giai đoạn thử nghiệm
- Trình bày cách thực hiện gồm: chuẩn bị dữ liệu, xử lý dữ liệu, huấn luyện mơ
hình và đưa ra kết quả bằng mơ hình MobileNetV2 kết hợp kỹ thuật Fine-tune
CHƯƠNG 4 – THỰC NGHIỆM
- Xây dựng ứng dụng thử nghiệm nền web để xử lý nhận dạng cảm xúc mặt
người từ các nguồn dữ liệu đầu vào.
- Kết quả thực nghiệm.
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
DANH MỤC TÀI LIỆU THAM KHẢO
5
CHƯƠNG 2 – CƠ SỞ LÝ THUYẾT VÀ CÁC NGHIÊN CỨU
LIÊN QUAN
2.1.
Cơ sở lý thuyết
2.1.1. Giới thiệu TensorFlow
TensorFlow là một thư viện mã nguồn mở của Google dành cho học máy và trí
tuệ nhân tạo. Nó được phát triển ban đầu để tạo ra mơ hình học máy và mạng nơron
một cách dễ dàng và hiệu quả. Từ đó, TensorFlow đã trở thành một trong những thư
viện phổ biến nhất và mạnh mẽ nhất trong lĩnh vực học máy, cho phép nhà nghiên
cứu và nhà phát triển tạo ra và triển khai các mơ hình phức tạp. [4]
Đặc điểm chính của TensorFlow:
- Data Flow Graphs (Đồ thị luồng dữ liệu): TensorFlow sử dụng cơ chế biểu
diễn mơ hình thơng qua đồ thị luồng dữ liệu. Trong đồ thị này, các node đại diện cho
các phép toán và các cạnh đại diện cho dữ liệu chạy qua các phép toán. Điều này tạo
ra cơ sở cho việc phân tán tính tốn và tối ưu hóa.
- Static and Dynamic Computation (Tính tốn tĩnh và động): TensorFlow hỗ trợ
cả tính tốn tĩnh và tính tốn động. Trong tính tốn tĩnh, đồ thị tính tốn được xác
định trước và tối ưu hóa trước khi chạy. Trong tính tốn động, bạn có thể tạo ra và
thay đổi đồ thị trong quá trình chạy, đặc biệt hữu ích trong việc xây dựng các mơ hình
có cấu trúc linh hoạt hơn.
- High-level APIs và Low-level APIs: TensorFlow cung cấp cả hai loại API.
High-level APIs như Keras giúp bạn xây dựng và huấn luyện mơ hình một cách dễ
dàng, trong khi Low-level APIs cho phép bạn tùy chỉnh và kiểm sốt chi tiết hơn của
q trình tính tốn.
- Auto Differentiation (Tự động đạo hàm): TensorFlow có khả năng tính tốn
tự động đạo hàm, giúp bạn dễ dàng tính toán đạo hàm của các biểu thức phức tạp
trong quá trình huấn luyện mơ hình.
6
- Hỗ trợ đa nền tảng: TensorFlow không chỉ hỗ trợ CPU mà còn hỗ trợ GPU và
TPU (Tensor Processing Unit) để gia tăng tốc độ tính tốn, đặc biệt trong các mơ hình
sâu và phức tạp.
- Community lớn và sự phát triển liên tục: TensorFlow có một cộng đồng lớn
và đa dạng, đồng thời Google và cộng đồng đang liên tục phát triển thư viện, cung
cấp cập nhật và cải tiến thường xuyên.
Ứng dụng của TensorFlow:
- Học máy và trí tuệ nhân tạo: TensorFlow được sử dụng rộng rãi để xây dựng,
đào tạo và triển khai các mơ hình học máy và trí tuệ nhân tạo trên nhiều lĩnh vực như
nhận dạng hình ảnh, xử lý ngơn ngữ tự nhiên, dự báo, và nhiều ứng dụng khác.
- Nghiên cứu và phát triển mới: Các nhà nghiên cứu và nhà phát triển có thể sử
dụng TensorFlow để thử nghiệm các ý tưởng mới, thiết kế các mơ hình tùy chỉnh và
thực nghiệm các giải pháp trong lĩnh vực trí tuệ nhân tạo.
- Triển khai sản phẩm: TensorFlow cũng có khả năng triển khai các mơ hình đã
xây dựng vào các sản phẩm thực tế, từ ứng dụng di động, ứng dụng web cho đến hệ
thống nhúng.
Tóm lại, TensorFlow là một công cụ mạnh mẽ và đa dạng trong lĩnh vực học
máy và trí tuệ nhân tạo, cho phép bạn xây dựng và triển khai các mơ hình từ cơ bản
đến phức tạp, đáp ứng nhiều nhu cầu khác nhau trong cộng đồng nghiên cứu và phát
triển.
2.1.2. Giới thiệu về OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện mã nguồn
mở chuyên dụng cho xử lý hình ảnh và thị giác máy tính. Được phát triển bởi Intel
vào năm 1999 [5], OpenCV đã trở thành một công cụ quan trọng trong lĩnh vực xử
lý hình ảnh, hỗ trợ cho việc phân tích, xử lý và hiểu thơng tin từ dữ liệu hình ảnh.
Chức năng chính của OpenCV:
- Xử lý ảnh và video: OpenCV cung cấp nhiều chức năng để thực hiện các thao
tác xử lý cơ bản như lọc, biến đổi, cắt, ghép, xoay, đảo ngược hình ảnh và video.
7
- Phân tích đối tượng và thị giác máy tính: OpenCV hỗ trợ việc phát hiện, theo
dõi, và phân loại đối tượng trong hình ảnh và video. Điều này bao gồm nhận dạng
khuôn mặt, đối tượng, và các đặc trưng quan trọng khác.
- Phát hiện và theo dõi đường viền: OpenCV có khả năng phát hiện đường viền
trong hình ảnh, cho phép bạn xác định các hình dạng và cạnh.
- Xử lý dữ liệu từ camera: OpenCV cho phép bạn truy cập và xử lý dữ liệu từ
các thiết bị camera, giúp xây dựng các ứng dụng thị giác máy tính thời gian thực.
- Xử lý ảnh y tế và khoa học: OpenCV cũng được sử dụng trong lĩnh vực y tế
và khoa học, giúp phân tích và xử lý dữ liệu hình ảnh y học và khoa học.
- Phát triển ứng dụng thị giác máy tính: OpenCV cung cấp API và công cụ phát
triển để xây dựng các ứng dụng thị giác máy tính trực quan và mạnh mẽ.
Đặc điểm chính của OpenCV:
- Đa nền tảng: OpenCV được hỗ trợ trên nhiều hệ điều hành như Windows,
Linux, macOS và cả Android.
- Hỗ trợ nhiều ngơn ngữ lập trình: OpenCV có API cho nhiều ngơn ngữ như
C++, Python, Java, và C#.
- Cộng đồng lớn và sự phát triển liên tục: OpenCV có một cộng đồng đơng đảo
và tích cực, giúp duy trì và phát triển thư viện, cũng như cung cấp hỗ trợ, tài liệu và
ví dụ cho người dùng.
- Hỗ trợ phân tán tính tốn: OpenCV hỗ trợ tính toán phân tán để tận dụng khả
năng xử lý song song của các máy tính.
- Tiện ích trong việc học máy và trí tuệ nhân tạo: OpenCV cung cấp các cơng
cụ hữu ích để xử lý và trích xuất dữ liệu hình ảnh để sử dụng trong các mơ hình học
máy và trí tuệ nhân tạo.
Ứng dụng của OpenCV:
- Xử lý hình ảnh y tế: OpenCV có thể giúp phát hiện và phân tích các vùng khối
u, dấu vết trong hình ảnh y học.
- Nhận dạng khn mặt và đối tượng: OpenCV được sử dụng rộng rãi trong các
ứng dụng nhận dạng khuôn mặt, phát hiện đối tượng và nhận dạng vật thể.
8
- Xử lý ảnh và video trong ứng dụng di động và web: OpenCV cung cấp các
công cụ phù hợp cho việc xử lý ảnh và video trong các ứng dụng di động và web.
- Robotics và tự động hóa: OpenCV có thể được sử dụng trong các ứng dụng
robotics và tự động hóa để nhận biết và tương tác với mơi trường.
Tóm lại, OpenCV là một thư viện quan trọng và mạnh mẽ trong lĩnh vực xử lý
hình ảnh và thị giác máy tính, hỗ trợ cho việc xây dựng và triển khai các ứng dụng
thị giác máy tính đa dạng và mạnh mẽ.
2.1.3. Giới thiệu về Python
Python là một ngơn ngữ lập trình mã nguồn mở, có cú pháp đơn giản và dễ đọc,
được phát triển bởi Guido van Rossum và được ra mắt lần đầu vào năm 1991. Python
được thiết kế để dễ dàng đọc, viết và hiểu, giúp cho người lập trình tập trung vào giải
quyết vấn đề thay vì tốn thời gian với cú pháp phức tạp.[6]
Đặc điểm chính của Python:
- Cú pháp đơn giản và rõ ràng: Python sử dụng cú pháp rất giống với ngôn ngữ
tự nhiên, giúp dễ dàng học và sử dụng.
- Dễ đọc và dễ hiểu: Code Python thường rất dễ đọc, người mới học lập trình
cũng có thể nhanh chóng hiểu và viết mã.
- Thư viện và cộng đồng phong phú: Python có một hệ thống thư viện rộng lớn,
hỗ trợ cho nhiều lĩnh vực khác nhau như xử lý hình ảnh, học máy, web development,
xử lý dữ liệu, và nhiều ứng dụng khác.
- Hỗ trợ đa nền tảng: Python có thể chạy trên nhiều nền tảng như Windows,
macOS và Linux.
- Học và nghiên cứu: Python là một ngôn ngữ phổ biến trong lĩnh vực học tập
và nghiên cứu, với nhiều tài liệu, sách và khóa học chất lượng.
Ứng dụng của Python:
- Web Development: Python được sử dụng trong việc xây dựng các trang web
và ứng dụng web sử dụng các framework như Django và Flask.
- Xử lý dữ liệu và phân tích: Python là ngơn ngữ ưa thích cho việc xử lý và phân
tích dữ liệu, với các thư viện như NumPy, Pandas và Matplotlib.
9
- Học máy và trí tuệ nhân tạo: Python là một ngôn ngữ phổ biến trong lĩnh vực
học máy và trí tuệ nhân tạo, với các thư viện như TensorFlow, PyTorch và Scikitlearn.
- Ứng dụng di động và phát triển game: Python có thể được sử dụng trong phát
triển ứng dụng di động sử dụng các framework như Kivy và BeeWare, cũng như trong
phát triển game.
- Xử lý hình ảnh và thị giác máy tính: Python có thể được sử dụng để xây dựng
các ứng dụng xử lý hình ảnh và thị giác máy tính sử dụng thư viện OpenCV.
2.2.
Các nghiên cứu liên quan
2.2.1. Mơ hình VGG
Kiến trúc mạng VGG là một dạng kiến trúc mạng nơron tích chập sâu (CNN)
được giới thiệu trong bài báo "Very Deep Convolutional Networks For Large-scale
Image Recognition" của Karen Simonyan và Andrew Zisserman [1]. Kiến trúc này
được thiết kế để thực hiện nhận dạng hình ảnh trên quy mơ lớn và đã đạt được hiệu
suất ấn tượng trên các tập dữ liệu như ImageNet.
Mô tả kiến trúc VGG:
- Lớp đầu vào (Input Layer): Mạng VGG khởi đầu bằng một lớp đầu vào
(input layer) được dùng để chứa hình ảnh đầu vào.
- Lớp tích chập (Convolutional Layer): Mạng VGG sử dụng một chuỗi các
lớp tích chập với kích thước nhỏ (3x3) và bước nhảy là 1. Những lớp tích chập này
thực hiện việc học các đặc trưng cục bộ từ hình ảnh.
- Lớp gộp (Pooling Layer): Sau mỗi lớp tích chập, một lớp gộp (pooling layer)
được thêm vào với kích thước là 2x2 và bước nhảy là 2. Lớp gộp này giúp giảm kích
thước dữ liệu, tăng tính trừu tượng và giảm số lượng tham số.
- Lớp kết nối đầy đủ (Fully Connected Layer): Sau chuỗi các lớp tích chập
và gộp, mạng VGG sử dụng một hoặc vài lớp kết nối đầy đủ để học các mối quan hệ
toàn cục giữa các đặc trưng.
10
- Lớp đầu ra (Output Layer): Cuối cùng, kiến trúc VGG kết thúc với một lớp
đầu ra (output layer) chứa số lượng nơ-ron tương ứng với số lượng lớp phân loại (ví
dụ: số lượng lớp trong bộ dữ liệu ImageNet).
- Hàm kích hoạt (Activation Function): Giữa các lớp, hàm kích hoạt thường
được áp dụng, thường là hàm ReLU (Rectified Linear Activation), nhằm tăng tính
khơng tuyến tính và giảm tình trạng mất mát đạo hàm.
Hình 1.1: Cấu hình ConvNet
- Các phiên bản phổ biến: Một số phiên bản phổ biến của mạng VGG là
VGG16 và VGG19. VGG16 bao gồm tổng cộng 16 lớp, với 13 lớp tích chập và 3 lớp
kết nối đầy đủ. VGG19 cũng tuân theo cấu trúc tương tự, nhưng có tổng cộng 19 lớp.
11
2.2.2. Mơ hình ResNet
Kiến trúc mạng ResNet50 (Residual Network 50) là một dạng kiến trúc mạng
nơron tích chập sâu (CNN) đặc biệt, được giới thiệu trong bài báo "Deep Residual
Learning for Image Recognition" của Kaiming He, Xiangyu Zhang, Shaoqing Ren,
và Jian Sun vào năm 2015 [2]. Mơ hình ResNet50 đã giải quyết vấn đề biến mất đạo
hàm và cho phép xây dựng các mạng cực sâu với hiệu suất tốt hơn.
Hình 1.2: Kiến trúc cho ImageNet
Mơ tả kiến trúc ResNet50:
- Lớp đầu vào (Input Layer): Mạng ResNet50 nhận dữ liệu hình ảnh làm đầu
vào. Kích thước của hình ảnh thường là cố định (ví dụ: 224x224 pixel) để đảm bảo
tính nhất quán trong quá trình huấn luyện.
- Lớp tiền xử lý (Preprocessing Layer): Trước khi đưa vào mạng, dữ liệu hình
ảnh thường được tiền xử lý để chuẩn hóa và chuẩn hóa độ tương phản.
- Lớp tích chập và gộp đầu tiên: Mạng ResNet50 bắt đầu với một lớp tích chập
lớn kết hợp với lớp gộp (pooling layer) để giảm kích thước dữ liệu.
- Residual Blocks: Điểm đặc biệt của ResNet50 là việc sử dụng các khối còn
gọi là "residual blocks." Mỗi khối này bao gồm một chuỗi các lớp tích chập liên tiếp,
được nối với đầu vào của khối thông qua một kết nối gọi là "shortcut connection."
Kết nối này cho phép thông tin trực tiếp truyền qua mà khơng qua các lớp tích chập,
12
giúp giảm thiểu hiện tượng biến mất đạo hàm và cho phép huấn luyện mạng sâu hơn
mà không gặp vấn đề gradient vanishing.
- Lớp kết nối đầy đủ và lớp đầu ra: Sau khi thông qua chuỗi các khối residual,
mạng ResNet50 kết thúc bằng một lớp kết nối đầy đủ và một lớp đầu ra, thường là
một lớp phân loại với số lượng nơ-ron tương ứng với số lượng lớp phân loại.
- Hàm kích hoạt: Giữa các lớp, hàm kích hoạt ReLU (Rectified Linear
Activation) thường được sử dụng để tăng tính khơng tuyến tính và giảm tình trạng
mất mát gradient.
Hình 1.3: Tỷ lệ lỗi khi xác thực ImageNet. Mơ hình VGG-16, ResNet-50/101/152 chỉ
sử dụng phép chiếu để tăng kích thước
Mơ hình ResNet50 cùng với các phiên bản khác như ResNet101 và ResNet152
đã chứng minh khả năng huấn luyện mạng sâu với số lớp lên đến hàng trăm và đạt
được hiệu suất ấn tượng trên các bộ dữ liệu nhận dạng hình ảnh khác nhau.
2.2.3. Mơ hình MobileNet
Kiến trúc mạng MobileNet là một dạng kiến trúc mạng nơron tích chập sâu
(CNN) được thiết kế để có hiệu suất cao và tối ưu hóa cho các thiết bị di động có tài
nguyên tính tốn hạn chế. Kiến trúc MobileNet được xác định trong Hình 1.4. [3]
13
Hình 1.4: Kiến trúc thân MobileNet
Tất cả các lớp được theo sau bởi một định mức hàng loạt và tính phi tuyến
ReLU, ngoại trừ lớp được kết nối đầy đủ cuối cùng khơng có tính phi tuyến và được
đưa vào một lớp softmax để phân loại. Hình 1.5. đối chiếu một lớp có tích chập thơng
thường, định mức hàng loạt và tính phi tuyến ReLU với lớp nhân tố có tích chập theo
chiều sâu, tích chập theo chiều 1 × 1 cũng như định mức hàng loạt và ReLU sau mỗi
lớp tích chập. Việc lấy mẫu xuống được xử lý với phép tích chập theo chiều sâu cũng
như trong lớp đầu tiên. Tổng hợp trung bình cuối cùng làm giảm độ phân giải không
gian xuống 1 trước lớp kết nối đầy đủ. Đếm các tổ hợp theo chiều sâu và theo điểm
như các lớp riêng biệt, MobileNet có 28 lớp. [3]
14
Hình 1.5: Lớp tích chập tiêu chuẩn: (a) với định mức hàng loạt và ReLU, (b) Lớp tích
chập theo chiều sâu với Depthwise và Pointwise
Mơ hình này tập trung vào việc giảm kích thước mơ hình và tối ưu hóa hoạt
động của nó trên các thiết bị có tài nguyên hạn chế như điện thoại di động và thiết bị
nhúng.
Mô tả về MobileNet: [4]
- Lớp đầu vào (Input Layer): Mạng MobileNet nhận dữ liệu hình ảnh làm đầu
vào. Kích thước của hình ảnh thường được xác định tùy thuộc vào ứng dụng cụ thể,
nhưng thường là một kích thước chuẩn (ví dụ: 224x224 pixel).
- Lớp tích chập chính: MobileNet tập trung vào việc sử dụng các lớp tích chập
nhưng với một chiến lược mới để giảm số lượng tham số và tính tốn. Cụ thể, thay vì
sử dụng các lớp tích chập có kích thước lớn, MobileNet sử dụng các lớp tích chập có
kích thước nhỏ (ví dụ: 3x3 hoặc 1x1) để giảm tải tính tốn.
- Depthwise Separable Convolution: Thay vì sử dụng lớp tích chập thơng
thường, MobileNet sử dụng kỹ thuật Depthwise Separable Convolution. Kỹ thuật này
phân chia quá trình tích chập thành hai bước: convolution độc lập trên từng kênh và
sau đó, convolution 1x1 để kết hợp các đặc trưng.
- Lớp gộp (Pooling Layer): MobileNet cũng sử dụng các lớp gộp như thơng
thường để giảm kích thước dữ liệu và tăng tính trừu tượng.
15
- Lớp kết nối đầy đủ và lớp đầu ra: Sau khi thơng qua một số lớp tích chập và
gộp, mạng MobileNet kết thúc bằng một hoặc một vài lớp kết nối đầy đủ và lớp đầu
ra, thường là lớp phân loại.
- Hàm kích hoạt: Giữa các lớp, hàm kích hoạt ReLU (Rectified Linear
Activation) thường được áp dụng để tăng tính khơng tuyến tính.
Kiến trúc MobileNet được thiết kế để đạt được cân bằng giữa hiệu suất và tài
nguyên tính tốn. Điều này làm cho nó phù hợp cho các ứng dụng yêu cầu xử lý hình
ảnh trên các thiết bị di động và có tài nguyên hạn chế.
2.2.4. Kiến trúc Finetune-MobileNet
Các nguyên tắc của mạng nơron nhân tạo được sử dụng trong các kỹ thuật học
máy. Các kỹ thuật học máy đã được áp dụng cho kiến trúc vét cạn để giải quyết các
vấn đề có cấu trúc tốt, được gắn nhãn tốt, nhưng các kỹ thuật học máy không đủ năng
lực để giải quyết các vấn đề không có cấu trúc và khơng có nhãn trong thế giới thực
như phân loại và nhận dạng hình ảnh, nhận dạng giọng nói của con người, phát hiện
giọng nói tự nhiên và phát hiện đối tượng.
Hệ thống MobileNet tinh chỉnh được mơ tả trong Hình 1.6, hệ thống đề xuất
bao gồm các giai đoạn khác nhau. Nó bao gồm thu thập và thu thập hình ảnh từ tập
dữ liệu có sẵn cơng khai, tiền xử lý hình ảnh, chú thích hình ảnh, phân đoạn, trích
xuất tính năng và dữ liệu phân loại được đặt thành dữ liệu đào tạo, xác thực, thử
nghiệm. Mơ hình MobileNet tinh chỉnh được đào tạo với bộ dữ liệu được đào tạo.
Mơ hình Mobilenet tinh chỉnh được xác thực bằng bộ dữ liệu thử nghiệm.