Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

ĐẠI HỌC BÁCH KHOA HÀ NỘI

TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG


──────── * ────────

BÀI TẬP LỚN


THỊ GIÁC MÁY TÍNH

ỨNG DỤNG THỊ GIÁC MÁY TÍNH TRONG


NHẬN DIỆN NỤ CƯỜI

Sinh viên thực hiện Mã sinh viên


Nguyễn Trọng Hải 20183730
Phạm Minh Hiệp 20183738
Nguyễn Minh Đức 20183713
Trương Công Kiên 20183778

Lớp : Kỹ thuật máy tính – Khóa 63


Giảng viên hướng dẫn : TS. Đinh Viết Sang

Hà Nội, tháng 1 năm 2022


Thị giác máy tính 20211

MỤC LỤC
DANH SÁCH HÌNH ẢNH.......................................................................................3
DANH SÁCH BẢNG BIỂU.....................................................................................4
PHÂN CÔNG CÔNG VIỆC.....................................................................................4
I. Giới thiệu và mô tả bài toán................................................................................6
1. Đặt vấn đề........................................................................................................6
2. Mô tả bài toán..................................................................................................6
II. Data set.............................................................................................................6
III. Mạng LE-NET.................................................................................................7
1. Một số mạng Le-Net........................................................................................7
1.1. Mạng Le-Net 1..................................................................................................7
1.2. Mạng Le-Net 4..................................................................................................8
1.3. Mạng Le-Net 5..................................................................................................8
IV. Mạng BK-NET.................................................................................................9
1. Cấu trúc mạng BKNet......................................................................................9
V. Thực nghiệm và đánh giá...............................................................................11
1. Thực nghiệm và đánh giá mạng Le-Net.........................................................11
1.1. Lý thuyết liên quan đến thực nghiệm và đánh giá...........................................11
1.1.1 Chuẩn bị input và chia tập train/test.........................................................11
1.1.2 Sử dụng Keras-Tensorflow để xây dựng mô hình....................................12
1.1.3 Mô tả hàm compile()...................................................................................12
1.1.4 Mô tả hàm fit().............................................................................................13
1.1.5 Cách đánh giá mô hình...............................................................................13
1.2. Thực nghiệm và đánh giá mạng Le-Net 1.......................................................13
1.2.1 Thực nghiệm mạng Le-Net 1......................................................................13
1.2.2 Đánh giá mạng Le-Net 1.............................................................................14
1.3. Thực nghiệm và đánh giá mạng Le-Net 4.......................................................14
1.3.1 Thực nghiệm mạng Le-Net 4......................................................................14
1.3.2 Đánh giá mạng Le-Net 4.............................................................................15
1.4. Thực nghiệm và đánh giá mạng Le-Net 5.......................................................16
1.4.1 Thực nghiệm mạng Le-Net 5......................................................................16
1.4.2 Đánh giá mạng Le-Net 5.............................................................................17
Page 2
Thị giác máy tính 20211

2. Cải tiến Le-Net 4............................................................................................17


2.1. Thêm một lớp tích chập và sử dụng Dropout..................................................17
2.2. Đánh giá cải tiến Le-Net 4...............................................................................20
3. Sử dụng mạng BK-NET.................................................................................21
3.1. Thực nghiệm BKNet.......................................................................................21
3.2. Đánh giá BKNet..............................................................................................22
3.3. So sánh LeNet 4 sau cải tiến với BKNet.........................................................23
VI. Kết quả chạy thử............................................................................................23
1. Sử dụng Haar Cascade để nhận diện khuôn mặt............................................23
2. Chạy thử với mạng Le-Net............................................................................24
3. Chạy thử với mạng BK-Net...........................................................................24
VII. Kết luận.......................................................................................................24
VIII. Tài liệu tham khảo......................................................................................25

DANH SÁCH HÌNH ẢNH


Hình 1: Ảnh khác kích thước, sau khi tiền xử lý................................................................6
Hình 2: Sự phát triển của CNN..........................................................................................7
Hình 3: Kiến trúc mạng Le-Net 1.......................................................................................7
Hình 4: Kiến trúc mạng Le-Net 4.......................................................................................8
Hình 5: Kiến trúc mạng Le-Net 5.......................................................................................9
Hình 6: Cấu trúc mạng CNN share network.....................................................................10
Hình 7: Cấu trúc mạng BKNet.........................................................................................11
Hình 8: Ảnh 64x64x3 (bên trái) được đưa vè ảnh 32x32x1 (bên phải)............................12
Hình 9: Kết quả train Le-Net 1 (Average pooling)...........................................................13
Hình 10: Kết quả train Le-Net 1 (Max pooling)...............................................................14
Hình 11: Kết quả train Le-Net 4 (Average pooling).........................................................15
Hình 12: Kết quả train Le-Net 4 (Max pooling)...............................................................15
Hình 13: Kết quả train Le-Net 5 (Average pooling).........................................................16
Hình 14: Kết quả train Le-Net 5 (Max pooling)...............................................................16
Hình 15: Kiến trúc mạng Le-Net 4 cải tiến......................................................................18
Hình 16: Kết quả train Le-Net 4 cải tiến (Dropout = 0.2)................................................19
Hình 17: Kết quả train Le-Net 4 cải tiến (Dropout = 0.4)................................................19
Hình 18: Kết quả train Le-Net 4 cải tiến (Thêm 16 bộ lọc ở lớp tích chập).....................19
Hình 19: Kết quả train Le-Net 4 cải tiến (Thêm 8 bộ lọc ở lớp tích chập).......................20
Hình 20: Kết quả train Le-Net 4 cải tiến (Thêm 6 bộ lọc ở lớp tích chập).......................20
Hình 21: Kết quả train BKNet..........................................................................................22
Page 3
Thị giác máy tính 20211

