i

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

-----------------------------------

TRẦN TẤN LỘC

DỰ ĐOÁN TUỔI VÀ GIỚI TÍNH BẰNG PHƯƠNG PHÁP HỌC SÂU

ĐỀ ÁN TỐT NGHIỆP THẠC SĨ KỸ THUẬT

(Theo định hướng ứng dụng)

THÀNH PHỐ HỒ CHÍ MINH – NĂM 2023

ii

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

--------------------------------------

TRẦN TẤN LỘC

DỰ ĐOÁN TUỔI VÀ GIỚI TÍNH BẰNG PHƯƠNG PHÁP HỌC SÂU

Chuyên 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:

PGS.TS. LÊ HOÀNG THÁI

THÀNH PHỐ HỒ CHÍ MINH – NĂM 2023

i

LỜI CAM ĐOAN

Tôi xin cam đoan đề án thạc sĩ công nghệ thông tin “Dự đoán tuổi và giới tính

bằng phương pháp học sâu” 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 hoàn toà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.

Tp. Hồ Chí Minh, ngày 16 tháng 08 năm 2023

Học viên thực hiện đề án

Trần Tấn Lộc

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 PGS.TS Lê Hoàng Thái,

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 quá

trình thực hiện đề án. Nhờ sự hỗ trợ của người thầy, tôi đã được định hướng và hoà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 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 và sự đóng góp quý báu từ quý thầy cô và các bạn để tôi có thể cải

thiện và 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!

Tp. Hồ Chí Minh, ngày 16 tháng 08 năm 2023

Học viên thực hiện đề án

Trần Tấn Lộc

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 ............................................... vi

DANH SÁCH BẢNG .................................................................................................. vii

DANH SÁCH HÌNH VẼ ............................................................................................ viii

MỞ ĐẦU ........................................................................................................................ 1

CHƯƠNG 1 - TỔNG QUAN ..................................................................................... 3

1.1 Lý do chọn đề án ................................................................................................. 3

1.2 Tổng quan vấn đề nghiên cứu ............................................................................ 4

1.3 Mục tiêu nghiên cứu ............................................................................................ 6

1.4 Đối tượng và phạm vi nghiên cứu ...................................................................... 7

1.5 Phương pháp nghiên cứu .................................................................................... 9

1.6 Ý nghĩa khoa học và thực tiễn của đề án ........................................................ 10

CHƯƠNG 2 - CƠ SỞ LÝ THUYẾT ....................................................................... 11

2.1. Giới thiệu về học sâu và thị giác máy tính ..................................................... 11

2.1.1. Học sâu ......................................................................................................... 11

2.1.1.1. Các thành phần của mô hình học sâu .................................................... 12

2.1.1.2. So với máy học, mô hình học sâu mang lại những lợi ích sau ............. 13

2.1.2. Thị giác máy tính .......................................................................................... 15

iv

2.2. Kiến trúc mạng nơ ron tích chập .................................................................... 15

2.2.1. Tổng quan về kiến trúc mạng tích chập ....................................................... 15

2.2.2. Các đặc trưng chung của mạng CNN .......................................................... 17

2.2.3. Các mạng CNN tiêu biểu ............................................................................. 19

CHƯƠNG 3 - PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG ................................... 27

3.1. Hướng tiếp cận ................................................................................................. 27

3.2. Dữ liệu huấn luyện ........................................................................................... 27

3.2.1. Giới thiệu về tập dữ liệu ............................................................................... 27

3.2.2. Các bước xây dựng từ tập dữ liệu Adience Dataset .................................... 29

3.3. Tiền xử lý dữ liệu .............................................................................................. 31

3.3.1. Loại bỏ đặc trưng không cần thiết ............................................................... 31

3.3.2. Chỉnh kích thước ảnh sang kích thước phù hợp .......................................... 32

3.4. Mô hình được sử dụng ..................................................................................... 32

3.4.1. Tổng quan mô hình....................................................................................... 32

3.4.2. Định nghĩa .................................................................................................... 35

3.4.3.Chuẩn bị dữ liệu tập huấn ............................................................................. 38

3.4.4. Kiến trúc ....................................................................................................... 40

3.4.5. Huấn luyện mô hình ..................................................................................... 43

3.4.5.1 Khởi tạo mô hình.................................................................................... 43

3.4.5.2 Các phương thức tiền xử lý ảnh ............................................................. 45

3.4.5.3 Các bước tiến hành huấn luyện mô hình ................................................ 48

v

CHƯƠNG 4 - CÀI ĐẶT THỬ NGHIỆM VÀ ĐÁNH GIÁ ................................... 52

4.1. Cài đặt môi trường ........................................................................................... 52

4.2. Phương pháp đánh giá ..................................................................................... 52

4.3. Phân tích đánh giá hệ thống đề xuất .............................................................. 53

4.3.1. Xây dựng mô đun đánh giá .......................................................................... 53

4.3.2. Kiểm tra đánh giá hệ thống trên bộ dữ liệu công khai ................................ 57

4.3.2.1. Bộ dữ liệu công khai Adience ............................................................... 57

4.3.2.2. Kết quả đánh giá trên bộ dữ liệu công khai Adience ............................ 57

4.3.3. Kiểm tra đánh giá hệ thống trên bộ dữ liệu đã xây dựng ............................ 59

4.3.3.1. Bộ dữ liệu đã xây dựng ......................................................................... 59

4.3.3.2. Kết quả đánh giá trên bộ dữ liệu đã xây dựng ...................................... 59

4.4. Cài đặt triển khai thử nghiệm. ........................................................................ 60

KẾT LUẬN .................................................................................................................. 64

DANH MỤC TÀI LIỆU THAM KHẢO ................................................................... 66

vi

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT

VIẾT TẮT TIẾNG ANH TIẾNG VIỆT

CNN Convolutional Neural Network Mạng Nơ ron tích chập

CV Curriculum Vitae Hồ sơ cá nhân

AI Artificial Intelligence Trí tuệ nhân tạo

DL Deep Learning Học sâu

ML Mechine Learning Học máy

Conv Convolutional layer Lớp tích chập

ReLU Rectified Linear Unit Hàm kích hoạt trong mạng nơ ron nhân tạo

vii

DANH SÁCH BẢNG

Bảng 3.1: Danh mục nhãn .............................................................................................. 30

Bảng 3.3: Thông tin các nhãn tương ứng với các bức ảnh ............................................ 31

viii

DANH SÁCH HÌNH VẼ

Hình 2.1: Mô hình học sâu ............................................................................................. 12

Hình 2.2: Hình ảnh tỷ lệ xám chỉ có một kênh .............................................................. 17

Hình 2.3: Mạng Alexnet, một kiến trúc điển hình của CNN ......................................... 17

Hình 2.4: Kiến trúc LeNet .............................................................................................. 19

Hình 2.5: Kiến trúc AlexNet .......................................................................................... 19

Hình 2.6: Hàm ReLU ..................................................................................................... 21

Hình 2.7: Phương pháp dropout ..................................................................................... 21

Hình 2.8: Kiến trúc VGG-16 .......................................................................................... 22

Hình 2.9: Kiến trúc GoogleNet ...................................................................................... 23

Hình 2.10: Kiến trúc GoogleNet - Inception version 3 .................................................. 25

Hình 3.1: Hình ảnh trong tập dữ liệu Adience ............................................................... 28

Hình 3.2: Thư mục chứa các ảnh được giải nén ............................................................ 29

Hình 3.3: Mạng Alexnet ................................................................................................. 33

Hình 3.4: Ví dụ thí nghiệm sử dụng ReLU .................................................................... 35

Hình 3.5: Tổ chức thư mục ............................................................................................ 36

Hình 3.6: Mô hình gồm 5 block ..................................................................................... 40

Hình 3.7: Kết quả huấn luyện độ tuổi dạng biểu đồ ...................................................... 49

Hình 3.8: Kết quả huấn luyện độ tuổi ............................................................................ 50

Hình 3.9: Kết quả huấn luyện giới tính dạng biểu đồ .................................................... 51

Hình 3.10: Kết quả huấn luyện giới tính ........................................................................ 51

ix

Hình 4.1: Giao diện tải ảnh lên hệ thống đánh giá ......................................................... 54

Hình 4.2: Giao diện khi đã tải hình ................................................................................ 54

Hình 4.3: Kết quả dự đoán giới tính nam độ tuổi 12 ..................................................... 55

Hình 4.4: Kết quả dự đoán giới tính nam độ tuổi 45 ..................................................... 55

Hình 4.5: Kết quả dự đoán giới tính nữ độ tuổi 40 ........................................................ 56

Hình 4.6: Kết quả dự đoán giới tính nữ độ tuổi 18 ........................................................ 56

Hình 4.7: Kết quả dự đoán giới tính nam độ tuổi 28 ..................................................... 57

Hình 4.8: Kết quả kiểm chứng mô hình với dự đoán giới tính với dữ liệu công khai ... 58

Hình 4.9: Kết quả kiểm chứng mô hình với dự đoán tuổi với dữ liệu công khai .......... 58

Hình 4.10: Kết quả kiểm chứng mô hình dự đoán giới tính với dữ liệu đã xây dựng ... 59

Hình 4.11: Kết quả kiểm chứng mô hình với dự đoán tuổi với dữ liệu đã xây dựng .... 60

Hình 4.12: Giao diện hệ thống ....................................................................................... 60

Hình 4.13: Giao diện nhập thông tin ứng viên ............................................................... 61

Hình 4.14: Giao diện chọn ảnh ứng viên ....................................................................... 61

Hình 4.15: Giao diện khi đã nhập xong thông tin .......................................................... 62

Hình 4.16: Giao diện kết quả nghi vấn dưới độ tuổi lao động ....................................... 62

Hình 4.17: Giao diện kết quả trong độ tuổi lao động ..................................................... 63

Hình 4.18: Giao diện kết quả nghi vấn quá độ tuổi lao động ........................................ 63

1

MỞ ĐẦU

Sự phát triển kinh tế - xã hội phụ thuộc vào nhiều yếu tố khác nhau, nhưng tập

trung chủ yếu vào nguồn nhân lực. Dù có máy móc, thiết bị, nhưng chúng trở nên vô

dụng nếu thiếu sự can thiệp của con người. Nguồn nhân lực đóng vai trò trung tâm và

quan trọng nhất trong phát triển kinh tế-xã hội của đất nước, đặc biệt trong giai đoạn

đẩy mạnh công nghiệp hóa, hiện đại hóa và hội nhập kinh tế quốc tế.

Tuyển dụng tốt sẽ tạo đội ngũ nhân lực phù hợp với công việc và vị trí, từ đó

nâng cao hiệu quả công việc và chất lượng nguồn nhân lực của doanh nghiệp. Đồng

thời giúp tiết kiệm được chi phí đào tạo nhân lực, tránh tình trạng ứng viên khai gian

dối độ tuổi lao động gây ra vi phạm luật lao động hiện hành dẫn tới phải liên tục tuyển

dụng nhân sự mới, doanh nghiệp lại phải tốn chi phí và thời gian cho công tác tuyển

dụng lại nhân sự.

Tuyển dụng, là một trong những lĩnh vực quan trọng của xã hội đang dần được

cải tiến và nâng cao hiệu quả bằng các công nghệ mới. Ngày nay có nhiều hệ thống hỗ

trợ trong công tác tuyển dụng nhân sự phổ biến ở nước ta như: Base E-hiring, Talent

Solution, Zoho Recruit, Greenhouse, Workable…Nhưng đa phần các hệ thống này chỉ

tập trung vào quản lý ứng viên, đăng tin tuyển dụng, lập báo cáo.

Bằng cách áp dụng các kỹ thuật của trí tuệ nhân tạo kết hợp với mạng CNN đề

án đã áp dụng các giải pháp này để hướng đến xây dựng hệ thống hỗ trợ công tác tuyển

dụng thông qua dự đoán độ tuổi và giới tính từ đó đưa ra nhận định ứng viên có phù

hợp theo độ tuổi lao động hiện hành [3] giúp nhà tuyển dụng tránh được sự khai man

của các ứng viên. Kết quả của quá trình này đó là đề án đã xây dựng được một ứng

dụng hỗ trợ công tác tuyển dụng. Kết quả trả về bao gồm kết quả chính xác và các kết

