TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN
**********
BÁO CÁO
ĐỒ ÁN THIẾT KẾ
ĐỀ TÀI : DỰ ĐOÁN TUỔI VÀ PHÂN LOẠI GIỚI TÍNH
DỰA TRÊN PHƯƠNG PHÁP HỌC SÂU
Giáo viên hướng dẫn :
PGS.TS. Hoàng Sĩ Hồng
Sinh viên thực hiện : - Nguyễn Xuân Công – 20173697
- Nguyễn Phùng Thái Cường – 20173716
Hà Nội, 09-2021
MỤC LỤC
CHƯƠNG 1: HỌC SÂU VÀ THỊ GIÁC MÁY TÍNH…………………………………………3
1.
Giới thiệu về Học sâu (Deep Learning – DL) và Thị giác Máy tính (Computer Vision – CV)
……………………………………………………………………………………………3
2.
Các kiến trúc CNN……………………………………………………………………………3
CHƯƠNG 2: BỘ DỮ LIỆU VÀ TIỀN XỬ LÝ DỮ LIỆU.........................................................6
1.
Bộ dữu liêu huấn luyện……………………………………………………………………….6
2.
Tiền xử lý dữ liệu……………………………………………………………………………..7
CHƯƠNG 3: XÂY DỰNG MƠ HÌNH VÀ HUẤN LUN MƠ HÌNH..................................8
1.
Xây dựng mơ hình....................................................................................................................8
2.
Xây dựng hàm mất mát............................................................................................................8
3.
Phương pháp tối ưu hóa mơ hình.............................................................................................9
4.
Q trình huấn luyện mơ hình..................................................................................................9
CHƯƠNG 4: ĐÁNH GIÁ KẾT QUẢ........................................................................................10
1.
Kết quả...................................................................................................................................10
2.
Kết luận..................................................................................................................................10
2
Chương 1: Học sâu và Thị giác Máy tính
1. Giới thiệu về Học sâu (Deep Learning - DL) và Thị giác Máy tính
(Computer Vision - CV)
CV là một lĩnh vực khoa học nằm trong Trí tuệ nhân tạo và Khoa học máy
tính bao gồm việc thu nhận, xử lý ảnh kỹ thuật số có khả năng nhìn và hiểu giống
như con người. Các thuật tốn phân tích xử lý xác định các tiêu chí đặc trưng trong
ảnh và video được sử dụng từ đó đưa ra dự đốn hoặc các nhiệm vụ đưa ra quyết
định. Một mơ hình được xây dựng từ thuật tốn giúp gải quyết điều này. Mơ hình
được tạo ra trong qúa trình huấn luyện giúp “dịch” dữ liệu thị giác dựa trên các thông
tin về đặc điểm và ngữ cảnh giống như con người.
Một trong những kỹ thuật được sử dụng nhiều nhất trong CV là DL. DL là
một kỹ thuật của Học máy - Machine Learning. DL giống như một loại mạng thần
kinh sâu – deep neural network có thể xử lý dữ liệu lớn theo cách bộ não con người
thực hiện. DL sử dụng các thuật tốn kiểm tra các chi tiết hình ảnh và giải mã dưới
nhiều cấp độ. Với DL, máy sẽ tự đào tạo chính nó dựa trên một tệp dữ liệu đầu vào
rất lớn và sức tính tốn rất mạnh mẽ.
Một thuật toán được sử dụng rất nhiều trong CV đó là Mạng nơ ron tích chập
(convolutional neural network – CNN). Nó là một kiến trúc đa lớp dùng để tính tốn
thu gọn dữ liệu cho ra một bộ số gần nhất để so sánh với dữ liệu đã biết nhằm định
nghĩa, phân loại dữ liệu đầu vào. Có nhiều loại kiến trúc có thể kể đến ở đây như
AlexNet, GoogleNet, VGGNet,…
Các cách của DL để nâng cao, cải thiện CV đang được sử dụng như phát hiện
vật thể (object detection), định vị trí (Localization) hay là phân vùng vật thể
(semantic segmentation),…
2. Các kiến trúc CNN
a. LeNET-5 (1998)
LeNet-5 là kiến trúc đầu tiên áp dụng mạng tích chập 2 chiều của giáo sư Yan
3
Lecun, cha đẻ của kiến trúc CNN. Model ban đầu khá đơn giản và chỉ bao gồm 2
convolutional layers + 3 fully-connected layers. Mặc dù đơn giản nhưng nó có kết
quả tốt hơn so với các thuật toán machine learning truyền thống khác trong phân loại
chữ số viết tay như SVM, kNN.
Trong kiến trúc mạng nơ ron đầu tiên, để giảm chiều dữ liệu, Yan Lecun sử
dụng Sub-Sampling Layer là một Average-Pooling Layer (các layer nhằm mục đích
giảm chiều dữ liệu mà khơng thay đổi đặc trưng chúng ta cịn gọi là Sub-Sampling
Layer). Kiến trúc này khó hội tụ nên ngày nay chúng được thay thế bằng MaxPooling.
Đầu vào của mạng LeNet có kích thước nhỏ (chỉ 32x32) và ít layers nên số
lượng tham số của nó chỉ khoảng 60 nghìn.
b. AlexNET (2012)
AlexNet là mạng CNN được giới thiệu vào năm 2012 bởi Alex Krizhevsky và
dành chiến thắng trong cuộc thi ImageNet với cách biệt khá lớn so với vị trí thứ hai.
Lần đầu tiên Alex net đã phá vỡ định kiến trước đó cho rằng các đặc trưng được học
từ mơ hình sẽ khơng tốt bằng các đặc trưng được tạo thủ cơng (thơng qua các thuật
tồn SUFT, HOG, SHIFT). Ý tưởng của AlexNet dựa trên LeNet của Yan Lecun và
cải tiến ở các điểm:
Tăng kích thước đầu vào và độ sâu của mạng.
Sử dụng các bộ lọc (kernel hoặc filter) với kích thước giảm dần qua các
layers để phù hợp với kích thước của đặc trưng chung và đặc trưng riêng.
Sử dụng local normalization để chuẩn hóa các layer giúp cho quá trình
hội tụ nhanh hơn.
c. VGG -16 (2014)
4
Với VGG-16, quan điểm về một mạng nơ ron sâu hơn sẽ giúp ích cho cải
thiện độ chính xác của mơ hình tốt hơn. Về kiến trúc thì VGG-16 vẫn dữ các đặc
điểm của AlexNet nhưng có những cải tiến:
Kiến trúc VGG-16 sâu hơn, bao gồm 13 layers tích chập 2 chiều (thay
vì 5 so với AlexNet) và 3 layers fully connected.
Lần đầu tiên trong VGG-16 chúng ta xuất hiện khái niệm về khối tích
chập (block). Đây là những kiến trúc gồm một tập hợp các layers CNN được lặp lại
giống nhau. Kiến trúc khối đã khởi nguồn cho một dạng kiến trúc hình mẫu rất
thường gặp ở các mạng CNN kể từ đó.
VGG-16 cũng kế thừa lại hàm activation ReLU ở AlexNet.
VGG-16 cũng là kiến trúc đầu tiên thay đổi thứ tự của các block khi xếp
nhiều layers CNN + max pooling thay vì xen kẽ chỉ một layer CNN + max pooling.
VGG-16 chỉ sử dụng các bộ lọc kích thước nhỏ 3x3 thay vì nhiều kích
thước bộ lọc như AlexNet. Kích thước bộ lọc nhỏ sẽ giúp giảm số lượng tham số cho
mơ hình và mang lại hiệu quả tính toán hơn.
Mạng VGG-16 sâu hơn so với AlexNet và số lượng tham số của nó lên
tới 138 triệu tham số. Đây là một trong những mạng mà có số lượng tham số lớn
nhất. Kết quả của nó hiện đang xếp thứ 2 trên bộ dữ liệu ImageNet validation ở thời
điểm public. Ngồi ra cịn một phiên bản nữa của VGG-16 là VGG-19 tăng cường
thêm 3 layers về độ sâu.
Bắt đầu từ VGG-16, một hình mẫu chung cho các mạng CNN trong các tác
vụ học có giám sát trong xử lý ảnh đã bắt đầu hình thành đó là các mạng trở nên sâu
hơn và sử dụng các block dạng [Conv2D*n + Max Pooling]
Chương 2: Bộ dữ liệu và tiền xử lý dữ liệu
5
1. Bộ dữ liệu huấn luyện
Bộ dữ liệu UTKFace là bộ dữ liệu về khn mặt có quy mơ lớn (trải dài từ 0
đến 116 tuổi). Bộ dữ liệu bao gồm hơn 20000 ảnh với chú thích về tuổi, giới tính
và dân tộc. Hình ảnh đa dạng về tư thế, nét mặt, ánh sáng, khớp cắn, độ phân giải,
vv. Bộ dữ liệu này được sử dụng cho rất nhiều bài tốn, từ nhận diện khn mặt,
dự đốn tuổi, cũng như xác định tư thế khuôn mặt, vv… Dưới dây là một số ví dụ
về dữ liệu trong bộ UTKFace
Hình 1. Một vài ví dụ trong tập dữ liệu UTKFace.
Chú thích về dữ liệu. Nhãn của mỗi ảnh định dạng như sau:
[age]_[gender]_[race]_[date&time].jpg
[age] là một số tự nhiên từ 0 đến 106, biểu thị độ tuổi.
[gender] là 0(name) hoặc 1(nữ).
[race] là số tự nhiên từ 0 đến 4, chú thích cho White, Black, Asian, Indian,…
[date&time] biểu diễn theo định dạng yyyymmddHHMMSSFF, chỉ ra ngày
và giờ các hình ảnh được sưu tầm cho bộ UTKFace.
6
Để biết chi tiết hơn về bộ dữ liệu UTKFace, xin mời xem chi tiết ở link bên dưới:
/>2. Tiền xử lý dữ liệu
Với bước tiền xử lý dữ liệu, em đã thực hiện một số các bước sau:
Tiến hành loại bỏ đi những bức ảnh có chất lượng kém qua việc kiểm tra thủ
công một lượt.
Đưa tất cả hình ảnh về kích thước 198x198x3.
Chuyển đổi giá trị pixel của tất cả ảnh đầu trong dải [0,1].
Phân tích cú pháp của nhãn và tách thành 2 nhãn riêng biệt gồm Age và
Gender.
Dữ liệu bao gồm 24104 ảnh chia làm tập train, validation và test cụ thể:
Tập train gồm 13810 ảnh.
Tập validation gồm 7062 ảnh.
Tập test gồm gồm 3232 ảnh.
Sau bước tiền xử lý dữ liệu, em thực hiện khảo sát dữ liệu trên một số trường như
phân phối các thuộc tính age, gender.
Hình 2. Phân phối dữ liệu về tuổi được biễu diễn theo dạng cột
Phân phối dữ liệu về tuổi trên tập dữ liệu cho thấy sự mất cân bằng về tuổi, do đó
việc huấn luyện sẽ gặp khó khăn hơn.
7
Chương 3: Xây dựng mơ hình và huấn lun mơ hình
1. Xây dựng mơ hình.
Với đầu bài u cầu dự đốn tuổi chính xác và giới tính,em xây dựng
mơ hình one-input multi-output có cấu trúc như sau:
Nhánh 1: Nhánh trích xuất đặc trưng
tuổi.
Nhánh 2: Nhánh trích xuất đặc trưng
giới tính.
2.
Xây dựng hàm mất mát
Do mơ hình xây dựng theo cấu trúc 2
nhánh-2 đầu ra nên tương ứng tồn tại 2 hàm
mất mát mỗi nhánh. Với nhánh trích xuất
đặc trưng tuổi, em lựa chọn hàm mất mát là
MSE (Mean Squared Error) và nhánh cịn
lại, em sử dụng Binary Cross Entropy. Giải
thích cho lựa chọn này, Cross Entropy thực
sự tốt cho việc tối ưu với nhãn dạng one-hot
vector, còn MSE tốt hơn với đầu ra hồi quy
(khi đầu ra cho nhánh trích xuất đặc trưng
tuổi là một số thực đã chuyển đổi nằm trong
dải [0,1]).
Cuối cùng, em thực hiện cộng 2 hàm mất
mát của 2 nhánh theo tỷ lệ 4, 0.01 như sau:
𝐿𝑡𝑜𝑡𝑎𝑙 = 4 ∗ 𝐿𝑎𝑔𝑒 + 0,01 ∗ 𝐿𝑔𝑒𝑛𝑑𝑒𝑟
Trong đó:
𝐿𝑎𝑔𝑒 = 𝐿𝑀𝑆𝐸 : Hàm mất mát của nhánh trích
xuất đặc trưng tuổi.
𝐿𝑔𝑒𝑛𝑑𝑒𝑟 = 𝐿𝐵𝐶𝐸 : Hàm mất mát của nhánh
trích xuất đặc trưng giới tính.
Hình 3. Cấu trúc mơ hình 2 nhánh.
8
Việc lựa chọn tỷ lệ có thể thay đổi trong bước khởi tạo ban đầu. Sở dĩ, em lựa chọn
tỷ lệ 4 – 0,01 là do nhánh trích xuất đặc trưng giới tính sẽ hội tụ sớm hơn nhánh
trích xuất đặc trưng tuổi nên cần đánh trọng số lớn hơn cho hàm mất mát của
nhánh giới tính.
3. Phương pháp tối ưu hóa mơ hình
Trong trường hợp này, em sử dụng phương pháp tối ưu tham số học Adam
với hệ số học ban đầu là 0.001 và giảm khi số lượng epoch tăng theo cơng thức
sau:
𝑙𝑟_𝑟𝑎𝑡𝑒 = 𝑙𝑟_𝑟𝑎𝑡𝑒/𝑒𝑝𝑜𝑐ℎ𝑠
Hình 4. Phương pháp tối ưu hóa Adam.
4. Q trình huấn luyện mơ hình
Mơ hình được huấn luyện trên Google Colab với 120 kỷ ngun học. Mơ
hình hồn tồn khơng sử dụng phương pháp transfer learning mà huấn luyện
từ đầu.
Có sử dụng checkpoint để theo dõi tham số học, kiến trúc mô hình, trạng
thái tham số tối ưu tránh trường hợp huấn luyện bị gián đoạn do mạng mà
không thể lưu lại được mơ hình.
Chương 4: Đánh giá kết quả
1. Kết quả
Kết quả đánh giá trên bộ test của mơ hình như sau:
Bảng 1. Đánh giá trên bộ test sau quá trình huấn luyện
9
Total loss
0.2935
Age loss
0.0662
Gender loss
0.2857
Age Mean
Absolute
Error
0.1129
Gender
Accuracy
0.9048
Một số hình ảnh dự đốn sau q trình huấn luyện mơ hình:
Hình 5. Một vài kết quả dự đốn.
2. Kết luận
Qua q trình huấn luyện mơ hình, mơ hình dự đốn tuổi và phân loại giới
tính cấu trúc nhiều đầu ra của em đạt được xác suất dự đốn giới tính 90,5 % và sai
số là khoảng 10 tuổi khi dự đoán tuổi. Do thách thách thức bài tốn khi dự đốn
tuổi chính xác, cũng như những thách thức về bộ dữ liệu, phương pháp tiền xử lý
chưa được tốt nên hiệu năng mơ hình vẫn còn nhiều hạn chế.
10
Do thời gian và kiến thức còn hạn chế nên khơng tránh khỏi sai xót, em rất
mong được thầy nhận xét và góp ý thêm để hồn thiện nữa trong tương lai.
Dưới đây là phần code lập trình em đã tải lên github:
/>
11