Hình 22: Đánh giá loss của BKNet..................................................................................22


Hình 23: Độ chính xác của BK Net..................................................................................23
Hình 24: Kết quả demo LeNet.........................................................................................24
Hình 25: Kết quả demo BKNet........................................................................................24

DANH SÁCH BẢNG BIỂU


Bảng 1: So sánh độ chính xác giữa Max-pooling và Average-pooling trong Le-Net 1....14
Bảng 2: So sánh độ chính xác giữa Max-pooling và Average-pooling trong Le-Net 4....16
Bảng 3: So sánh độ chính xác giữa Max-pooling và Average-pooling trong Le-Net 5....17
Bảng 4: So sánh độ chính xác giữa Le-Net 4 và Le-Net 4 cải tiến...................................20
Bảng 5: So sánh độ chính xác giữa Le-Net 4 cải tiến (Dropout = 0) và Le-Net 4 cải tiến
(Dropout = 0.4)................................................................................................................21
Bảng 6: So sánh độ chính xác giữa Le-Net 4 cải tiến (16 bộ lọc) và Le-Net 4 cải tiến (6
bộ lọc).............................................................................................................................. 21

PHÂN CÔNG CÔNG VIỆC


Nhiệm vụ Người tham gia

Mô tả bài toán Nguyễn Minh Đức, Phạm Minh Hiệp

Tiền xử lý dữ liệu Trương Công Kiên, Nguyễn Minh Đức

Gán nhãn dữ liệu Trương Công Kiên, Nguyễn Minh Đức

Tìm hiểu mô hình LeNet Nguyễn Trọng Hải, Phạm Minh Hiệp

Chạy thử và đánh giá mô hình LeNet Nguyễn Trọng Hải, Nguyễn Minh Đức

Cái tiến mô hình LeNet Nguyễn Trọng Hải, Nguyễn Minh Đức

Tìm hiểu mô hình BKNet Phạm Minh Hiệp, Trương Công Kiên

Chạy thử và đánh giá mô hình BKNet Phạm Minh Hiệp, Trương Công Kiên

Page 4
Thị giác máy tính 20211

Demo Nguyễn Minh Đức, Trương Công Kiên

Báo cáo Nguyễn Trọng Hải, Phạm Minh Hiệp

Slides Nguyễn Trọng Hải

Page 5
Thị giác máy tính 20211

I. Giới thiệu và mô tả bài toán


1. Đặt vấn đề
Có rất nhiều khoảnh khắc đẹp trong cuộc sống, trong đó, nụ cười của mỗi
người luôn là một khoảnh khắc vô cùng đẹp. Con người thường hay cười khi
vui, khi phấn khích, … Nhưng những trạng thái cảm xúc đó thường không kéo
dài đủ lâu, cho đủ nhiều người đều có thể đẹp trong một khung hình nào đó.
Nhận diện khuôn mặt, chi tiết hơn là nhận diện nụ cười là một bài toán không
còn mới nhưng luôn là như vậy, công nghệ giúp cuộc sống con người và lưu
giữ những nụ cười qua những chiếc camera “thông minh hơn”.
2. Mô tả bài toán
Nhóm chọn bài toán này để làm quen với việc áp dụng những kiến thức đã
học liên quan đến Thị giác máy tính và xử lý ảnh.
Nhóm muốn xây dựng một ứng dụng di động có camera có thể chụp ảnh khi
nhận thấy khuôn mặt người đang cười trong khung hình.

II. Data set


Dữ liệu của nhóm lấy từ nguồn có sẵn trong một mã nguồn mở [1] và trong
tập “WIKI faces only” trên trang data.vision.ee.ethz.ch [2].
 Dữ liệu huấn luyện cho bài toán bao gồm 13000 ảnh [64x64], trong đó có
6500 ảnh mặt cười và 6500 ảnh mặt không cười.
 Dữ liệu bao gồm 8000 ảnh lọc từ dữ liệu đã được gán nhãn sẵn, nhóm đã
tự gán nhãn thêm 5000 ảnh nữa.
 Dữ liệu tự gán nhãn thêm cần tiến hành tiền xử lý vì mỗi ảnh có kích
thước khác nhau, cần tách riêng phần mặt riêng ra khỏi ảnh và đánh số lại
cho đồng bộ.

Hình 1: Ảnh khác kích thước, sau khi tiền xử lý

 Cuối cùng, dữ liệu được trộn lẫn giữa 5000 ảnh mới và 8000 ảnh cũ.