quả liên quan. Ứng dụng đã được cài đặt, thử nghiệm tại phòng nhân sự VNPT Tây

Ninh giúp cho quá trình tuyển dụng trở nên hiệu quả hơn.

2

Kết quả của đề án được trình bày trong các phần như mở bài, mục lục, kết luận

và kiến nghị, danh mục hình vẽ, danh mục bảng biểu, tài liệu tham khảo, phụ lục, và

phần chính của đề án bao gồm 4 chương như sau:

 Chương 1 Đề án giới thiệu các thông tin về nghiên cứu liên quan, phân

tích và đánh giá thực trạng, trình bày mục tiêu và giới hạn của đề án,

cung cấp ý nghĩa lý luận và thực tiễn, trình bày phương pháp nghiên cứu,

hướng tiếp cận giải quyết vấn đề, và mô tả nội dung thực hiện của đề án.

 Chương 2 Trình bày cơ sở lý thuyết liên quan đến vấn đề học sâu và thị

giác máy tính, bao gồm các lý thuyết về mô hình mạng nơ ron tích chập

(CNN) cùng với các phương pháp xây dựng mô hình dữ liệu.

 Chương 3 Trình bày tổng quan về bài toán dự đoán độ tuổi và giới tính

bằng phương pháp học sâu. Giới thiệu về hệ thống và một số phương

pháp tiếp cận.

 Chương 4 Cài đặt thử nghiệm và đánh giá. Thực hiện mô hình mạng nơ

ron tích chập CNN, xây dựng ứng dụng hỗ trợ tuyển dụng. Tiến hành

thực nghiệm, so sánh và đánh giá kết quả.

3

CHƯƠNG 1 - TỔNG QUAN

1.1 Lý do chọn đề án

Lĩnh vực quản lý nhân sự được coi là một trong những lĩnh vực quan trọng nhất

đối với mọi doanh nghiệp. Một trong những nhiệm vụ quan trọng nhất của nhà quản lý

nhân sự là tuyển dụng và chọn lọc những ứng viên sao cho phù hợp với các công việc

cụ thể. Để đảm bảo tính hiệu quả của quá trình tuyển dụng, nhà quản lý nhân sự cần

phải đưa ra những quyết định đúng đắn và nhanh chóng dựa trên những thông tin chính

xác và đầy đủ về ứng viên.

Với sự vận động, phát triển mạnh mẽ của lĩnh vực tuyển dụng ở Việt Nam, việc

sử dụng phương pháp học sâu để dự đoán độ tuổi và giới tính của ứng viên đang trở

thành xu hướng mới nhằm giúp cho quá trình tuyển dụng trở nên hiệu quả và chính xác

hơn bao giờ hết. Bằng cách áp dụng các kỹ thuật của trí tuệ nhân tạo giúp dự đoán độ

tuổi và giới tính với độ chính xác cao trong việc xác định các ứng viên phù hợp nhất

với yêu cầu, tính chất của công việc, tránh tình trạng khai man khi dự tuyển.

Hình ảnh khuôn mặt mang rất nhiều thông tin quan trọng như: tuổi tác, giới tính,

trạng thái cảm xúc, dân tộc…Trong đó, việc xác định tuổi tác và giới tính là hết sức

quan trọng, như trong giao tiếp, cần sử dụng những từ ngữ phù hợp với giới tính của

người nghe ví dụ trong tiếng Việt có: anh/chị, cô/chú…[2] Ngoài ra nó còn được áp

dụng vào nhiều lĩnh vực khác nhau như vào lĩnh vực tuyển dụng ta vừa đề cập ở trên.

Do đó, việc xác định tuổi và giới tính dựa trên khuôn mặt là một bài toán hết sức quan

trọng, có ý nghĩa thực tế to lớn.

Có nhiều nghiên cứu, giải pháp đã đề xuất cho bài toán dự đoán tuổi và giới tính

trong những năm trước đây. Hầu hết dựa vào phương pháp truyền thống, trích xuất đặc

trưng bằng tay sau đó đưa vào bài toán phân lớp. Các nghiên cứu gần đây đã cho thấy

4

kết quả khá tốt, tuy nhiên, trong vấn đề nhận diện thời gian thực, các mô hình này vẫn

chưa đạt hiệu quả cao do thiết kế quá phức tạp [2].

Hiện nay với sự phát triển của mạng học sâu, thì bài toán dự đoán tuổi và giới

tính cho những kết quả vượt bậc trong các bài toán điển hình [2] và thực hiện end-to-

end ít cần sự trích xuất đặc trưng bằng tay. Một mô hình mới đã được đề xuất bởi Alex

và nhóm nghiên cứu của họ [4]. Mô hình này sử dụng mạng CNN và đã đạt thành công

đáng kinh ngạc khi giành chiến thắng trong cuộc thi ImageNet năm 2012. Cuộc thi này

được coi là sự kiện quy mô lớn nhất trên thế giới trong lĩnh vực nhận diện đối tượng

trong ảnh.

Từ thực tiễn trên, tôi thực hiện một nghiên cứu, ứng dụng phương pháp học sâu

trong dự đoán độ tuổi và giới tính. Nghiên cứu của tôi đã tập trung vào việc xây dựng

một mô hình dự đoán tuổi và giới tính từ những hình ảnh trên chiếc CV của các ứng cử

viên từ đó hệ thống phân tích và dự đoán một cách nhanh chóng và chính xác để đáp

ứng các nhu cầu hiện hữu thông qua phương pháp “dự đoán tuổi và giới tính bằng

phương pháp học sâu” đó là lý do tôi chọn thực hiện đề án này.

1.2 Tổng quan vấn đề nghiên cứu

Tổng quan

Với nhu cầu tuyển dụng ngày càng tăng, đặc biệt là trong các doanh nghiệp lớn,

việc xác định độ tuổi và giới tính của ứng viên là điều rất quan trọng, tránh được các

rủi ro cần thiết như khai man độ tuổi lao động, hỗ trợ nhà tuyển dụng lọc các ứng viên

nhanh chóng. Tuy nhiên, quá trình này thường đòi hỏi sự nhận định và khả năng đánh

giá của nhà tuyển dụng, và có thể dẫn đến sai sót. Vì vậy, việc áp dụng phương pháp

học sâu vào việc dự đoán tuổi và giới tính của ứng viên và đưa ra đánh giá có thể giúp

cho quá trình tuyển dụng trở nên chính xác và hiệu quả hơn.

5

Mục tiêu của nghiên cứu này là xây dựng một mô hình học sâu để dự đoán tuổi

và giới tính của ứng viên trong quá trình tuyển dụng. Bằng cách sử dụng các thuật toán

học sâu như mạng nơ ron tích chập (CNN) nghiên cứu này mong muốn đem lại kết quả

chính xác và đáng tin cậy.

Hiện nay có nhiều giải pháp liên quan đến nghiên cứu của đề án, nhiều nghiên

cứu trên thế giới và Việt Nam đã quan tâm đến vấn đề nhận dạng độ tuổi và giới tính

con người đã được nghiên cứu từ rất lâu, hầu như chúng chỉ nghiên cứu tách rời nhau.

Việc xây dựng hệ thống dự đoán tuổi và giới tính trong bối cảnh Việt Nam có ý

nghĩa quan trọng từ cả mặt lý thuyết và thực tiễn.

Các công trình nghiên cứu liên quan

- Năm 2012, Alex Krizhevsky, Ilya Sutskever và Geoffrey Hinton với công

trình nghiên cứu “Phân loại ImageNet bằng mạng nơ ron tích chập sâu” [4]

được coi là một công trình đầy tầm quan trọng trong lĩnh vực Deep learning.

Các tác giả đề xuất một kiến trúc mạng nơ ron sâu được gọi là AlexNet, đạt

được thành công đột phá đáng kể trong cuộc thi “ImageNet Large Scale

Visual Recognition Challenge” năm 2012. Kiến trúc AlexNet đạt được tỷ lệ

lỗi là 15,3%, vượt qua phương pháp tốt nhất thứ hai một khoảng cách hơn

10%. Các đóng góp của bài báo bao gồm việc phát triển kiến trúc AlexNet,

sử dụng một số kỹ thuật đổi mới như hàm kích hoạt ReLU, chuẩn hóa đáp

ứng cục bộ, chế độ giảm thiểu và tăng lượng dữ liệu để cải thiện hiệu suất

mạng, mở đường cho việc áp dụng rộng rãi deep learning trong các ứng

dụng thị giác máy tính.

- Năm 2016, Linnan Zhu cùng các cộng sự đã công bố công trình nghiên cứu

“Học một mạng tích chập sâu nhẹ cho nhận dạng đồng thời tuổi và giới tính”

[5] đề xuất một mô hình đa nhiệm vụ giải quyết cả hai bài toán cùng một lúc.

Bài báo đề cập đến vấn đề nhận dạng đồng thời tuổi và giới tính của một

6

người từ một hình ảnh đã cho. Các tác giả đề xuất một kiến trúc mạng tích

chập sâu nhẹ được thiết kế để đạt độ chính xác cao trong khi giảm thiểu độ

phức tạp tính toán. Các tác giả đánh giá mạng được đề xuất trên hai bộ dữ

liệu công khai: bộ dữ liệu Adience và bộ dữ liệu FG-NET. Kết quả cho thấy

rằng mạng được đề xuất vượt qua các phương pháp tiên tiến hiện có về độ

chính xác và hiệu suất tính toán.

1.3 Mục tiêu nghiên cứu

Mục tiêu tổng quát

Nghiên cứu này nhằm mục đích áp dụng phương pháp học sâu của mạng nơ ron

tích chập CNN để dự đoán tuổi và giới tính.

Từ các kết quả tìm hiểu về cơ sở lý thuyết, thực hiện phát triển thành ứng dụng

hỗ trợ công tác tuyển dụng với các chức năng hỗ trợ cho các đối tượng là nhà tuyển

dụng. Hệ thống cần phải đáp ứng được các yêu cầu về hỗ trợ như: Xác định được giới

tính ứng viên, xác định độ tuổi lao động của ứng viên và đưa ra kết luận dự đoán cho

từng ứng viên. Đóng góp vào việc cải thiện quá trình tuyển dụng, trở nên nhanh chóng

và chính xác hơn.

Mục tiêu cụ thể

Đề án này tập trung nghiên cứu các lý thuyết cơ bản liên quan đến xử lý ảnh,

nhận dạng và dự đoán.

Nghiên cứu các lý thuyết liên quan bài toán xác độ tuổi và giới tính các khuôn

mặt trong ảnh để giải quyết các lớp vấn đề liên quan, bao gồm:

- Tổng quan về phương pháp học sâu và ứng dụng của nó trong việc dự đoán

tuổi và giới tính.

 Tìm hiểu và phân tích các khái niệm và thành phần cơ bản của phương

7

 Tham khảo các nghiên cứu liên quan đến phương pháp học sâu trong việc

pháp học sâu.

 Xác định cách thức áp dụng mạng nơ ron tích chập vào việc dự đoán tuổi

dự đoán tuổi và giới tính.

và giới tính trong lĩnh vực tuyển dụng.

 Thu thập dữ liệu từ bộ dữ liệu công khai Adience Dataset.

 Tiền xử lý dữ liệu: lựa chọn, chuyển đổi, chuẩn hóa tập huấn luyện.

 Thiết kế và triển khai mô hình mạng nơ ron tích chập để dự đoán tuổi và

- Xây dựng mô hình dự đoán tuổi và giới tính sử dụng phương pháp học sâu.

 Đánh giá hiệu suất của mô hình bằng các chỉ số như độ chính xác, xác

giới tính.

suất.

- Đánh giá hiệu quả của phương pháp CNN trong việc dự đoán tuổi và giới

 Đánh giá khả năng áp dụng thực tế của phương pháp CNN trong quá

tính trong lĩnh vực tuyển dụng.

 Đề xuất những cải tiến và phát triển tiếp theo cho phương pháp CNN

trình tuyển dụng và quy mô mở rộng.

trong việc dự đoán tuổi và giới tính trong lĩnh vực tuyển dụng.

1.4 Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu

- Các phương pháp và các kỹ thuật của học sâu, thị giác máy tính.

- Các phương pháp xử lý hình ảnh.

8

- Các phương pháp nhận dạng tuổi và giới tính.

- Phân tích thiết kế và xây dựng chức năng của ứng dụng của hệ thống hỗ trợ

