Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN MẠNH HÙNG
NGHIÊN CỨU VỀ MẠNG NEURAL CONVOLUTIONAL,
ÁP DỤNG VÀO BÀI TOÁN NHẬN DẠNG ĐỐI TƯỢNG
TRONG LĨNH VỰC THỊ GIÁC MÁY TÍNH
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội – 2019
ĐẠI HỌC QUỘC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
NGUYỄN MẠNH HÙNG
NGHIÊN CỨU VỀ MẠNG NEURAL CONVOLUTIONAL,
ÁP DỤNG VÀO BÀI TOÁN NHẬN DẠNG ĐỐI TƯỢNG
TRONG LĨNH VỰC THỊ GIÁC MÁY TÍNH
Ngành : Công nghệ thông tin
Chuyên ngành : Kỹ thuật phần mềm
Mã số : 8480103.01
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS ĐỖ TRUNG TUẤN
Hà Nội – 2019
i
LỜI CAM ĐOAN
Tôi xin cam đoan: luận văn “Nghiên cứu về mạng neural Convolutional, áp dụng
vào bài toán nhận dạng đối tượng trong lĩnh vực thị giác máy tính.” là công trình nghiên
cứu của tôi dưới sự hướng dẫn của giảng viên hướng dẫn, không sao chép lại của người
khác. Các tài liệu được luận văn tham khảo, kế thừa và trích dẫn đều được liệt kê trong
danh mục các tài liệu tham khảo.
Tôi xin chịu hoàn toàn trách nhiệm về lời cam đoan trên.
Hà Nội, ngày tháng năm 2019
Học viên
Nguyễn Mạnh Hùng
ii
LỜI CẢM ƠN
Em xin chân thành cảm ơn các thầy cô trường Đại học Công nghệ, Đại học quốc
gia Hà Nội, đặc biệt các thầy cô bộ môn Kỹ thuật phần mềm, đã tận tình dạy dỗ, giúp đỡ
và tạo mọi điều kiện tốt nhất cho em trong suốt quãng thời gian em theo học tại trường, để
em có thể hoàn thành được đề tài này.
Em tỏ lòng biết ơn sâu sắc với PGS.TS Đỗ Trung Tuấn, người thầy đã tận tình
hướng dẫn khoa học và giúp đỡ, chỉ bảo em trong suốt quá trình nghiên cứu và hoàn
thành luận văn này.
Tôi xin chân thành cảm ơn các bạn học viên cao học khóa 22 tại trường Đại học
Công nghệ, Đại học quốc gia Hà Nội đã giúp đỡ tôi trong quá trình theo học tại trường,
cũng như giúp đỡ tôi thực hiện đề tài này.
Xin trân trọng cảm ơn!
iii
MỤC LỤC
LỜI CAM ĐOAN .........................................................................................i
LỜI CẢM ƠN ............................................................................................. ii
MỤC LỤC ................................................................................................. iii
DANH MỤC HÌNH VẼ.............................................................................. vi
DANH MỤC BẢNG BIỂU.......................................................................... x
DANH MỤC VIẾT TẮT ............................................................................ xi
LỜI MỞ ĐẦU .............................................................................................. 1
Lý do chọn đề tài ............................................................................................. 1
Cơ sở khoa học và thực tiễn của đề tài ............................................................. 1
Mục tiêu của luận văn ...................................................................................... 2
Cấu trúc luận văn ............................................................................................. 3
CHƯƠNG 1. ................................................................................................ 4
TỔNG QUAN VỀ MẠNG NƠ RON .......................................................... 4
VÀ GIỚI THIỆU VỀ MẠNG NƠ RON TÍCH CHẬP .............................. 4
1.1. Nơ ron nhân tạo .............................................................................. 4
1.1.1 Lịch sử của nơ ron nhân tạo .................................................................... 4
1.1.2 Cấu tạo và quá trình xử lý của một nơ ron sinh học................................. 5
1.1.3 Cấu tạo và quá trình xử lý của một nơ ron nhân tạo ................................ 5
1.1.4. Các mô hình hàm kích hoạt của mạng nơ ron nhân tạo .......................... 8
1.2 Mạng nơ ron nhân tạo ................................................................... 11
1.2.1 Giới thiệu mạng nơ ron nhân tạo ........................................................... 11
1.2.2 Một số kiểu mạng nơ ron ...................................................................... 11
1.2.3 Mạng nơ ron lan truyền ngược .............................................................. 13
1.3 Mạng nơ ron tích chập .................................................................. 18
1.3.1 Khái niệm về mạng nơ ron tích chập ..................................................... 18
iv
1.3.2 Mô hình mạng nơ ron tích chập ............................................................ 19
1.3.2 Xây dựng mạng nơ ron tích chập .......................................................... 20
1.4 Kết luận .......................................................................................... 27
CHƯƠNG 2. .............................................................................................. 28
BÀI TOÁN NHẬN DẠNG BẰNG MẠNG NƠ RON TÍCH CHẬP ....... 28
2.1 Khái niệm về nhận dạng ................................................................ 28
2.1.1 Nhận dạng đối tượng ............................................................................ 28
2.1.2 Nhận dạng khuôn mặt ........................................................................... 29
2.2. Lịch sử và phát triển ..................................................................... 30
2.3. Cách thức hoạt động ..................................................................... 30
2.4 Phương pháp nhận dạng đối tượng từ ảnh chụp của camera ..... 32
2.4.1 Nhận diện khuôn mặt ............................................................................ 32
2.4.2 Phát hiện các điểm quan trọng trên khuôn mặt ...................................... 33
2.4.3 Liên kết khuôn mặt ............................................................................... 34
2.5 Kết quả các thuật toán sử dụng mạng nơ ron nhân tạo .............. 35
2.5.1 Mô hình DeepID 2 (NIPS 2014) ........................................................... 35
2.5.2 Mô hình DeepID3 (arXiv 2015) ............................................................ 38
2.5.3 Mô hình DeepFace (Facebook, CVPR 2014) ........................................ 39
2.5.4 Mô hình FaceNet (Google 2015)........................................................... 39
2.5.5 Mô hình Baidu (2015)........................................................................... 41
2.6 Kết luận .......................................................................................... 42
CHƯƠNG 3. .............................................................................................. 44
SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP .............................................. 44
TRONG NHẬN DẠNG ĐỐI TƯỢNG ..................................................... 44
3.1 Sơ lược về áp dụng mạng nơ ron tích chập vào các giải pháp
thông minh trong thực tế ................................................................. 44
v
3.2 Áp dụng mạng nơ ron tích chập để xây dựng hệ thống nhận diện
người vào/ra và đánh giá thực nghiệm, so sánh với phương pháp
HOG ................................................................................................. 44
3.2.1 Giới thiệu hệ thống nhận diện và đếm lượt người vào/ra sử dụng mạng
nơ ron tích chập ....................................................................................... 44
3.2.2 Giới thiệu kiến trúc của máy chủ xử lý nhận diện và đếm lượng người . 45
3.2.3 Giới thiệu sơ lược về phương pháp mô tả đặc trưng HOG sẽ được dùng
để so sánh ................................................................................................ 47
3.2.4 So sánh khả năng nhận diện của hệ thống nhận diện người vào/ra sử
dụng mạng nơ ron tích chập với phương pháp HOG đã có ....................... 50
3.2.5 Mô tả cơ chế chạy nhận diện người trong lõi máy chủ tính toán ............ 52
3.2.6 Mô tả quá trình sử dụng hệ thống ở giao diện người dùng để hiển thị kết
quả .......................................................................................................... 53
3.3 Áp dụng mạng nơ ron tích chập để xây dựng hệ thống nhận diện
khuôn mặt và đánh giá thực nghiệm, so sánh với phương pháp
HOG ................................................................................................. 55
3.3.1 Xây dựng hệ thống nhận diện khuôn mặt .............................................. 55
3.3.2 Giới thiệu cơ chế của máy chủ xử lý nhận diện ..................................... 56
3.3.3 Giới thiệu sơ lược về phương pháp phát hiện khuôn mặt sử dụng HOG sẽ
được dùng để so sánh .............................................................................. 58
3.3.4 So sánh hệ thống nhận diện khuôn mặt với phương pháp HOG đã có ... 59
3.3.4 So sánh khả năng nhận diện khuôn mặt giữa HOG và CNN .................. 62
3.2.5 Kết quả hệ thống web nhận diện khuôn mặt .......................................... 64
3.3 Kết luận .......................................................................................... 67
KẾT LUẬN ................................................................................................ 68
Kết quả đã thực hiện được của luận văn......................................................... 68
Phương hướng phát triển luận văn ................................................................. 69
TÀI LIỆU THAM KHẢO ......................................................................... 70
vi
DANH MỤC HÌNH VẼ
Hình 1.1 Hình ảnh thí nghiệm của David Hubel và Torsten Wiesel trên mèo [10]............. 4
Hình 1.2: Hình ảnh một nơ ron sinh học [14] .................................................................... 5
Hình 1.3: Công thức của một nơ ron nhân tạo [41]............................................................ 5
Hình 1.4: Hình ảnh một nơ ron nhân tạo ........................................................................... 6
Hình 1.5: Hình ảnh vị trí thiên lệch được thêm vào trong thực tế ...................................... 6
Hình 1.6: Kết quả của hàm sigmoid với các trọng số đầu vào khác nhau nhưng không có
thiên lệch .......................................................................................................................... 7
Hình 1.7: Kết quả của hàm sigmoid với các trọng số thiên lệch khác nhau ........................ 7
Hình 1.8: Đồ thị hàm Sigmoid .......................................................................................... 8
Hình 1.9: Đồ thị hàm TanH .............................................................................................. 9
Hình 1.10: Đồ thị hàm tuyến tính ...................................................................................... 9
Hình 1.11: Đồ thị hàm RELU ......................................................................................... 10
Hình 1.12: Đồ thị hàm ELU ............................................................................................ 10
Hình 1.13: Mạng nơ ron truyền thẳng ............................................................................. 11
Hình 1.14: Mạng nơ ron hồi quy ..................................................................................... 12
Hình 1.15: Cách huấn luyện cho một mạng nơ ron hồi quy ............................................. 12
Hình 1.16: Các tầng (layer) trong CNN là 3 chiều........................................................... 18
Hình 1.17: Hình minh họa một ví dụ sử dụng CNN để phân lớp đồ vật [20] ................... 19
Hình 1.18: Ví dụ minh họa về cấu trúc CNNs – LeNet – 5[19] ....................................... 19
Hình 1.19: Hình ảnh một mạng nơ ron được kết nối đầy đủ ............................................ 20
Hình 1.20: Tích chập một ma trận nhỏ để tạo ra dữ liệu đầu vào cho một nơ ron ............ 20
Hình 1.21: Ví dụ về lớp tích chập ................................................................................... 21
Hình 1.22: So sánh giữa ReLU và Sigmoid. .................................................................... 23
Hình 1.23: Ví dụ minh họa đơn giản về tầng gộp ............................................................ 24
Hình 1.24: Một ví dụ của lớp được kết nối đầy đủ .......................................................... 25
Hình 1.25: Ví dụ về trường hợp quá khớp (bên trái) và trường hợp chuẩn (bên phải) ...... 25
vii
Hình 1.26: Cấu trúc của AlexNet .................................................................................... 26
Hình 1.27: Cấu trúc của VGGNet ................................................................................... 27
Hình 2.1: Sự khác biệt giữa nhận dạng đối tượng và phát hiện đối tượng ........................ 29
Hình 2.2: Một minh họa về một số bản đồ đặc trưng của các lớp DC12, conv22, conv32,
conv42 và conv52 được đào tạo cho nhiệm vụ nhận dạng khuôn mặt.............................. 29
Hình 2.3: Tổng quan về phương pháp nhận dạng khuôn mặt người ................................. 31
Hình 2.4: Thiết kế mạng nơ ron để xử lý ảnh .................................................................. 31
Hình 2.5: Các giai đoạn dò tìm và hiệu chỉnh .................................................................. 32
Hình 2.6: Kết quả phát hiện mẫu trên ảnh IJB-A bằng phương pháp tháp sâu ................. 33
Hình 2.7: Kiến trúc DCNN được sử dụng để trích xuất các mô tả cục bộ cho nhiệm vụ
phát hiện các điểm mốc trên khuôn mặt .......................................................................... 33
Hình 2.8: Ví dụ về các điểm mốc trên khuôn mặt............................................................ 34
Hình 2.9: Kết quả mẫu của phương pháp liên kết khuôn mặt cho các video của JANUS
CS2, là bộ dữ liệu mở rộng của IJB-A ............................................................................ 35
Hình 2.10: Kiến trúc mạng của mô hình DeepID 2 ......................................................... 36
Hình 2.11: 25 phần khuôn mặt tốt nhất được chọn để trích xuất đặc điểm ....................... 36
Hình 2.12: Kiến trúc mạng của mô hình DeepID3 .......................................................... 38
Hình 2.13: Kiến trúc của DeepFace ................................................................................ 39
Hình 2.14: Hình ảnh: Mô hình lấy cảm hứng từ Zeiler & Fergus .................................... 40
Hình 2. 15 Mô hình GoogleNet ....................................................................................... 40
Hình 2.16: Tổng quan về cấu trúc CNN trên nhiều phần khuôn mặt của Baidu ............... 41
Hình 2.17: Thống kê các mô hình, số lượng bộ dữ liệu sử dụng, và các mốc thời gian xuất
bản .................................................................................................................................. 42
Hình 3.1: Hình ảnh thiết kế của hệ thống nhận diện đối tượng ........................................ 45
Hình 3.2: Phương pháp mạng YOLO sử dụng để nhận diện đối tượng. ........................... 46
Hình 3.3: Mô hình mạng yolo ......................................................................................... 47
Hình 3.4: Tiền xử lý để xác định khung hình .................................................................. 48
Hình 3.5: Độ dốc sau khi tính toán .................................................................................. 48
viii
Hình 3.6: Kết quả sau khi tính toán véc tơ đặc trưng cho từng ô ..................................... 49
Hình 3.7: Biểu diễn các véc tơ chỉ hướng theo HOG thu được sau khi tính toán ............. 50
Hình 3.8: Hình ảnh nhận diện bằng phương pháp HOG .................................................. 50
Hình 3.9: Hình ảnh nhận diện bằng phương pháp CNN .................................................. 51
Hình 3.10: Hệ thống sử dụng ffmpeg để trích xuất các khung hình trong video .............. 52
Hình 3.11: Các khung hình lần lượt được hệ thống trích xuất và đưa vào lõi để xử lý. .... 52
Hình 3.12: Dữ liệu số người vào/ra được nhập vào cơ sở dữ liệu, và video báo cáo được
hệ thống tự động xuất ra để làm đối chiếu. ...................................................................... 53
Hình 3.13: Hình ảnh đăng nhập vào hệ thống.................................................................. 53
Hình 3.14: Kết quả dữ liệu đã được thêm vào cơ sở dữ liệu và hiển trị trên web. ............ 54
Hình 3.15: Một ví dụ tương tự dữ liệu được xuất báo cáo nhận diện trong hệ thống. ....... 54
Hình 3.16: Kiến trúc hệ thống nhận diện khuôn mặt, tích hợp cùng hệ thống mua hàng .. 55
Hình 3.17: Khuôn mặt được trích xuất từ bức ảnh ........................................................... 56
Hình 3.18: Hình ảnh 68 điểm mốc trên khuôn mặt được sử dụng trên bộ thư viện dlib ... 57
Hình 3.19: Hình ảnh trích xuất đặc trưng khuôn mặt ....................................................... 57
Hình 3.20: Khuôn mặt được sử dụng để nhận dạng ......................................................... 58
Hình 3.21: Khuôn mặt được trích xuất ............................................................................ 58
Hình 3.22: Hình ảnh được xử lý sau khi qua bộ lọc Gabor .............................................. 58
Hình 3.23: Các đặc trưng được trích xuất bằng HOG ...................................................... 59
Hình 3.24: Phát hiện khuôn mặt sử dụng HOG ............................................................... 59
Hình 3.25: Phát hiện khuôn mặt sử dụng CNN ............................................................... 60
Hình 3.26: Phát hiện khuôn mặt sử dụng HOG với góc nghiêng lớn ............................... 60
Hình 3.27: Phát hiện khuôn mặt sử dụng CNN với góc nghiêng lớn ............................... 61
Hình 3.28: Kết quả nhận diện khuôn mặt với HOG ......................................................... 62
Hình 3.29: Phát hiện khuôn mặt sử dụng CNN ............................................................... 62
Hình 3. 30: Nhận diện khuôn mặt sử dụng HOG với góc nghiêng lớn ............................. 63
Hình 3.31: Phát hiện khuôn mặt sử dụng CNN với góc nghiêng lớn ............................... 63
ix
Hình 3.32: Giao diện hệ thống trên web (hai hình trên) và giao diện hệ thống trên mobile
(hai hình dưới) ................................................................................................................ 65
Hình 3.33: Huấn luyện thêm khuôn mặt mới ................................................................... 65
Hình 3.34: Kết quả nhận diện sau khi huấn luyện ........................................................... 66
Hình 3.35: Nhận diện user có ID 00280 với góc nghiêng khoảng 80 độ và user có ID
00388 với góc nghiêng 30 độ trên mặt phẳng Oxz .......................................................... 67
x
DANH MỤC BẢNG BIỂU
Bảng 2.1: Thống kê xác minh độ chính xác của khuôn mặt bằng DeepID2 khi tăng dần số
lượng của các phần khuôn mặt ........................................................................................ 36
Bảng 2.2: So sánh độ chính xác của mô hình DeepID2 với các kết quả mô hình trước đó
trên bộ thư viện LFW...................................................................................................... 37
Bảng 2.3: Kết quả so sánh của mô hình DeepID3 với các mô hình trước trên bộ thư viện
LFW ............................................................................................................................... 38
Bảng 2.4: Kết quả của khi so sánh DeepFace với các công nghệ hiện đại trên bộ dữ liệu
LFW ............................................................................................................................... 39
Bảng 2.5: Bảng so sánh hiệu suất của kiến trúc mạng trên FaceNet ................................ 41
Bảng 2.6: Bảng so sánh độ chính xác dựa trên số lượng dữ liệu đào tạo .......................... 41
Bảng 2.7: Tỉ lệ lỗi trên lượng dữ liệu khác nhau ............................................................. 42
Bảng 3.1 Kết quả so sánh nhận diện người giữa phương pháp mạng nơ ron tích chập và
phương pháp HOG trên kết quả trung bình của dữ liệu thực tế của hệ thống ................... 51
Bảng 3.2: Kết quả so sánh phát hiện khuôn mặt giữa phương pháp mạng nơ ron tích chập
và phương pháp HOG trên kết quả trung bình của dữ liệu thực tế của hệ thống .............. 61
Bảng 3.3: Kết quả so sánh nhận diện khuôn mặt giữa phương pháp mạng nơ ron tích chập
và phương pháp HOG trên kết quả trung bình của dữ liệu thực tế của hệ thống .............. 64
Bảng 3.4: Cơ sở dữ liệu thời gian phát hiện khuôn mặt của hệ thống .............................. 67
xi
DANH MỤC VIẾT TẮT
Từ viết tắt Ý nghĩa
AI Artificial Intelligence - Trí tuệ nhân tạo
ANN Artificial Neural Network – Mạng thần kinh nhân tạo
CNN Convolutional Neural Network – Mạng thần kinh tích chập
ReLU Rectified Linear Unit – Điều chỉnh đơn vị tuyến tính
CSDL Cơ sở dữ liệu
GPU Graphics Processing Unit – Vi xử lý đồ họa
CPU Central Processing Unit – Bộ xử lý trung tâm
CUDA Compute Unified Device Architecture - kiến trúc tính toán song song
do hãng NVIDIA phát triển.
IOT Internet of Things – vạn vật kết nối
ASCI Red Accelerated Strategic Computing Initiative Red – một siêu máy tính
của Intel
W Watt – một đơn vị đo lường của điện lực
kW KiloWatt – một đơn vị đo lường của điện lực
SVM Support Vector Machine – một thuật toán phân lớp
DP2MFD Deep Pyramid Deformable Parts Model for Face Detection
IJB-A IARPA Janus Benchmark-A – một thử thách mở cho nhận diện khuôn
mặt
KLT Kanade–Lucas–Tomasi – một giải thuật thị giác máy tính
LFW Labeled Faces in the Wild – một bộ thư viện khuôn mặt
xii
API Application Programming Interface – giao diện lập trình
YOLO You only look once – một hệ thống mạng nơ ron nhân tạo phát hiện
đối tượng thời gian thực
HOG Histogram of Oriented Gradients – biểu đồ độ dốc định hướng
PCA Principal Component Analysis - Phân tích thành phần chính
1
LỜI MỞ ĐẦU
Lý do chọn đề tài
Trong giai đoạn gần đây, cụm từ cách mạng công nghiệp lần thứ tư được nhắc đến
rất nhiều trên truyền thông. Khái niệm cách mạng công nghiệp 4.0 được đưa ra dựa trên
xu thế bùng nổ của nhiều công nghệ mới như: công nghệ truyền dẫn tốc độ cao, CPU rất
mạnh, GPU hàng ngàn nhân, công nghệ chế tạo bộ nhớ đạt nhiều đột phá. Song song với
đó, công nghệ dần làm các thiết bị nhỏ lại, nhưng sức mạnh tăng lên đáng kể. Công nghệ
mạch nhúng cũng bùng nổ không kém với nhiều mạch nhúng nhỏ, sử dụng lượng điện
khiêm tốn, nhưng khả năng tính toán lên tới hàng ngàn tỉ phép tính trên giây, tương
đương sức mạnh của 1 siêu máy tính cách đây khoảng 20 năm. Ví dụ như board mạch
Nvidia's Jetson TX1 được ra mắt năm 2015, có thể nằm vừa trong lòng bàn tay và chỉ sử
dụng 10 oát điện, đã có sức mạnh tính toán tới 1 ngàn tỉ phép tính trên giây, điều mà cách
đó tròn 20 năm, vào năm 1996, siêu máy tính ASCI Red của Intel, phải sử dụng tới 6000
vi xử lý Pentium Pros, vận hành với 1000 kW mới có thể đạt được sức mạnh tính toán
trên.
Máy tính hiện nay có sức mạnh tính toán lớn nhưng giá thành lại ở mức phổ thông,
dẫn tới người làm nghiên cứu rất dễ dàng để có thể tự kiểm nghiệm được các lý thuyết về
trí tuệ nhân tạo từ nhiều năm trước. Cùng với mã nguồn mở, hiện làn sóng trí tuệ nhân tạo
đang bùng nổ mạnh mẽ trong thời gian gần đây, và đem lại rất nhiều ứng dụng trong đời
sống
Chính vì lý do trên, việc tìm hiểu và nghiên cứu thị giác máy tính rất có ý nghĩa và
thiết thực. Hiện nay trên thế giới, nhiều nước đã và đang ứng dụng thị giác máy tính vào
đời sống hàng ngày, ví dụ như SkyNet của Trung Quốc, các hệ thống kiểm duyệt nội
dung tự động, …
Cơ sở khoa học và thực tiễn của đề tài
Ngày nay, trong kỷ nguyên số, máy tính là một phần không thể thiếu trong nghiên
cứu khoa học cũng như trong đời sống hàng ngày. Tuy nhiên, do hệ thống máy tính dựa
trên lý thuyết cổ điển (tập hợp, logic nhị phân), nên dù có khả năng tính toán lớn và độ
chính xác cao, thì máy tính cũng chỉ có thể làm việc theo một chương trình gồm các thuật
toán được viết sẵn do lập trình viên chứ chưa thể tự lập luận hay sáng tạo.
Học máy (Machine learning) là một phương pháp phân tích dữ liệu có thể tự động
hóa phân tích dữ liệu và tìm ra các trích xuất đặc trưng của bộ dữ liệu. Học máy sử dụng
các thuật toán trừu tượng để tự học từ dữ liệu, cho phép máy tính tìm thấy những thông
2
tin có giá trị ẩn ở rất sâu mà không thể lập trình được bằng cách thông thường. Khi tiếp
xúc với dữ liệu mới, học máy có thể thích ứng rất nhanh và độc lập.
Học sâu (Deep Learning) là một ngành đặc biệt của học máy. Học sâu sử dụng
mạng nơ ron nhân tạo (Artificial Neural Networks) để giải quyết các bài toán mà tính toán
cứng chưa thể xử lý được như dữ liệu trừu tượng, dữ liệu mờ, dữ liệu không rõ ràng,...
Với tính chất như vậy, học sâu thường được ứng dụng trong nhận diện hình ảnh, nhận
diện giọng nói, xử lý ngôn ngữ tự nhiên hoặc dự đoán, dự báo.
Mạng nơ ron nhân tạo (Artificial Neural Networks) là một mô hình xử lý thông tin,
cấu thành từ các lớp nơ ron, được ra đời trên cơ sở mô phỏng hoạt động não bộ của sinh
vật. Mạng nơ ron nhân tạo gắn kết nhiều nơ ron theo một mô hình nhất định, được trải
qua huấn luyện để rút ra được kinh nghiệm, và sử dụng các kinh nghiệm đã có để xử lý
các thông tin mới. Mạng nơ ron nhân tạo thường áp dụng vào giải các bài toán nhận dạng
mẫu, hoặc dự đoán.
Mạng nơ ron Tích chập (Convolutional Neural Network) là một trong những mô
hình học sâu hiện đại nhất hiện nay. Mạng nơ ron Tích chập hiện nay thường được sử
dụng nhiều trong các hệ thống thông minh do ưu điểm của mạng là có độ chính xác cao,
tuy nhiên tốc độ tính toán lại rất nhanh. Vì lý do đó, mạng nơ ron tích chập rất mạnh trong
xử lý hình ảnh, và được ứng dụng rất nhiều trong ngành thị giác máy tính trong các bài
toán liên quan đến nhận dạng đối tượng.
Ngày nay, với sự phát triển của công nghệ bán dẫn, máy tính ngày càng nhỏ đi,
năng lượng tiêu thụ ngày càng thấp xuống, trong khi sức mạnh lại ngày càng tăng lên. Với
những ưu điểm như vậy, chúng ta có thể thấy rất nhiều thiết bị thông minh đã và đang
hiện diện mọi nơi trong đời sống, với camera nhiều điểm ảnh, bộ nhớ trong lớn và vi xử
lý mạnh như: điện thoại thông minh, máy ảnh kỹ thuật số, camera hành trình,… Ngoài ra,
với sự bùng nổ của xu hướng mạng vạn vật IOT, người ta có thể sẽ còn thấy rất nhiều
thiết bị thông minh mới xuất hiện: xe ô tô tự lái, thiết bị bay không người lái tự giao
hàng,... Có thể thấy, việc sử dụng trí thông minh nhân tạo để khai thác dữ liệu hình ảnh
trong các thiết bị thông minh trong tương lai đã và đang trở thành xu hướng. Từ nhận
định trên và sự gợi ý của giảng viên hướng dẫn, tôi quyết định chọn nội dung “Nghiên
cứu về mạng Neural Convolutional, áp dụng vào bài toán nhận dạng đối tượng trong lĩnh
vực thị giác máy tính” để làm đề tài nghiên cứu thực hiện luận văn thạc sỹ của mình.
Mục tiêu của luận văn
Luận văn của tôi tập trung vào nghiên cứu, tìm hiểu về mạng nơ ron tích chập. Sau
đó so sánh các phương pháp học sâu ở mức độ tổng quan trên phương diện học thuật, từ
3
đó thấy được tiềm năng cũng như hạn chế của AI với cái nhìn khách quan nhất. Ở phần
ứng dụng, tôi sử dụng mạng nơ ron tích chập để áp dụng vào hai bài toán thực tế: bài toán
nhận dạng người và bài toán nhận diện khuôn mặt trong lĩnh vực thị giác máy tính.
Cấu trúc luận văn
Luận văn được tổ chức gồm ba chương gồm:
Chương 1: Trình bày tổng quan về nơ ron, các thành phần và cơ chế hoạt
động của nơ ron. Từ đó, trình bày về một số kiểu mạng nơ ron và cơ chế lan
truyền ngược. Cuối cùng là giới thiệu về cấu tạo và cách hoạt động của
mạng nơ ron tích chập;
Chương 2: Trình bày tổng quan về bài toán nhận dạng bằng mạng nơ ron
tích chập, cách thức hoạt động của việc nhận dạng đối tượng và nhận dạng
khuôn mặt của mạng nơ ron tích chập. Ngoài ra, chương hai giới thiệu về
các mô hình sử dụng nơ ron tích chập nổi tiếng đang được áp dụng hiện nay
và kết quả của từng mô hình;
Chương 3: Áp dụng mạng nơ ron tích chập vào trong thực tế. Ở chương
này, tác giả báo cáo về kết quả đạt được khi áp dụng mạng nơ ron tích chập
để xây dựng hai hệ thống: hệ thống nhận dạng người và hệ thống nhận diện
khuôn mặt. Ngoài ra, tác giả có thực hiện so sánh với phương pháp cũ để có
thể thấy ưu điểm và hạn chế của mạng nơ ron tích chập.
Cuối cùng là phần kết luận cho phép tóm tắt kết quả đã đạt được và nêu ra những
tồn tại, dựa vào đó để đưa ra những mục tiêu và phương hướng phát triển cho hệ thống
sau này.
4
CHƯƠNG 1.
TỔNG QUAN VỀ MẠNG NƠ RON
VÀ GIỚI THIỆU VỀ MẠNG NƠ RON TÍCH CHẬP
1.1. Nơ ron nhân tạo
1.1.1 Lịch sử của nơ ron nhân tạo
Vào năm 1943, nhà thần kinh học Warren McCulloch đã cùng nhà toán học
Walter Pitts đã viết một cuốn sách về cách mạng thần kinh hoạt động. Và họ đã thực hiện
mô phỏng một mạng thần kinh đơn giản trên một mạch điện. [9]
Vào năm 1949, Donald Hebb đã viết cuốn sách Organization of Behavior. Điểm
nhấn chính là mạng thần kinh nào được sử dụng nhiều sẽ được tăng cường.
Vào năm 1959, David Hubel và Torsten Wiesel đã xuất bản cuốn sách Receptive
fields of single neurons in the cat’s striate cortex, miêu tả về phản ứng của các tế bào thần
kinh thị giác trên loài mèo, cũng như cách loài mèo ghi nhớ và nhận diện hình dạng trên
kiến trúc vỏ não của nó.
Hình 1.1 Hình ảnh thí nghiệm của David Hubel và Torsten Wiesel trên mèo [10]
Vào năm 1989, Yann LeCun đã áp dụng thuật toán học cho mạng nơ ron theo kiểu
lan truyền ngược vào kiến trúc mạng nơ ron tích chập của Fukushima. Sau đó vài năm,
LeCun đã công bố LeNet-5 [13]. Có thể nói, LeNet-5 là một trong những mạng nơ ron
tích chập sơ khai nhất, tuy nhiên các dấu ấn của nó vẫn tồn tại tới ngày nay, có thể thấy
thông qua một số thành phần thiết yếu mà các mạng nơ ron tích chập của ngày nay vẫn
đang sử dụng
5
1.1.2 Cấu tạo và quá trình xử lý của một nơ ron sinh học
Hình 1.2: Hình ảnh một nơ ron sinh học [14]
Một nơ ron gồm có: thân nơ ron, tua gai thần kinh, sợi trục thần kinh, trong đó:
Thân nơ ron: là nơi xử lý các tín hiệu được đưa vào;
Tua gai thần kinh: là nơi nhận các xung điện vào trong nơ ron;
Sợi trục thần kinh: là nơi đưa tín hiệu ra ngoài sau khi được xử lý bởi nơ
ron;
Khớp thần kinh: vị trí nằm giữa tua gai thần kinh và sợi trục thần kinh, đây
là điểm liên kết đầu ra của nơ ron này với đầu vào của nơ ron khác.
1.1.3 Cấu tạo và quá trình xử lý của một nơ ron nhân tạo
Dựa vào cấu tạo của một nơ ron sinh học, các nhà khoa học nghiên cứu và lập trình
đã đưa ra kiến trúc của một nơ ron nhân tạo:
Hình 1.3: Công thức của một nơ ron nhân tạo [41]
6
Mạng nơ ron nhân tạo có thể mô tả đơn giản lại như sau:
Hình 1.4: Hình ảnh một nơ ron nhân tạo
Trong đó:
Danh sách các đầu vào: Là các thuộc tính đầu vào của một nơ ron. Số
lượng thuộc tính đầu vào thường nhiều hơn một, do dữ liệu thô đầu vào
thường là một vector nhiều chiều, hoặc nhiều nơ ron tầng trước kết nối tới
một nơ ron tầng sau.
Trọng số liên kết: Các liên kết được thể hiện độ mạnh yếu qua một giá trị
được gọi là trọng số liên kết. Kết hơp với các đầu truyền, tín hiệu đến các
nơ ron nhân tạo khác sẽ được tính bằng ;
Hình 1.5: Hình ảnh vị trí thiên lệch được thêm vào trong thực tế
7
Hàm tổng: Tổng các tích của các đầu vào với trọng số liên kết mô phỏng
các khớp kết nối. Sau đó đi qua hàm tính tổng để tính ra giá trị trước khi
đưa vào hàm truyền;
Thiên lệch (b): Độ lệch được đưa vào sau khi khi tính toán xong hàm tổng,
tạo ra giá trị cuối cùng trước khi đưa vào hàm truyền. Mục đích của việc
thêm vào thiên lệch nhằm dịch chuyển chức năng của hàm kích hoạt sang
trái hoặc phải, giúp ích khi mạng được huấn luyện. Hình ảnh vị trí thiên
lệch được thêm vào trong mạng nơ ron thực tế.
Hình ảnh huấn luyện khi có và không có thiên lệch:
Hình 1.6: Kết quả của hàm sigmoid với các trọng số đầu vào khác nhau nhưng không có thiên lệch
Hình 1.7: Kết quả của hàm sigmoid với các trọng số thiên lệch khác nhau
Hàm kích hoạt (Activation functions): Hàm này được sử dụng để tính toán giá trị
của đầu ra dựa vào giá trị của hàm Tổng.
8
1.1.4. Các mô hình hàm kích hoạt của mạng nơ ron nhân tạo
1.1.4.1 Hàm Sigmod
Biểu diễn hàm:
Đạo hàm của hàm:
Hàm Sigmoid được sử dụng vì ngưỡng của nó nằm trong khoảng (0, 1). Do đó,
hàm này được sử dụng nhiều cho các mô hình dự đoán xác suất đầu ra, tức kết quả chỉ tồn
tại trong khoảng từ 0 đến 1: khi đầu vào là số dương lớn, đầu ra của hàm sigmoid gần
bằng 1. Khi nhỏ hơn 0, đầu ra gần bằng 0. Tuy nhiên, việc tối ưu của hàm này khó
khăn, nguyên nhân vì nếu giá trị đầu vào của hàm là 1 số rất lớn, thì đầu ra của hàm càng
về 2 đầu xấp xỉ 1 hoặc 0, nên tốc độ hội tụ sẽ rất chậm.
Hình 1.8: Đồ thị hàm Sigmoid
1.1.4.2 Hàm TanH
Biểu diễn hàm:
Đạo hàm của hàm:
Hàm TanH được sử dụng vì đầu ra của hàm nằm trong khoảng , thích hợp
với các mô hình đầu ra có ba giá trị: âm, trung tính (0) và dương. Chúng ta có thể thấy rõ
hơn điều này trong hình minh họa.
9
Hình 1.9: Đồ thị hàm TanH
1.1.4.3. Hàm tuyến tính
Biểu diễn hàm:
Đạo hàm của hàm:
Hàm tuyến tính áp dụng thao tác nhận dạng trên dữ liệu với dữ liệu đầu ra tỷ lệ
thuận với dữ liệu đầu vào.
Hình 1.10: Đồ thị hàm tuyến tính
1.1.4.4 Hàm RELU
Biểu diễn hàm:
Đạo hàm của hàm:
Hàm RELU áp dụng với những trường hợp cần đầu ra nằm trong khoảng (0, +∞).
Hàm RELU có tốc độ tính toán rất nhanh, gán các giá trị âm trở thành 0 ngay lập tức, phù
10
hợp cho việc huấn luyện từ dữ liệu chuẩn. Tuy nhiên, điều này khiến hàm RELU không
ánh xạ các giá trị âm một cách thích hợp.
Hình 1.11: Đồ thị hàm RELU
1.1.4.5 Hàm ELU
Biểu diễn hàm:
Đạo hàm của hàm:
Hàm ELU là một biến thể của hàm RELU. Hàm thường được sử dụng khi ngưỡng
đầu ra của nó nằm trong khoảng (-1, +∞). Hàm ELU khắc phục hạn chế ánh xạ các giá trị
âm của hàm RELU.
Hình 1.12: Đồ thị hàm ELU
11
1.2 Mạng nơ ron nhân tạo
1.2.1 Giới thiệu mạng nơ ron nhân tạo
Mạng nơ ron nhân tạo (Artificial Neural Network ANN) là một chuỗi các giải
thuật lập trình, mô phỏng dựa trên cách hoạt động của mạng lưới thần kinh trong não bộ
các sinh vật sống. Mạng nơ ron nhân tạo được sử dụng để tìm ra mối quan hệ của một tập
dữ liệu thông qua một thiết kế kiến trúc chứa nhiều tầng ẩn (hidden layer), mỗi tầng lại
chứa nhiều nơ ron. Các nơ ron được kết nối với nhau và độ mạnh yếu của các liên kết
được biểu hiện qua trọng số liên kết.
Lập trình thông thường có thể làm được rất nhiều phần mềm lớn, như tính toán mô
phỏng các vụ nổ hạt nhân trong siêu máy tính ở các phòng thí nghiệm, hoặc tái hiện các tế
bào ở cấp độ phân tử để phân tích các thử nghiệm thuốc. Một siêu máy tính có thể tính
toán được nhiều tỉ phép tính trên giây, tuy nhiên lập trình thông thường lại gặp khó khăn
trong việc nhận ra các mẫu đơn giản, ví dụ như nhận diện mặt người, điều mà một bộ não
sinh học xử lý nhanh và chính xác hơn nhiều.
Áp dụng với các kỹ thuật học sâu, mạng nơ ron nhân tạo hiện nay đang được áp
dụng để giải quyết những vấn đề mà lập trình theo logic thông thường khó có thể giải
quyết được. Do đó, mạng nơ ron nhân tạo đang nhanh chóng trở nên phổ biến, và là xu
thế trên nhiều lĩnh vực.
1.2.2 Một số kiểu mạng nơ ron
Có hai kiểu mạng nơ ron chính: mạng nơ ron truyền thằng (feedforward neural
network) và mạng nơ ron hồi quy (recurrent neural network).
Mạng truyền thẳng và hồi quy được minh họa như sau:
Hình 1.13: Mạng nơ ron truyền thẳng
12
Dễ thấy, ở mạng nơ ron truyền thẳng, các nơ ron trong tầng ẩn đều được kết
nối với các nơ ron trong tầng n. Do có nhiều tầng ẩn nên chúng ta có thể thấy rằng mạng
truyền thẳng kéo dài trong không gian, và là không có bất kỳ đường tuần hoàn (cyclic
path) nào nằm trong mạng. Mạng nơ ron truyền thẳng rất phổ biến hiện nay.
Hình 1.14: Mạng nơ ron hồi quy
Một loại khác là mạng nơ ron hồi quy. Không giống như mạng nơ ron truyền
thẳng, mạng nơ ron hồi quy có ít nhất một đường dẫn tuần hoàn. Chúng ta có thể thấy nó
ở hình minh họa phía trên. Vì có một đường dẫn tuần hoàn, nên mạng nơ ron hồi quy có
thể gây ra vòng lặp vô cực. Tuy nhiên, mạng nơ ron tuần hoàn có một ứng dụng quan
trọng là chúng có thể nhận diện cho các giai đoạn thời gian khác nhau, như hình minh họa
sau:
Hình 1.15: Cách huấn luyện cho một mạng nơ ron hồi quy
Như ví dụ trên, có một nút A kết nối với nút B và một chu kỳ đến chính nút A.
Mạng nơ ron hồi quy không xử lý đường dẫn tuần hoàn và các kết nối cùng một lúc.
Mạng nơ ron hồi quy giả sử rằng đầu ra của nút A trong thời gian n là đầu vào của nút B
và nút A trong thời gian n + 1. Vì vậy, ngoài tính chất kéo dài trong không gian khi kết
nối với các tầng nơ ron tiếp theo, mạng nơ ron hồi quy cũng nằm sâu trong thời gian. Vì
vậy, các mạng nơ ron hồi quy có thể mô hình hóa các hệ thống thay đổi theo bối cảnh. Ví
dụ: mạng nơ ron hồi quy thường được sử dụng trong xử lý ngôn ngữ theo ngữ cảnh. Mạng
13
nơ ron hồi quy có thể xử lý các phụ thuộc xa (long-term dependencies) theo mốc thời
gian, ví dụ như mạng bộ nhớ dài-ngắn (Long Short Term Memory networks).
1.2.3 Mạng nơ ron lan truyền ngược
1.2.3.1 Tổng quan về mạng nơ ron lan truyền ngược
Giải thuật lan truyền ngược được mô tả ngắn gọn như sau:
1. Bước 1: Lan truyền. Giai đoạn lan truyền có hai bước, lan truyền tiến và lan
truyền ngược. Bước lan truyền tiến là nhập dữ liệu huấn luyện vào các
mạng nơ ron và tính toán đầu ra. Sau đó, dựa vào kết quả đầu ra, so sánh với
dữ liệu huấn luyện. Chúng ta có thể sử dụng lan truyền ngược để cập nhật
ngược lại trọng số lại cho các nơron trong các tầng trước đó.
2. Bước 2: Cập nhật trọng số. Mạng cập nhật các giá trị của trọng số của nơ
ron theo lỗi của kết quả đầu ra.
3. Bước 3: Lặp hai bước trên. Lặp lại bước một và hai cho đến khi sai số tối
thiểu. Sau đó kết thúc khóa huấn luyện.
1.2.3.2 Cách thức lan truyền ngược
1. Sử dụng để biểu diễn đầu vào cho nút của lớp .
2. Sử dụng cho trọng số từ nút của lớp đến nút của lớp
3. Sử dụng được biểu diễn cho độ lệch của nút của lớp .
4. Sử dụng đại diện cho đầu ra của nút của lớp .
5. Sử dụng đại diện cho đầu ra mong muốn, dựa trên tập huấn luyện được sử
dụng.
6. Sử dụng là hàm kích hoạt, sử dụng Sigmoid cho hàm kích hoạt.
Để có được lỗi tối thiểu, hàm chi phí được tính toán với công thức như sau:
14
Trong đó x là đầu vào dữ liệu huấn luyện và là đầu ra mong muốn. L là tổng số
lớp và L
jylà đầu ra của mạng nơ ron tương ứng với đầu vào x. Để đạo hàm dễ dàng, ta
nhân tổng của (4) với một hằng số 1/2.
Để tìm ra mức tối thiểu. Trước tiên, ta tính toán các đạo hàm riêng của hàm chi phí
đối với bất kỳ trọng số nào, với công thức sau:
Có hai trường hợp: Nút là một nút đầu ra hoặc trong một tầng ẩn. Trong trường
hợp ở tầng đầu ra, trước tiên chúng ta tính đạo hàm chênh lệch:
Phương trình cuối cùng dựa trên quy tắc chuỗi. Nút là nút duy nhất có trọng số
nên các giá trị khác sẽ bằng 0. Và là đầu ra của hàm kích hoạt (hàm Sigmoid). Do
đó, phương trình mới thu được là:
Trong đó L
kx sự kết hợp tuyến tính của tất cả các đầu vào của nút j trong tầng L với
các trọng số. Hàm sigmoid là đạo hàm có dạng sau:
15
Do đó, hàm trên trở thành:
Vì 1
1
L L
ik i
L
k
i L
x yW
. Vì vậy, (9) trở thành:
(10)
Vì liên quan đến và không liên quan khi khác . Do đó, có mối
quan hệ giữa nút của tầng và nút của tầng . Ta có công thức:
để biểu diễn nút của tầng . Do vậy, phương trình mới thu được là:
Ta xem xét các nút của tầng ẩn . Ở lớp ngay trước lớp đầu ra. Áp dụng đạo
hàm riêng một phần trên trọng số cho hàm chi phí. Các trọng số cho các nút của tầng ẩn
này:
16
Vì có một tổng trên tầng. Do thay đổi của các trọng số cho các nút của các
tầng ẩn sẽ ảnh hưởng đến đầu ra mạng nơ ron. Do đó, áp dụng quy tắc chuỗi (chain rule):
Sau đó, đạo hàm theo quy tắc chuỗi:
Dòng thứ 2 của (14) dựa vào đầu vào của là sự kết hợp tuyến tính giữa các đầu
ra của nút của lớp trước với trọng số. Vì đạo hàm không liên quan đến nút của lớp L.
Do đó, ta đơn giản hóa đạo hàm dựa trên quy tắc chuỗi:
Chuyển thành . Do đó phương trình trở thành:
Ta xét 2 trường hợp:
17
Đối với tầng đầu ra nút k: , trong đó:
Đối với tầng ẩn nút j: , trong đó:
Áp dụng quy trình tương tự. Ví dụ, Tính đạo hàm riêng cho độ lệch của nút k trong
lớp cuối cùng và thu được:
Bởi vì nên . Phương trình có thể được cập nhật
thành:
Công thức trên áp dụng với bất kể đầu ra nào. Vì vậy, độ dốc của hàm chi phí so
với độ lệch là:
Rút ra từ công thức trên, giải thuật loan truyền ngược sẽ được mô tả như sau:
Bước 1: Chạy mạng tính toán với dữ liệu đầu vào để có được đầu ra mạng
Bước 2: Đối với mỗi nút đầu ra, ta thực hiện phép tính:
Bước 3: Đối với mỗi nút ở tầng ẩn, ta thực hiện phép tính:
18
Bước 4: Cập nhật các trọng số và thiên lệch như sau:
Giả thiết:
Áp dụng:
Tham số trong thuật toán được gọi là tốc độ học tập. Thuật toán này lặp lại cho
đến khi đạt sai số tối thiểu hoặc dưới ngưỡng chấp nhận được để hoàn thành quá trình
huấn luyện.
1.3 Mạng nơ ron tích chập
1.3.1 Khái niệm về mạng nơ ron tích chập
Mạng nơ ron tích chập là một trong những mạng truyền thẳng đặc biệt. Mạng nơ
ron tích chập là một mô hình học sâu phổ biến và tiên tiến nhất hiện nay. Hầu hết các hệ
thống nhận diện và xử lý ảnh hiện nay đều sử dụng mạng nơ ron tích chập vì tốc độ xử lý
nhanh và độ chính xác cao. Trong mạng nơ ron truyền thống, các tầng được coi là một
chiều, thì trong mạng nơ ron tích chập, các tầng được coi là 3 chiều, gồm: chiều cao,
chiều rộng và chiều sâu (Hình 1.11). Mạng nơ ron tích chập có hai khái niệm quan trọng:
kết nối cục bộ và chia sẻ tham số. Những khái niệm này góp phần giảm số lượng trọng số
cần được huấn luyện, do đó tăng nhanh được tốc độ tính toán.
Hình 1.16: Các tầng (layer) trong CNN là 3 chiều
19
Hình 1.17: Hình minh họa một ví dụ sử dụng CNN để phân lớp đồ vật [20]
1.3.2 Mô hình mạng nơ ron tích chập
Có ba tầng chính để xây dựng kiến trúc cho một mạng nơ ron tích chập:
1. Tầng tích chập;
2. Tầng gộp (pooling layer);
3. Tầng được kết nối đầy đủ (fully-connected).
Tầng kết nối đầy đủ giống như các mạng nơ ron thông thường, và tầng chập thực
hiện tích chập nhiều lần trên tầng trước. Tầng gộp có thể làm giảm kích thước mẫu trên
từng khối 2x2 của tầng trước đó. Ở các mạng nơ ron tích chập, kiến trúc mạng thường
chồng ba tầng này để xây dựng kiến trúc đầy đủ. Ví dụ minh họa về một kiến trúc mạng
nơ ron tích chập đầy đủ:
Hình 1.18: Ví dụ minh họa về cấu trúc CNNs – LeNet – 5[19]
20
1.3.2 Xây dựng mạng nơ ron tích chập
1.3.2.1 Mạng được kết nối cục bộ
Trong xử lý hình ảnh, thông tin của hình ảnh là các điểm ảnh (pixel). Nếu sử dụng
mạng được kết nối đầy đủ, chúng ta sẽ có rất nhiều tham số. Ví dụ, một hình ảnh RGB có
kích thước 512x512 pixel sẽ có 786432 (= 512 x 512 x 3) tham số đầu vào. Vì vậy, nếu
chúng ta sử dụng kiến trúc mạng nơ ron trong hình sau:
Hình 1.19: Hình ảnh một mạng nơ ron được kết nối đầy đủ
Hình trên cho thấy nếu áp dụng mạng nơ ron được kết nối đầy đủ, toàn bộ kiến trúc
mạng sẽ cần tính toán hơn 3 triệu nơ ron. Số lượng lớn các nơ ron làm cho toàn bộ quá
trình học rất chậm và dẫn đến quá tải so với khả năng tính toán của máy tính hiện tại.
Qua một vài nghiên cứu về xử lý ảnh, các nhà nghiên cứu nhận thấy rằng các tính
năng trong một hình ảnh thường là cục bộ, và các nhà nghiên cứu chú ý đến các tính năng
cấp thấp đầu tiên khi xử lý ảnh. Vì vậy, kiến trúc mạng có thể chuyển mạng được kết nối
đầy đủ sang mạng được kết nối cục bộ, nhằm làm giảm độ phức tạp của tính toán. Đây là
một trong những ý tưởng chính trong CNN. Chúng ta có thể thấy rõ hơn qua hình sau:
Hình 1.20: Tích chập một ma trận nhỏ để tạo ra dữ liệu đầu vào cho một nơ ron
tầng ẩn
Giống như xử lý hình ảnh thông thường, chúng ta có thể kết nối cục bộ một khối
vuông ma trận với nơ ron. Kích thước khối thông thường là 3x3, 5x5, hoặc 7x7. Ý nghĩa
vật lý của khối giống như một cửa sổ trượt (cửa sổ trượt là một trong những phương pháp
21
xử lý ảnh). Bằng cách đó, số lượng tham số có thể giảm xuống rất nhỏ nhưng không gây
ra giảm hoặc mất thông tin, vì hình ảnh thông thường thường có tính lặp trong không
gian. Để trích xuất nhiều thông tin hơn, các mạng nơ ron kết nối khối cùng với một nơ ron
khác. Độ sâu trong các tầng là số lần chúng ta kết nối một khu vực với các nơ ron khác
nhau. Ví dụ, mạng kết nối cùng một khu vực với 5 nơ ron khác nhau. Vì vậy, độ sâu là
năm trong tầng mới. Chúng ta có thể thấy rõ hơn qua hình sau:
Hình 1.21: Ví dụ về lớp tích chập
Trong thực tế, có thể kết nối tất cả thông tin độ sâu (ví dụ: kênh 3 RGB) với nơ ron
tiếp theo vì kết nối là cục bộ trong không gian và có chiều sâu đầy đủ. Tuy nhiên ở ví dụ
này chỉ kết nối thông tin cục bộ về chiều cao và chiều rộng. Vì vậy, có thể có
các tham số trong hình trên cho nơ ron sau lớp màu xanh nếu chúng ta sử dụng cửa sổ
. Biến thứ nhất và thứ hai là chiều cao và chiều rộng của kích thước cửa sổ và biến
thứ ba là độ sâu của lớp.
Ví dụ này di chuyển cửa sổ bên trong hình ảnh và làm cho tầng tiếp theo cũng có
chiều cao và chiều rộng, và là một hai chiều. Ví dụ: nếu chúng ta di chuyển cửa sổ 1 pixel
mỗi lần, gọi là bước nhảy là 1, trong một hình ảnh và kích thước cửa sổ là
sẽ có các nơ ron ở tầng tiếp theo. Có thể thấy rằng, kích
thước đã giảm từ 32 xuống 28. Vì vậy, để bảo toàn kích thước, chúng ta thêm phần trống
vào đường viền. Quay lại ví dụ trên, nếu chúng ta đệm với 2 pixel, có
các nơ ron ở lớp tiếp theo để giữ kích thước chiều cao và chiều
rộng. Như ví dụ trên, nếu chúng ta sử dụng kích thước cửa sổ w, chúng ta sẽ có 1 vùng
được tích chập với kích cỡ của cửa sổ mới là pixel. Thông tin đường viền sẽ
không ảnh hưởng nhiều vì những giá trị đó chỉ được sử dụng một lần.
22
Phần kế tiếp sẽ chi tiết hơn về bước nhảy của cửa sổ trượt, tức khoảng cách thay
đổi của cửa sổ mỗi lần. Ví dụ: giả sử bước nhảy là 2 và cửa sổ trượt bao phủ vùng
Sau đó, cửa sổ thứ hai bao phủ vùng và cửa sổ thứ 3 bao phủ vùng
Ví dụ, nếu chúng ta sử dụng bước nhảy 1 và kích thước cửa sổ trong hình
ảnh và không sử dụng bù viền (pad-zero), thì chúng ta sẽ có
các nơ ron ở lớp tiếp theo. Nếu chúng ta thay đổi bước nhảy 1 thành
bước nhảy 2 và những tham số khác vẫn giữ nguyên, thì chúng ta sẽ có có
những nơ ron ở lớp tiếp theo. Chúng ta có thể kết luận rằng nếu chúng
ta sử dụng bước nhảy s, kích thước cửa sổ trong ảnh , thì sẽ có
các nơ ron ở lớp tiếp theo. Khi
chúng ta sử dụng bước nhảy 3 và những tham số khác vẫn giữ nguyên thì chúng ta sẽ
nhận được Vì kết quả không phải là số nguyên, nên bước nhảy 3
không thể dùng vì chúng ta không thể có được một khối hoàn chỉnh trong một mạng nơ
ron.
1.3.2.2 Chia sẻ tham số
Trong ví dụ minh họa của mục 1.3.2.1, ta sẽ có số lượng là nơ ron
ở tầng tiếp theo có bước nhảy 1, kích thước cửa sổ 5 x 5 và không có đệm, với độ sâu là 5.
Mỗi nơ ron sẽ có tham số. Vì vậy, trong tầng tiếp theo sẽ có
tham số. Ở đây, chúng ta có thể chia sẻ các tham số
theo từng độ sâu, do đó nơ ron ở mỗi tầng ẩn sẽ sử dụng tham số giống nhau là
, và tổng tham số sử dụng cho mỗi tầng là . Điều này làm số
lượng tham số giảm một cách đáng kể. Tương tự, các nơ ron ở mỗi độ sâu trong tầng tiếp
theo sẽ áp dụng tích chập cho tầng trước đó. Và quá trình học tập giống như học lõi (core)
tích chập. Đây là lý do mà các mạng nơ ron này được gọi là mạng nơ ron tích chập.
1.3.2.3 Hàm kích hoạt
Trong mô hình nơ ron truyền thống, các mạng thường sử dụng hàm sigmoid cho
hàm kích hoạt. Tuy nhiên Krizhevsky [21] đã thử với hàm kích hoạt RELU. Sau khi so
23
sánh hiệu quả của hàm kích hoạt RELU và hàm kích hoạt sigmoid trong CNNs. Họ thấy
rằng mô hình với RELU cần ít thời gian lặp hơn trong khi đạt tỷ lệ lỗi khi huấn luyện
tương đương. Chúng ta có thể thấy kết quả trong hình sau:
Hình 1.22: So sánh giữa ReLU và Sigmoid.
Như hình trên, đường liền nét là mô hình sử dụng RELU và đường đứt nét là sử
dụng hàm Sigmoid. Có thể dễ dàng thấy rằng, RELU cần ít vòng lặp hơn để đạt tỉ lệ lỗi
chấp nhận được. Do đó, ngày nay đa số các mô hình CNN gần đây sử dụng RELU để làm
hàm kích hoạt.
1.3.2.4. Tầng gộp
Tầng gộp sẽ giảm kích cỡ của hình ảnh ngay sau khi thực hiện tích chập, giúp giữ
lại các đặc điểm, tính chất nổi bật nhất của ảnh. Điều này cho phép giảm mức độ tính toán
khi hình ảnh có kích thước quá lớn, đồng thời không làm mất đi các đặc điểm quan trọng
của ảnh.
Tuy đã sử dụng các mạng được kết nối cục bộ và chia sẻ tham số, tuy nhiên số
lượng tham số trong mang nơ ron vẫn là quá lớn. So với một tập dữ liệu tương đối nhỏ, nó
có thể gây ra tình trạng quá khớp (overfitting). Vì vậy, mạng nơ ron nhân tạo thường chèn
các tầng gộp vào mạng. Tầng gộp xử lý để giảm dần số lượng tham số nhằm cải thiện thời
gian tính toán trong mạng nơ ron. Tầng gộp áp dụng lấy mẫu xuống cho tầng trước bằng
cách sử dụng hàm max. Tầng gộp hoạt động độc lập trên mỗi tầng trước đó. Ngoài ra, có
24
thể đặt lượng pixel khi chúng ta di chuyển cửa sổ trượt hoặc bước nhảy, như làm với tầng
tích chập. Ví dụ, trong hình sau:
Hình 1.23: Ví dụ minh họa đơn giản về tầng gộp
Ở ví dụ trên, kích thước cửa sổ trượt là và bước nhảy mỗi lần trượt là 2. Tại
mỗi cửa sổ, hàm max sẽ lấy giá trị tối đa để đại diện cho giá trị của tầng tiếp theo. Có hai
loại tầng gộp: Nếu kích thước cửa sổ trượt bằng bước nhảy, đó là gộp chung (traditional
pooling). Nếu kích thước cửa sổ trượt lớn hơn bước nhảy, đó là gộp nhóm (overlapping
pooling). Trong thực tế, các mạng nơ ron thường sử dụng kích thước cửa sổ cùng
kích thước bước nhảy là 2 trong gộp chung và sử dụng kích thước cửa sổ cùng
kích thước bước nhảy là 2 trong gộp nhóm, vì nếu tăng kích cỡ cửa sổ sẽ rất dễ làm mất
các đặc tính của dữ liệu.
Ngoài việc gộp sử dụng hàm max, người ta có thể sử dụng các hàm khác. Ví dụ
người ta có thể sử dụng hàm tính trung bình của cửa sổ trượt để tính toán giá trị cho tầng
tiếp theo, được gọi là gộp trung bình.
1.3.2.5. Tầng được kết nối đầy đủ
Tầng thứ ba là tầng được kết nối đầy đủ. Tầng này giống như mạng nơ ron truyền
thống: các nơ ron ở tầng trước sẽ kết nối với một nơ ron ở tầng tiếp theo và tầng cuối
cùng là đầu ra. Để có thể đưa hình ảnh từ những tầng trước vào, ta phải dàn phẳng dữ liệu
ra thành một véc tơ nhiều chiều. Cuối cùng là sử dụng hàm softmax để thực hiện phân
loại đối tượng
25
Hình 1.24: Một ví dụ của lớp được kết nối đầy đủ
1.3.2.6 Mô hình quá khớp
Cấu trúc của một mạng CNN rất lớn, trong mạng có rất nhiều nơ ron, kết nối,
cũng như có rất nhiều trọng số cần thiết để huấn luyện. Nhưng lượng dữ liệu huấn luyện
thường không đủ để huấn luyện hoàn thiện cho một mạng nơ ron lớn. Nó có thể gây ra
một số vấn đề về quá khớp, khiến cho khi huấn luyện có kết quả rất cao, nhưng áp dụng
thực tế gây ra sai số lớn. Có một số kỹ thuật để cải thiện điều này.
Hình 1.25: Ví dụ về trường hợp quá khớp (bên trái) và trường hợp chuẩn (bên phải)
Một trong những phương pháp đó là là giảm trọng số trong lúc huấn luyện.
Dropout là một trong những kỹ thuật nổi tiếng và khá phổ biển để khắc phục vấn đề này.
Dropout đặt đầu ra của mỗi nơ ron ẩn thành 0 với xác suất 0,5. Vì vậy, các nơ ron này sẽ
không đóng góp vào lan truyền tiến, do đó và sẽ không tham gia vào lan truyền ngược.
Thông thường, đối với các đầu vào khác nhau, mạng nơ ron xử lý dropout theo một cấu
trúc khác nhau.
Một cách khác để cải thiện việc việc quá khớp là tăng lượng dữ liệu. Chúng ta có
thể phản chiếu hình ảnh, lộn ngược hình ảnh, lấy mẫu hình ảnh, v.v. Những cách này sẽ
tăng số lượng dữ liệu huấn luyện. Vì vậy, nó có khả năng ngăn chặn quá khớp. Với ví dụ
thực tế, trong một vài dự án, các bức ảnh được sử dụng để huấn luyện đã được xử lý thêm
26
bước xoay, với mỗi lần từ 15 đến 20 độ cũng như áp dụng thêm phương pháp phản chiếu
bức ảnh. Kết quả, hệ thống AI đã phát hiện cải thiện đáng kể việc nhận diện.
1.3.2.7. Một số mạng tích chập nổi tiếng
Có một số kiến trúc mạng nơ ron tích chập nổi tiếng. Một số thử nghiệm cho thấy
chúng có hiệu suất tốt hơn. Vì vậy, đôi khi nhiều người sử dụng mạng được thiết kế sẵn
thay vì tự thiết kế mạng. Ở các phần sau luận văn sẽ giới thiệu một vài mạng tích chập nổi
tiếng và thông dụng hiện nay.
AlexNet
Hình 1.26: Cấu trúc của AlexNet
Alex đã phát triển mạng này vào năm 2012. Cho tới thời điểm hiện tại, AlexNet
vẫn còn đang được sử dụng phổ biến và rộng rãi. Mạng AlexNet có năm lớp chập và ba
lớp kết nối đầy đủ. Cấu trúc trong AlexNet được chia thành hai khối. Nguyên nhân vì tác
giả đã sử dụng hai GPU để huấn luyện dữ liệu song song. Mạng này được sử dụng trong
phân loại đối tượng quy mô lớn. Lớp đầu ra có một nghìn nơ ron. Đó là bởi vì kiến trúc
ban đầu được thiết kế để phân loại một nghìn nhãn. Thông thường, những người áp dụng
kiến trúc mạng nơ ron AlexNet sẽ thay thế lớp cuối cùng, phụ thuộc vào mục đích của họ.
Tác giả của mạng này đã làm nhiều thử nghiệm để có thể ra được mô hình này có kết quả
tốt nhất. Vì vậy, hiệu suất của cấu trúc này rất ổn định và mạng này được sử dụng rộng rãi
trong nhiều ứng dụng.
VGGNet
VGGNet [10] được phát triển vào năm 2014 và đã giành chiến thắng trong cuộc thi
ILSVRC-2014. Mạng này mạnh hơn mạng AlexNet nhưng rất sâu. Mạng này có 16 đến
19 tầng (Hình 1.21). Mạng này đã được thiết kế với 5 cấu trúc. Sau một số thí nghiệm, D
và E là cấu trúc tốt nhất. Hiệu suất của E tốt hơn một chút so với B. Nhưng các tham số
trong E lớn hơn D. Vì vậy, người sử dụng có thể chọn một trong số cấu trúc mạng dựa
trên những gì họ cần. Đặc điểm của VGGNet là việc áp dụng nhiều lớp chập với kích
27
thước cửa sổ nhỏ thay vì lớp chập với kích thước cửa sổ lớn, sau đó là lớp gộp. Nó làm
cho mạng linh hoạt hơn.
Hình 1.27: Cấu trúc của VGGNet
1.4 Kết luận
Mạng nơ ron nhân tạo là một chuỗi các thuật toán được sử dụng để tìm ra mối
quan hệ của một tập dữ liệu thông qua cơ chế vận hành của bộ não sinh học. Mạng nơ ron
nhân tạo thường được huấn luyện qua một tập dữ liệu chuẩn cho trước, từ đó có thể đúc
rút được kiến thức từ tập dữ liệu huấn luyện, và áp dụng với các tập dữ liệu khác với độ
chính xác cao.
Các phương pháp sử dụng để huấn luyện mạng nơ ron nhân tạo ngày càng tối ưu
hơn về mặt tính toán và phục vụ cho nhiều mục đích khác nhau. Hiện nay, kiến trúc mạng
nơ ron ngày càng được hoàn thiện cho nhiều nhiệm vụ, trong đó mạng nơ ron tích chập
được chú ý rất nhiều vì tính hiệu quả trong thị giác máy tính. Mạng nơ ron tích chập với
các cải tiến góp phần giảm thời gian tính toán và tăng độ chính xác hứa hẹn sẽ là một
trong những phương pháp được áp dụng rất nhiều vào thực tế trong tương lai.
28
CHƯƠNG 2.
BÀI TOÁN NHẬN DẠNG BẰNG MẠNG NƠ RON TÍCH CHẬP
2.1 Khái niệm về nhận dạng
Nhận dạng là một ngành thuộc lĩnh vực trí tuệ nhân tạo. Nhận dạng mẫu là khả
năng phát hiện sự sắp xếp các đặc tính hoặc dữ liệu mang lại thông tin về một hệ thống
hoặc tập dữ liệu nhất định. Nhận dạng mẫu chia thành nhiều lĩnh vực trong công nghệ
thông tin, bao gồm phân tích dữ liệu lớn, nhận dạng sinh trắc học, bảo mật và trí tuệ nhân
tạo. Nhận dạng đối tượng trong hình ảnh là một nhánh của nhận dạng mẫu. Nhận dạng đối
tượng trong hình ảnh thể hiện qua các công nghệ máy tính có thể nhận ra người, động vật,
vật thể hoặc các đối tượng mục tiêu khác thông qua việc sử dụng các thuật toán và khái
niệm học máy.
2.1.1 Nhận dạng đối tượng
Một số khái niệm liên quan:
Nhận dạng đối tượng (object recognition) là một thuật ngữ chung để mô tả
một tập hợp các cách xử lý trong thị giác máy tính có liên quan đến việc xác
định các đối tượng trong ảnh kỹ thuật số.
Phân loại hình ảnh (image classification) liên quan đến việc dự đoán, phân
loại các lớp thông tin của một đối tượng trong một hình ảnh.
Khoanh vùng đối tượng (object localization) là việc xác định vị trí của một
hoặc nhiều đối tượng trong một hình ảnh bằng hình chữ nhật xung quanh
phạm vi của đối tượng bằng hộp chứa (bounding box).
Phát hiện đối tượng (object detection) kết hợp cả hai nhiệm vụ nhận dạng
đối tượng và khoanh vùng đối tượng. Phát hiện đối tượng là việc khoanh
vùng và phân loại một hoặc nhiều đối tượng khác nhau trong một hình ảnh.
Nhận dạng đối tượng khác với phát hiện đối tượng ở chỗ nhận dạng đối tượng
mang ý nghĩa rộng hơn, bao gồm cả việc phân loại hình ảnh (đòi hỏi thuật toán xác định
các lớp của đối tượng xuất hiện trong hình ảnh), cũng như phát hiện đối tượng (đòi hỏi
thuật toán khoanh vùng, định vị được tất cả các đối tượng có trong hình ảnh)
29
Hình 2.1: Sự khác biệt giữa nhận dạng đối tượng và phát hiện đối tượng
2.1.2 Nhận dạng khuôn mặt
Nhận dạng khuôn mặt là khả năng nhận diện, lưu trữ,so sánh và phân tích các mẫu
dựa trên đường nét khuôn mặt để nhận dạng người từ hình ảnh hoặc video. Hệ thống
thường sử dụng các công nghệ để thực hiện nhận dạng khuôn mặt như sử dụng sinh trắc
học để ánh xạ các đặc điểm khuôn mặt từ ảnh hoặc video. Hệ thống so sánh thông tin này
với một cơ sở dữ liệu đã lưu trữ về các khuôn mặt để tìm ra một kết quả khớp chính xác
Nhận dạng khuôn mặt ngày càng được quan tâm trong nhiều lĩnh vực, như Trung
Quốc có hệ thống Skynet để chấm điểm công dân, hay nhiều chuỗi cửa hàng lớn cũng sử
dụng nhận dạng khuôn mặt khách hàng thân thiết để phân tích thói quen tiêu dùng. Trên
thực tế, công nghệ nhận dạng khuôn mặt đã nhận được sự chú ý đáng kể vì nó có tiềm
năng cho một loạt các ứng dụng liên quan đến thực thi pháp luật cũng như các doanh
nghiệp khác.
Hình 2.2: Một minh họa về một số bản đồ đặc trưng của các lớp DC12, conv22, conv32, conv42 và
conv52 được đào tạo cho nhiệm vụ nhận dạng khuôn mặt.
30
2.2. Lịch sử và phát triển
Nhận dạng khuôn mặt tự động là một khái niệm tương đối mới, được phát triển vào
những năm 1960. Hệ thống bán tự động đầu tiên cho nhận dạng khuôn mặt cần quản trị
viên phải xác định được vị trí các điểm cần được đánh dấu (như mắt, tai, mũi và miệng)
trên các bức ảnh, sau đó tính toán khoảng cách và tỷ lệ đến một điểm tham chiếu chung,
cuối cùng đó được so sánh với dữ liệu để ra kết quả.
Vào những năm 1970, Goldstein, Harmon và Lesk1 sử dụng 21 loại thông tin cụ
thể, chẳng hạn như màu tóc và độ dày môi để tự động nhận dạng. Vấn đề với cả hai giải
pháp ban đầu này là các phép đo dựa trên vị trí, và cần sự tính toán thủ công của con
người để có thể vận hành.
Năm 1988, Kirby và Sirovich áp dụng phân tích các thành phần nổi bật, một kỹ
thuật đại số tuyến tính tiêu chuẩn vào việc nhận dạng khuôn mặt. Đây được coi là một
phần của cột mốc thay đổi vì dưới một trăm giá trị được yêu cầu mã hóa chính xác một
hình ảnh khuôn mặt được căn chỉnh và chuẩn hóa phù hợp.
Vào năm 1991, Turk và Pentland phát hiện ra rằng trong khi sử dụng kỹ thuật
thành phần riêng, lỗi dư (residual error) có thể được sử dụng để phát hiện khuôn mặt
trong hình ảnh - một khám phá có thể tạo ra được một hệ thống nhận diện khuôn mặt tự
động, thời gian thực và đáng tin cậy. Mặc dù cách tiếp cận có phần bị hạn chế bởi các yếu
tố máy móc của giai đoạn đó, nhưng nó đã tạo ra sự quan tâm đáng kể trong việc phát
triển công nghệ nhận dạng khuôn mặt tự động.
Công nghệ đầu tiên đã thu hút được sự chú ý rất lớn của truyền thông khi triển khai
thử nghiệm tại Super Bowl tháng 1 năm 2001, trong đó ghi lại hình ảnh từ camera giám
sát và so sánh chúng với một cơ sở dữ liệu kỹ thuật số. Sau sự kiện này, đã có các phân
tích về tính cần thiết của việc sử dụng công nghệ để hỗ trợ nhu cầu quốc gia, trong khi
vẫn quan tâm đến các mối quan tâm xã hội và quyền riêng tư của cộng đồng. Ngày nay,
công nghệ nhận dạng khuôn mặt đang được sử dụng để chống lại gian lận hộ chiếu, hỗ trợ
thực thi pháp luật, xác định trẻ em mất tích, và giảm thiểu gian lận danh tính.
2.3. Cách thức hoạt động
Phương pháp bao gồm các bước khác nhau để thực hiện nhận diện khuôn mặt tự
động. Đầu tiên là thực hiện phát hiện khuôn mặt để khoanh vùng khuôn mặt trong từng
khung hình ảnh và video. Sau đó, dữ liệu ở bước trên đuợc liên kết với các khuôn mặt
được phát hiện với danh tính chung trên các video và căn chỉnh các khuôn mặt thành tọa
độ bằng cách sử dụng các mốc được phát hiện. Cuối cùng, hệ thống thực hiện xác minh
31
khuôn mặt để tính toán độ tương tự giữa một cặp hình ảnh / video. Sơ lược phương pháp
được minh họa trong hình 2.3.
Hình 2.3: Tổng quan về phương pháp nhận dạng khuôn mặt người
bằng mạng nơ ron tích chập
Cụ thể, ta có thể xem xét ví dụ với thiết kế mạng ở hình 2.4 để rõ hơn về tổng quan
cách thức hoạt động:
Hình 2.4: Thiết kế mạng nơ ron để xử lý ảnh
Từ mạng nơ ron trên, ta có thể thấy các bước xử lý ảnh từ trái sang phải. Lần lượt,
ta có thể thấy hình ảnh các cửa sổ dò tìm (ô vuông màu xanh) đang giảm dần và hiệu
chỉnh dần theo từng giai đoạn dò tìm:
32
Hình 2.5: Các giai đoạn dò tìm và hiệu chỉnh
2.4 Phương pháp nhận dạng đối tượng từ ảnh chụp của camera
2.4.1 Nhận diện khuôn mặt
Tất cả các khuôn mặt trong khung hình ảnh / video được phát hiện bằng hệ thống
dò khuôn mặt dựa trên mạng nơ ron tích chập sâu (Deep Convolutional Neural Network –
DCNN), được gọi là Mô hình tháp sâu để phát hiện khuôn mặt (Deep Pyramid
Deformable Parts Model for Face Detection - DP2MFD) [38], bao gồm hai mô-đun. Mô-
đun đầu tiên tạo ra một hình tháp sâu được chuẩn hóa bảy cấp cho bất kỳ hình ảnh đầu
vào nào có kích thước tùy ý, như đã minh họa trong hình ảnh 2.3. Kiến trúc mạng nơ ron
tích chập tương tự như Alexnet, được sử dụng để trích xuất các tính năng sâu. Mạng hình
tháp này tạo ra một tháp gồm 256 bản đồ đặc trưng ở lớp tích chập thứ 5 (conv5). Bộ lọc
được áp dụng để có được lớp max5. Thông thường, cường độ kích hoạt cho một
vùng khuôn mặt giảm theo kích thước của cấp độ của tháp. Do đó, một khuôn mặt lớn
được phát hiện bởi cửa sổ trượt có kích thước cố đinh ở cấp độ tháp thấp hơn sẽ có điểm
phát hiện cao so với khuôn mặt nhỏ được phát hiện ở cấp độ tháp cao hơn. Để giảm độ
lệch này cho kích thước khuôn mặt, hệ thống áp dụng bước chuẩn hóa điểm z trên các
tính năng max5 ở mỗi cấp. Đối với vectơ đặc trưng 256 chiều ở cấp tháp i và vị trí
(j, k), tính năng chuẩn hóa được tính như sau:
Trong đó, là vectơ đặc trưng trung bình và là độ lệch chuẩn cho cấp độ tháp
i. Các tính năng max5 được chuẩn hóa là . Sau đó, các tính năng có độ dài từ mỗi
vị trí trong tháp được trích xuất bằng cách sử dụng phương pháp cửa sổ trượt. Mô-đun thứ
hai là một SVM tuyến tính (linear SVM), lấy các tính năng này làm đầu vào để phân loại
từng vị trí là mặt, hoặc không phải là mặt, dựa trên điểm được tính toán. Mô hình tháp sâu
33
để phát hiện khuôn mặt - DP2MFD có khả năng nhận diện rất tốt trên các độ sáng ảnh
khác nhau, cũng như kích cỡ khuôn mặt. Chúng ta có thể thấy thông qua ví dụ sau:
Hình 2.6: Kết quả phát hiện mẫu trên ảnh IJB-A bằng phương pháp tháp sâu
2.4.2 Phát hiện các điểm quan trọng trên khuôn mặt
Khi các khuôn mặt được phát hiện, thuật toán thực hiện phát hiện các điểm quan
trọng để căn chỉnh khuôn mặt. Thuật toán sẽ tìm cách khôi phục mặt về hình dáng mặc
định ban đầu: gọi khuôn mặt là I, hình dạng ban đầu là S0, thuật toán sẽ tính toán mức
tăng hình dạng ∆S từ các mô tả sâu (deep descriptors) và cập nhật bằng công thức sau:
Các tính năng CNN (được biểu thị là Φ trong công thức trên) được thiết kế với
bước nhảy và cách gộp hợp lý, được sử dụng làm các tính năng để thực hiện tính toán. Ở
đây, kiến trúc CNN được sử dụng tương tự như Alexnet với các trọng số được xử lý trước
cho bộ dữ liệu ImageNet như trong hình sau:
Hình 2.7: Kiến trúc DCNN được sử dụng để trích xuất các mô tả cục bộ cho nhiệm vụ phát hiện các
điểm mốc trên khuôn mặt
Vì mục tiêu mạng CNN này là phát hiện khuôn mặt. Do đó, mạng sẽ được căn
chỉnh để xử lý dữ liệu khuôn mặt tốt hơn. Các dữ liệu đầu ra ở từng tầng sẽ là dữ liệu đầu
vào ở tầng tiếp theo. Trong hình trên, chúng ta có thể thấy có 5 tầng. Sau khi hoàn thành
34
phát hiện các mốc, khuôn mặt sẽ được căn chỉnh theo tọa độ bằng cách sử dụng phép biến
đổi và các điểm mốc.
Điều này giúp mạng tìm hiểu các đặc điểm cụ thể đối với khuôn mặt. Hơn nữa,
mạng áp dụng hồi quy theo tầng, trong đó đầu ra được tạo bởi giai đoạn đầu tiên sẽ được
sử dụng làm đầu vào cho giai đoạn tiếp theo, tổng là năm giai đoạn tích chập được áp
dụng trong hệ thống. Các bộ lọc được chọn để trích xuất tính năng được tinh chỉnh trong
các giai đoạn sau để cải thiện việc chuẩn hóa các mốc trên khuôn mặt. Sau khi hoàn thành
phát hiện các mốc trên khuôn mặt, mỗi khuôn mặt được căn chỉnh theo tọa độ chính tắc
bằng cách sử dụng biến đổi tương tự và các điểm mốc.
Hình 2.8: Ví dụ về các điểm mốc trên khuôn mặt
2.4.3 Liên kết khuôn mặt
Vì có nhiều đối tượng xuất hiện trong các khung hình của video, nên việc thực
hiện liên kết khuôn mặt để gán từng khuôn mặt cho đối tượng tương ứng là một bước
quan trọng để chọn đúng đối tượng khi xác minh khuôn mặt. Do đó, khi một khuôn mặt
trong khung hình của video được phát hiện, hệ thống theo dõi khuôn mặt bằng cách tích
hợp các kết quả từ trình phát hiện khuôn mặt, trình theo dõi khuôn mặt và bước liên kết
khuôn mặt.
Hệ thống áp dụng thuật toán nhận diện khuôn mặt trong mọi khung hình bằng
phương pháp nhận diện khuôn mặt được trình bày trong phần trước. Vùng phát hiện
khuôn mặt được coi như một khuôn mặt mới nếu không có tỷ lệ trùng lặp với bất kỳ vùng
phát hiện nào trong các khung hình trước. Tỷ lệ trùng lặp của một vùng phát hiện được
phát hiện và vùng phát hiện trong khung hình trước được xác định là:
35
Qua thực nghiệm, ngưỡng 0,2 là đủ để coi như xuất hiện khuôn mặt mới, do các
khung hình của video cách nhau chỉ một phần nhỏ của giây. Để theo dõi khuôn mặt, các
nhà khoa học sử dụng giải thuật Kanade-Lucas-Tomasi (KLT) để theo dõi các khuôn mặt
giữa hai khung hình liên tiếp. Hệ thống cập nhật các vùng phát hiện trong quá trình theo
dõi dựa vào khung hình mới nhất. Vùng phát hiện sẽ thay thế cho vùng phát hiện
nếu nhỏ hơn ngưỡng (0,2). Quá trình theo dõi khuôn mặt sẽ bị chấm dứt nếu
không có phát hiện khuôn mặt tương ứng chồng chéo với nó cho nhiều hơn khung hình.
Hệ thống thường đặt giới hạn bằng 4 khung hình, dựa trên cơ sở thực nghiệm. Hình ảnh
kết quả của phương pháp liên kết khuôn mặt cho các video của JANUS CS2:
Hình 2.9: Kết quả mẫu của phương pháp liên kết khuôn mặt cho các video của JANUS CS2, là bộ
dữ liệu mở rộng của IJB-A
2.5 Kết quả các thuật toán sử dụng mạng nơ ron nhân tạo
2.5.1 Mô hình DeepID 2 (NIPS 2014)
Cách thức hoạt động của mô hình DeepID 2:
Trong quá trình huấn luyện, 200 phần khuôn mặt được cắt với các vị trí, tỉ lệ và
kênh màu sắc khác nhau. Mỗi phần khuôn mặt và phần đối xứng được đưa vào ConvNet.
Hai vector 160 chiều được trích xuất từ phần khuôn mặt và phần đối xứng. Chọn 25 phần
khuôn mặt tốt nhất.
36
Hình 2.10: Kiến trúc mạng của mô hình DeepID 2
Một ví dụ về 25 phần khuôn mặt tốt nhất:
Hình 2.11: 25 phần khuôn mặt tốt nhất được chọn để trích xuất đặc điểm
Kết quả của mô hình thể hiện trong bảng.
Bảng 2.1: Thống kê xác minh độ chính xác của khuôn mặt bằng DeepID2 khi tăng dần số lượng của
các phần khuôn mặt
37
Qua bảng 2.1, ta có thể thấy, khi sử dụng 25 phần khuôn mặt để trích xuất đặc
điểm, độ chính xác của phương pháp rất cao, xấp xỉ tới 99%. Tuy nhiên, khi nhận diện
với 25 phần khuôn mặt, máy tính cần mất 0.035 giây để tính toán. Mặt khác, với việc chỉ
sử dụng một phần khuôn mặt để trích xuất đặc trưng, thời gian xử lý rất nhanh, chỉ 0,0017
giây, tuy nhiên độ chính xác chỉ còn 95,43%. Dựa trên bảng thống kê này, các nhà phát
triển có thể căn chỉnh số phần khuôn mặt để tối ưu cho bài toán thực tế. Ví dụ như, nếu
cần một hệ thống phản hồi nhanh mà không quá ưu tiên độ chính xác, có thể chỉ sử dụng
một phần khuôn mặt để trích xuất đặc trưng, ngược lại, ta có thể tăng số phần khuôn mặt
nhằm tăng độ chính xác.
Bảng 2.2: So sánh độ chính xác của mô hình DeepID2 với các kết quả mô hình trước đó trên bộ thư
viện LFW
Qua bảng so sánh trên, ta có thể thấy mô hình DeepID2 khi sử dụng trên bộ thư
viện LFW có độ chính xác rất cao, lên tới hơn 99%. Với độ chính xác cao như vậy,
DeepID2 có thể đưa ra làm sản phẩm và thương mại hóa.
38
2.5.2 Mô hình DeepID3 (arXiv 2015)
Hình 2.12: Kiến trúc mạng của mô hình DeepID3
DeepID3 là mô hình nâng cấp của DeepID2+
Bảng 2.3: Kết quả so sánh của mô hình DeepID3 với các mô hình trước trên bộ thư viện LFW
Với bộ dữ liệu LFW năm 2015, ta có thể thấy DeepID3 đã có những cải tiến nhất
định so với DeepID2+, với độ chính xác được tăng cường lên tới 1%
39
2.5.3 Mô hình DeepFace (Facebook, CVPR 2014)
Sơ lược kiến trúc DeepFace: DeepFace sử dụng căn chỉnh 3D để xử lý khuôn mặt.
Sau đó đầu vào được bộ lọc tích chập-gộp chung, tiếp theo được xử lý bởi ba tầng được
kết nối cục bộ và hai tầng được kết nối đầy đủ. Màu sắc minh họa dựa trên đặc trưng
được xử lý ở mỗi tầng. Mạng bao gồm hơn 120 triệu tham số, trong đó hơn 95% đến từ
các lớp cục bộ và được kết nối đầy đủ.
Hình 2.13: Kiến trúc của DeepFace
Bảng 2.4: Kết quả của khi so sánh DeepFace với các công nghệ hiện đại trên bộ dữ liệu
LFW
Có thể thấy, mô hình DeepFace đạt kết quả rất cao, lên đến 0.95 tới 0.97, gần ở
mức tiệm cận con người.
2.5.4 Mô hình FaceNet (Google 2015)
FaceNet là một mô hình được tạo ra từ google, và được huấn luyện bởi 260 triệu
bức ảnh. FaceNet có 2 mô hình CNN: mô hình lấy cảm hứng từ Zeiler & Fergus, và mô
hình GoogLeNet.
40
Hình 2.14: Hình ảnh: Mô hình lấy cảm hứng từ Zeiler & Fergus
Hình 2. 15 Mô hình GoogleNet
41
Bảng 2.5: Bảng so sánh hiệu suất của kiến trúc mạng trên FaceNet
Qua bảng trên ta có thể thấy kiến trúc NN2 và NN1 có độ chính xác cao nhất.
Bảng 2.6: Bảng so sánh độ chính xác dựa trên số lượng dữ liệu đào tạo
Quả bảng so sánh độ chính xác dựa trên dữ liệu đào tạo, ta có thể thấy độ chính
xác được cải thiện rõ rệt khi dữ liệu tăng lên đáng kể. Do đó, ngoài kiến trúc mạng hợp lý,
dữ liệu được sử dụng để đào tạo cũng là một nhân tố góp phần tạo nên độ chính xác cao
cho mô hình.
2.5.5 Mô hình Baidu (2015)
Mô hình Baidu, 2015, là mô hình được tạo ra bởi hãng Baidu, Trung Quốc. Với
nguồn lực và lượng thông tin cá nhân lớn, Baidu đã xây dựng được một hệ thống nhận
diện khuôn mặt với tỉ lệ lỗi rất thấp.
Hình 2.16: Tổng quan về cấu trúc CNN trên nhiều phần khuôn mặt của Baidu
42
Bảng 2.7: Tỉ lệ lỗi trên lượng dữ liệu khác nhau
Có thể thấy, ở mô hình của Baidu, với lượng người càng lớn và số khuôn mặt càng
nhiều, hệ thống càng trở nên chính xác.
2.6 Kết luận
Bài toán nhận dạng đã có từ rất lâu với nhiều phương pháp khác nhau. Tuy nhiên,
với các kỹ thuật mới, ta có thể thấy rằng độ chính xác của các phương pháp ngày càng
tăng trong khi chi phí tính toán ngày càng giảm.
Hình 2.17: Thống kê các mô hình, số lượng bộ dữ liệu sử dụng, và các mốc thời gian xuất bản
Qua cách thức hoạt động và các mô hình được sử dụng trong bài toán nhận dạng,
ta có thể thấy dữ liệu là chìa khóa rất quan trọng trong việc đào tạo. Nếu mô hình còn hạn
chế, nhưng lại có rất nhiều dữ liệu để đào tạo thì độ chính xác của hệ thống sẽ được cải
43
thiện ở mức đáng kể. Có thể thấy, các mô hình có độ chính xác cao trên 97% đều sử dụng
trên 100 nghìn ảnh để huẩn luyện. Ngoài ra, việc xử lý nhiều phần khuôn mặt cũng giúp
ích rất nhiều cho độ chính xác của nhận diện, tuy nhiên hệ thống sẽ cần số lượng tính toán
lớn hơn để có thể nhận diện.
Các phương pháp nhận dạng bằng mạng nơ ron tích chập hiện nay có độ sai số rất
nhỏ và nằm trong ngưỡng chấp nhận được. Nên việc áp dụng mạng nơ ron tích chập để
xây dựng một hệ thống nhận diện là hoàn toàn khả thi và có thể đáp ứng nhiều nhu cầu
khi chúng ta đang dần tiến tới cách mạng công nghiệp 4.0.
44
CHƯƠNG 3.
SỬ DỤNG MẠNG NƠ RON TÍCH CHẬP
TRONG NHẬN DẠNG ĐỐI TƯỢNG
3.1 Sơ lược về áp dụng mạng nơ ron tích chập vào các giải pháp thông
minh trong thực tế
Hiện nay, xã hội đang tiến dần đến kỷ nguyên cách mạng công nghiệp 4.0. Với
cách mạng công nghiệp 4.0, các mức tự động hóa, cũng như học máy đều ở mức cao, có
thể thay thế con người khỏi nhiều việc, nhằm góp phần giải phóng sức lao động. Ngoài ra,
việc khai phá dữ liệu cũng đem lại nhiều tối ưu cho các mô hình kinh doanh, cũng như
cho xã hội. Để hướng đến cách mạng công nghiệp 4.0, rất cần các giải pháp tự động hóa
cho các mô hình công hoặc mô hình kinh doanh như bệnh viện, cửa hàng hoặc siêu thị. Ở
các giải pháp này, hệ thống thông minh sẽ tự động phân tích số lượng người ra/vào, hay
nhận diện thời điểm xuất hiện của khách hàng thân thiết.
Ở phạm vi của đề tài, luận văn áp dụng hai giải pháp về nhận diện người và nhận
diện khuôn mặt sử dụng CNN để áp dụng xây dựng các hệ thống thực tế. Các phương
pháp nhận diện người cũng như khuôn mặt qua thực tế đã có độ chính xác và có khả năng
thương mại hóa cao.
3.2 Áp dụng mạng nơ ron tích chập để xây dựng hệ thống nhận diện
người vào/ra và đánh giá thực nghiệm, so sánh với phương pháp HOG
3.2.1 Giới thiệu hệ thống nhận diện và đếm lượt người vào/ra sử dụng mạng nơ
ron tích chập
Mô tả bài toán: Hiện nay, camera rất thông dụng và được lắp ở mọi nơi. Tuy nhiên,
camera dân dụng thông thường chỉ có chức năng chụp ảnh hoặc ghi hình mà không có
chức năng thông minh nào khác. Do đó, giải pháp hướng đến là lập nên một hệ thống có
chức năng thống kê người vào/ra. Hệ thống có thể áp dụng cho nhiều địa điểm như các
cổng ra vào ở bệnh viện, trường học, siêu thị, ... Dựa trên kết quả thống kê, người dùng có
thể nắm được các thông tin về trạng thái hiện tại của khu vực đặt camera. Hệ thống này
được xây dựng theo kiến trúc như trong hình. Trong đó:
1. Hệ thống camera: hệ thống camera nhận dạng đối tượng được lắp đặt ở các
khu vực cần đếm người ra/vào. Hoặc dữ liệu video do người dùng tải lên.
45
2. Máy chủ xử lý nhận diện và đếm lượng người: máy chủ có cấu hình mạnh,
tốc độ xử lý cao, có thể xử lý toàn bộ dữ liệu của hệ thống camera, tạo thành
báo cáo để đẩy vào hệ thống trích xuất dữ liệu.
3. Hệ thống trích xuất dữ liệu và hình ảnh đối chiếu: sau khi được xử lý qua
máy chủ xử lý, dữ liệu được gom nhóm kèm video, và được lưu trữ ở đây
trước khi được đẩy về máy chủ trung tâm.
4. Cơ sở dữ liệu chứa thông tin nhận diện đối tượng: đây là dữ liệu bao gồm
số liệu và hình ảnh và video của hệ thống nhận diện đối tượng.
5. Quản trị viên: quản trị viên là người kết nối lên máy chủ tổng, là người xem
xét dữ liệu để nắm được thông tin số lượng người ra/vào theo khung giờ, và
lập các báo cáo cần thiết.
Hình 3.1: Hình ảnh thiết kế của hệ thống nhận diện đối tượng
3.2.2 Giới thiệu kiến trúc của máy chủ xử lý nhận diện và đếm lượng người
Máy chủ xử lý nhận diện và đếm lượng người được sử dụng trong hệ thống là mô
hình YOLO sử dụng kiến trúc mạng nơ ron tích chập. Mô hình YOLO là một cách tiếp
cận mới để phát hiện đối tượng. Với phương pháp này, ta có thể huấn luyện mạng với bộ
dữ liệu được gán nhãn. Sau đó, khi sử dụng để nhận diện, phương pháp này xác định và
đóng khung đối tượng qua một cửa sổ phân tách trong hình ảnh, kèm theo xác suất của
các đối tượng liên quan được phát hiện.
46
Mô hình mạng YOLO sử dụng một mạng thần kinh duy nhất để dự đoán các hộp
giới hạn và xác suất nhãn trực tiếp từ toàn bộ hình ảnh trong một lần chạy. Vì toàn bộ hệ
thống phát hiện là một mạng duy nhất, nên nó được tối ưu hóa từ đầu đến cuối, dựa trên
hiệu suất phát hiện. Kiến trúc đơn của YOLO rất nhanh, với mô hình thường, mạng có thể
xử lý được trong thời gian thực với 45 khung hình trên giây, còn với mô hình nhỏ hơn là
FastYOLO, hệ thống có thể xử lý tới 155 khung hình trên giây.
Hình 3.2: Phương pháp mạng YOLO sử dụng để nhận diện đối tượng.
Mô hình YOLO được thiết kế với 24 tầng nơ ron tích chập và 2 tầng nơ ron được
kết nối đầy đủ. Các lớp chập 1x1 xen kẽ làm giảm dữ liệu từ các tầng trước. Các lớp tích
chập được sử dụng để trích xuất các đặc điểm từ hình ảnh, các lớp kết nối đầy đủ được sử
dụng để dự đoán xác suất và tọa độ đầu ra. Kiến trúc YOLO được lấy cảm hứng từ mô
hình GoogLeNet cho phân loại hình ảnh
47
Hình 3.3: Mô hình mạng yolo
Ở hệ thống nhận diện đối tượng, hệ thống sử dụng mô hình YOLO, cùng bộ dữ
liệu trọng số đã được huấn luyện là yolov3.weights, có sử dụng thêm tối ưu bằng học tăng
cường để: tăng cường độ chính xác bằng cách huấn luyện thêm bộ dữ liệu đã có.
3.2.3 Giới thiệu sơ lược về phương pháp mô tả đặc trưng HOG sẽ được dùng để
so sánh
HOG trở nên phổ biến vào năm 2005 khi Navneet Dalal và Bill Triggs, các nhà
nghiên cứu của Viện Nghiên cứu Khoa học và Tự động hóa Quốc gia Pháp cho thấy công
việc của họ trên HOG, đây là một giải pháp đáng tin cậy. Thuật toán cũng là một trình
trích xuất các tính năng cho mục đích phát hiện đối tượng. Thay vì xem xét cường độ
điểm ảnh như phương pháp Viola Jones, kỹ thuật này đếm các lần xuất hiện của vectơ độ
dốc biểu thị hướng ánh sáng để định vị các phân đoạn hình ảnh. Phương pháp sử dụng
chuẩn hóa tương phản cục bộ chồng chéo để cải thiện độ chính xác.
3.2.1.1 Giới thiệu sơ lược về phương pháp HOG sử dụng để phát hiện đối tượng
Có 5 bước cơ bản để xây dựng một vector HOG phát hiện đối tượng cho hình ảnh,
bao gồm:
1. Tiền xử lý
Bước tiền xử lý sẽ, cắt hình ảnh thành các khối, chuyển kích thước về kích thước
chuẩn, sau đó sử dụng các khối để tính toán đặc trưng ở các bước tiếp theo.
48
Hình 3.4: Tiền xử lý để xác định khung hình
2. Tính độ dốc
Để tính toán mô tả HOG, ta tính toán độ dốc trên trục Ox và Oy. Độ dốc được tính
bằng phép nhân chập ảnh gốc với véc tơ hai chiều tương ứng là:
Đối với hình ảnh màu, độ dốc của ba màu cơ bản (đỏ, xanh lá và xanh da trờii)
được tính toán. Độ lớn của dốc tại một điểm ảnh là giá trị lớn nhất của cường độ dốc của
ba kênh màu.
Hình 3.5: Độ dốc sau khi tính toán
Trong đó:
Hình bên Trái: giá trị tuyệt đối của độ dốc theo x.
Hình ở giữa: giá trị tuyệt đối của độ dốc theo y.
Hình bên phải: độ lớn của độ dốc
3. Tính vector đặc trưng cho từng ô(ví dụ 8x8 pixel)
49
Dựa vào độ dốc, trên mỗi ô, ta tính toán các véc tơ đặt trưng theo hướng trên từng
ô. Trong đó ta chia không gian hướng thành p chiều vector đặt trưng của ô. Sau đó chúng
ta rời rạc hóa góc hướng nghiêng tại mỗi điểm ảnh vào trong các chiều véc tơ đặc trưng
của ô
Hình 3.6: Kết quả sau khi tính toán véc tơ đặc trưng cho từng ô
Trong đó:
Hình bên Trái: dữ liệu hình ảnh được chia theo từng ô 8x8.
Hình ở giữa: độ dốc được biểu diễn trên hình ảnh bằng mũi tên.
Hình bên phải: cường độ dốc và hướng dốc được biểu thị bằng số.
4. Chuẩn hóa khối(ví dụ 2x2 ô)
Bằng cách tính một ngưỡng cường độ trong một khối và sử dụng giá trị đó để
chuẩn hóa tất cả các ô trong khối, các biểu đồ cục bộ sẽ được chuẩn hóa về độ tương phản
để tăng cường khả năng nhận dạng. Kết quả sau bước chuẩn hóa sẽ là một vector đặc
trưng được tính theo tỉ lệ ánh sáng, do đó nó có tính bất biến cao hơn đối với các thay đổi
về điều kiện ánh sáng.
5. Tính toán vector HOG
Với một ô, ta sẽ có một véc tơ có kích thước là 9 x 1. Với một khối chứa 2x2 ô, ta
sẽ có một véc tơ có kích thước là 9 x 1 x 4 = 36 x 1. Tương tự, với ví dụ một khung hình
có 7 khối ngang và 15 khối dọc, khi nối toàn bộ các véc tơ trong khối lại, ta sẽ thu được
một vec tơ HOG với kích thước là 36 x 1 x 7 x 15 = 3780 x 1.
50
Hình 3.7: Biểu diễn các véc tơ chỉ hướng theo HOG thu được sau khi tính toán
Sau khi hoàn thiện các bước trên, ta có thể sử dụng véc tơ HOG để tính toán và
nhận diện đối tượng.
3.2.4 So sánh khả năng nhận diện của hệ thống nhận diện người vào/ra sử dụng
mạng nơ ron tích chập với phương pháp HOG đã có
Dựa trên thử nghiệm thực tế, ta thu được hình ảnh là kết quả của hai phương pháp
HOG và CNN như sau:
Hình 3.8: Hình ảnh nhận diện bằng phương pháp HOG
51
Hình 3.9: Hình ảnh nhận diện bằng phương pháp CNN
So sánh hai phương pháp, ra có thể rút ra được một số kết luận sau:
Ở phương pháp HOG, ta có thể thấy phương pháp này không thể nhận diện
toàn bộ người xuất hiện trong bức hình, trong đó có nhận diện nhầm vị trí
nôi em bé thành một người.
Ở phương pháp CNN, ta có thể thấy phương pháp này nhận diện gần như
toàn bộ số người có trong bức hình (trừ một người áo hồng đứng ở cửa
hàng). Ngoài ra, hệ thống CNN vẫn có thể nhận diện người với độ lỗi mất
hình rất lớn (một người đứng sau cột điện)
Bảng 3.1 Kết quả so sánh nhận diện người giữa phương pháp mạng nơ ron tích chập và phương
pháp HOG trên kết quả trung bình của dữ liệu thực tế của hệ thống
Trường hợp thử nghiệm Kết quả phương pháp CNN Kết quả phương pháp HOG
Bức ảnh rõ người 95% 73%
Kích cỡ người trong bức
ảnh rất lớn
96% 62%
Kích cỡ người trong bức
ảnh rất nhỏ
93% 43%
Bức ảnh có người bị che
khuất
92% 13%
Có thể thấy rằng, về độ chính xác, phương pháp nhận diện bằng CNN có khả năng
nhận diện đối tượng người tốt hơn nhiều so với phương pháp HOG.
52
3.2.5 Mô tả cơ chế chạy nhận diện người trong lõi máy chủ tính toán
Bước 1: Dữ liệu là các video được đầy vào hệ thống để xử lý. Hệ thống trích xuất
các hình ảnh từ video
Hình 3.10: Hệ thống sử dụng ffmpeg để trích xuất các khung hình trong video
Bước 2: Các hình ảnh lần lượt được đẩy vào lõi nhận diện đối tượng để lấy thông
số nhận diện. Thông số nhận diện gồm có: vị trí và kích cỡ đối tượng được phát hiện
Hình 3.11: Các khung hình lần lượt được hệ thống trích xuất và đưa vào lõi để xử lý.
Bước 3: Sau khi có được thông số kích cỡ, vị trí và thời gian nhận diện đối tượng
của từng khung hình, lõi tính toán để theo dõi đường đi của đối tượng, xác định đối tượng
53
có đi qua vùng đếm hay không, và đếm số người ra hoặc vào trong vùng đếm. Sau đó, hệ
thống đẩy thông tin vào cơ sở dữ liệu và xuất ra một video để báo cáo.
Hình 3.12: Dữ liệu số người vào/ra được nhập vào cơ sở dữ liệu, và video báo cáo được hệ thống tự
động xuất ra để làm đối chiếu.
3.2.6 Mô tả quá trình sử dụng hệ thống ở giao diện người dùng để hiển thị kết
quả
Bước 1: Người sử dụng đăng nhập vào hệ thống bằng tài khoản đã được cung cấp
Hình 3.13: Hình ảnh đăng nhập vào hệ thống
54
Bước 2: Người sử dụng nhận báo cáo số liệt kê số người vào/ra, cũng như tải video
được báo cáo tự động để đối chiếu
Hình 3.14: Kết quả dữ liệu đã được thêm vào cơ sở dữ liệu và hiển trị trên web.
Bước 3: Người sử dụng có thể xem video được báo cáo để đối chiếu và đánh giá
độ chính xác của hệ thống.
Hình 3.15: Một ví dụ tương tự dữ liệu được xuất báo cáo nhận diện trong hệ thống.
55
3.3 Áp dụng mạng nơ ron tích chập để xây dựng hệ thống nhận diện
khuôn mặt và đánh giá thực nghiệm, so sánh với phương pháp HOG
3.3.1 Xây dựng hệ thống nhận diện khuôn mặt
Mô tả bài toán: Hiện nay, camera cá nhân rất thông dụng và được lắp ở mọi nơi, ví
dụ như webcam của laptop, hoặc camera của điện thoại thông minh. Tuy nhiên, cũng
giống như camera dân dụng, camera chỉ có thể thực hiện được chức năng chụp hình hoặc
ghi video cơ bản. Do đó, giải pháp hướng đến là xây dựng một hệ thống website nhận
diện khuôn mặt, có thể chạy trên mọi hệ điều hành, và mọi thết bị từ máy tính cho tới điện
thoại.
Về tính ứng dụng, hệ thống có thể sử dụng các điện thoại thông minh hoặc một
máy tính để bàn cùng webcam để làm hệ thống nhận diện khuôn mặt. Hệ thống có thể trở
thành một phần phụ trợ đối với các mô hình kinh doanh, như hệ thống nhận diện khách
hàng quen biết để tăng độ thân thiện cho nhân viên bán hàng, giúp nhân viên bán hàng
chào đúng tên khách khi khách hàng quay lại lần sau. Hoặc kết hợp với các hệ thống
khác, như thống kê cùng các đơn hàng khách hàng đã mua, việc gán nhãn đó có thể mở ra
một mô hình khai phá dữ liệu lớn, hứa hẹn có thể cải tiến nhiều cho mô hình kinh doanh.
Hệ thống này được xây dựng theo kiến trúc như sau:
Hình 3.16: Kiến trúc hệ thống nhận diện khuôn mặt, tích hợp cùng hệ thống mua hàng
56
Trong đó:
1. Hệ thống tính tiền: Giả định một hệ thống tính tiền của siêu thị được tích
hợp vào hệ thống nhận diện khuôn mặt.
2. Hệ thống camera: hệ thống camera nhận diện khuôn mặt được đặt.
3. Máy chủ xử lý nhận diện: một máy chủ mạnh thực hiện nhận diện khuôn
mặt cho khách hàng thanh toán. Nhận diện được khách hàng và gửi thông
tin về máy chủ trung tâm.
4. Quản trị viên: kết nối, nhập liệu khuôn mặt, duyệt cơ sở dữ liệu và trích
xuất báo cáo. Dựa vào các báo cáo để nắm được trạng thái và làm báo cáo.
5. Hệ thống nhập liệu khuôn mặt: hệ thống nhập liệu để quản trị viên thêm
người dùng vào kho cơ sở dữ liệu.
6. Cơ sở dữ liệu: chứa thông tin nhận diện khuôn mặt, cùng các thông tin khác
tùy vào việc áp dụng hệ thống với mô hình tương ứng.
3.3.2 Giới thiệu cơ chế của máy chủ xử lý nhận diện
Máy chủ xử lý nhận diện khuôn mặt được xử lý theo ba bước như sau:
Bước 1: Phát hiện vị trí khuôn mặt trong bức ảnh, sử dụng dlib với bộ dữ
liệu nhận diện mmod_human_face_detector.dat.
Hình 3.17: Khuôn mặt được trích xuất từ bức ảnh
57
Bước 2: Sau khi phát hiện khuôn mặt, hệ thống xử lý đề dò tìm các điểm
đặc trưng trên khuôn mặt. Sử dụng bộ dữ liệu
shape_predictor_68_face_landmarks.dat, ta thu được điểm mốc trên khuôn
mặt.
Hình 3.18: Hình ảnh 68 điểm mốc trên khuôn mặt được sử dụng trên bộ thư viện dlib
Bước 3: Sau khi có các điểm mốc trên khuôn mặt, ta thực hiện so sánh với
các khuôn mặt đã được huấn luyện, và đưa ra khuôn mặt có tỉ lệ chính xác
cao nhất.
Hình 3.19: Hình ảnh trích xuất đặc trưng khuôn mặt
58
3.3.3 Giới thiệu sơ lược về phương pháp phát hiện khuôn mặt sử dụng HOG sẽ
được dùng để so sánh
Tổng quan về các bước:
Bước 1: Tiền xử lý: từ hình ảnh gốc, ta sử dụng phương pháp phát hiện khuôn mặt
và trích xuất khuôn mặt khỏi bức hình
Hình 3.20: Khuôn mặt được sử dụng để nhận dạng
Hình 3.21: Khuôn mặt được trích xuất
Bước 2: Lọc theo bộ lọc Gabor: Bộ lọc Gabor phân tích các thay đổi về ánh sáng
và kết cấu để phân tích hình ảnh: thay đổi cạnh và kết cấu trong một hình ảnh làm nổi bật
các đặc tính của bức ảnh. Điều này giúp loại bỏ chi tiết không mong muốn, do đó các chi
tiết mà chúng ta thực sự mong muốn như các đường viền của môi, mắt, lông mày và vị trí
của chúng trong bức ảnh sẽ rõ ràng hơn. Bộ lọc Gabor được sử dụng để phóng đại hướng
của hình ảnh khuôn mặt, ví dụ Gabor biến nụ cười thành hình tam giác như trong hình
minh họa. Các cạnh được phóng đại và sắc nét hơn, các đặc điểm khuôn mặt trở nên rõ
ràng và đơn giản hơn so với hình ảnh gốc, do đó nó tăng cường độ chính xác cho HOG
Hình 3.22: Hình ảnh được xử lý sau khi qua bộ lọc Gabor
59
HOG lấy hình ảnh được chuyển đổi từ Bộ lọc Gabor và tìm hướng nổi bật nhất cho
từng nhóm điểm ảnh, được tính toán theo ô. HOG tính toán hướng dốc và cường độ của
hình ảnh Gabor để cung cấp một mô tả toán học rõ ràng về hình ảnh, tạo ra một véc tơ để
mô tả hình ảnh, phục vụ cho việc nhận diện khuôn mặt.
Hình 3.23: Các đặc trưng được trích xuất bằng HOG
Bước 3: Phân loại: véc tơ lấy được từ HOG sẽ được sử dụng theo SVM để tính
toán và phân tích, lưu trữ, và sử dụng để tính toán kết phân loại khuôn mặt
3.3.4 So sánh hệ thống nhận diện khuôn mặt với phương pháp HOG đã có
3.3.4.1 So sánh khả năng phát hiện khuôn mặt giữa HOG và CNN
1. Kết quả phát hiện khuôn mặt khi khuôn mặt ở góc trực diện
Kết quả phát hiện khuôn mặt với HOG:
Hình 3.24: Phát hiện khuôn mặt sử dụng HOG
Độ chính xác: phát hiện gần như chính xác;
Thời gian phát hiện của HOG: 0,37s
60
Kết quả phát hiện với CNN:
Hình 3.25: Phát hiện khuôn mặt sử dụng CNN
Độ chính xác: phát hiện gần như chính xác
Thời gian phát hiện của CNN: 42s
2. Kết quả phát hiện khuôn mặt khi khuôn mặt bị nghiêng một góc lớn(khoảng 70
độ):
Kết quả phát hiện với phương pháp HOG:
Hình 3.26: Phát hiện khuôn mặt sử dụng HOG với góc nghiêng lớn
Phương pháp hoàn toàn không thể phát hiện được.
Độ chính xác: không thể phát hiện được;
Thời gian nhận diện của HOG: 0,27s
61
Kết quả phát hiện với CNN:
Hình 3.27: Phát hiện khuôn mặt sử dụng CNN với góc nghiêng lớn
Với phương pháp CNN: phát hiện được với kết quả gần như chính xác
Thời gian nhận diện 27.30s
Bảng 3.2: Kết quả so sánh phát hiện khuôn mặt giữa phương pháp mạng nơ ron tích chập và
phương pháp HOG trên kết quả trung bình của dữ liệu thực tế của hệ thống
Trường hợp thử nghiệm Kết quả phương
pháp CNN
Kết quả phương pháp
HOG
Mặt nhìn trực diện vào camera 100% 100%
Kích cỡ khuôn mặt trong bức ảnh rất lớn 100% 78%
Kích cỡ khuôn mặt trong bức ảnh rất nhỏ 98% 38%
Khuôn mặt trong bức ảnh bị xoay 30 độ
theo phương ngang
99% 55%
Khuôn mặt trong bức ảnh bị xoay 50 độ
theo phương ngang
95% 20%
Khuôn mặt trong bức ảnh bị xoay 70 độ
theo phương ngang
85% 1%
Khuôn mặt trong bức ảnh bị xoay 90 độ
theo phương ngang
78% 0%
62
Qua phép so sánh, ta có thể thấy tuy HOG có khả năng tính toán rất nhanh vì tính
chất đơn giản. Tuy nhiên với những hình ảnh có độ phức tạp cao, CNN thể hiện rõ khả
năng phát hiện khuôn mặt vượt trội so với công nghệ HOG.
3.3.4 So sánh khả năng nhận diện khuôn mặt giữa HOG và CNN
1. Kết quả nhận diện khuôn mặt khi khuôn mặt ở góc trực diện
Kết quả phát hiện khuôn mặt với HOG:
Hình 3.28: Kết quả nhận diện khuôn mặt với HOG
Độ chính xác: phát hiện gần như chính xác;
Kết quả phát hiện với CNN:
Hình 3.29: Phát hiện khuôn mặt sử dụng CNN
Độ chính xác: phát hiện gần như chính xác
63
2. Kết quả nhận diện khuôn mặt khi khuôn mặt bị nghiêng một góc lớn(khoảng 70 độ)
Kết quả phát hiện với phương pháp HOG:
Hình 3. 30: Nhận diện khuôn mặt sử dụng HOG với góc nghiêng lớn
Độ chính xác: không thể nhận diện được;
Kết quả phát hiện với CNN:
Hình 3.31: Phát hiện khuôn mặt sử dụng CNN với góc nghiêng lớn
Độ chính xác: phát hiện gần như chính xác
64
Bảng 3.3: Kết quả so sánh nhận diện khuôn mặt giữa phương pháp mạng nơ ron tích chập và
phương pháp HOG trên kết quả trung bình của dữ liệu thực tế của hệ thống
Trường hợp thử nghiệm Kết quả phương
pháp CNN
Kết quả phương pháp
HOG
Mặt nhìn trực diện vào camera 100% 100%
Kích cỡ khuôn mặt trong bức ảnh rất lớn 100% 62%
Kích cỡ khuôn mặt trong bức ảnh rất nhỏ 98% 35%
Khuôn mặt trong bức ảnh bị xoay 30 độ
theo phương ngang
95% 51%
Khuôn mặt trong bức ảnh bị xoay 50 độ
theo phương ngang
35% 0%
Khuôn mặt trong bức ảnh bị xoay 70 độ
theo phương ngang
12% 0%
Khuôn mặt trong bức ảnh bị xoay 90 độ
theo phương ngang
0% 0%
Qua phép so sánh, ta có thể thấy, ở những hình ảnh có độ phức tạp như khuôn mặt
có góc nghiêng lớn, xử lý bằng HOG gần như không thể nhận diện được. Nhưng xử lý
bằng CNN có sự vượt trội và chính xác hơn.
3.2.5 Kết quả hệ thống web nhận diện khuôn mặt
3.2.5.1 Giao diện hệ thống
Vì hệ thống web có thể chạy trên 2 nền tảng: nền tảng máy tính và nền tảng thiết bị
di động, nên ta có các giao diện hệ thống sau:
65
Hình 3.32: Giao diện hệ thống trên web (hai hình trên) và giao diện hệ thống trên mobile (hai hình
dưới)
3.2.5.2 Kết quả chức năng nhận diện khuôn mặt
Ở hệ thống nhận diện khuôn mặt, kết quả báo cáo được lấy từ thực tế khi sử dụng
với dữ liệu được nhận diện bằng camera: Ở phần huấn luyện, dữ liệu đầu vào là một
người dùng ngồi trước camera. Hệ thống sẽ nhận diện môt lượng khung hình của người
dùng. Sau đó, ở phần nhận diện, hệ thống sẽ sử dụng dữ liệu đã được huấn luyện trước đó
để nhận diện người sử dụng được ghi hình. Các bước kết quả sẽ được báo cáo lần lượt qua
các hình ảnh sau:
Hình 3.33: Huấn luyện thêm khuôn mặt mới
66
Hình 3.34: Kết quả nhận diện sau khi huấn luyện
Ở kết quả nhận diện khuôn mặt, ta có thể thấy hệ thống đã nhận diện tốt với khuôn
măt với góc nhìn thẳng, khuôn mặt với góc nhìn nghiêng xuống dưới 45 độ so với chiều
thẳng đứng, khuôn mặt với góc nhìn nghiêng lên trên 30 độ so với chiều thẳng đứng,
khuôn mặt với góc nhìn nghiêng sang trái 45 độ và khuôn mặt với góc nhìn nghiêng sang
phải 45 độ. Ngoài ra, thử với các trường hợp đặc biệt khác, như nhận diện user với góc
nghiêng khoảng 80 độ, hoặc nhận diện user với góc nghiêng 30 độ trên mặt phẳng Oxz
cũng đều cho kết quả chính xác:
67
Hình 3.35: Nhận diện user có ID 00280 với góc nghiêng khoảng 80 độ và user có ID 00388 với góc
nghiêng 30 độ trên mặt phẳng Oxz
Sau khi có danh sách các người dùng sau bước huấn luyện. Ta có được các mốc
thời gian các khuôn mặt xuất hiện được lưu vào hệ thống ở bảng sau:
Bảng 3.4: Cơ sở dữ liệu thời gian phát hiện khuôn mặt của hệ thống
Trong đó:
1. user_id: ID của người dùng hệ thống
2. checkin_time: thời gian phát hiện đối tượng xuất hiện trước camera.
Dựa vào thông tin khuôn mặt xuất hiện khi nào, cùng với những thông tin cần thiết
khác, hệ thống có thể tạo ra một bộ cơ sở dữ liệu được gán nhãn để phân tích sâu hơn
như: thói quen người dùng, hoặc làm cơ sở dữ liệu đảm bảo an ninh, …
3.3 Kết luận
Khi áp dụng mạng nơ ron tích chập vào bài toán nhận diện khuôn mặt và đếm số
người ra/vào trong thực tế, hệ thống đã hoạt động ổn định và tỉ lệ sai số ở ngưỡng thấp có
thể chấp nhận được. Hệ thống đã có thể thay thế các nhân viên thống kê qua camera, cũng
như giải phóng sức lao động của con người, góp một phần nhỏ trong quá trình tiến lên
cách mạng công nghiệp 4.0.
68
KẾT LUẬN
Kết quả đã thực hiện được của luận văn
Với ý tưởng áp dụng trí tuệ nhân tạo vào các nhu cầu của đời sống, nhằm giải
phóng sức lao động của con người với những công việc đơn giản và góp phần xây dựng
cách mạng công nghiệp 4.0, đề tài “Nghiên cứu về mạng Neural Convolutional, áp dụng
vào bài toán nhận dạng đối tượng trong lĩnh vực thị giác máy tính” đã hoàn thành được
những mục tiêu sau:
Ở chương một, luận văn đã trình bày tổng quan về lịch sử hình thành, cũng
như các kiến thức về nơ ron nhân tạo, mạng nơ ron nhân tạo và mạng nơ ron
tích chập. Về mạng nơ ron, luận văn đã làm rõ được cấu trúc của một nơ ron
nhân tạo, cách hoạt động của từng thành phần nơ ron. Ngoài ra, luận văn
cũng đã làm rõ cách mạng nơ ron nhân tạo thực hiện quá trình huấn luyện
bằng hình thức lan truyền ngược. Về các kiến trúc mạng, luận văn đã giới
thiệu sơ qua về hai kiến trúc mạng phổ biến là mạng nơ ron truyền thẳng và
mạng nơ ron hồi quy. Trong đó có đi sâu vào phân tích một mạng nơ ron
truyền thẳng đặc biệt là mạng nơ ron tích chập.
Ở chương hai, luận văn đã trình bày tổng quan về bài toán nhận dạng bằng
mạng nơ ron tích chập. Luận văn đã đề cập lịch sử và phát triển của bài toán
nhận dạng đối tượng, giới thiệu và phân tích phương pháp và các bước đang
được sử dụng để nhận diện khuôn mặt với mạng nơ ron tích chập. Ngoài ra
luận văn có giới thiệu, phân tích và kết quả chi tiết của một số mạng nơ ron
tích chập nổi tiếng hoặc được các công ty lớn tạo ra.
Bên cạnh đó, ở chương ba, để tài đã bước đầu xây dựng được mô đun nhận
dạng đối tượng với hệ thống đếm người vào/ra cũng như hệ thống web nhận
diện khuôn mặt. Ngoài ra, đề tài có phân tích và so sánh với hệ thống cũ
đang được sử dụng cho chức năng nhận diện đối tượng và nhận diện khuôn
mặt trước đây là HOG. Về cơ bản, hệ thống mới có khả năng nhận diện với
các dữ liệu lỗi, nhiễu với tỉ lệ chính xác cao hơn so với hệ thống HOG.
Ngoài ra, hệ thống đã có thể vận hành tự động để thay thế được con người,
góp phần giải phóng sức lao động của con người, góp một phần nhỏ trong
quá trình tiến lên công nghiệp 4.0.
69
Phương hướng phát triển luận văn
Với rất nhiều ứng dụng thực tế của mạng nơ ron nhân tạo. Đề tài có rất nhiều
hướng phát triển trong tương lai, để tạo thành một hệ thống toàn diện hơn, khai thác nhiều
thông tin hơn như:
Lập một hệ thống nhận dạng với số lượng người dùng lớn, làm cơ sở dữ liệu
dân số trong tương lai.
Phân tích hành động qua chuỗi thời gian, để phát hiện, cảnh báo và ngăn
chặn những bất thường, giúp xã hội trở nên an toàn hơn;
Nhận diện tiếng nói qua khuôn miệng của hình ảnh người dùng, hoặc Tạo ra
công cụ đọc ngôn ngữ hình thể để hỗ trợ giao tiếp với người khuyết tật,…
Ngoài ra, với xu hướng mạng vạn vật, hệ thống có thể tích hợp vào trong các bo
mạch thông minh như mạch raspberry pi hoặc Nvidia's Jetson TX1, khiến các hệ thống
thông minh có thể trở nên nhỏ gọn, tiết kiệm điện năng, cũng như dễ dàng tích hợp vào
đời sống con người hơn. Một hệ thống thông minh tự động lớn có thể góp phần xây dựng
nên một hệ thống hỗ trợ xã hội thông minh và đáp ứng các nhu cầu của con người hơn.
70
TÀI LIỆU THAM KHẢO
[1] N.Q. Anh, N.H. Dũng / Tạp chí Khoa học ĐHQGHN: Khoa học Tự nhiên và
Công nghệ, Tập 33, Số 1 (2017)
[2] Linda G. Shapiro and George C. Stockman. Computer Vision. Prentice Hall.
(2001)
[3] Tim Morris: Computer Vision and Image Processing. Palgrave Macmillan.
(2004)
[4] Bernd Jähne and Horst Haußecker. Computer Vision and Applications, A Guide
for Students and Practitioners. Academic Press. (2000)
[5] Milan Sonka, Vaclav Hlavac and Roger Boyle. Image Processing, Analysis,
and Machine Vision. Thomson. (2008)
[6] David A. Forsyth and Jean Ponce. Computer Vision, A Modern Approach.
Prentice Hall. (2003)
[7] Dana H. Ballard and Christopher M. Brown. Computer Vision. Prentice Hall.
(1982)
[8] Barghout, Lauren, and Jacob Sheynin. Real-world scene perception and
perceptual organization: Lessons from Computer Vision. Journal of Vision 13.9 (2013)
[9]http://www.psych.utoronto.ca/users/reingold/courses/ai/cache/neural4.html,
(2019)
[10] Md Zahangir Alom, Tarek M. Taha, Christopher Yakopcic, Stefan Westberg,
Paheding Sidike, Mst Shamima Nasrin, Brian C Van Esesn, Abdul A S. Awwal, Vijayan
K. Asari. The History Began from AlexNet: A Comprehensive Survey on Deep Learning
Approaches. (2018)
[11] Qianli Liao. A summary of deep models for face recognition. (2015)
[12] D. H. Hubel and T. N. Wiesel. Receptive fields of single neurones in the cat's
striate cortex. URL: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC1363130/ (1959)
[13] Y. Lecun, L. Bottou, Y. Bengio, P. Haffner. Gradient-based learning applied
to document recognition. (1998)
[14] Reinhard Klette. Concise Computer Vision. Springer. (2014)
[15] URL: http://disp.ee.ntu.edu.tw/tutorial/NeuralNetwork.docx, (2019)
71
[16] URL: https://trantheanh.github.io/2016/10/18/ML-07/, (2019)
[17] URL: https://towardsdatascience.com/activation-functions-neural-networks-
1cbd9f8d91d6, (2019)
[18] Chen, Jun-Cheng & Ranjan, Rajeev & Sankar, Swami & Kumar, Amit &
Chen, Ching-Hui & Patel, Vishal & D. Castillo, Carlos & Chellappa, Rama. An End-to-
End System for Unconstrained Face Verifcation with Deep Convolutional Neural
Networks (2016).
[19] AbdAlmageed, W., Wu, Y., Rawls, S., Harel, S., Hassne, T., Masi, I., Choi, J.,
Lekust, J., Kim, J., Natarajana, P., Nevatia, R., Medioni, G. Face recognition using deep
multi-pose representations. In: IEEE Winter Conference on Applications of Computer
Vision (WACV) (2016)
[20] URL: https://ereka.vn/post/chia-se-ve-mang-noron-tich-chap-convolutional-
neural-networks-or-convnets-52790224348847566, (2019)
[21] Krizhevsky, A., Sutskever, I., & Hinton, G. E. Imagenet classification with
deep convolutional neural networks. In Advances in neural information processing
systems. (2012)
[22] URL: http://mlwiki.org/index.php/Overfitting, (2019)
[23] Bae, S.H., Yoon, K.J. Robust online multi-object track- ing based on tracklet
confidence and online discriminative appearance learning. In IEEE Conference on
Computer Vision and Pattern Recognition (CVPR) (2014)
[24] National institute of standards and technology (NIST): IARPA Janus
benchmark-a performance report. URL: http://biometrics.nist.gov/cs_links/face/face_
challenges/IJBA_reports.zip, (2019)
[25] Ranjan, R., Patel, V.M., Chellappa, R.. A deep pyramid deformable part
model for face detection. In: IEEE Inter- national Conference on Biometrics: Theory,
Applications and Systems (2015)
[26] Yi, D., Lei, Z., Liao, S., Li, S.Z.: Learning face repre- sentation from scratch.
arXiv preprint arXiv:1411.7923 (2014)
[27] Belhumeur, P.N., Jacobs, D.W., Kriegman, D.J., Kumar, N.: Localizing parts
of faces using a consensus of exem- plars. Pattern Analysis and Machine Intelligence,
IEEE Transactions on 35 (12) (2013)
72
[28] Burgos-Artizzu, X.P., Perona, P., Doll´ar, P.: Robust face landmark
estimation under occlusion. URL http://dx.doi.org/10.1109/ICCV.2013.191 (2013)
[29] Chen, J.C., Patel, V.M., Chellappa, R. Unconstrained face verification using
deep cnn features. arXiv preprint arXiv:1508.01722 (2015)
[30] Crosswhite, N., Byrne, J., Parkhi, O.M., Stauffer, C., Cao, Q., Zisserman, A.
Template adaptation for face verification and identification. arXiv preprint
arXiv:1603.03958 (2016)
[31] Ranjan, R., Patel, V.M., Chellappa, R.: HyperFace: A Deep Multi - task
Learning Framework for Face Detec- tion, Landmark Localization, Pose Estimation, and
Gen- der Recognition. URL http://arxiv.org/abs/ 1603.01249 (2016)
[32] Ren, S., Cao, X., Wei, Y., Sun, J.: Face alignment at 3000 fps via regressing
local binary features. (2014).
[33] Ross, G.: Fast r-cnn. arXiv preprint arXiv:1504.08083 (2015)
[34] Roth, M., Bauml, M., Nevatia, R., Stiefelhagen, R.: Robust multi-pose face
tracking by multi-stage tracklet association. In International Conference on Pattern
Recognition (ICPR) (2012)
[35] Yan, J., Zhang, X., Lei, Z., Li, S.Z.: Face detection by structural models.
URL http://www.sciencedirect. com/science/article/pii/S0262885613001765. Best of
Automatic Face and Gesture Recognition (2013)
[36] Shuo Yang, Ping Luo, Chen Change Loy, Xiaoou Tang. From facial parts
responses to face detection. (2015)
[38] Các tài liệu tại https://www.python.org/ và các thư viện liên quan (2019)
[39] Joseph Redmon, Santosh Divvala, Ross Girshick, Ali Farhadi. You Only
Look Once: Unified, Real-Time Object Detection. (2016)
[40] URL: https://www.learnopencv.com/histogram-of-oriented-gradients/ (2019)
[41] URL: https://cs231n.github.io/ , (2019)
[42] Song, Amanda & Li, Linjie & Atalla, Chad & Cottrell, Garrison. Learning to
see faces like humans: modeling the social dimensions of faces. Journal of Vision. 17.
837. 10.1167/17.10.837, (2017).
[43] Stewart, R., Andriluka, M., & Ng, A. Y. End-to-end people detection in
crowded scenes. (2016, June).