Page 6
Thị giác máy tính 20211

III. Mạng LE-NET


Ra đời năm 1989 bởi Tiến sĩ Yann Le Cun và cộng sự [3], mạng Le-Net
được coi là nền tảng của các mạng nơ-ron tích chập CNN (Convolutional
Neural Network) sau này [4].
Có nhiều phiên bản Le-Net khác nhau nhưng ý tưởng chung của các mạng
này là sử dụng một ảnh đầu vào cỡ 28x28 (hoặc 32x32) qua 2 lần ở các lớp
mạng tích chập kết hợp pooling, sẽ tiếp tục đi qua 1,2 hoặc 3 lớp kết nối đầy đủ
để thu được kết quả phân loại ảnh thuộc một trong những lớp cần phân biệt.

Hình 2: Sự phát triển của CNN

1. Một số mạng Le-Net


1.1. Mạng Le-Net 1
Ban đầu, Le-Net 1 phù hợp với ảnh đầu vào cỡ 28x28x1. Mạng sử dụng 5
lớp mạng ở giữa đầu vào và đầu ra [5].
 Lớp 1: Gồm 4 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 2: Lớp average pooling, pool = [2x2], tride = 2.
 Lớp 3: Gồm 12 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 4: Lớp pooling, pool = [2x2], tride = 2.
 Lớp 5: Lớp kết nối đầy đủ từ 4x4x12 = 192 neuron với 10 lớp phân loại.

Hình 3: Kiến trúc mạng Le-Net 1

Page 7
Thị giác máy tính 20211

Mạng Le-Net 1 khá đơn giản nhưng hiệu quả đem lại là rất tốt vào thời điểm
được ra mắt. Kết quả sau 30 lần train với khoảng gần 10000 chữ số viết tay và
đánh máy, tỉ lệ lỗi chỉ cỡ 1.1% với MSE khoảng 0,017 [3].
1.2. Mạng Le-Net 4
Mạng Le-Net 4 phù hợp với ảnh đầu vào cỡ 32x32x1 (tăng kích thước hơn
Le-Net 1). Mạng sử dụng 6 lớp mạng ở giữa đầu vào và đầu ra (tăng thêm một
lớp kết nối đầy đủ) [5].
 Lớp 1: Gồm 4 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 2: Lớp average pooling, pool = [2x2], tride = 2.
 Lớp 3: Gồm 16 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 4: Lớp pooling, pool = [2x2], tride = 2.
 Lớp 5: Lớp kết nối đầy đủ từ 5x5x16 neuron với 120 neuron ở lớp tiếp
theo.
 Lớp 6: Lớp kết nối đầy đủ từ 120 neuron với 10 lớp phân loại.

Hình 4: Kiến trúc mạng Le-Net 4

Mạng Le-Net 4 có những cải tiến để mạng học được nhiều hơn, nhanh hơn
và vẫn đảm bảo sai số tốt (lỗi chỉ xấp xỉ 1.1%) bằng cách thêm một lớp kết nối
đầy đủ.
1.3. Mạng Le-Net 5
Mạng Le-Net 5 phù hợp với ảnh đầu vào cỡ 32x32x1 (tương tự như Le-Net
4). Mạng sử dụng 7 lớp mạng ở giữa đầu vào và đầu ra (tăng thêm một lớp kết
nối đầy đủ so với Le-Net 4) [5].
 Lớp 1: Gồm 6 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 2: Lớp average pooling, pool = [2x2], tride = 2.
 Lớp 3: Gồm 16 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 4: Lớp pooling, pool = [2x2], tride = 2.
Page 8
Thị giác máy tính 20211

 Lớp 5: Lớp kết nối đầy đủ từ 5x5x16 neuron với 120 neuron ở lớp tiếp
theo.
 Lớp 6: Lớp kết nối đầy đủ từ 120 neuron với 84 neuron ở lớp tiếp theo.
 Lớp 7: Lớp kết nối đầy đủ từ 84 neuron với 10 lớp phân loại.

Hình 5: Kiến trúc mạng Le-Net 5

Mạng Le-Net 5 thêm một lớp kết nối đẩy đủ nữa, tổng cộng là 3 lớp kết nối
đầy đủ để mạng học nhanh và kết quả cho ra vẫn rất tốt (lỗi chỉ xấp xỉ 0.95%).

IV. Mạng BK-NET


1. Cấu trúc mạng BKNet
Mạng BKNet được coi như là mạng VGG nhưng hiệu quả hơn. Qua kết quả
thực nghiệm của tác giả, tác giả đánh giá mạng này có kết quả cải thiện hơn so
với các mạng SOTA (State-of-the-art) hiện có.
Mạng BKNet gồm 4 blocks convolution (conv):
 Block đầu tiên chứa 2 lớp conv với 32 neurons 3x3 với stride 1, sau đó là
lớp Max pooling 2x2 với stride 2
 Block thứ hai chứa 2 lớp conv với 64 neurons 3x3 với stride 1, sau đó là