tuyển dụng.

Phạm vi nghiên cứu

- Mô hình kiến trúc mạng nơ ron tích chập (CNN).

 Giới tính nam.

 Giới tính nữ.

- Phương pháp nhận dạng giới tính:

- Để nhận dạng giới tính thông qua bức ảnh, có thể sử dụng các đặc trưng sau

 Kích thước khuôn mặt: Ví dụ khuông mặt giới tính nam sẽ thường to hơn

đây để đạt được hiệu suất tốt hơn như sau:

 Đặc trưng khuôn mặt: Một số đặc trưng có thể trích xuất từ khuôn mặt

so với giới tính nữ.

như đặc điểm của mắt, mũi, miệng, vùng trán.... Điều này có thể cung

cấp thông tin quan trọng để phân biệt giữa các đặc điểm giới tính. Ví dụ

 Các đặc điểm hình học: Các đặc điểm hình học như hình dáng khuôn mặt

miệng của giới tính nam thường sẽ to hơn so với nữ.

(hình vuông hoặc tròn), tỷ lệ giữa các phần của khuôn mặt có thể có ý

 Kiểu tóc: Kiểu tóc thường khác biệt giữa nam và nữ. Thông qua đặc

nghĩa trong việc nhận dạng giới tính.

 Chi tiết vùng mắt: vùng mắt có thể cung cấp nhiều thông tin về giới tính.

trưng như độ dài, kiểu tóc.

9

 Từ 0 tuổi đến 14 tuổi.

 Từ 15 tuổi đến 45 tuổi.

 Lớn hơn 65 tuổi.

- Phương pháp xác định đối tượng trong các nhóm độ tuổi được chia cố định:

- Có thể sử dụng các đặc trưng sau đây để đạt được hiệu suất tốt hơn đối với

 Nếp nhăn và đặc điểm khuôn mặt: Những nếp nhăn, vết chân chim và các

nhận dạng độ tuổi như sau:

đặc điểm khuôn mặt khác có thể chứa thông tin về độ tuổi của người.

Sắc tố da và tóc: Sự thay đổi của màu da và tóc thường đi kèm với tuổi

 Nám và tàn nhang: Những dấu hiệu của tuổi tác như nám, tàn nhang.

 Kiểu tóc và màu tóc: Kiểu tóc và màu tóc cũng có thể thay đổi theo độ

tác

tuổi. Chẳng hạn, sự xuất hiện của sợi tóc bạc thường đi kèm với tuổi tác

 Biểu cảm khuôn mặt: Những biểu cảm khuôn mặt cũng có thể thay đổi

cao hơn.

 Kích thước mắt, miệng: Kích thước của các phần trên khuôn mặt cũng có

theo độ tuổi.

thể thay đổi theo độ tuổi.

1.5 Phương pháp nghiên cứu

Đề án kết hợp việc sử dụng phương pháp nghiên cứu lý thuyết và xây dựng ứng

dụng thực nghiệm.

 Tìm hiểu về học sâu, tìm hiểu về thị giác máy tính, trí tuệ nhân tạo.

- Nghiên cứu lý thuyết:

 Tìm hiểu kiến trúc mạng nơ ron tích chập.

10

 Thực hiện dự đoán tuổi và giới tính bằng mạng mạng nơ ron tích chập.

 Thực nghiệm xây dựng hệ thống hỗ trợ công tác tuyển dụng từ hình ảnh

- Nghiên cứu thực nghiệm:

ứng viên cung cấp cho nhà tuyển dụng.

1.6 Ý nghĩa khoa học và thực tiễn của đề án

Ý nghĩa khoa học

Áp dụng công nghệ mới trong lĩnh vực tuyển dụng nhân sự. Phát triển ứng dụng

để góp phần từng bước phổ biến và làm phát triển công nghệ này.

Ý nghĩa thực tiễn

Áp dụng các kỹ thuật xử lý ảnh và sử dụng mô hình mạng nơ ron tích chập

(CNN), ứng dụng này đóng góp quan trọng cho việc nghiên cứu, tìm hiểu, sử dụng và

khai thác tài liệu liên quan đến đề án. Đồng thời, nó cũng hỗ trợ quá trình tuyển dụng

nhân sự một cách nhanh chóng, hiệu quả và chính xác.

11

CHƯƠNG 2 - CƠ SỞ LÝ THUYẾT

2.1. Giới thiệu về học sâu và thị giác máy tính

2.1.1. Học sâu

Học sâu (Deep learning) là một phương pháp tiên tiến trong lĩnh vực trí tuệ nhân

tạo, nhằm giúp máy tính học và xử lý dữ liệu theo mô phỏng quá trình tư duy trong não

bộ con người. Mô hình học sâu có khả năng nhận diện và hiểu được nhiều mẫu phức

tạp trong hình ảnh, văn bản, âm thanh và các dữ liệu khác, từ đó đưa ra thông tin và dự

đoán chính xác. Các phương pháp học sâu cũng đóng vai trò quan trọng trong việc tự

động hóa các tác vụ mà trước đây yêu cầu sự can thiệp và trí tuệ của con người.

Các thuật toán học sâu là các mạng nơ ron được mô hình hóa theo bộ não con

người. Ví dụ, bộ não con người có hàng triệu nơ ron kết nối với nhau, hoạt động cùng

nhau để tìm hiểu và xử lý thông tin. Tương tự, các mạng nơ ron học sâu, hay còn gọi là

mạng nơ ron nhân tạo, được hình thành từ nhiều lớp nơ ron nhân tạo hoạt động cùng

nhau bên trong máy tính.

Các nơ ron nhân tạo là các mô đun phần mềm được gọi là nút, sử dụng các phép

toán để xử lý dữ liệu. Các mạng nơ ron nhân tạo là các thuật toán học sâu sử dụng các

nút này để giải quyết các vấn đề phức tạp.

12

Hình 2.1: Mô hình học sâu

2.1.1.1. Các thành phần của mô hình học sâu

Một mạng nơ ron chuyên sâu có các thành phần sau:

Lớp đầu vào (Input Layer)

- Một mạng nơ ron nhân tạo sẽ bao gồm một số nút dùng để nhập dữ liệu đầu

vào. Các nút này tạo nên lớp đầu vào của hệ thống.

Lớp ẩn (Hidden Layer)

- Lớp đầu vào trong mạng nơ ron xử lý và truyền dữ liệu đến các lớp sâu hơn.

Các lớp ẩn này thực hiện xử lý thông tin ở các cấp độ khác nhau, thích ứng

với hành vi của chúng khi nhận thông tin mới. Mạng học sâu có thể có hàng

trăm lớp ẩn, cho phép phân tích vấn đề từ nhiều góc độ khác nhau.

13

- Ví dụ, trong trường hợp phân loại hình ảnh của một loài vật chưa được xác

định, cần so sánh hình ảnh đó với các loài vật đã biết. Để thực hiện điều này,

quan sát các đặc điểm như hình dáng của cặp mắt, đôi tai, kích thước, số

lượng chi và hình mẫu lông của loài vật. Mục tiêu là xác định các hình mẫu

 Loài vật có móng guốc nên nó có thể là lợn rừng hoặc hươu đỏ.

 Một loài vật có đặc điểm là có mắt mèo có thể là một loài mèo hoang dã

này để phân loại đúng loài vật đó như sau:

chưa được xác định.

- Trong mạng nơ ron học sâu, các lớp ẩn hoạt động theo cùng một cách tiếp

cận. Khi một thuật toán học sâu đang cố gắng phân loại một hình ảnh động

vật, mỗi lớp ẩn của thuật toán sẽ xử lý một đặc điểm riêng biệt của con vật

và cố gắng phân loại nó một cách chính xác.

Lớp đầu ra (Output Layer)

- Lớp đầu ra bao gồm các nút xuất dữ liệu. Các mô hình học sâu có thể đưa ra

đáp án “có” hoặc “không” bằng cách sử dụng hai nút trong lớp đầu ra. Nếu

mô hình cần đưa ra nhiều đáp án hơn, thì số lượng nút trong lớp đầu ra sẽ

2.1.1.2. So với máy học, mô hình học sâu mang lại những lợi ích sau

tăng tương ứng.

Xử lý hiệu quả dữ liệu phi cấu trúc

- Phân tích dữ liệu phi cấu trúc là một thách thức đối với các phương pháp

máy học, do tập dữ liệu huấn luyện có thể thay đổi đáng kể. Trong khi đó,

các mô hình học sâu có khả năng hiểu được dữ liệu phi cấu trúc và đưa ra

nhận xét tổng quát mà không cần trích xuất đặc trưng thủ công. Ví dụ, một

mạng nơ ron có thể nhận ra rằng hai câu đầu vào khác nhau về cú pháp

nhưng mang cùng ý nghĩa:

 Có thể chỉ cho tôi cách thanh toán không?

 Tôi có thể chuyển tiền bằng cách nào?

14

Khám phá những mối quan hệ và mẫu ẩn

- Ứng dụng của học sâu cho phép phân tích sâu hơn một lượng lớn dữ liệu và

khám phá ra thông tin chuyên sâu mới mà có thể chưa được đào tạo trước đó.

Ví dụ, giả sử sử dụng một mô hình học sâu để phân tích giao dịch mua hàng

của người tiêu dùng. Mô hình này chỉ được huấn luyện trên dữ liệu của

những mặt hàng đã được mua. Tuy nhiên, mạng nơ ron nhân tạo có khả

năng đề xuất các mặt hàng mới mà người tiêu dùng chưa từng mua, bằng

cách so sánh các mẫu mua hàng của người dùng với dữ liệu từ nhiều khách

hàng tương tự khác.

Học không giám sát

- Các mô hình học sâu có khả năng học hỏi và cải thiện theo thời gian dựa

trên hành vi của người dùng mà không yêu cầu tập dữ liệu được dán nhãn có

sự biến động cao. Ví dụ, một mạng nơ ron tự động có thể điều chỉnh và đề

xuất từ ngữ dựa trên phân tích hành vi đánh máy. Giả sử mô hình được huấn

luyện bằng tiếng Anh và có khả năng kiểm tra ngữ pháp tiếng Anh. Tuy

nhiên, nếu người dùng thường xuyên gõ các từ không phải tiếng Anh như

“danke”, mạng nơ ron sẽ tự động học và điều chỉnh để nhận biết và sử dụng

những từ này.

Xử lý dữ liệu dễ biến động

- Các tập dữ liệu dễ biến động có tính biến động cao. Mạng nơ ron học sâu

cũng có khả năng phân loại và sắp xếp dữ liệu.

15

2.1.2. Thị giác máy tính

Thị giác máy tính là khả năng của máy tính trích xuất thông tin và dữ liệu

chuyên sâu từ hình ảnh và video. Các kỹ thuật học sâu được sử dụng để giúp máy tính

hiểu và phân tích hình ảnh như con người. Các thuật toán phân tích và xử lý dựa trên

các đặc trưng trong ảnh và video, từ đó đưa ra các dự đoán. Thị giác máy tính đã được

ứng dụng trong nhiều lĩnh vực, bao gồm:

- Nhận dạng khuôn mặt để xác định khuôn mặt và nhận biết các đặc điểm như

mở mắt, đeo kính và có râu.

- Phân loại hình ảnh để xác định quần áo và các chi tiết khác trong hình ảnh.

- Kiểm duyệt nội dung để tự động loại bỏ các nội dung không an toàn hoặc

không phù hợp khỏi kho lưu trữ hình ảnh và video.

Một kiến trúc mạng nơ ron được sử dụng phổ biến trong thị giác máy tính đó là

mạng nơ ron tích chập (Convolutional Neural Network - CNN). Đây là một kiến trúc

đa tầng được sử dụng để xử lý dữ liệu đầu vào và tạo ra một tập hợp số để so sánh với

các dữ liệu đã biết, nhằm định nghĩa và phân loại dữ liệu đó. Có nhiều loại kiến trúc

CNN nổi tiếng như AlexNet, VGGNet, GoogleNet, và còn nhiều kiến trúc khác.

2.2. Kiến trúc mạng nơ ron tích chập

2.2.1. Tổng quan về kiến trúc mạng tích chập

Mạng nơ ron tích chập là một trong những mô hình học sâu tiên tiến và được sử

