Đầu vào của bài toá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 q trình nhận dạng.
Để có thể giải quyết bài toá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 khn 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 khuôn 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 khn 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 quát 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 quá 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ể 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 MTCNN 4.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 toá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:
( * )( ) ( ) ( ) ( ) ( ) d d f g x f y g x y dy f xy g y dy R R (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
đầ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 W1xH1
X R với
một bộ lọc (receptive field) W2xH2
FR sẽ trải qua các bƣớc:
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
FxF sub
X R 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 Xsub với F đƣợc tính nhƣ sau:
11 ij 1 1 F F ij i j y x f (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ị y11tiếp theo. Sau khi quá trình này kết thúc ta thu đƣợc trọn vẹn ma trận Y.
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
vector duy nhất sau đó biến đổi nó thơng qua hàng loạt các lớp ẩn (hidden layer). Mỗi lớp ẩn đƣợc tạo thành từ tập hợp các Nơron, trong đó mỗi nơron đƣợc kết nối đầy đủ với tất cả các nơron ở lớp trƣớc. Trong một lớp, các nơron hoạt động hoàn toàn độc lập và không chia sẻ bất kỳ kết nối nào. Lớp kết nối đầy đủ (fully- connected) cuối cùng đƣợc gọi là lớp đầu ra và đại diện cho điểm số của lớp trong quá trình phân loại. Điểm hạn chế của mạng nơron thông thƣờng là không mở rộng tốt cho hình ảnh đầy đủ. Chẳng hạn, với bộ dữ liệu ảnh CIFAR-10, hình ảnh chỉ có kích thƣớc 32x32x3 (rơng 32, cao 32 và sâu 3 đại diện cho 3 kênh màu RGB, mỗi một nơron kết nối đầy đủ trong lớp ẩn đầu tiên của mạng Nơron sẽ có 32*32*3 = 3072 trọng số. Số lƣợng này dƣờng nhƣ vẫn có thể quản lý đƣợc, nhƣng rõ ràng cấu trúc kết nối đầy đủ này khơng thể mở rộng thành hình ảnh lớn hơn. Ví dụ, một bức ảnh có kích thƣớc lớn hơn nhƣ 200x200x3 thì mỗi nơron sẽ có 200*200*3 = 120000 trọng số. Hơn nữa, chúng ta khơng chỉ cần một mà cịn muốn có có một số nơron nhƣ vậy . Vì thế, số lƣợng các tham số sẽ tăng lên nhanh chóng dẫn đến quá mức.
Để giải quyết vấn đề này, mạng nơron tích chập đƣợc đề xuất. Mạng này kết hợp thực tế là đầu vào gồm các hình ảnh và chúng hạn chế cấu trúc theo một cách hợp lý hơn. Đặc biệt, không giống nhƣ mạng nơron thơng thƣờng, các lớp của mạng tích chập đƣợc sắp xếp theo 3 chiều: chiều rộng, chiều cao và chiều sâu (chiều sâu ở đây đề cập đến chiều thứ ba của khối lƣợng kích hoạt khơng phải độ sâu của mạng nơron đầy đủ). Chẳng hạn, một ảnh trong CIFAR-10 là một khối đầu vào, sau đó mỗi nơron trong lớp chỉ lết nối với một phần nhỏ của lớp trƣớc nó thay vì kết nối đầy đủ với tất cả nơron. Hơn nữa, đầu ra cuối cho CIFAR-10 chỉ có kích thƣớc 1x1x10 vì hình ảnh đầy đủ đã đƣợc giảm thành một vectơ sắp xếp theo chiều sâu.
Hình 4. 2: So sánh mạng Neural thơng thường và mạng Neuron tích chập (Bên trái là mạng Neural thông thường; Bên phải là mạng CNN)
4.2.1.3 Các lớp của mạng Neuron tích chập.
Nhƣ phần mơ tả ở trên, một mạng Neural tích chập đơn giản là một chuỗi các lớp và mỗi lớp của mạng sẽ biến đổi một khối kích hoạt này sang khối khác thơng qua một chức năng đặc biệt. Để xây dựng mạng Neural tích chập, ba loại lớp chính đƣợc sử dụng: Lớp tích chập (Convolutional Layer), Lớp tổng hợp (Pooling Layer) và Lớp kết nối đầy đủ (Fully-Connected layer). Các lớp này sẽ đƣợc xếp chồng tạo thành một kiến trúc mạng Neural tích chập đầy đủ. Mỗi lớp nhận vào một khối 3D đầu vào và biến đổi thanhd một khối 3D đầu ra thông qua một chức năng khác biệt. Mỗi lớp có thể có hoặc khơng có tham số (ví dụ CONV/FC có, RELU/POOL khơng) hay có hoặc khơng có siêu đƣờng kính bổ sung (CONV/FC/POOL có, RELU khơng). Cụ thể, chúng ta sẽ đi đến mô tả chi tiết của từng lớp và các mối liên kết của chúng:
- Lớp tích chập (Convolutional layer - CONV):
Lớp CONV là khối xây dựng cốt lõi của mạng tích chập, thực hiện hầu hết các công việc quan trọng. Các tham số của lớp bao gồm một tập hợp các bộ lọc (Filter) hoặc Kernel. Đặc điểm các bộ lọc này có trƣờng tiếp nhận nhỏ nhƣng kéo dài tồn bộ chiều sâu của tín hiệu đầu vào. Trong quá trình chuyển tiếp, mỗi bộ lọc đƣợc tích hợp (trƣợt) trên chiều rộng và chiều cao của tín hiệu đầu vào, tính tốn các tích vơ hƣớng giữa các bộ lọc và đầu vào và tạo ra bản đồ kích hoạt hai chiều của bộ lọc đó. Do đó, mạng tìm hiểu các bộ lọc kích hoạt khi phát hiện một số loại đặc trƣng cụ thể tại một số vị trí trong đầu vào.
Hình 4. 3: Mơ tả lớp CONV (Các neuron của một lớp chập (màu xanh) kết nối với trường tiếp nhận của chúng (màu đỏ).
Xếp chồng các bản đồ kích hoạt cho tất cả các bộ lọc dọc theo chiều sâu tạo thành tín hiệu đầu ra đầy đủ của lớp tích chập. Do đó, mỗi điểm trong tín hiệu đầu ra cũng có thể đƣợc hiểu là đầu ra của một nơron khi kết nối với một vùng nhỏ trong đầu vào và chia sẻ các tham số với các nơ ron trong cùng một bản đồ kích hoạt. Việc xây dựng lớp tích chập dựa vào 3 ý tƣởng cơ bản:
- Kết nối cục bộ:
Trong quá trình xử lý dữ liệu đầu vào có chiều rộng, chiều cao nhƣ hình ảnh, việc kết nối các neuron với tất cả các neuron trong lớp trƣớc đó là khơng thực tế vì kiến trúc mạng khơng tính đến cấu trúc khơng gian của dữ liệu. Thay vào đó, chúng ta sẽ thƣc thi một kiểu kết nối cục bộ thƣa thớt giữa các neuron của các lớp liền kề: mỗi neuron chỉ đƣợc kết nối với một vùng nhỏ của tín hiệu đầu vào.
Phạm vi của kết nối này là một siêu tham số đƣợc gọi là trƣờng tiếp nhận của nơron (tƣơng đƣơng đây là kích thƣớc bộ lọc). Các kết nối là cục bộ trong
không gian (dọc theo chiều rộng và chiều cao), nhƣng luôn mở rộng kéo dài theo tồn bộ chiều sâu của tín hiệu đầu vào. Một kiến trúc nhƣ vậy đảm bảo rằng các bộ lọc đã học tạo ra phản ứng mạnh nhất đối với mẫu đầu vào cục bộ không gian.
- Sắp xếp không gian:
Nội dung bên trên đã giải thích sự kết nối của từng neuron trong lớp CONV với tín hiệu đầu vào. Phần này sẽ giải thích rõ hơn về số lƣợng neuron tín hiệu đầu ra và cách chúng đƣợc sắp xếp. Ba siêu đƣờng kính (hyperparameters) kiểm sốt