lớp Max pooling 2x2 với stride 2
 Block thứ 3 chứa 2 lớp conv với 128 neurons 3x3 với stride 1, sau đó là
lớp Max pooling 2x2 với stride 2
 Block cuối cùng chứa 2 lớp conv với 256 neurons 3x3 với stride 1, sau
đó là lớp Max pooling 2x2 với stride 2
Sau mỗi lớp conv đều có một lớp Batch Normalization và một activation
function ReLU (Rectified Linear Unit).

Page 9
Thị giác máy tính 20211

Hình 6: Cấu trúc mạng CNN share network

Mục đích mạng BKNet sinh ra nhằm mục đích giúp cho máy học nhiều
nhiệm vụ cùng 1 lúc: nhận diện nụ cười, dự đoán cảm xúc, dự đoán giới tính.
Sau một lớp CNN chung thì mạng sẽ được tách thành 3 nhánh tương ứng với
3 tasks, mỗi nhánh này có nhiệm vụ học những features đặc trưng của từng
task.
Trong đề tài này, nhóm chỉ sử dụng mạng này với mục đích nhận diện nụ
cười trên tập dataset đã chuẩn bị.

P a g e 10
Thị giác máy tính 20211

Hình 7: Cấu trúc mạng BKNet

V. Thực nghiệm và đánh giá


1. Thực nghiệm và đánh giá mạng Le-Net
Bài toán của nhóm là phân loại ảnh 2 lớp “cười” và “không cười” nên nhóm
đã chọn một mô hình đơn giản là mạng Le-Net. Mạng Le-Net phù hợp với 10
đầu ra nên hoàn toàn phù hợp với bài toán phân loại 2 lớp.
1.1. Lý thuyết liên quan đến thực nghiệm và đánh giá
1.1.1 Chuẩn bị input và chia tập train/test
Đầu vào của mạng là ảnh 1 kênh kích thước 28x28 (hoặc 32x32) nên cần
đưa ảnh về kênh màu “gray” và giảm kích thước về số điểm ảnh tương ứng.

P a g e 11
Thị giác máy tính 20211

Hình 8: Ảnh 64x64x3 (bên trái) được đưa vè ảnh 32x32x1 (bên phải)

Nhóm chia tập train/test theo tỉ lệ 80:20 và số giả ngẫu nhiên (random_state
= 42) để cố định thứ tự kết quả sau mỗi lần train [6].
1.1.2 Sử dụng Keras-Tensorflow để xây dựng mô hình
Nhóm sử dụng Keras-Tensorflow của Python để triển khai nhanh mô hình
Le-Net với cách xây dựng mô hình ở dạng Sequential vì thực tế là mô hình Le-
Net thực hiện tuần tự qua từng lớp trong mạng.
Nhóm sử dụng Keras để xây dựng mô hình như sau [7]:
 Conv2D là lớp tích chập để lấy đặc trưng từ ảnh; với các tham số: filter
(số bộ lọc), kernel_size (kích thước cửa sổ trượt trên ảnh), padding (bộ
đệm biên của ảnh).
 MaxPooling2D và AveragePooling2D để giảm các tham số mà vẫn giữ
được đặc trưng của ảnh; với các tham số: pool_size (kích thước của số
pooling), stride (bước lấy pooling).
 Dense là lớp neural có tác dụng thực hiện kết nối đầy đủ với một lớp
Dense khác; với các tham số: units (số output sau khi train).
 Dropout là để cắt tỉa bớt một số kết nối trong lớp kết nối đầy đủ.
 Activation là hàm kích hoạt.
Do những ưu điểm của hàm Relu so với hàm Sigmoid hay hàm Tanh như
lọc các giá trị nhỏ hơn 0, hội tụ nhanh hơn, không bị bão hòa ở 2 đầu nên nhóm
lựa chọn hàm kích hoạt “Relu” cho các lớp trong mạng. Riêng lớp kết nối đầy
đủ cuối cùng sử dụng hàm kích hoạt “Softmax” để tối ưu tối đa tham số mô
hình [8].
1.1.3 Mô tả hàm compile()
Nhóm sử dụng hàm loss “binary_crossentropy”, trình tối ưu “adam”, và
độ đo là “accuracy”. Nhóm sử dụng Cross entropy vì cách đánh giá giữa 2
phân phối xác suất này cho kết quả tương quan rất tốt nếu dự đoán gần kết quả
đúng, nếu kết quả dự đoán càng sai sẽ càng bị “trừng phạt” rất nặng [9]. Trình
tối ưu “adam” cho kết quả hội tụ nhanh hơn rất nhiều so với đạo hàm và được
sử dụng phổ biến [10]. Nhóm chọn độ đo là “accuracy” vì bài toán phân loại 2
lớp và 2 lớp này ngang hàng với nhau.

P a g e 12
Thị giác máy tính 20211

1.1.4 Mô tả hàm fit()


Nhóm sử dụng batch_size = 64, train khoảng 15-20 epochs, đánh giá bằng
dữ liệu validation.
1.1.5 Cách đánh giá mô hình
Nhóm có sử dụng độ đo “accuracy” – độ chính xác để đánh giá mô hình
[11].
“Precision” là tỉ lệ số điểm đúng trong những điểm được phân loại đúng.