dụng rộng rãi. Nó rất hiệu quả trong việc xử lý dữ liệu hình ảnh và đã đóng góp đáng

kể vào việc xây dựng các hệ thống thông minh hiện đại với độ chính xác cao.

Lý do CNN được sử dụng phổ biến trong xử lý hình ảnh

16

- Một hình ảnh là một ma trận các pixel, nhưng thường không biến đổi ma

trận thành một vector và xử lý nó bằng cách sử dụng kiến trúc mạng nơ ron

truyền thống. Lý do là vì ngay cả với hình ảnh đơn giản nhất, các pixel liền

kề có sự phụ thuộc lẫn nhau, việc biến đổi thành vector sẽ làm mất đi thông

tin phụ thuộc này và làm thay đổi ý nghĩa của bức hình. Ví dụ, biểu tượng

của mắt, miệng con người hoặc thậm chí là cạnh của một đối tượng khác

được xây dựng từ một số pixel được bố trí theo một cách nhất định. Nếu xử

lý hình ảnh thành một vector, những phụ thuộc này bị mất và làm giảm độ

chính xác của mô hình.

- CNN có khả năng ghi lại sự phụ thuộc không gian của hình ảnh kể từ khi nó

xử lý chúng dưới dạng ma trận và phân tích toàn bộ các phần của một hình

ảnh tại một thời điểm, tùy thuộc vào kích thước của bộ lọc. Ví dụ: một lớp

lọc (convolutional layer) có kích thước 3 x 3 sẽ phân tích 9 điểm ảnh tại một

thời điểm cho đến khi nó bao phủ toàn bộ hình ảnh.

- Mỗi phần của hình ảnh được cung cấp một tập hợp các tham số (chiều rộng

và độ lệch) sẽ tham chiếu mức độ liên quan của tập hợp pixel đó với toàn bộ

hình ảnh, tùy thuộc vào bộ lọc. Theo điều này, bằng cách giảm số lượng các

tham số và bằng cách phân tích hình ảnh theo từng phần, CNN có thể hiển

thị đại diện tốt hơn của hình ảnh.

- Mỗi giá trị của ma trận đại diện cho một pixel trong hình ảnh, trong đó số

được xác định bởi cường độ của màu, với các giá trị nằm trong khoảng từ 0

đến 255. Thang độ xám, pixel trắng được biểu thị bằng số 255 và pixel đen

bằng số 0. Pixel xám là bất kỳ số nào ở giữa, tùy thuộc vào cường độ của

màu sắc, màu xám càng nhạt, con số càng gần 255. Hình ảnh có màu thường

được biểu diễn bằng hệ thống RGB, hệ thống này đại diện cho mỗi màu là

sự kết hợp của đỏ, xanh lá cây và xanh lam. Ở đây, mỗi pixel sẽ có ba kích

17

thước, một cho mỗi màu. Các giá trị trong mỗi thứ nguyên sẽ nằm trong

khoảng từ 0 đến 255. Ở đây, màu càng đậm, con số càng gần 255. Ở đây,

kích thước đầu tiên đề cập đến chiều cao của hình ảnh (trong số pixel), kích

thước thứ hai đề cập đến chiều rộng của hình ảnh (trong số pixel) và thứ

nguyên thứ ba được gọi là kênh và đề cập đến bảng màu của hình ảnh. Số

kênh cho hình ảnh màu là ba (một kênh cho mỗi màu trong Hệ thống RGB).

Hình 2.2: Hình ảnh tỷ lệ xám chỉ có một kênh

2.2.2. Các đặc trưng chung của mạng CNN

Hình 2.3: Mạng Alexnet, một kiến trúc điển hình của CNN

18

Sử dụng phương pháp tích chập: Các mạng nơ ron tích chập đều sử dụng

phương pháp tích chập để trích xuất các đặc trưng từ dữ liệu. Do đó, chúng được gọi

chung là mạng nơ ron tích chập.

Kiến trúc phân tầng: Kiến trúc phân tầng trong mạng CNN giúp cho quá trình

học của mạng xảy ra ở nhiều cấp độ khác nhau, từ cấp độ thấp đến cao. Khi đó, mạng

CNN có khả năng tiếp cận và học các đặc trưng từ mức độ thấp như đường chéo,

ngang, dọc, rìa và cạnh, tới các đặc trưng chi tiết hơn. Các đặc trưng này được tổng

hợp và trích xuất thông qua các tầng tích chập của mạng.

Được huấn luyện trên những bộ dữ liệu lớn: Sự khác biệt quan trọng giữa mô

hình học sâu nhiều tầng và các phương pháp học máy truyền thống chỉ trở nên rõ rệt

khi huấn luyện trên các bộ dữ liệu lớn. Trên bộ dữ liệu nhỏ, phương pháp truyền thống

có thể đủ để phân biệt các nhãn với nhau, và không có sự ưu thế đáng kể của mạng nơ

ron đa tầng. Tuy nhiên, trên các bộ dữ liệu lớn, kiến trúc học sâu nhiều tầng đã chứng

tỏ sự vượt trội về độ chính xác và khả năng biểu diễn. Điều này dễ hiểu bởi mạng nơ

ron có thể có hàng chục triệu tham số, vượt xa số lượng tham số của các phương pháp

học máy truyền thống, cho phép nó có khả năng biểu diễn tốt hơn.

Kích thước layers giảm dần: Nghiên cứu đã chứng minh rằng việc giảm kích

thước layers có thể giảm số lượng tham số của mô hình một cách đáng kể, từ đó tạo ra

các mạng nhẹ hơn và tăng tốc độ dự đoán. Đồng thời, sự giảm này không ảnh hưởng

đáng kể đến độ chính xác của mô hình.

Độ sâu tầng layers tăng dần: Bằng việc tăng số lượng bộ lọc theo cấp số nhân,

độ sâu của các layers trong mạng CNN được gia tăng. Điều này giúp mô hình học được

nhiều đặc trưng đa dạng hơn. Các layers đầu tiên thường tạo ra những đặc trưng chung

có hình dạng và phương hướng tương tự, do đó không cần nhiều bộ lọc. Tuy nhiên, khi

đến các layers sau, yêu cầu độ chi tiết tăng cao hơn, điều này đồng nghĩa với việc cần

nhiều bộ lọc hơn để phân biệt được các chi tiết đặc trưng.

19

Từ mạng CNN, quá trình tích chập tạo ra các đặc trưng hai chiều. Để sử dụng

những đặc trưng này trong quá trình phân loại của mạng CNN, cần được chuyển thành

đặc trưng một chiều thông qua phương pháp flatten và được truyền qua các layers kết

nối đầy đủ. Mỗi layer được kích hoạt bằng hàm phi tuyến để tăng khả năng biểu diễn

và cải thiện kết quả phân loại.

2.2.3. Các mạng CNN tiêu biểu

LeNet-5 (1998)

Hình 2.4: Kiến trúc LeNet

LeNet-5 là một kiến trúc pionner trong việc áp dụng mạng tích chập hai chiều,

được sáng tạo bởi giáo sư Yan Lecun, người được coi là cha đẻ của kiến trúc CNN. Mô

hình ban đầu đơn giản, chỉ gồm 2 convolutional layers và 3 fully-connected layers.

Mặc dù đơn giản, LeNet-5 đã cho thấy hiệu suất vượt trội so với các thuật toán máy

học truyền thống khác.

AlexNet (2012)

Hình 2.5: Kiến trúc AlexNet

20

AlexNet là một mạng CNN ra mắt vào năm 2012 bởi Alex Krizhevsky và đã

xuất sắc giành chiến thắng trong cuộc thi ImageNet với sự chênh lệch đáng kể so với

đội thứ hai. Thành công của AlexNet đã chứng minh rằng các đặc trưng học được từ

mô hình có thể vượt trội hơn so với các đặc trưng được tạo ra bằng cách thủ công sử

dụng các thuật toán như SUFT, HOG và SHIFT. Ý tưởng của AlexNet dựa trên kiến

trúc LeNet của Yan Lecun và có các cải tiến sau:

- Tăng kích thước đầu vào và độ sâu của mạng.

- Để phù hợp với kích thước của các đặc trưng chung và đặc trưng riêng,

mạng CNN sử dụng các bộ lọc (kernel hoặc filter) có kích thước giảm dần

qua các tầng (layers).

- Để tăng tốc độ hội tụ của quá trình, mạng CNN sử dụng phương pháp chuẩn

hóa (local normalization) để điều chỉnh các tầng (layer) của nó.

Mạng đã được cải tiến trong quá trình tối ưu hóa như sau:

- Mạng đã áp dụng hàm kích hoạt ReLU thay cho Sigmoid. Đây là lần đầu

tiên hàm kích hoạt ReLU được sử dụng trong mạng nơ ron, nhờ tính chất

đạo hàm đơn giản chỉ gồm 2 giá trị {0, 1} và không có lũy thừa cơ số như

hàm Sigmoid. Hàm ReLU giúp tạo ra tính phi tuyến cho mạng và có tốc độ

tính toán nhanh.

21

Hình 2.6: Hàm ReLU

- Mạng đã được cải tiến bằng việc sử dụng dropout layer, giúp giảm số lượng

kết nối giữa các nơ ron và kiểm soát hiện tượng overfitting.

Hình 2.7: Phương pháp dropout

22

Thông qua mỗi lớp trong mạng, kích thước đầu ra giảm dần trong khi độ sâu

tăng lên theo từng bộ lọc.

Mạng AlexNet có resolution của input và số lượng layer lớn hơn nên số lượng

tham số của nó lên tới 60 triệu, lớn hơn so với LeNet rất nhiều.

VGG-16 (2014)

Hình 2.8: Kiến trúc VGG-16

Với mô hình VGG-16, mạng nơ ron đã được chứng minh mang lại lợi ích đáng

kể trong việc cải thiện độ chính xác của mô hình. 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:

- Mạng VGG-16 được xây dựng với mức độ sâu hơn, bao gồm 13 lớp tích

chập hai chiều (so với 5 lớp của AlexNet) và 3 lớp fully connected.

- Một điểm đáng chú ý trong VGG-16 là việc sử dụng khái niệm khối tích

chập (block), đó là việc lặp lại một tập hợp các lớp CNN giống nhau. Kiến

trúc khối đã trở thành một mẫu thiết kế phổ biến trong các mạng CNN từ đó.

- VGG-16 cũng tiếp tục sử dụng hàm kích hoạt ReLU như AlexNet.

- Một thay đổi quan trọng khác là VGG-16 thay đổi thứ tự của các khối khi

xếp các lớp CNN và max pooling. Thay vì xen kẽ một lớp CNN và max

pooling như AlexNet, VGG-16 xếp nhiều lớp CNN liên tiếp trước khi áp

dụng max pooling.

23

- 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ột đặc điểm khác của VGG-16 là sử dụng bộ lọc kích thước nhỏ 3x3. Sử

dụng các bộ lọc nhỏ này giúp giảm số lượng tham số của mô hình và đồng

thời cải thiện hiệu suất tính toán.

Mạng VGG-16 có độ sâu lớn hơn so với AlexNet và tổng số tham số của nó lên

tới 138 triệu. Điều này đặt VGG-16 vào danh sách các mạng có số lượng tham số lớn

nhất. Ngoài ra, còn có một phiên bản khác của VGG-16 gọi là VGG-19, mở rộng thêm

3 lớp để tăng độ sâu của mạng.

GoogleNet - Inception-V1 (2014)

Hình 2.9: Kiến trúc GoogleNet

24

Trước đây, các kiến trúc mạng nơ ron thường sử dụng các bộ lọc với nhiều kích

thước khác nhau như 11x11, 5x5, 3x3 và thậm chí cả bộ lọc nhỏ nhất là 1x1. Tuy nhiên,

trong nghiên cứu này, đề xuất một phương pháp kết hợp đồng thời tất cả các bộ lọc này

vào cùng một khối, và phương pháp này đã mang lại hiệu quả đáng kể. Gọi kiến trúc

này là “kiến trúc khối Inception”.

- Trong phương pháp kiến trúc khối Inception, đề xuất sử dụng 4 nhánh song

song. Mỗi nhánh áp dụng các bộ lọc có kích thước khác nhau như 1x1, 3x3,

5x5 trong mô đun Inception, nhằm trích xuất các đặc trưng đa dạng từ các

vùng nhận thức có kích thước khác nhau.

