Professional Documents
Culture Documents
Report CV
Report CV
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
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
Page 5
Thị giác máy tính 20211
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
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.
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.
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%).
Page 9
Thị giác máy tính 20211
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
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
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
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ự.
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
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.
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ự.
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ả 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
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
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
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)
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)
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)
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
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)
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)
Độ 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
Giá trị mất mát được dùng trong bài toán này là: Cross Entropy và L2
loss.
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
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.
P a g e 24
Thị giác máy tính 20211
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.
P a g e 26