“Recall” là tỉ lệ số điểm đúng trong những điểm thật sự là điểm đúng.

“F1-score” là hàm trung bình điều hòa (harmonic mean) của và


.

hay
Cần sử dụng “F1-score” vì hay cao chưa chắc đã tốt, mô
hình được coi là tốt khi cả 2 chỉ số này đều phải cao, hay “F1-score” phải cao.
“Precision” cao thì có thể mô hình đang bị thiếu nhiều điểm chưa được phân
loại đúng, hay “Recall” cao thì có thể mô hình đoán bị lẫn quá nhiều điểm sai
trong số lượng dự đoán suy ra hiệu quả thấp.
1.2. Thực nghiệm và đánh giá mạng Le-Net 1
1.2.1 Thực nghiệm mạng Le-Net 1
a) Đầu tiên, nhóm sử dụng mạng Le-Net 1 như đã trình bày ở mục III.1.1.

P a g e 13
Thị giác máy tính 20211

Hình 9: Kết quả train Le-Net 1 (Average pooling)

Kết quả sau 15 epochs, tỉ lệ lỗi xấp xỉ 0.4098 và độ chính xác khoảng
81.65%. loss và val_loss khá xấp xỉ nhau nhưng còn khá lớn.
b) Thử thay đổi Average-pooling bằng Max-pooling thì kết quả cho ra khá
tương tự.

Hình 10: Kết quả train Le-Net 1 (Max pooling)

Kết quả sau 15 epochs, tỉ lệ lỗi xấp xỉ 0.3996 và độ chính xác khoảng 82%.
loss và val_loss khá xấp xỉ nhau nhưng còn khá lớn.
1.2.2 Đánh giá mạng Le-Net 1
Tốc độ học của mạng là khá chậm, sau khoảng 15 epochs, tỉ lệ chính xác
mới đạt khoảng 82%.
Bảng 1: So sánh độ chính xác giữa Max-pooling và Average-pooling trong Le-Net 1

Max-pooling Average-pooling

Kết quả khi sử dụng Max-pooling hay Average-pooling không có nhiều sự


khác biệt, nhưng đủ để nhận thấy Average-pooling cho kết quả tốt hơn trong
khi tốc độ là ngang nhau.
P a g e 14
Thị giác máy tính 20211

1.
1.1.
1.2.
1.3. Thực nghiệm và đánh giá mạng Le-Net 4
1.3.1 Thực nghiệm mạng Le-Net 4
a) Đầu tiên, nhóm sử dụng mạng Le-Net 4 như đã trình bày ở mục III.1.2.

Hình 11: Kết quả train Le-Net 4 (Average pooling)

Kết quả sau 15 epochs, tỉ lệ lỗi xấp xỉ 0.2708 và độ chính xác khoảng
88.92%. loss và val_loss đã có sự thay đổi nhiều hơn sau khoảng 10 epochs. Độ
chính xác trên tập test cũng đã bị giảm so với train. Tỉ lệ sai khác độ chính xác
khoảng 3%.
b) Thử thay đổi Average-pooling bằng Max-pooling thì kết quả cho ra khá
tương tự.

Hình 12: Kết quả train Le-Net 4 (Max pooling)

Kết quả sau 15 epochs, tỉ lệ lỗi xấp xỉ 0.2957 và độ chính xác khoảng
88.46%. loss và val_loss đã có sự thay đổi nhiều hơn sau khoảng 10 epochs. Độ
chính xác trên tập test cũng đã bị giảm so với train. Tỉ lệ sai khác độ chính xác
khoảng 2.96%.
1.3.2 Đánh giá mạng Le-Net 4
Tốc độ học của mạng là khá tốt, sau khoảng 15 epochs, tỉ lệ chính xác đạt
khoảng 89% (nhanh hơn 7% so với mạng Le-Net 1) nhưng thời gian train cũng

P a g e 15
Thị giác máy tính 20211

lâu hơn khoảng 30%. Có thể thấy là Le-Net 4 đã cải tiến khá tốt so với Le-Net
1.
Bảng 2: So sánh độ chính xác giữa Max-pooling và Average-pooling trong Le-Net 4

Max-pooling Average-pooling

Kết quả khi sử dụng Max-pooling hay Average-pooling không có nhiều sự


khác biệt, nhưng đủ để nhận thấy Average-pooling cho kết quả tốt hơn trong
khi tốc độ là ngang nhau.
1.
1.1.
1.2.
1.3.
1.4. Thực nghiệm và đánh giá mạng Le-Net 5
1.4.1 Thực nghiệm mạng Le-Net 5
a) Đầu tiên, nhóm sử dụng mạng Le-Net 4 như đã trình bày ở mục III.1.3.

Hình 13: Kết quả train Le-Net 5 (Average pooling)