- Ở những nhánh đầu tiên (nhánh 1, 2, 4 từ trên xuống), sử dụng phép tích

chập 1x1 trên từng điểm ảnh như một kết nối fully connected, nhằm giảm

độ sâu kênh và số lượng tham số của mô hình.

- Nhánh thứ 3 từ trên xuống cần giảm chiều dữ liệu bằng một layer max

pooling kích thước 3x3 và sau đó áp dụng bộ lọc kích thước 1x1 để thay đổi

số kênh.

- Trong nhánh thứ 3 (từ trên xuống), giảm kích thước dữ liệu bằng một lớp

max pooling có kích thước 3x3, sau đó áp dụng một bộ lọc 1x1 để thay đổi

số kênh.

Trong kiến trúc Inception-V1, áp dụng khối Inception lặp lại 7 lần. Toàn bộ

mạng bao gồm 22 lớp, làm tăng đáng kể so với VGG-16. Một trong những đóng góp

quan trọng của kiến trúc này là việc sử dụng tích chập 1x1, giúp giảm số lượng tham số

xuống chỉ còn 5 triệu, ít hơn gần 27 lần so với VGG-16. Điều này đạt được nhờ việc áp

dụng kỹ thuật giảm chiều dữ liệu thông qua tích chập 1x1, giúp tiết kiệm tài nguyên

tính toán và giảm độ phức tạp của mô hình.

25

GoogleNet - Inception-V3 (2015)

Hình 2.10: Kiến trúc GoogleNet - Inception version 3

Inception-V3 là một phiên bản tiếp nối của Inception-V1 và có tổng cộng 24

triệu tham số. Tất cả các lớp tích chập trong Inception-V3 được theo sau bởi một lớp

batch normalization và một hàm kích hoạt ReLU. Batch normalization là một kỹ thuật

giúp chuẩn hóa đầu vào của mỗi lớp theo phân phối chuẩn N(0,1) trong từng mini

batch, điều này giúp gia tăng tốc độ huấn luyện của mô hình.

Inception-V3 là một kiến trúc mạng nơ ron có khả năng giải quyết vấn đề thắt

cổ chai, tức là kích thước của các lớp không giảm một cách đột ngột. Điều này được

26

đạt được thông qua việc sử dụng phương pháp nhân tố, một cách tính toán hiệu quả

trong mô hình.

Hiện tại mô đun Inception bao gồm 4 version:

- Inception-A là một cải tiến của Inception module V1. Ở nhánh thứ nhất,

thay thế một layer tích chập kích thước 5x5 bằng hai layer tích chập kích

thước 3x3 liên tiếp. Điều này giúp giảm số lượng tham số từ 25 xuống 18 và

tăng độ sâu của mô hình.

- Inception-B là một cải tiến tiếp theo dựa trên Inception-A. Thay thế layer

tích chập kích thước 3x3 bằng layer tích chập kích thước 7x7 ở cả nhánh thứ

nhất và nhánh thứ hai. Đồng thời, phân tách nhân tố tích chập kích thước

7x7 thành hai tích chập liên tiếp 7x1 và 1x7 để giảm số lượng tham số so

với việc sử dụng hai tích chập 3x3 liên tiếp. Kết quả là số lượng tham số

giảm từ 18 xuống 14.

- Inception-C là một cải tiến tiếp theo của Inception-B. Thay thế tích chập

7x1 bằng tích chập 3x1 và 1x7 bằng tích chập 1x3, và đặt chúng cạnh nhau

thay vì liên tiếp. Kiến trúc này giúp giảm số lượng tham số từ 14 xuống 6.

Ngoài ra Inception-V3 cũng áp dụng hai kiến trúc giảm chiều dữ liệu là

Reduction-A và Reduction-B.

27

CHƯƠNG 3 - PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Trong chương này sẽ trình bày tổng quan về bài toán dự đoán độ tuổi và giới

tính bằng phương pháp học sâu. Giới thiệu về hệ thống và một số phương pháp tiếp cận.

Các chức năng chính của hệ thống. Trong phạm vi chương này, đề án sẽ trình bày cũng

như sẽ nghiên cứu và xây dựng hệ thống hỗ trợ công tác tuyển dụng thông qua bài toán

dự đoán độ tuổi và giới tính.

3.1. Hướng tiếp cận

Mô hình sẽ tập huấn trên dữ liệu gồm rất nhiều gương mặt cùng với nhãn là giới

tính cho mạng dự đoán giới tính, nhãn là tuổi cho dự đoán tuổi.

Sau khi huấn luyện được hoàn thành 2 mô hình trên thì sẽ tiến hành dự đoán

trên dữ liệu thực tế, một tấm ảnh hoàn chỉnh gồm khuôn mặt người, độ tuổi khác nhau.

Xây dựng hệ thống dựa trên kết quả của mạng nơ ron tích chập trên vào hỗ trợ

công tác tuyển dụng nhân sự.

3.2. Dữ liệu huấn luyện

3.2.1. Giới thiệu về tập dữ liệu

Tên tập dữ liệu công khai: Adience Dataset.

Bộ dữ liệu Adience là một tập dữ liệu quan trọng trong lĩnh vực nhận dạng

khuôn mặt, được sử dụng rộng rãi trong nghiên cứu và ứng dụng thực tế. Bộ dữ liệu đa

dạng về đặc trưng khuôn mặt như tuổi, giới tính, dạng tóc, kính, phụ kiện đeo trang sức

và áo khoác.

Sử dụng bộ dữ liệu Adience để đào tạo các mô hình học máy nhằm nhận diện

khuôn mặt, phân loại giới tính và ước lượng tuổi. Điều này rất quan trọng trong việc

phát triển hệ thống nhận dạng khuôn mặt hiệu quả và đáng tin cậy cho các ứng dụng.

28

Bộ dữ liệu Adience được phát triển bởi một nhóm các nhà khoa học máy tính tại

Đại học Texas tại Austin và Đại học của Torino. Họ đã thu thập dữ liệu từ nhiều nguồn

khác nhau, bao gồm các hình ảnh chụp trong môi trường tự nhiên và trong phòng thí

nghiệm. Mỗi hình ảnh khuôn mặt trong bộ dữ liệu Adience đã được xác định đúng tuổi

và giới tính của người trong ảnh, cùng với thông tin về các đặc trưng khác như tóc,

kính và trang sức.

Bộ dữ liệu Adience được sử dụng rộng rãi trong các nghiên cứu về nhận dạng

khuôn mặt và học sâu. Có thể sử dụng nó để đào tạo và kiểm tra các mô hình nhận

dạng khuôn mặt, đánh giá hiệu suất của các mô hình này và so sánh với các phương

pháp khác.

Hình 3.1: Hình ảnh trong tập dữ liệu Adience

29

3.2.2. Các bước xây dựng từ tập dữ liệu Adience Dataset

_Download ảnh: aligned.tar.gz (User & Pw FTP: adiencedb; adience)

Hình 3.2: Thư mục chứa các ảnh được giải nén

Các file ảnh khuôn mặt này đã được aligned, nghĩa là đã được xử lý thẳng đều

giữa 2 mắt.

Thiết lập nhãn cho các hình ảnh tương ứng:

30

Bảng 3.1: Danh mục nhãn

STT Ký hiệu Mô tả VÍ DỤ

(115321157@N03,

Định danh sẽ 115321157@N08,

1 user_id thuộc về thư mục 100003415@N08, nào.

....)

(10424815813_e94629b1ec_o.jpg,

2 original_image Tên file ảnh 10437979845_5985be4b26_o.jpg,

…)

3 face_id Kiểu khuôn mặt

4 age Nhóm tuổi ([0-14], [15-45], [45,100])

M - Nam 5 gender Giới tính F - Nữ

6 x Tọa độ x

7 y Tọa độ y

8 dx Chiều rộng

9 dy Chiều cao

Góc nghiêng của 10 tilt_ang khuôn mặt

31

Góc quay của 11 fiducial_yaw_angle khuôn mặt

Một chỉ số đánh

giá độ chính xác 12 fiducial_score căn chỉnh khuôn

mặt

Bảng 3.2: Thông tin các nhãn tương ứng với các bức ảnh

3.3. Tiền xử lý dữ liệu

3.3.1. Loại bỏ đặc trưng không cần thiết

Để đạt được kết quả tốt trong quá trình huấn luyện mô hình, cần tiến hành phân

biệt và loại bỏ các trường dữ liệu không cần thiết trong bộ dữ liệu được sử dụng cho

32

bài toán dự đoán tuổi và giới tính. Dựa trên yêu cầu thực tế của bài toán, tôi đã thực

hiện loại bỏ các trường như biểu cảm (Expressions) và tư thế (Pose) không có ý nghĩa

quan trọng trong việc dự đoán này.

3.3.2. Chỉnh kích thước ảnh sang kích thước phù hợp

Bởi vì các ảnh trong Adience Dataset có kích thước tương đối lớn (816x816x3)

vì thế để scale về kích thước mà mô hình cần có để huấn luyện có thể sử dụng.

3.4. Mô hình được sử dụng

3.4.1. Tổng quan mô hình

Để đạt được hiệu quả cao trong việc xây dựng mô hình, có những yếu tố quan

trọng cần được xem xét. Đầu tiên, cấu trúc mạng nơ ron và thuật toán được sử dụng

đóng vai trò quan trọng. Ngoài ra, việc xác định các biến dữ liệu phù hợp và điều chỉnh

tham số mô hình dựa trên bộ dữ liệu huấn luyện cũng là yếu tố quan trọng khác.

Tôi sẽ sử dụng mạng CNN để dự đoán độ tuổi và giới tính từ hình ảnh. Bộ dữ

liệu sử dụng đã được giới thiệu trong phần trước và sẽ được sử dụng để huấn luyện mô

hình.

Cấu trúc mô hình mạng nơ ron tích chập được áp dụng trong bài toán dựa trên

mô hình AlexNet. Mô hình này bao gồm tổng cộng 8 lớp tích chập (Convolution). Chi

tiết cấu trúc của mô hình bao gồm 5 lớp tích chập (convolutional layer), 2 lớp hoàn

toàn kết nối (fully connected layer) và 1 lớp hoàn toàn kết nối đầu ra (fully connected

layer output). Bên cạnh đó, thay vì sử dụng activation function(hàm kích hoạt) là

ReLU, thì trong mạng AlexNet sử dụng hàm Sigmoid. Mô hình bao gồm các chi tiết cụ

thể như sau:

33

Hình 3.3: Mạng Alexnet

Convolution layer

Trong một convolution layer bất kỳ sẽ bao gồm nhiều kernel có cùng kích thước.

Ví dụ như convolution layer đầu tiên của AlexNet chứa 96 kernel có kích thước

(11x11x3). Thông thường thì width và height của một kernel bằng nhau, và độ sâu

(depth) thường bằng số lượng kênh màu.

Các convolutional layer 1 và convolutional layer 2 trong mô hình được kết nối

với nhau thông qua một Overlapping Max Pooling layer ở giữa. Tương tự, giữa

convolutional layer 2 và convolutional layer 3 cũng có một Overlapping Max Pooling

layer. Các convolutional layer 3, convolutional layer 4 và convolutional layer 5 kết nối

trực tiếp với nhau mà không thông qua bất kỳ lớp trung gian nào. Convolutional layer 5

kết nối với fully connected layer 1 thông qua một Overlapping Max Pooling layer, sau

đó là một fully connected layer tiếp theo. Cuối cùng, một bộ phân lớp softmax với

1000 lớp nhãn được áp dụng.

34

ReLU nonlinearity được áp dụng sau tất cả các convolutional layer và fully

connected layer trong mô hình. Trước đây, ReLU nonlinerity của lớp convolution 1 và

2 thường theo sau bởi một bước chuẩn hóa cục bộ (local normalization) rồi mới thực

hiện pooling. Tuy nhiên, các nghiên cứu sau đó nhận thấy rằng việc sử dụng

normalization không thật sự hữu ích.

Overlapping Max Pooling

Max Pooling layer thường được sử dụng để giảm kích thước không gian của

một tensor (chiều dài và chiều rộng), trong khi vẫn giữ nguyên chiều sâu. Overlapping

Max Pool layter cũng tương tự như Max Pool layter, ngoại trừ việc là một window của

