Phát hiện, xác định đối tƣợng sử dụng phân loại tầng (cascade classifiers) dựa vào các đặc trƣng Haar là một phƣơng pháp phát hiện đối tƣợng hiệu quả đƣợc để xuất bời Paul Viola và Michael Jones vào năm 2001. Đây là một cách tiếp cận dựa trên machine learning, các hàm Cascade đƣợc huấn luyện từ rất nhiều hình ảnh tích cực (positive images) và hình ảnh tiêu cực (negative images). Sau đó, nó đƣợc sử dụng để xác định các đối tƣợng trong những ảnh khác.
Đối với hệ thống xác đinh khuôn mặt ngƣời, thuật toán cần rất nhiều positive images (ảnh chứa khuôn mặt) và negative images (ảnh không chứa khuôn mặt) để huấn luyện bộ phân loại. Sau đó, ta thực hiện trích rút các đặc trƣng từ các khn mặt. Trong phƣơng pháp này, ta sử dụng 4 đặc trƣng Haar-like cơ bản để xác định khuôn mặt ngƣời. Các đặc trƣng này đƣợc mở rộng ra và chia làm 3 tập đặc trƣng gồm đặc trƣng cạnh (edge feature), đặc trƣng đƣờng (line feature) và đặc trƣng xung quanh tâm (center-surround features)
Hình 3.6 Mơ tả các đặc trưng Haar-like
Từ các đặc trƣng trên, ta có thể tính đƣợc giá trị của các giá trị đặc trƣng Haar-like là sự chênh lệch giữa tổng của các pixel của vùng đen (vùng tối) và vùng trắng (vùng sáng)
Sau đó, chúng ta sử dụng một Integral Image là một mảng hai chiều với kích thƣớc bằng kích thƣớc của ảnh cần tính đặc trƣng Haar-like, với mỗi phânf tử của mảng này đƣợc tính bằng cách tính tổng của điểm ảnh phía trên và bên trái của nó. Sau khi tính đƣợc Integral Image, ta có thể tính đƣợc tổng giá trị mức xám ở một vùng bất kì nào đó. Tiếp đó, hệ thống sẽ sử dụng bộ phân loại Adaboost kết hợp tuyến tính các bộ phân loại yếu (weak classifiers) sử dụng các đặc trƣng Haar- like theo mơ hình phân tầng (Cascade) để tạo nên một bộ phân loại mạnh để phát hiện ảnh khn mặt.
Hình 3.7 Mơ tả hệ thống xác định khuôn mặt Haar Cascade
Ƣu điểm của Haar Cascade là tốc độ xác định khuôn mặt rất nhanh. Tuy nhiên, hạn chế của phƣơng pháp này là chỉ hoạt động tốt với frontial face (khuôn mặt trực diện phía trƣớc) và dễ bị ảnh hƣởng bởi ánh sáng môi trƣờng.
3.1.2 Histograms of Oriented Gradients – HOG
HOG thể hiện sự thay đổi về sáng tối trong bức ảnh. Dựa vào các nét trên khn mặt có sự thay đổi sáng tối rõ rệt, HOG xác định đƣợc đƣờng nét của khuôn mặt. Sau khi huấn luyện với nhiều loại khuôn mặt, ta thu đƣợc các mẫu (pattern) của khuôn mặt. Ta sử dụng các mẫu (pattern) để so sánh với các vùng trong bức ảnh để xác định đƣợc mặt ngƣời [4]
.
Hình 3.8 Mơ tả hệ thống xác định khn mặt HOG
Ƣu điểm của phƣơng pháp xác định khn mặt bằng HOG là ít bị ảnh hƣởng bởi ánh sáng mơi trƣờng ngồi. Tuy nhiên, tốc độ xử lý khơng nhanh bằng Haar Cascade và không hoạt động tốt khi mặt bị che lấp nhiều.
3.1.3 Dilb
Hình 3.9 Cấu trúc thư viện Dlib.
Dlib đƣợc thiết kế cho các ứng dụng học máy và trí tuệ nhân tạo với các thƣ viện con chính sau
- Classification các kỹ thuật phân lớp chủ yếu dựa trên hai phƣơng pháp cơ sở là kNN và SVM.
- Data transformation các thuật toán biến đổi dữ liệu nhằm giảm số chiều, loại bỏ các dữ liệu dƣ thừa và tăng cƣờng tính khác biệt (discriminant) của các đặc điểm đƣợc giữ lại.
- Clustering các kỹ thuật phân cụm. - Regression các kỹ thuật hồi qui.
- Structured prediction các thuật tốn dự đốn có cấu trúc.
- Markov Random Fields các thuật toán dựa trên các trƣờng Markov ngẫu nhiên
Việc xác định Dlib gồm có hai bƣớc
- Bƣớc 1 Xác định đƣợc vị trí khn mặt trong bức ảnh
- Bƣớc 2 Xác định đƣợc các điểm tạo nên cấu trúc của khuôn mặt
Bộ xác định facial landmark này s ẽ xác định 68 điể m chính theo t ọa độ (x, y) c ấ u tạ o nên khn m ặt ngƣời nhƣ hình bên dƣới [11].
- Mouth point = 48-61 - Right_brow_point = 17-21 - Left_brow_point = 22-26 - Right_eye_point = 36-42 - Left_eye_pint = 42-48 - Nose_point = 27-35 - Jaw_point = 0-17
Hình 3.10 68 điểm trên khn mặt được sử dụng trên bộ thư viện dlib
Ƣu điể m c ủa phƣơng pháp xác định khuôn mặ t b ằ ng Dlib là ít b ị ảnh hƣởng bởi ánh sáng mơi trƣờ ng ngồi. Tuy nhiên, t ốc độ xử lý không nhanh b ằ ng Haar Cascade và không ho ạt động tốt khi mặ t b ị che l ấ p nhiề u.
Để khắ c ph ục nh ữ ng h ạ n ch ế còn t ồn t ạ i ở các phƣơng pháp trên, tôi quyế t định đề xu ất phƣơng pháp kế t h ợp Deep Learning vào xác định khuôn mặ t b ằ ng cách s ử d ụng Convolutional Neural Network (M ạng Nơ -ron tích ch ập). Điể m mạ nh c ủa phƣơng pháp này, nhƣng việc xác đị nh khuôn m ặ t b ằng phƣơng pháp này hoạ t động t ố t ngay c ả trong trƣờng h ợ p mặ t b ị thiế u, che l ấ p nhi ề u. Ngồi ra, nó cịn ít b ị ảnh hƣởng b ởi ánh sáng mơi trƣờng ngồi. Do đó, hệ th ống xác định khn mặ t khá chính xác. C ụ th ể phƣơng pháp đƣợc l ự a ch ọn s ử dụng trong phƣơng pháp này là phát hi ện và căn chỉ nh khuôn mặ t s ử dụ ng MTCNN (vi ế t t ắ t c ủa Multi-task Casceded Convolutional Networks). MTCNN bao g ồ m ba mạ ng neural tích ch ậ p CNN (Casceded Convolutional Networks) x ế p ch ồng và đồng th ời ho ạt động khi phát hi ệ n khn mặ t. M ỗi m ạ ng có c ấu trúc khác nhau và đả m nhi ệ m vai trò khác nhau trong mỗi task. Đầ u ra c ủa MTCNN là v ị trí khn mặt và các điể m trên
khn mặt nhƣ mắt, mũi, miệng, …
Hình 3.11 Mơ phỏng kết quả xác định khuôn mặt dùng MTCNN
3.2 Các phƣơng pháp nhận dạng khn mặt (Face Recognition)
Bài tốn th ứ hai mà h ệ th ống c ầ n ph ả i quan tâm là bài toán nh ậ n d ạ ng khuôn mặ t. Nh ậ n d ạ ng là quá trình s ử dụng các d ữ liệ u khn mặ t ở q trình Phát hi ệ n và khuôn mặ t, th ự c hi ệ n phân l ớp, gán nhãn định danh cho đối tƣợng khn mặt.
Hình 3.12 Mơ phỏng kết quả của q trình nhận dạng khn mặt
Đầ u vào c ủa bài tốn nh ậ n d ạ ng khn mặt chính là đầ u ra c ủa bài tốn phát hiệ n khn mặt đã xử lý. Nhƣ đã trình bày ở trƣớc, ch ất lƣợng c ủa ph ầ n này s ẽ phụ thuộc hồn tốn vào k ế t qu ả c ủa ph ầ n phát hi ệ n khu ộn mặ t. K ế t qu ả quá trình phát hiện xác định khn m ặ t chính xác t ạo điề u ki ệ n thuậ n l ợi cho quá trình nh ậ n dạ ng.
Để có thể giải quyết bài tốn nhận dạng khn mặt, đã có rất nhiều hƣớng tiế p c ận khác nhau đƣợc đứa ra tùy vào đặc điể m c ủa hình ả nh nh ậ n d ạ ng c ủa và mục đích sử d ụng. M ộ t s ố phƣơng pháp nhậ n d ạ ng khuôn mặt đƣợ c s ử dụng hi ệ n nay có th ể k ể đến nhƣ sau
3.2.1 Facenet
FaceNet là một kiến trúc Deep Learning bao gồm các lớp chập dựa trên các
mơ hình kh ởi động l ấ y c ả m h ứ ng t ừ GoogleNet. H ệ th ống cho k ế t qu ả r ấ t t ố t trong thự c nghi ệ m v ới b ộ d ữ liệ u Labeled Face in the Wild (LFW) 99,63%, Youtube
Faces DB 95,12%. T ừ dữ liệ u ả nh khuôn mặt đầ u vào, h ệ th ống chuyể n thành vec- tơ 128 đặc trƣng (feature) cho mỗi khn m ặ t.
Hình 3.13 Mơ tả q trình trích rút đặc trưng trong Facenet
Độ khác nhau đƣợc tính bằng khoảng các Ơ-clit giữa các đặc trƣng. Các dữ liệu khuôn mặt đƣợc huấn luyện bằng hàm Triple loss. Chúng ta sẽ phải sử dụng từng “bộ ba” để tiến hành huấn luyện dữ liệu. Bộ ba của chúng ta bao gồm một ảnh mặt của một ngƣời bất kì (Anchor), một ảnh mặt khác của ngƣời đó (positive) và
một ảnh của ngƣời khác (negative). Sau đó hiệu chỉnh parameter của network sao cho khoảng cách giữa ảnh Anchor và Positive là nhỏ nhất và khoảng cách giữa ảnh Anchor và Negative là lớn nhất. Sau khi huấn luyện trên tập dữ liệu lớn thu đƣợc model có khả năng phân biệt ảnh cùng một ngƣời và ảnh của ngƣời khác [7].
Hình 3.14 Mơ tả hoạt động của hàm Triple loss
Tuy nhiên, yếu điểm lớn nhất của phƣơng pháp này là yều cầu khá khắt khe về ảnh đầu vào. Ảnh đầu vào phải đạt đƣợc các tiêu chuẩn về chất lƣợng ảnh hay kích thƣớc ảnh. Điều này khá bất tiện cho thu thập dữ liệu huấn luyện bằng nhiều phƣơng thức khác nhau.
3.2.2 Sử dụng OpenFace
Hình 3.15 Sơ đồ hệ thống nhận dạng khuôn mặt OpenFace.
Phƣơng pháp OpenFace xác định khn mặt với các mơ hình đào tạo từ dlib hoặc OpenCV. Sau đó biến đổi khn mặt thành mạng Neural. Kho lƣu trữ này sử dụng ƣớc tính tƣ thế thời gian thực (real-time pose estimation) của dlib với phép biến đổi của OpenCV để xác định vị trí từ mắt đến mơi của khn mặt trên mỗi ảnh. Sau đó sử dụng một mạng Neural sâu để biểu diễn (hoặc nhúng – embed) khuôn mặt trên một siêu cầu đơn vị (unit hypersphere) 128 chiều. Các đặc trƣng đƣợc trích
rút đại diện chung cho một khn mặt. Các đặc trƣng này làm cho việc phân cụm, phát hiện sự tƣơng tự và các tác vụ phân loại dễ dàng hơn so với các kỹ thuật nhận dạng khác. Tuy nhiên, thực nghiệm cho thấy phƣơng pháp nhận diện này hiện tại chỉ hoạt động tốt với quy mô dƣới 300 đối tƣợng [8].
3.2.3 Mơ hình DeepFace (Facebook, CVPR 2014)
Nhóm tác giả từ Trung tâm Nghiên cứu Facebook và trƣờng Đại học Tel Aviv, Israel đề xuất một thuật tốn có tên là DeepFace, sử dụng nguồn ảnh do ngƣời dùng đăng tải lên Facebook làm bộ dữ liệu. Với nhận dạng khuôn mặt, ngƣời ta thƣờng trải qua 4 bƣớc Xác định khuôn mặt → Canh chỉnh khuôn mặt → Biểu diễn khuôn mặt → Phân loại khn mặt, nhóm tác giả biểu diễn khn mặt theo mơ hình 3D nhằm áp dụng biến đổi affine từng phần, từ đó biểu diễn khn mặt từ 9 lớp Mạng Neuron Sâu (Deep Neural Network - DNN), mạng này có hơn 120 ngàn tham số sử dụng một số lớp liên thơng mà khơng chia sẻ trọng số. Nhóm tác giả phát triền một cấu trúc DNN hiệu quả và các tận dụng ảnh trên mạng xã hội để biểu diễn khn mặt sao cho có thể tổng qt hóa cho các tập dữ liệu khác. Ngồi ra, nhóm tác giả trình bày cách canh chỉnh mặt dựa trên mơ hình 3D của khn mặt.
Hình 3.16 Cấu trúc huấn luyện của DeepFace.
Từ mơ hình cấu trúc huấn luyện trên từ ảnh vào, lấy khn mặt, sau đó chỉnh chính diện dựa vào mơ hình 3D (Frontalization), tiếp theo là các lớp lọc Tích chập (C1) – Pooling (M2) – Tích chập (C3), sau đó là 3 lớp Liên thơng Địa phƣơng (L4 – L6) và 2 lớp Liên thông Đầy đủ (F7 – F8). Mạng có hơn 120 ngàn tham số với 95% tập trung ở Liên thông Địa phƣơng và Liên thông Đầy đủ.
Ƣu điểm của phƣơng pháp DeepFace DeepFace là một trong những thuật tốn nhận dạng khn mặt có độ chính xác thuộc dạng “top performing”.
Nhƣợc điểm của phƣơng pháp DeepFace huấn luyện với bộ dữ liệu riêng, bao gồm hàng triệu ảnh truyền thơng, xã hội có kích thƣớc lớn hơn các bộ dữ liệu
hiện hữu trong nghiên cứu học thuật, vì vậy tốc độ chậm hơn nhiều so với các phƣơng pháp khác. Mơ hình nhận diện khn này chƣa đƣợc facebook công bố mã nguồn mở, mà chỉ công bố bài báo khoa học cho nên việc nghiên cứu và sử dụng nó để thực hiện điểm danh tạm thời chƣa đầy đủ. Tuy nhiên để sử dụng đƣợc mơ hình này thì cần cấu hình máy tính cực tốt để có thể thực hiện điểm danh đƣợc [9].
Vì vậy, để nghiên cứu hệ thống nhận dạng khuôn mặt với quy mô lớn hơn, luận văn sẽ giới thiệu về hệ thống nhận diện sử dụng thƣ viện Arc-Face. Bản chất của quá trình nhận dạng là đƣa các dữ liệu đã đƣợc xử lý qua các hàm để phân lớp đối tƣợng. Thách thức lớn nhất trong q trình này là thiết kế đƣợc hàm thích hợp để nâng cao khả năng phân biệt giữa các lớp. Để thực hiện nhiệm vụ này, hệ thống nhận dạng khuôn mặt sẽ sử dụng thƣ viện Arc-Face, phƣơng pháp này có tốc độ xử lý rất tốt theo thực nghiệm kiểm định và nhóm tác giả cơng bố thì phƣơng pháp này kiểm định trên bộ dữ liệu Dữ liệu công khai Labeled Faces in the Wild (LWF) trên thế giới Bộ dữ liệu bao gồm 13.332 bức ảnh gƣơng mặt của 5.749 ngƣời nổi tiếng, trong đó có 1.680 ngƣời có hai hoặc nhiều bức ảnh. Thì phƣơng pháp này có thể nhận đúng 99,38%. Phƣơng pháp này còn thƣờng xuyên c ậ p nh ậ t và phát tri ể n, tháng 8 năm 2019 phƣơng pháp này đã xế p th ứ 2 ở cuộc thi nh ậ n d ạ ng khuôn m ặ t
WIDER Face Detection Challenge 2019 . Tháng 4 Năm 2020 pre -train model c ủ a
Arc-Face đƣợc ch ọ n là pre-train model ngoài duy nh ấ t c ủ a cu ộc thi iQIYI iCartoonFace challenge. Tháng 9 năm 2020 phƣơng pháp này đã thự c hi ệ n ki ể m định với b ộ dữ liệ u l ớn (360.000 ids) đạt đƣợc độ chính xác 99,1% ...
Chƣơng 4 GIẢI PHÁP NHẬN DẠNG KHUÔN MẶT 4.1 Đề xuất giải pháp tổng thể
Nhƣ đã trình bày ở trên, có rất nhiều giải pháp cũng nhƣ hƣớng tiếp cận khác nhau đã đƣợc đƣa ra để giải quyết bài tốn nhận dạng khn mặt. Từ những điểm tồn tại của các phƣơng pháp đã đƣợc đƣa ra, trong giới hạn nghiên cứu luận văn đề xuất phƣơng pháp nhận dạng tối ƣu cho bài tốn nhận dạng khn mặt. Giải pháp đƣợc đề xuất gồm hai nội dung chính Phát hiện và xác định khuôn mặt sử dụng MTCNN và Nhận dạng khuôn mặt bằng Arc-Face.
4.2 Phát hiện và căn chỉnh khuôn mặt sử dụng MTCNN4.2.1 Giới thiệu về mạng Nơ - ron tích chập 4.2.1 Giới thiệu về mạng Nơ - ron tích chập
Để dạy thuật tốn nh ậ n di ện đối tƣợng trong hình ả nh, ta s ử dụng một lo ạ i mạng Nơ -ron nhân t ạ o (Artificial Neural Network – ANN) là mạng Nơron Tích chậ p (Convolutional Neural Networks – CNNs hay Convnets). Tên c ủa nó đƣợc dự a trên phép tính quan tr ọng đƣợc sử d ụ ng trong mạng đó là Tích chập. Đây là một trong nh ữ ng mơ hình Deep Learning tiên ti ế n giúp chúng ta xây d ựng đƣợc hệ thống thơng minh tiên với độ chính xác cao nhƣ ngày nay.
4.2.1.1 Convolution (Tí ch chập)
Trong tốn h ọ c và đặ c bi ệ t là trong giả i tích hàm, tích ch ậ p là 1 phép toán thự c hi ện đố i v ớ i 2 hàm s ố f và g, k ế t qu ả cho ra 1 hàm s ố thứ 3. Phép tích ch ậ p khác v ớ i tƣơng quan chéo ở chỗ nó c ầ n lậ t kernel theo chi ề u ngang và d ọc trƣớc khi tính t ổng c ủa tích. Nó đƣợc ứ ng d ụng trong xác su ấ t, th ống kê, thị giác máy
tính (computer vision), xử lý ả nh, xử lý tín hi ệ u, k ỹ thu ật điệ n, học máy, và
các phƣơng trình vi phân . Tích ch ậ p c ủ a hàm s ố f và g đƣợc vi ế t là f*g, là m ột bi ến đổi tích phân đặ c biệ t def ∞ ( f * g )(t ) = −∞ f (τ ) g (t −τ )dτ = ∞∫ −∞ f (t − τ ) g (τ )dτ (2-1)
Một cách tổng quát, nếu f và g là hàm số phức trong khơng gian Rd, thì tích chập của chúng đƣợc định nghĩa nhƣ sau
( f * g)(x) = ∫ f ( y)g(x − y)dy = ∫ f (x − y)g( y)dy (2-2)
Hình 4.1 Minh họa tích chập
Trong xử lý tín hiệu số tích chập đƣợc sử dụng nhằm biến đổi thơng tin đầu vào thơng qua một phép tích chập với bộ lọc trả về đầu ra là một tín hiệu mới. Tín hiệu mới này sẽ làm giảm những đặc trƣng mà bộ lọc không quan tâm và chỉ giữ những đặc trƣng chính.
Tích chập thơng dụng nhất là tích chập hai chiều đƣợc áp dụng trên ma trận
W xH
W xH
Tích chập tại một điểm Tại vị trí đầu tiên trên cùng của ma trận đầu vào, ta sẽ lọc ra một ma trận con X sub ∈ R FxF có kích thƣớc bằng kích thƣớc của bộ lọc. Giá trị y11 tƣơng ứng trên Y là tích chập của X sub với F đƣợc tính nhƣ sau
F F
i =1 j =1 (2-3)
Sau đó, tiến hành trƣợt dọc theo ma trận theo chiều từ trái qua phải, từ trên xuống dƣới theo bƣớc nhảy (stride) S ta sẽ tính đƣợc các giá trị y11 tiếp theo. Sau khi quá trình này kết thúc ta thu đƣợc trọn vẹn ma trận Y.
R R
đầu vào và ma trận bộ lọc hai chiều. Phép tích chập của một ma trận X ∈ R 1 1 với một bộ lọc (receptive field) F ∈ R 2 2 sẽ trải qua các bƣớc
Trong một mạng Nơron tích chập, các lớp liền sau lấy đầu vào từ lớp liền trƣớc nó. Do đó, để hạn chế lỗi trong thiết kế mạng Nơron chúng ta cần xác định kích thƣớc đầu ra ở mỗi lớp. Điều đó có nghía là dựa vào kích thuƣớc ma trận đầu vào (W1, H1), kích thƣớc bộ lọc (F,F) và bƣớc nhảy S để xác định khích thƣớc ma trận đầu ra (W2, H2)[10].
4.2.1.2 Tổng quan kiến trúc mạng
Đối với mạng Nơron thông thƣờng (Regular Neural Nets) đầu vào là một