Kết quả sau 15 epochs, tỉ lệ lỗi xấp xỉ 0.2913 và độ chính xác khoảng
89.54%. loss và val_loss đã có sự thay đổi nhiều hơn sau khoảng 7-8 epochs.
Độ chính xác trên tập test cũng đã bị giảm so với train. Tỉ lệ sai khác độ chính
xác khoảng 5.19%.
b) Thử thay đổi Average-pooling bằng Max-pooling thì kết quả cho ra khá
tương tự.

P a g e 16
Thị giác máy tính 20211

Hình 14: Kết quả train Le-Net 5 (Max pooling)

Kết quả sau 15 epochs, tỉ lệ lỗi xấp xỉ 0.3199 và độ chính xác khoảng
88.46%. loss và val_loss đã có sự thay đổi nhiều hơn sau khoảng 7-8 epochs.
Độ chính xác trên tập test cũng đã bị giảm so với train. Tỉ lệ sai khác độ chính
xác khoảng 5.84%.
1.4.2 Đánh giá mạng Le-Net 5
Tốc độ học của mạng là khá tốt, sau khoảng 15 epochs, tỉ lệ chính xác đạt
khoảng 90% (nhanh hơn 1% so với mạng Le-Net 4) nhưng thời gian train cũng
lâu hơn khoảng 10%. Có thể thấy Le-Net 5 không quá vượt trội so với Le-Net 4
trong bài toán này.
Bảng 3: So sánh độ chính xác giữa Max-pooling và Average-pooling trong Le-Net 5

Max-pooling Average-pooling

Kết quả khi sử dụng Max-pooling hay Average-pooling không có nhiều sự


khác biệt, nhưng đủ để nhận thấy Average-pooling cho kết quả tốt hơn trong
khi tốc độ là ngang nhau.
2. Cải tiến Le-Net 4
Như kết quả đánh giá tại phần V.1.3.2 và V.1.4.2 cho thấy, mạng Le-Net 4
cho kết quả tương tự như Le-Net 5, có thể là độ chính xác cuối cùng Le-Net 4
có thua 0.01 (0.89 với 0.90) nhưng độ sai khác giữa độ chính xác của tập train
và tập test của bên Le-Net 4 cho ra tốt hơn (3.96% với 5.19%), tức là Le-Net 5
đang cho kết quả với khả năng bị quá phù hợp (overfitting) cao hơn, điều này
cần tránh xảy ra.

P a g e 17
Thị giác máy tính 20211

Nhóm đã lựa chọn cải tiến Le-Net 4 để được mô hình phân loại chính xác
hơn. Đồng thời, Average-pooling cho thời gian chạy rất sát với Max-pooling,
trong khi kết quả tốt hơn nên nhóm quyết định vẫn dùng Average-pooling.
1.
2.
2.1. Thêm một lớp tích chập và sử dụng Dropout
Từ những đánh giá trên, nhóm nhận thấy cần giảm khả năng xảy ra overfit,
hoặc để overfit xảy ra càng chậm càng tốt nên nhóm có thêm dropout để cắt tỉa
bớt một số kết nối trong lớp kết nối đầy đủ.
Nhóm cũng sử dụng thêm một lớp tích chập nữa ngay sau lớp tích chập đầu
tiên để có thể trích xuất được nhiều đặc trưng hơn. Ở Le-Net 4, qua lớp tích
chập ban đầu sẽ thu được (5x5+1)*4 = 104 đặc trưng, nhóm thấy số đặc trưng
này hơi ít nên đã sử dụng 8 bộ lọc [5x5] để có (5x5+1)*8=208 đặc trưng.
Cấu trúc của mạng cải tiến bao gồm:
 Lớp 1: Gồm 4 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 2: Gồm 8 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 3: Lớp pooling, pool = [2x2], tride = 2.
 Lớp 4: Gồm 16 bộ lọc tích chập, kernel = [5x5] , stride = 1, no-padding.
 Lớp 5: Lớp pooling, pool = [2x2], tride = 2.
 Lớp 6: Lớp kết nối đầy đủ từ 5x5x16 neuron với 120 neuron ở lớp tiếp
theo.
 Lớp 6: Lớp Dropout (rate = 0.2)
 Lớp 7: Lớp kết nối đầy đủ từ khoảng 96 neuron với 10 lớp phân loại.

P a g e 18
Thị giác máy tính 20211

Hình 15: Kiến trúc mạng Le-Net 4 cải tiến

a) Ban đầu nhóm thử thêm Dropout với 2 tỉ lệ khác nhau là 0.2 và 0.4
 Kết quả Dropout = 0.2

Hình 16: Kết quả train Le-Net 4 cải tiến (Dropout = 0.2)

 Kết quả Dropout = 0.4

Hình 17: Kết quả train Le-Net 4 cải tiến (Dropout = 0.4)

Khi Dropout = 0.4 thì sự sai lệch giữa độ chính xác trên tập train và tập test
cũng có sự biến thiên lớn, nên không đáng tin bằng Dropout = 0.2. Kết quả cho
ra đối với Dropout = 0.2 cũng là tốt nhất với độ lệch độ chính xác là 2.04% (so
với 2.24% khi dùng Dropout = 0.4 và 2.24% khi không sử dụng Dropout).