bước này sẽ có một phần chồng lên window của bước tiếp theo. Tác giả sử dụng

pooling có kích thước 3x3 và bước nhảy là 2 giữa các pooling. Nghĩa là giữa pooling

này và pooling khác sẽ overlapping với nhau 1 pixel. Các thí nghiệm thực tế đã chứng

minh rằng việc sử dụng overlapping giữa các pooling giúp giảm độ lỗi top-1 error 0.4%

và top-5 error là 0.3% khi so với việc sử dụng pooling có kích thước 2x2 và bước nhảy

2 (vector output của cả hai đều có số chiều bằng nhau).

ReLu Nonlinearity

Một cải tiến quan trọng khác của AlexNet là việc sử dụng hàm phi tuyến ReLU.

Trước đây, các nhóm nghiên cứu khác thường sử dụng hàm kích hoạt là hàm Sigmoid

để huấn luyên mô hình mạng nơ ron. AlexNet chỉ ra rằng, khi sử dụng ReLU, mô hình

học sâu CNN sẽ huấn luyện nhanh hơn so với việc sử dụng sigmoid. Hình bên dưới

được rút ra từ bài báo chỉ ra rằng với việc sử dụng ReLU (đường nét liền trong hình),

AlexNet đạt độ lỗi 25% trên tập huấn luyện và nhanh hơn gấp 6 lần so với mô hình

tương tự.

35

Hình 3.4: Ví dụ thí nghiệm sử dụng ReLU

3.4.2. Định nghĩa

Đầu tiên, thực hiện import các thư viện cần thiết cho bài toán, bao gồm:

- OS: Thư viện được sử dụng để hỗ trợ thao tác với các thư mục trong máy

tính.

- Tensorflow: Thư viện hỗ trợ về các phương thức học máy.

- Numpy : Các thao tác thực hiện với dữ liệu kiểu mảng.

36

- Keras: Thư viện được sử dụng để xây dựng và huấn luyện mô hình mạng,

bao gồm các hàm như “model”, “layer”, “conv”, “maxpooling”.

- Sklearn: được sử dụng để hỗ trợ các thao tác liên quan đến xử lý dữ liệu và

huấn luyện mô hình, bao gồm các chức năng như đọc ghi dữ liệu, thay đổi

kích thước ảnh và các phép biến đổi dữ liệu.

- Cv2: Thư viện được sử dụng để xử lý ảnh và video. Thư viện này cung cấp

các chức năng để đọc, ghi, hiển thị, xử lý và phân tích các tệp ảnh và video.

- Glob: Thư viện được sử dụng để tìm kiếm các tệp trong thư mục bằng cách

sử dụng các quy tắc định dạng.

- H5py: Sử dụng để làm việc với tệp dữ liệu định dạng HDF5 (Hierarchical

Data Format 5).

- Pandas: Thư viện được sử dụng để xử lý và phân tích dữ liệu.

- Livelossplot: Thư viện sử dụng để vẽ các biểu đồ theo dõi quá trình đào tạo

mô hình.

Thực hiện tổ chức thư mục như sau:

Hình 3.5: Tổ chức thư mục

37

- Thư mục checkpoint: lưu trọng số sau khi huấn luyện xong, 2 model đều

lưu trong đây.

- Thư mục encoder: lưu file One hot vector của nhãn tuổi & giới tính.

- Thư mục test_image: chứa hình ảnh để test dữ liệu.

from os import path config = {} config["BASE_COLAB_PATH"] = "/content/drive/MyDrive/KhoaLuanHTTT/age_gender_prediction/" config["DATASET_PATH"] = config["BASE_COLAB_PATH"] + "adience/" config["BASE_GOOGLE_DRIVE_PATH"] = "/content/drive/MyDrive/KhoaLuanHTTT/age_gender_prediction/" config["AGE_TRAINED_MODEL"] = config["BASE_GOOGLE_DRIVE_PATH"] + "checkpoints/age_best_model.hdf5" config["GENDER_TRAINED_MODEL"] = config["BASE_GOOGLE_DRIVE_PATH"] + "checkpoints/gender_best_model.hdf5" config["AGE_LABEL_ENCODER"] = config["BASE_GOOGLE_DRIVE_PATH"] + "encoder/age_le.cpickle" config["GENDER_LABEL_ENCODER"] = config["BASE_GOOGLE_DRIVE_PATH"] + "encoder/gender_le.cpickle" config["NUM_VAL_IMAGES"] = 0.15 config["DLIB_LANDMARK_PATH"] = config["BASE_GOOGLE_DRIVE_PATH"] + "shape_predictor_68_face_landmarks.dat" config["IMAGES_TEST_PATH"] = config["BASE_GOOGLE_DRIVE_PATH"] + "test_images/"

Thực hiện khởi tạo các đường dẫn đến các thư mục:

38

3.4.3.Chuẩn bị dữ liệu tập huấn

Với bộ dữ liệu Adience Dataset đã có thì vẫn chưa thể đưa vào model train được,

def buildAgeBins(self):

ageBins = [(0,14), (15,45), (46,np.inf)] return ageBins def toLabel(self, valLabel, dtype): if dtype == "age": return self.toAgeLabel(valLabel) return self.toGenderLabel(valLabel) def toAgeLabel(self, age): label = None age = age.replace("(", "").replace(")", "").split(", ") (ageLower, ageUpper) = np.array(age, dtype="int") for (lower, upper) in self.buildAgeBins(): if ageLower >= lower and ageUpper <= upper: label = "{}_{}".format(lower, upper)s break; return label def toGenderLabel(self, gender): return 0 if gender == "m" else 1

đầu vào yêu cầu luôn luôn là 1 bức ảnh với nhãn của bức ảnh đó.

Phương thức buildAgeBins thực hiện trả về một danh sách các phân khúc độ

tuổi để sử dụng trong việc phân loại độ tuổi.

Phương thức toLabel thực hiện chuyển đổi giá trị và loại dữ liệu đầu vào và trả

về nhãn tương ứng (độ tuổi hoặc giới tính).

Phương thức toAgeLabel thực hiện chuyển đổi một dải độ tuổi đầu vào thành

nhãn tương ứng dựa trên các phân khúc độ tuổi.

Để thực hiện thì phải gộp dữ liệu (giữa ảnh và nhãn), mục đích là lấy ra từng

cặp gồm:

- Đường dẫn tới bức ảnh.

39

- Nhãn của bức ảnh.

Cách lấy là duyệt từng dòng trong file .txt ( các file danh sách nhãn) lấy 5 giá trị

đầu tiên, dựa vào face_id & original_image + landmark_aligned_face tạo thành chuỗi

rồi duyệt tìm trong thư mục chứa ảnh → get địa chỉ file ảnh.

Trong 5 giá trị đầu tiên, tiếp tục lấy ra nhãn tuổi và giới tính của cho bức ảnh đó.

Đầu ra là 2 danh sách gồm đường dẫn trực tiếp của các bức ảnh, và nhãn của

def buildPathsAndLabels(self, dtype): paths = []

labels = []

foldPaths = os.path.sep.join([self.config["DATASET_PATH"] + "folds", "*.txt"]) foldPaths = glob.glob(foldPaths) for foldPath in foldPaths: rows = open(foldPath).read() rows = rows.strip().split("\n")[1:] for row in rows: row = row.split("\t") (usserID, imagePath, faceID, age, gender) = row[:5] if age[0] != "(" or gender not in ("m", "f"): continue p = "landmark_aligned_face.{}.{}".format(faceID, imagePath) p = os.path.sep.join([self.config["DATASET_PATH"] + "aligned", usserID, p]) label = None if dtype == "age": label = self.toLabel(age, dtype) else: label = self.toLabel(gender, dtype) if label is None: continue paths.append(p) labels.append(label) return (paths, labels)

bức ảnh đó.

Giá trị sẽ được trả về là 1 danh sách gồm các đường dẫn đến ảnh & danh sách

nhãn tương ứng với dtype.

40

Tiếp theo thực hiện encode nhãn tuổi và giới tính của 2 model, lưu với dạng

if dtype == "age": lb = LabelBinarizer().fit(trainLabels) trainLabels = lb.transform(trainLabels) print("[INFO] serializing label encoder...") f = open(config["AGE_LABEL_ENCODER"], "wb") f.write(pickle.dumps(lb)) f.close()

One-hot vector.

Cuối cùng tập dữ liệu được chia làm 2 phần, 85% dùng để train & 15% dùng

cho test, kết thúc chuẩn bị dữ liệu.

3.4.4. Kiến trúc

Dựa trên kiến trúc Alexnet, đầu vào của mạng là một bức ảnh RGB có kích

thước 256x256 pixel, kể cả toàn bộ các bức ảnh của tập train và tập test đều có kích

thước 256x256 pixel - nghĩa là những ảnh nào không đủ kích thước hoặc dư thừa resize

bỏ phần dư thừa, đưa về đúng chuẩn.

Hình 3.6: Mô hình gồm 5 block

Mô hình gồm 5 block:

Block 1 gồm:

- 1 convolution layer:

Sử dụng 96 filter khác nhau kích thước 7x7.

Activation = Relu.

41

Strike = (4, 4).

- BatchNormalization.

- MaxPooling size 3x3, strides = (2, 2).

- Dropout = 0.25.

Block 2 gồm:

- 1 convolution layer:

 Activation = Relu.

Sử dụng 256 filter khác nhau kích thước 5x5.

Padding = same.

- BatchNormalization.

- MaxPooling size 3x3, strides = (2, 2).

- Dropout = 0.25.

Block 3 gồm:

- 1 convolution layer:

 Activation = Relu.

Sử dụng 384 fillter khác nhau kích thước 3x3.

Padding = same.

- BachNormalization.

- MaxPooling size 3x3, strides = (2, 2).

- Dropout = 0.25.

Block 4 & block 5 gồm:

42

- Block 4 sử dụng Flatten.

 Gồm 512 units.

 Hàm activation = Relu.

- Cả 2 có 1 Dense layer:

- BatchNormalization.

- Dropout = 0.5.

Cuối cùng add thêm 1 lớp Dense tương ứng với từng model, với hàm activation

sẽ là activation = softmax.

Trong nghiên cứu này, sử dụng framework Keras để xây dựng và huấn luyện

mô hình trên ngôn ngữ Python. Loại mô hình mà tôi sẽ sử dụng là mô hình tuần tự

(Sequential). Một cách dễ dàng để xây dựng một mô hình trong Keras là sử dụng mô

hình tuần tự. Có thể xây dựng mô hình bằng cách thêm từng lớp vào mô hình sử dụng

hàm “Add()” trong Keras.

Bắt đầu khai báo và định nghĩa mô hình mạng CNN. Đầu tiên, tôi sẽ khai báo

# Define model type model = Sequential()

kiểu mô hình là mô hình tuần tự (sequential model).

Tiếp theo, tôi sẽ thiết lập các lớp trong mô hình bằng cách sử dụng hàm “Add()”

để thêm các tầng vào mô hình, giống như việc truyền các tham số của từng tầng vào

def build_model(input_shape, dtype="age"): model = Sequential() # Block #1: first CONV => RELU => POOL layer set model.add(Conv2D(96, (7, 7), activation='relu',

hàm “Add()”.

kernel_initializer='he_uniform', strides=(4, 4), input_shape=input_shape))

model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) model.add(Dropout(0.25))

# Block #2: second CONV => RELU => POOL layer set model.add(Conv2D(256, (5, 5), activation='relu', kernel_initializer='he_uniform', padding='same'))

model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) model.add(Dropout(0.25)) # Block #3: second CONV => RELU => POOL layer set model.add(Conv2D(384, (3, 3), activation='relu', kernel_initializer='he_uniform', padding='same'))

model.add(BatchNormalization()) model.add(MaxPooling2D(pool_size=(3, 3), strides=(2, 2))) model.add(Dropout(0.25)) # Block #4: first set of FC => RELU layers model.add(Flatten()) model.add(Dense(512, activation='relu', kernel_initializer='he_uniform')) model.add(BatchNormalization()) model.add(Dropout(0.5)) # Block #5: second set of FC => RELU layers model.add(Dense(512, activation='relu', kernel_initializer='he_uniform')) model.add(BatchNormalization()) model.add(Dropout(0.5)) # softmax classifier if dtype == "age": model.add(Dense(3, activation='softmax')) else: model.add(Dense(2, activation='softmax')) return model

43

3.4.5. Huấn luyện mô hình

3.4.5.1 Khởi tạo mô hình

age_model = build_model((256, 256, 3)) opt = Adam(learning_rate=0.001) age_model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) age_model.summary()

- Giá trị đầu vào sẽ là 1 ảnh 3 kênh màu có kích thước 256x256.

44

- Thuật toán optimizer được sử dụng là Adam với hệ số học là 0.001

 Dự đoán tuổi là categorical_crossentropy.

 Dự đoán giới tính là binary_crossentropy.

- Hàm loss được sử dụng với mô hình:

Sau khi đã khai báo và thêm tất cả các tầng vào mô hình, có thể xem tổng quan

về cấu trúc của mạng và số lượng các tham số trên từng tầng bằng cách sử dụng hàm

Model: "sequential" ___________________________________________________________________________ Layer (type) Output Shape Param # =========================================================================== conv2d (Conv2D) (None, 63, 63, 96) 14208 batch_normalization (BatchN (None, 63, 63, 96) 384 ormalization) max_pooling2d (MaxPooling2D) (None, 31, 31, 96) 0 dropout (Dropout) (None, 31, 31, 96) 0 conv2d_1 (Conv2D) (None, 31, 31, 256) 614656 batch_normalization_1 (Batc (None, 31, 31, 256) 1024 hNormalization) max_pooling2d_1 (MaxPooling (None, 15, 15, 256) 0 2D) dropout_1 (Dropout) (None, 15, 15, 256) 0 conv2d_2 (Conv2D) (None, 15, 15, 384) 885120 batch_normalization_2 (Batc (None, 15, 15, 384) 1536 hNormalization) max_pooling2d_2 (MaxPooling (None, 7, 7, 384) 0 2D) dropout_2 (Dropout) (None, 7, 7, 384) 0

“summary()” sẽ trả về kết quả như sau :

flatten (Flatten) (None, 18816) 0 dense (Dense) (None, 512) 9634304 batch_normalization_3 (Batc (None, 512) 2048 hNormalization) dropout_3 (Dropout) (None, 512) 0 dense_1 (Dense) (None, 512) 262656 batch_normalization_4 (Batc (None, 512) 2048 hNormalization) dropout_4 (Dropout) (None, 512) 0 dense_2 (Dense) (None, 3) 1539 =========================================================================== Total params: 11,419,523 Trainable params: 11,416,003 Non-trainable params: 3,520

3.4.5.2 Các phương thức tiền xử lý ảnh

45

Bởi vì các ảnh trong tập dữ liệu Adience Dataset có kích thước tương đối lớn

(816x816x3) vì thế để scale về kích thước mà mô hình cần có để training và sử dụng

class SimplePreprocessor: def __init__(self, width=None, height=None, inter=cv2.INTER_AREA): self.width = width self.height = height self.inter = inter def preprocess(self, image): if self.width is None and self.height is None: return image try: resized_image = cv2.resize(image, (self.width, self.height), interpolation=self.inter) except cv2.error as e: return None, error_msg return resized_image

class SimplePreprocessor.

46

Tiếp sau đó sử dụng hàm ImageToArrayPreprocessor để chuyển đổi hình ảnh

class ImageToArrayPreprocessor: def __init__(self, dataFormat=None): self.dataFormat = dataFormat def preprocess(self, image): try: return img_to_array(image) except: return None

class ImageDatasetGenerator: def __init__(self, dtype, dataset_type , batchSize, preprocessors=None, aug=None): self.batchSize = batchSize self.preprocessors = preprocessors self.aug = aug self.dtype = dtype agh = AgeGenderHelper(config) (trainPaths, trainLabels) = agh.buildPathsAndLabels(dtype) numVal = int(len(trainPaths) * config["NUM_VAL_IMAGES"]) if dtype == "age": lb = LabelBinarizer().fit(trainLabels) trainLabels = lb.transform(trainLabels) # serialize the label encoder print("[INFO] serializing label encoder...") f = open(config["AGE_LABEL_ENCODER"], "wb") f.write(pickle.dumps(lb)) f.close() (trainPaths, valPaths, trainLabels, valLabels) = train_test_split(trainPaths, trainLabels, test_size=numVal, stratify=trainLabels) else: le = LabelEncoder().fit(trainLabels)

sang định dạng ma trận.

trainLabels=np_utils.to_categorical(le.transform(trainLabels), 2) # serialize the label encoder print("[INFO] serializing label encoder...") f = open(config["GENDER_LABEL_ENCODER"], "wb") f.write(pickle.dumps(le)) f.close() (trainPaths, valPaths, trainLabels, valLabels) = train_test_split(trainPaths, trainLabels, test_size=numVal, stratify=trainLabels) if dataset_type == "train": self.paths = np.array(trainPaths) self.labels = np.array(trainLabels) else: self.paths = np.array(valPaths) self.labels = np.array(valLabels) self.numImages = self.paths.shape[0] def generator(self, passes=99999999): epochs = 0 while epochs < passes: for i in np.arange(0, self.numImages, self.batchSize): images = [] imgPaths = self.paths[i:i+self.batchSize] for path in imgPaths: image = cv2.imread(path) if self.preprocessors is not None: for p in self.preprocessors: image = p.preprocess(image) images.append(image) labels = self.labels[i:i + self.batchSize] if self.aug is not None: (images, labels) = next(self.aug.flow(np.array(images), np.array(labels), batch_size=self.batchSize)) yield(images, labels) epochs += 1

47

Class ImageDataSetGenerator trên dùng để:

- Phân chia dataset thành tập dữ liệu train và tập dữ liệu test theo tỉ lệ đã được

thiết lập.

- Chuyển đổi label ground truth thành one hot vector và ghi vào file ánh xạ:

 Tuổi chuyển thành one hot vector với độ dài là 3 tương ứng với 3 khoảng

48

 Giới tính chuyển thành one hot vector với độ dài là 2 vì output của mô

tuổi.

hình giới tính sẽ là vector 2 phần tử tương ứng với 2 giá trị là nam và nữ.

- Lấy dữ liệu theo batch size và tiến hành các tác vụ tiền xử lý được truyền

3.4.5.3 Các bước tiến hành huấn luyện mô hình

vào.

Sau khi đã chuẩn bị dữ liệu và định nghĩa mô hình mạng CNN cho bài toán dự