P a g e 19
Thị giác máy tính 20211

b) Ban đầu nhóm thử với 16 bộ lọc ở lớp tích chập mới thêm vào, sau đó giảm
dần còn 8 bộ lọc và còn 6 bộ lọc.
 Kết quả sử dụng 16 bộ lọc.

Hình 18: Kết quả train Le-Net 4 cải tiến (Thêm 16 bộ lọc ở lớp tích chập)

 Kết quả sử dụng 8 bộ lọc.

Hình 19: Kết quả train Le-Net 4 cải tiến (Thêm 8 bộ lọc ở lớp tích chập)

 Kết quả sử dụng 6 bộ lọc.

Hình 20: Kết quả train Le-Net 4 cải tiến (Thêm 6 bộ lọc ở lớp tích chập)

Có thể thấy, nếu sử dụng 8 bộ lọc, độ lệch giữa độ chính xác trên tập train và
tập test là ít nhất, khoảng 1.49%. Trong khi đó, độ sai lệch là 2.04% khi sử
dụng 16 bộ lọc và 2.78% khi sử dụng 6 bộ lọc. Độ biến thiên của loss và
val_loss khi sử dụng 8 bộ lọc sẽ gần nhau hơn.

P a g e 20
Thị giác máy tính 20211

1.
2.
2.1.
2.2. Đánh giá cải tiến Le-Net 4
Bảng 4: So sánh độ chính xác giữa Le-Net 4 và Le-Net 4 cải tiến

Le-Net 4 Le-Net 4 cải tiến

Bảng 5: So sánh độ chính xác giữa Le-Net 4 cải tiến (Dropout = 0) và Le-Net 4
cải tiến (Dropout = 0.4)

16 bộ lọc, dropout = 0.0 16 bộ lọc, dropout = 0.4

Bảng 6: So sánh độ chính xác giữa Le-Net 4 cải tiến (16 bộ lọc) và Le-Net 4 cải
tiến (6 bộ lọc)

16 bộ lọc, dropout = 0.2 6 bộ lọc, dropout = 0.2

Độ chính xác của mô hình cải tiến có thể chưa bằng các mô hình khác nhưng
một tỉ lệ quan trọng là “recall” khi nhận diện khuôn mặt “cười” lại trội hơn,
“f1-score” khi phân biệt ảnh “cười” tốt hơn ảnh “không cười”. Như vậy có thể

P a g e 21
Thị giác máy tính 20211

thấy mô hình có thể nhận diện “cười” tốt hơn và đó là mục đích của mô hình,
việc nhận diện “cười” là quan trọng hơn việc nhận diện “không cười”.
Đánh giá về độ chênh lệch giữa độ chích xác giữa tập train tập test, cũng
như độ biến thiên của lỗi trên 2 tập, có thể thấy mô hình cải tiến cho kết quả là
overfit đang diễn ra chậm hơn, nhưng rất khó tránh vì mô hình còn khá đơn
giản. Vì vậy, nhóm cũng đã tìm hiểu thêm mô hình khác để cải thiện khả năng
dự đoán đúng.
3. Sử dụng mạng BK-NET
2.
3.
3.1. Thực nghiệm BKNet
Trong bài toán nhận diện nụ cười này, nhóm cài đặt kích thước 1 batch là
128, khởi tạo các trọng số sử dụng phân phối Gaussian, độ lẹch chuẩn là 0,01.
Ngoài ra, nhóm áp dụng một hàm phân rã cấp số nhân để phân learning rate
theo thời gian. Learning rate ở bước thứ k được tính như sau:

Tập dữ liệu đã chuẩn bị trước với 13000 ảnh, trong đó có 6500 ảnh được gắn
nhãn cười, 6500 ảnh được gắn nhán không cười. Nhóm đã chia thành 2 tập, tập
train với 10400 ảnh (80% tập data), tập test với 2600 ảnh (20% tập data), các
ảnh được chọn ngẫu nhiên.
3.2. Đánh giá BKNet
 Trong 10 epochs đầu tiên, kết quả training đạt được khá cao > 99%.

P a g e 22
Thị giác máy tính 20211

Hình 21: Kết quả train BKNet

 Giá trị mất mát được dùng trong bài toán này là: Cross Entropy và L2
loss.

Hình 22: Đánh giá loss của BKNet

Mô hình trong quá trình train sẽ được giữ lại các giá trị checkpoint. Trong
quá trình test, mô hình sẽ load lại các checkpoint và đưa ra phán đoán với tập
test.
 Kết quả test với tập data test đạt ~88%:

P a g e 23
Thị giác máy tính 20211

Hình 23: Độ chính xác của BK Net

1.
2.
3.
3.1.
3.2.
3.3. So sánh LeNet 4 sau cải tiến với BKNet
LeNet 4 sau cải tiến vẫn là một mạng khá đơn giản nên kém mạng BKNet là
điều dễ hiểu. Tỷ lệ train LeNet 4 sau cải tiến chỉ đạt khoảng 90% (20 epochs),
trong khi BKNet có thể đạt 99% (10 epochs).
Thực tế chạy thử cũng cho thấy tỉ lệ nhận diện nụ cười của mạng BKNet
cũng tốt hơn mạng Lenet 4 sau cải tiến. Nhưng mạng Lenet 4 cũng không phải
là một mạng quá kém, vẫn nhận diện được nụ cười chính xác ở những góc mặt
đơn giản.

VI. Kết quả chạy thử


1. Sử dụng Haar Cascade để nhận diện khuôn mặt
Trước khi nhận diện được nụ cười thì cần nhận diện khuôn mặt. Nhóm chọn
thuật toán Haar Cascade vì đây là thuật toán được đề xuất rất nhiều trong
những bài toán nhận diện khuôn mặt và có mã nguồn mở được hỗ trở bởi
OpenCV [12].
Thuật toán sử dụng đặc trưng Haar là loại đặc trưng của ảnh nhưng không
chiếm toàn bộ mà chỉ chiếm một phần trong bức ảnh. Vì có thể có rất nhiều bộ
lọc Haar trên cùng một bức ảnh nên có thể kết hợp nhiều bộ lọc với nhau tạo
thành nhiều lượt Cascade chồng lên nhau để có thể nhận diện được nhiều đặc
trưng cùng một lúc.
Chi tiết hơn về Haar Cascade sẽ không được trình bày trong bài báo cáo
này, nhưng hiểu đơn giản là các bộ lọc Haar sẽ quét khung ảnh vài lần để tìm
xem có đặc trưng nào trong 6000+ đặc trưng đã được xác định sẵn để nhận
diện khuôn mặt [13]. Vùng nào có chứa khuôn mặt sẽ được khoanh vùng,
những vùng khác sẽ được lướt qua và quên đi.

P a g e 24
Thị giác máy tính 20211

2. Chạy thử với mạng Le-Net

Hình 24: Kết quả demo LeNet

3. Chạy thử với mạng BK-Net

Hình 25: Kết quả demo BKNet

VII. Kết luận


Mô hình Le-Net khá phù hợp với bài toán nhóm đặt ra. Kết quả chạy thử khá
chính xác, khoảng 90%. Mạng Le-Net là một mạng đơn giản cùng với lượng dữ
liệu không lớn (13000 ảnh) rất khó cho kết quả tốt hơn 90%.
Mô hình BK-Net đã có những kết quả tốt hơn…
Kết quả đạt được của Bài tập lớn lần này có sự tham gia rất tích cực của tất
cả thành viên trong nhóm, mỗi người đều có ý thức chủ động hoàn thành công
việc và hỗ trợ những thành viên khác.
Tuy nhiên, có một số khó khăn nhóm gặp phải trong quá trình thực hiện Bài
tập lớn:

P a g e 25
Thị giác máy tính 20211

 Dữ liệu tìm được vẫn còn chưa “sạch”, sau khi tiền xử lý vẫn không hoàn
toàn xử lý hết những sai sót nên kết quả chưa đạt được độ chính xác cao
nhất.
 Do tình hình dịch bệnh Covid19 nên nhóm gặp khó khăn trong việc trao
đổi giữa các thành viên dẫn đến tiến độ có chậm hơn mong muốn những
vẫn kịp hoàn thành.

VIII. Tài liệu tham khảo


[1] Link open source Le-Net: https://github.com/meng1994412/Smile_Detection
[2] Link tải data: https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/?
fbclid=IwAR0mjNhPRvA5yXii1HFmetECzrjbeqHEWLQWkg3RsTiquLnIGF39d
xnPeLE
[3] Y. Le Cun, B. Boser, J. S. Denker, D. Henderson, R. E. Howard, W. Hubbard,
and L. D. Jackel. Backpropagation Applied to Handwritten Zip Code Recognition.
AT&T Bell Laboratories, Holmdel, NJ 07733 USA, NIPS ,1989.
[4] Lịch sử mạng CNN:
https://dlapplications.github.io/2018-07-06-CNN/
[5] 3 mạng Lenet: https://sh-tsang.medium.com/paper-brief-review-of-lenet-1-
lenet-4-lenet-5-boosted-lenet-4-image-classification-1f5f809dbf17
[6] Random-state: https://stackoverflow.com/questions/28064634/random-state-
pseudo-random-number-in-scikit-learn
[7] Keras-Tensorlow: https://viblo.asia/p/lam-quen-voi-keras-gGJ59mxJ5X2
[8] Các hàm kích hoạt: https://aicurious.io/posts/2019-09-23-cac-ham-kich-hoat-
activation-function-trong-neural-networks/
[9] Softmax: https://machinelearningcoban.com/2017/02/17/softmax
[10] Adam: https://viblo.asia/p/thuat-toan-toi-uu-adam-aWj53k8Q56m
[11] Validation: https://machinelearningcoban.com/2017/08/31/evaluation/#-
truefalse-positivenegative
[12] Opensource Haar Cascade:
https://github.com/opencv/opencv/tree/master/data/haarcascades
[13] Chi tiết Haar Cascade:
https://docs.opencv.org/3.4/db/d28/tutorial_cascade_classifier.html

P a g e 26

You might also like