aug = ImageDataGenerator(rotation_range = 20, zoom_range = 0.15, width_shift_range = 0.2, height_shift_range = 0.2, shear_range = 0.15, horizontal_flip = True, fill_mode = "nearest") sp = SimplePreprocessor(256, 256) iap = ImageToArrayPreprocessor() batchSize = 128 trainGen = ImageDatasetGenerator("age", "train", batchSize, aug=aug, preprocessors=[sp, iap]) valGen = ImageDatasetGenerator("age", "val", batchSize, aug=aug, preprocessors=[sp, iap]) checkpoint = ModelCheckpoint(config["AGE_TRAINED_MODEL"], monitor="val_loss", save_best_only=True, verbose=1) age_model.fit_generator(trainGen.generator(), steps_per_epoch=trainGen.numImages // batchSize, validation_data=valGen.generator(), validation_steps=valGen.numImages // batchSize, epochs=40, max_queue_size=20 * 2, shuffle=True, callbacks=[PlotLossesKeras(), checkpoint])

đoán độ tuổi và giới tính, tiếp tục thực hiện huấn luyện mô hình độ tuổi như sau:

- Cài đặt và sử dụng thư viện livelossplot để trực quan hóa quá trình huấn

luyện.

49

- Sử dụng ImageDataGenerator trong thư viện keras.preprocessing.image để

làm đa dạng mẫu tăng hiệu quả cho quá trình học.

- Sử dụng class SimplePreprocess để scale ảnh về kích thước 256x256.

- Sử dụng class ImageToArrayPreprocessor để chuyển ảnh về ma trận.

- Sử dụng class ImageDatasetGenerator để lấy được tập dữ liệu huấn luyện và

đánh giá đã qua xử lý các bước tiền xử lý nêu trên.

- Sử dụng ModelCheckpoint trong thư viện keras.callbacks để lưu lại được

các trọng số có giá trị loss thấp nhất trong quá trình huấn luyện.

Kết quả của quá trình huấn luyện được hiển thị bên dưới

Hình 3.7: Kết quả huấn luyện độ tuổi dạng biểu đồ

50

Hình 3.8: Kết quả huấn luyện độ tuổi

aug = ImageDataGenerator(rotation_range=20, zoom_range=0.15, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.15, horizontal_flip=True, fill_mode="nearest") sp = SimplePreprocessor(256, 256) iap = ImageToArrayPreprocessor() batchSize = 128 trainGen = ImageDatasetGenerator("gender", "train", batchSize, aug=aug, preprocessors=[sp, iap]) valGen = ImageDatasetGenerator("gender", "val", batchSize, aug=aug, preprocessors=[sp, iap]) checkpoint = ModelCheckpoint(config["GENDER_TRAINED_MODEL"], monitor="val_loss", save_best_only=True, verbose=1) gender_model.fit_generator(trainGen.generator(), steps_per_epoch=trainGen.numImages, validation_data=valGen.generator(), validation_steps=valGen.numImages, epochs=50, max_queue_size=16 * 2, shuffle=True, callbacks=[PlotLossesKeras(), checkpoint])

Thực hiện huấn luyện mô hình giới tính như sau:

Kết quả của quá trình huấn luyện được hiển thị bên dưới:

51

Hình 3.9: Kết quả huấn luyện giới tính dạng biểu đồ

Hình 3.10: Kết quả huấn luyện giới tính

52

CHƯƠNG 4 - CÀI ĐẶT THỬ NGHIỆM VÀ ĐÁNH GIÁ

4.1. Cài đặt môi trường

Trong quá trình triển khai và xây dựng mô hình cho đề án này, tôi đã áp dụng

các giải pháp phần mềm sau.

Ngôn ngữ lập trình Python

Trong lĩnh vực học máy và học sâu, Python hiện đang là ngôn ngữ lập trình phổ

biến nhất được sử dụng cho nghiên cứu và phát triển. Python cung cấp nhiều thư viện

hỗ trợ mạnh mẽ cho tính toán số học, xử lý dữ liệu, xử lý hình ảnh và cho phép dễ dàng

triển khai các thuật toán và xây dựng các mô hình học máy. Trong đề án này, tôi đã sử

dụng ngôn ngữ lập trình Python với phiên bản cụ thể là Python 3.8.10.

Môi trường cài đặt

- Trên môi trường Google Colab.

- Máy tính hệ điều hành Windows 10.

- CPU Intel core i5 6200U 2.3GHz.

- RAM 8 GB.

- SSD 480 GB.

4.2. Phương pháp đánh giá

Để đánh giá hiệu suất của bài toán dự đoán tuổi và giới tính bằng phương pháp

học sâu tôi sử dụng các độ đo như: Accuracy, Precision, Recall.

Accuracy: hay còn gọi là độ chính xác, đo lường khả năng của mô hình trong

việc phân loại dữ liệu một cách chính xác, tức là xác định đúng nhãn hoặc lớp tương

ứng cho từng mẫu dữ liệu. Độ chính xác thường được tính bằng công thức sau:

53

Accuracy = TP + TN (TP + TN) + (FP + FN)

Precision: Được định nghĩa như là xác suất mà một dự đoán phân loại là đúng

khi biết rằng nó đã được phân loại là một dự đoán thuộc lớp đó. Precision được tính

bằng cách chia số lượng các mẫu được phân loại chính xác thuộc lớp đó cho tổng số

các mẫu được phân loại thuộc lớp đó. Công thức ước lượng precision như sau:

Precision = TP TP + FP

Recall: hay còn gọi là độ phủ, là xác suất mà một mẫu có nhãn là 1 đã được

phân loại đúng. Recall được tính bằng cách chia số lượng các mẫu được phân loại đúng

thuộc lớp đó cho tổng số các mẫu thực tế thuộc lớp đó. Công thức ước lượng recall như

sau:

Recall = TP TP + FN

4.3. Phân tích đánh giá hệ thống đề xuất

4.3.1. Xây dựng mô đun đánh giá

Mô đun thực hiện tải hình ảnh có chứa khuôn mặt người cần dự đoán. Dữ liệu

đầu vào là một ảnh chứa dữ liệu khuôn mặt và tên ảnh phải được dán nhãn ví dụ: 0_15.

- Với 0 là đại diện cho giới tính nữ (0 là giới tính nữ, 1 là giới tính nam).

- Sau ký tự ‘_’ là độ tuổi chính xác, ví dụ: _15 là 15 tuổi.

Sau khi đã có dữ liệu đầu vào, tiến hành thực hiện đánh giá như sau:

54

Hình 4.1: Giao diện tải ảnh lên hệ thống đánh giá

Sau khi tải hình ảnh đã chuẩn bị vào hệ thống, hệ thống hiển thị giao diện sau:

Hình 4.2: Giao diện khi đã tải hình

Chọn nút “Dự đoán” hệ thống tiến hành thực hiện dự đoán hình ảnh đầu vào và

cho ra kết quả với các thông tin sau:

- Thông tin độ tuổi thực tế.

- Thông tin giới tính thực tế.

- Thông tin độ tuổi dự đoán.

- Thông tin giới tính dự đoán.

- Kết quả dự đoán.

55

Hình 4.3: Kết quả dự đoán giới tính nam độ tuổi 12

Hình 4.4: Kết quả dự đoán giới tính nam độ tuổi 45

56

Hình 4.5: Kết quả dự đoán giới tính nữ độ tuổi 40

Hình 4.6: Kết quả dự đoán giới tính nữ độ tuổi 18

57

Hình 4.7: Kết quả dự đoán giới tính nam độ tuổi 28

4.3.2. Kiểm tra đánh giá hệ thống trên bộ dữ liệu công khai

4.3.2.1. Bộ dữ liệu công khai Adience

Tôi đã phân chia bộ dữ liệu thành hai tập, gồm tập huấn luyện và tập kiểm tra,

để sử dụng trong quá trình đánh giá và kiểm tra hiệu suất của mô hình. Tổng số bản ghi

trong bộ dữ liệu là 26.580. Tập huấn luyện bao gồm 26.000 bản ghi, tương đương với

97.8% tổng số bản ghi. Tập kiểm tra có 580 bản ghi, tương đương với 2.2% tổng số

4.3.2.2. Kết quả đánh giá trên bộ dữ liệu công khai Adience

bản ghi.

Dựa trên kết quả từ quá trình huấn luyện, đã tiến hành kiểm chứng mô hình đã

được huấn luyện bằng tập dữ liệu kiểm tra. Kết quả kiểm chứng được ghi nhận như

sau:

Dự đoán giới tính:

58

Dựa trên kết quả kiểm chứng, mô hình dự đoán giới tính trên bộ dữ liệu công

khai Adience đạt được độ chính xác phân loại ở mức tương đương 86.6666666667%.

Tiếp theo, tôi sẽ xem xét các độ đo khác như Precision và Recall, F1-Scrore từ kết quả

sau đây:

Hình 4.8: Kết quả kiểm chứng mô hình với dự đoán giới tính với dữ liệu công khai

Dự đoán tuổi:

Dựa trên kết quả kiểm chứng, mô hình dự đoán độ tuổi trên bộ dữ liệu công khai

Adience đạt được độ chính xác phân loại ở mức tương đương 92.3076923077%. Tiếp

theo, tôi sẽ xem xét các độ đo khác như Precision và Recall, F1-Scrore từ kết quả sau

đây:

Hình 4.9: Kết quả kiểm chứng mô hình với dự đoán tuổi với dữ liệu công khai

59

4.3.3. Kiểm tra đánh giá hệ thống trên bộ dữ liệu đã xây dựng

4.3.3.1. Bộ dữ liệu đã xây dựng

Tôi thực hiện thu thập bộ dữ liệu chứa hình khuôn mặt người và thông tin độ

tuổi và giới tính một cách chính xác thông qua việc khảo sát những đồng nghiệp làm

việc tại VNPT Tây Ninh. Bộ dữ liệu gồm 30 ảnh khuôn mặt và thông tin chính xác về

4.3.3.2. Kết quả đánh giá trên bộ dữ liệu đã xây dựng

độ tuổi cũng như giới tính của người đó.

Từ kết quả của quá trình huấn luyện, tôi đã thực hiện kiểm chứng mô hình đã

được huấn luyện trên tập dữ liệu đã xây dựng. Dưới đây là kết quả thu được:

Dự đoán giới tính:

Từ kết quả kiểm chứng với chỉ số đánh giá là độ chính xác phân lớp của mô

hình dự đoán giới tính trên bộ dữ liệu đã xây dựng tôi nhận được ở mức tương đương

89.6551724138%. Tôi sẽ xem xét với độ đo khác như Precision và Recall, F1-Scrore từ

kết quả dưới đây:

Hình 4.10: Kết quả kiểm chứng mô hình dự đoán giới tính với dữ liệu đã xây dựng

Dự đoán tuổi:

60

Từ kết quả kiểm chứng với chỉ số đánh giá, tôi nhận được độ chính xác phân

loại của mô hình dự đoán độ tuổi trên bộ dữ liệu đã xây dựng ở mức tương đương

90.00%. Dưới đây là các độ đo khác như Precision và Recall, F1-Scrore từ kết quả thu

được:

Hình 4.11: Kết quả kiểm chứng mô hình với dự đoán tuổi với dữ liệu đã xây dựng

4.4. Cài đặt triển khai thử nghiệm.

Hệ thống áp dụng kết quả đạt được của quá trình dự đoán độ tuổi và giới tính

vào ứng dụng hỗ trợ công tác tuyển dụng.

Sau khi truy cập, hệ thống sẽ hiển thị màn hình sau:

Hình 4.12: Giao diện hệ thống

61

Nhà tuyển dụng thực hiện nhập thông tin ứng viên đã nhập trên CV ứng tuyển

với thông tin:

- Họ và tên ứng viên đã tự khai (bắt buộc và phải là ký tự chữ).

- Năm sinh ứng viên đã tự khai (bắt buộc, thuộc ký tự số và không được lớn

hơn năm hiện tại).

- Giới tính ứng viên đã tự khai (bắt buộc).

Hình 4.13: Giao diện nhập thông tin ứng viên

Sau đó nhà tuyển dụng thực hiện chọn ảnh của ứng viên ở vị trí sau:

Hình 4.14: Giao diện chọn ảnh ứng viên

Sau khi thực hiện đầy đủ thông tin của ứng viên theo yêu cầu. Nhà tuyển dụng

chọn nút “Dự đoán” ở góc dưới bên phải màn hình.

62

Hình 4.15: Giao diện khi đã nhập xong thông tin

Sau khi thực hiện thực hiện dự đoán hình ảnh và dữ liệu nhà tuyển dụng nhập

vào hệ thống tiến hành xử lý và trả về kết quả dự đoán với 3 trường hợp sau:

Không đủ tuổi lao động - Cần phải xem xét lại:

Hình 4.16: Giao diện kết quả nghi vấn dưới độ tuổi lao động

63

Trong độ tuổi lao động:

Hình 4.17: Giao diện kết quả trong độ tuổi lao động

Nghi vấn quá tuổi lao động - Cần phải xem xét lại:

Hình 4.18: Giao diện kết quả nghi vấn quá độ tuổi lao động

64

KẾT LUẬN

Trong nghiên cứu này, tôi đã giới thiệu một mô hình học sâu sử dụng mạng

CNN để nhận dạng độ tuổi và giới tính của con người dựa trên hình ảnh khuôn mặt.

Mô hình mới này cho phép sử dụng một số lượng nhỏ các tham số và đạt hiệu suất của

dự đoán giới tính với 86.6667 % bộ dữ liệu công khai Adience và 89.6551% với bộ dữ

liệu thu thập, còn đối với dự đoán độ tuổi 92.3077% bộ dữ liệu công khai Adience và

90.000% với bộ dữ liệu thu thập.

Trong tương lai gần, tôi đang có kế hoạch để nâng cao độ chính xác của mô

hình, đặc biệt là trong việc ước lượng độ tuổi và giới tính. Ngoài ra, tôi cũng sẽ áp

dụng mô hình của mình cho các bài toán hỗ trợ tuyển dụng một cách rộng rãi, nhanh

chống và chính xác hơn.

Những kết quả hoạt động chính của đề án

Trong nghiên cứu này, tôi đã tìm hiểu và áp dụng phương pháp học sâu để dự

đoán độ tuổi và giới tính. Mục tiêu của tôi là áp dụng các kỹ thuật này để giải quyết bài

toán hỗ trợ công tác tuyển dụng thông qua việc dự đoán độ tuổi và giới tính của ứng

viên. Tiếp theo, tôi đã tiến hành tìm hiểu và nghiên cứu một mô hình mạng nơ ron tích

chập, một mô hình phổ biến trong lĩnh vực học sâu. Tôi đã khám phá các thành phần,

kiến trúc mô hình và chức năng của mạng nơ ron tích chập, cũng như ứng dụng thực tế

của nó. Sau đó, tôi đã xây dựng mô hình mạng nơ ron tích chập để dự đoán độ tuổi và

giới tính của con người dựa trên hình ảnh. Quá trình này bao gồm việc huấn luyện mô

hình, điều chỉnh các tham số và áp dụng các kỹ thuật để đạt được độ chính xác cao

trong việc dự đoán độ tuổi và giới tính. Tuy nhiên, đề án còn một số vấn đề tiếp tục

phát triển.

65

Về ứng dụng

Xây dựng được một ứng dụng web hỗ trợ công tác tuyển dụng.

Hạn chế đề án

Vẫn còn hạn chế về độ chính xác khi các hình ảnh có thể gặp những trường hợp

phức tạp, đặc biệt là khi đối tượng trong hình ảnh không tuân thủ theo những đặc điểm

phổ biến về độ tuổi và giới tính, ví dụ: nữ để tóc ngắn.

Đề án mới chỉ dừng ở mức xây dựng mô hình dự đoán tuổi và giới tính hỗ trợ

trong công tác tuyển dụng về mặt độ tuổi và giới tính, chưa hỗ trợ chuyên sâu như phân

tích đánh giá vị trí công việc.

Đề án không tránh khỏi các sai sót trong báo cáo này, kính mong được sự thông

cảm của quý Thầy Cô và các Nhà khoa học vì một số hạn chế về thời gian, kinh

nghiệm và ngôn ngữ.

Định hướng phát triển

Hướng nghiên cứu tiếp theo của đề án sẽ tập trung vào phần xây dựng mô hình

mạng phân loại độ tuổi và giới tính với độ chính xác cao hơn, có thể sử dụng mô hình

áp dụng nhiều tầng tích chập, phân tích được các đặc trưng chi tiết hơn. Dự đoán cùng

lúc nhiều người cho ra kết quả chính xác hơn kể cả những trường hợp đặt biệt về hình

dạng.

66

DANH MỤC TÀI LIỆU THAM KHẢO

Tiếng Việt

[1] Phạm Thị Út Hạnh, “Công tác tuyển dụng nhân lực tại công ty cổ phần nhiệt

điện Phả Lại”.

[2] Ma Thị Hồng Thu, Phùng Thị Thu Trang, “Một mô hình Deep Learning nhẹ

cho bài toán nhận dạng tuổi và giới tính sử dụng mạng CNN”.

[3] Theo quy định tại “Khoản 1 Điều 3 Bộ luật lao động năm 2012”.

Tiếng Anh

[4] A. Krizhevsky, I. Sutskever, and G. E. Hinton (2012), “Imagenet classification

with deep convolutional neural networks”.

[5] L. Zhu, K. Wang, L. Lin, and L. Zhang (2016), “Learning a lightweight

deep convolutional network for joint age and gender recognition”.

[6] E. Eidinger, R. Enbar, and T. Hassner (2014), “Age and gender estimation of

[7] G.

unfiltered faces”.

Levi and T. Hassner (2015), “Age and gender

[8] N.

classification using convolutional neural networks”.

Ramanathan and R. Chellappa (2006), “Modeling

age progression in young faces”.

[9] I. Ullah, M. Hussain, G. Muhammad, H. Aboalsamh, G. Bebis, and A. M.

Mirza (2012), “Gender recognition from face images with local wld

descriptor”.

[10] X. Zhuang, X. Zhou, M. Hasegawa-Johnson, and T. Huang (2008), “Face age

estimation using patch-based hidden markov model supervectors”.