- 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 kích thƣớc tín hiệu đầu ra là: depth (độ sâu), stride (sải) và zero-padding (đệm không)
Đầu tiên, giá trị của depth là độ sâu của tín hiệu đầu ra. Đây là một siêu
tham số, nó tƣơng ứng với số lƣợng bộ lọc muốn sử dụng. Depth kiểm soát số lƣợng neuron trong một lớp kết nối với một vùng của tín hiệu đầu vào. Những neuron này học các kích hoạt cho các đặc trƣng khác nhau trong đầu vào. Ví dụ, nếu Lớp tích chập đầu tiên lấy hình ảnh thơ, thì các neuron khác nhau dọc theo chiều sâu có thể kích hoạt khi có các cạnh định hƣớng khác nhau hoặc các đốm màu.
Tiếp theo, chúng ta phải xác định stride – tức là bƣớc tiến mà chúng ta
trƣợt bộ lọc. Chẳng hạn, với stride = 1: chúng ta di chuyển các bộ lọc một pixel mỗi lần. Điều này dẫn đến các trƣờng tiếp nhận chồng chéo rất nhiều và cho ra đầu ra lớn. Khi stride = 2 thì chúng sẽ nhảy 2 pixel mỗi lần khi chúng ta trƣợt xung quanh. Điều này sẽ tạo ra kích thƣớc đầu ra nhỏ hơn theo không gian. Các trƣờng hợp stride >= 3 rất hiếm xảy ra trong thực tế.
Để kiểm sốt đƣợc kích thƣớc khơng gian của đầu ra, chúng ta sử dụng tính năng Zero-padding: thêm các số 0 vào xung quanh các đƣờng biên. Kích thƣớc của phần zero-padding là một siêu tham số. Thông thƣờng, zero-padding đƣợc sử dụng để bảo tồn chính xác kích thƣớc khơng gian của tín hiệu đầu vào, tức là làm cho độ rộng, chiều cao đầu vào và đầu ra là nhƣ nhau.
Cơng thức tính số lƣợng neuron trong một kích thƣớc nhất định có thể tính theo cơng bằng: W 2 1 K P S (2-4)
Trong đó: W: kích thƣớc tín hiệu đầu vào, K: kích thƣớc lớp lọc, S: bƣớc tiến stride, P: số lƣợng đệm 0
Lƣợc đồ chia sẻ tham số đƣợc sử dụng để kiểm sốt số lƣợng tham số. Nó đƣợc xây dựng dựa vào giả định rằng nếu một đặc trƣng có ích để tính tốn tại một số vị trí khác. Khi biểu thị một lát cắt 2 chiều của độ sâu thành một lát cắt sâu (depth slice) buộc các neuron trong cùng một lát cắt sâu phải sử dụng cùng trong số (weights) và độ lệch (bias). Do tất cả các neuron trong một lát cắt có cùng độ sâu có cùng tham số, nên lợi ích của việc chia sẻ tham số là giảm tối đa tham số trong mạng Neuron tích chập mà vẫn đảm bảo kiến trúc CNN.
- Lớp tổng hợp (Pool Layer – POOL):
Pool Layer thực hiện chức năng làm giảm chiều không gian của đầu và giảm độ phức tạp tính tốn của model ngồi ra Pool Layer cịn giúp kiểm sốt hiện tƣợng overffiting. Thơng thƣờng, Pool layer có nhiều hình thức khác nhau phù hợp cho nhiều bài toán, tuy nhiên Max Pooling là đƣợc sử dụng nhiều vào phổ biến hơn cả với ý tƣởng cũng rất sát với thực tế con ngƣời đó là: Giữ lại chi tiết quan
trọng hay hiểu ở trong bài tốn này chính giữ lại pixel có giá trị lớn nhất.
Chẳng hạn, khi ta sử dụng Max pooling với bộ lọc 2x2 và stride = 2. Bộ lọc sẽ chạy dọc ảnh. Với mỗi vùng ảnh đƣợc chọn, ta sẽ chọn ra một giá trị lớn nhất và giữ lại.
Hình 4.5: Mơ tả lớp POOL với bộ lọc 2x2 và stride = 2.
Thơng thƣờng max pooling có kích thƣớc là 2 và stride=2. Nếu lấy giá trị quá lớn, thay vì giảm tính tốn nó lại làm phá vỡ cấu trúc ảnh và mất mát thông tin nghiêm trọng. Vì vậy mà một số chun gia khơng thích sử dụng layer này mà thay vào đó sử dụng thêm các lớp Conv Layer và tăng số stride lên mỗi lần.
- Lớp kết nối đầy đủ (Fully Connected Layer - FC):
Tại lớp mạng này, mỗi một nơ-ron của layer này sẽ liên kết tới mọi nơ-ron của lớp khác. Để đƣa ảnh từ các layer trƣớc vào mạng này, buộc phải dàn phẳng
bức ảnh ra thành 1 vector thay vì là mảng nhiều chiều nhƣ trƣớc. Tại layer cuối cùng sẽ sử dụng 1 hàm kinh điển trong học máy mà bất kì ai cũng từng sử dụng đó là softmax để phân loại đối tƣợng dựa vào vector đặc trƣng đã đƣợc tính tốn của các lớp trƣớc đó.
- Một số lƣu ý khi chọn các tham số cho mạng Neuron tích chập:
Số các convolution layer: sử dụng càng nhiều các convolution layer thì hiệu suất càng đƣợc cải thiện. Sau khoảng 3 hoặc 4 layer, các tác động đƣợc giảm một cách đáng kể. Filter size: Thông thƣờng các hệ thống sẽ filter theo size 5x5 hoặc 3x3. Pooling size: thƣờng là 2×2 hoặc 4×4 cho ảnh đầu vào lớn [10].
4.2.2 MTCNN.
MTCNN là viết tắt của Multi-task Cascaded Convolutional Networks. Nó là bao gồm 3 mạng CNN xếp chồng và đồng thời hoạt động khi phát hiện và xác định 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 task. Đầu ra của MTCNN là vị trí khn mặt và các điểm trên mặt nhƣ: mắt, mũi, miệng…
Trong giai đoạn đầu tiên, nó tạo ra các khung ứng cử một cách nhanh chóng thơng qua một CNN đơn giản. Sau đó, tinh chỉnh các cửa sổ bằng cách từ chối một số lƣợng lớn các cửa sổ không phải khuôn mặt ngƣời thông qua một CNN phức tạp hơn. Cuối cùng, nó sử dụng một CNN mạnh hơn để tinh chỉnh lại kết quả và đƣa ra năm vị trí mốc trên khn mặt.
Hình 4.6: Mơ tả q trình xác định khn mặt sử dụng MTCNN
4.2.2.1 Cơ chế hoạt động:
Cơ chế hoạt động của hệ thống đã đƣợc khái quát nhƣ trên hình 4.6. Khi chúng ta đƣa vào một ảnh mặt ngƣời, ban đầu chúng ta thay đổi kích thƣớc của nó
thành các tỷ lệ khác nhau để xây dựng một kim tự tháp hình ảnh (bản chất của kim tự tháp hình ảnh là bản sao của các ảnh đầu vào với các kích thƣớc khác nhau). Kim tự tháp hình ảnh này là đầu vào của khung xếp tầng gồm 3 tác vụ chính của MTCNN.
MTCNN hoạt động theo 3 bƣớc, mỗi bƣớc có một mạng neural riêng lần lƣợt là: P-Net, R-Net và O-Net.
Bƣớc 1: Chúng ta khai thác một mạng tích chập đầy đủ đƣợc gọi là Proposal Network(P-Net), để có đƣợc các cửa sổ ứng cử viên và các bounding box regression vectors của chúng. Sau đó, các ứng cử viên đƣợc hiệu chuẩn dựa trên các estimated bounding box regression vectors. Sau đó, chúng ta sử dụng non- maximum suppression (NMS) để hợp nhất các ứng cử viên chồng chéo.
Bƣớc 2: Tất cả các ứng cử viên đƣợc đƣa đến một CNN khác, đƣợc gọi là Refine Network (R-Net), để từ chối thêm một số lƣợng lớn các ứng cử viên sai. Sau đó, hệ thống thực hiện hiệu chuẩn với bounding box regression và tiến hành NMS.
Bƣớc 3: Giai đoạn này tƣơng tự nhƣ giai đoạn thứ hai, nhƣng trong giai đoạn này, chúng ta hƣớng đến việc xác định các khu vực khuôn mặt với sự giám sát nhiều hơn. Đặc biệt, mạng sẽ xuất ra năm vị trí trên khn mặt.
Group CNN 300xForward Propagation Vali dation Accuracy Group 1 12-Net 0,038s 94,4% P-Net 0,031s 94,6% Group 2 24-Net 0,738s 95,1% R-Net 0,458s 95,4% Group 3 48-Net 0,577s 93,2% O-Net 1,347s 95,4% Bảng 4.1: So sánh tốc độ và độ chính xác CNNs khác [2]
Hiện nay, có nhiều mạng CNN đã đƣợc thiết kế để nhận dạng khuôn mặt. Tuy nhiên, hiệu suất của nó có thể bị hạn chế bởi các điều kiện sau:
Một số filter trong convolution layer có thể thiếu sự đa dạng làm hạn chế khả năng phân biệt của chúng.
So với các nhiệm vụ phát hiện và phân loại khác, phát hiện khuôn mặt là một nhiệm vụ phân loại nhị phân đầy thách thức. Do đó, nó có thể cần số lƣợng bộ lọc ít hơn trên mỗi lớp. Vì vậy, chúng ta giảm số lƣợng bộ lọc và thay đổi bộ lọc 5x5 thành bộ lọc 3x3 để giảm tính tốn trong khi tăng độ sâu để có hiệu suất tốt hơn. Với những cải tiến này, so với những kiến trúc trƣớc đây, kiến trúc đƣợc lựa chọn có hiệu suất tốt hơn và thời gian chạy ít hơn (kết quả trong giai đoạn huấn luyện đƣợc mô tả trong bảng 3.1 với các huấn luyện và dữ liệu xác định tƣơng tự trong mỗi nhóm).
4.2.2.2 Huấn luyện
Các kiến trúc CNN luận văn lựa chọn đƣợc thể hiện trong hình 4.7 bên dƣới. Trong mơ hình này, chúng ta áp dụng PreLU làm chức năng kích hoạt phi tuyến sau khi tích chập và các lớp kết nối đủ (fully connection layers), trừ các lớp đầu ra.
Hình 4.7: Mơ tả q trình huấn luyện MTCNN
Tại P-Net, thuật tốn sử dụng 1 kernel 12x12 chạy qua mỗi bức hình để tìm kiếm khn mặt [5].
Hình 4.8: Quá trình xử lý dữ liệu tại P-Net.
Sau lớp convolution thứ 3, mạng chia thành 2 lớp. Convolution 4-1 đƣa ra xác suất của một khuôn mặt nằm trong mỗi bounding boxes, và Convolution 4-2 cung cấp tọa độ của các bounding boxes.
R-Net có cấu trúc tƣơng tự vói P-Net. Tuy nhiên sử dụng nhiều layer hơn. Tại đây, network sẽ sử dụng các bounding boxes đƣợc cung cấp từ P-Net và tinh chỉnh là tọa độ.
Tƣơng tự, R-Net chia ra làm 2 layers ở bƣớc cuối cùng cấp 2 đầu ra đó là tọa độ mới của các bounding boxes, cùng độ tin tƣởng của nó.
O-Net lấy các bounding boxes từ R-Net làm đầu vào và đánh dấu các tọa độ của các mốc trên khn mặt.
Hình 4.10: Q trình xử lý dữ liệu tại O-Net
Ở bƣớc này, thuật toán đƣa ra 3 kết quả đầu ra khác nhau bao gồm: xác suất của khuôn mặt nằm trong bounding box, tọa độ của bounding box và tọa độ của các mốc trên khn mặt (vị trí mắt, mũi, miệng) [6].
Hình 4.11: Kết quả đầu ra của O-Net.
4.3 Nhận dạng khuôn mặt bằng ArcFace Model 4.3.1 Giới thiệu. 4.3.1 Giới thiệu.
Biểu diễn khn mặt bằng cách sử dụng nhúng Mạng neuron tích chập sâu (DCNN) là phƣơng pháp đƣợc lựa chọn cho nhận dạng khuôn mặt. Các DCNN ánh xạ hình ảnh khn mặt, thƣờng là sau bƣớc chuẩn hóa tƣ thế, thành một tính năng có khoảng cách giữa các lớp nhỏ và khoảng cách giữa các lớp lớn. Có hai dịng
nghiên cứu chính để đào tạo DCNN cho nhận dạng khuôn mặt. Những hệ thống huấn luyện một trình phân loại nhiều lớp có thể phân tách các danh tính khác nhau trong tập huấn luyện, chẳng hạn nhƣ bằng cách sử dụng trình phân loại softmax và những ngƣời học trực tiếp nhúng, chẳng hạn nhƣ Soft-max loss. Dựa trên dữ liệu đào tạo quy mô lớn và các kiến trúc DCNN phức tạp, cả phƣơng pháp dựa trên Soft- max loss và phƣơng pháp dựa trên triplet-loss có thể đạt đƣợc hiệu suất tuyệt vời về nhận dạng khuôn mặt.Tuy nhiên, cả Softmax loss và Triplet-loss đều có một số
nhƣợc điểm :
Đối với softmax loss: (1) Kích thƣớc của ma trận biến đổi tuyến tính
WRdxn tăng tuyến tính với số nhận dạng n; (2) Các tính năng đã học có thể tách rời cho vấn đề phân loại đóng nhƣng khơng đủ phân biệt đối với vấn đề nhận dạng khuôn mặt mở.
Đối với Triplet Loss: (1) Có một vụ nổ tổ hợp trong số lƣợng bộ ba khuôn
mặt đặc biệt là đối với các bộ dữ liệu quy mô lớn, dẫn đến sự gia tăng đáng kể số lƣợng các bƣớc lặp; (2) Khai thác mẫu semi-hard là một vấn đề khá khó khăn để đào tạo mơ hình hiệu quả.
Đã có một số biến thể đƣợc đề xuất để tăng cƣờng khả năng phân biệt của Softmax loss. Đầu tiên là Centre loss, phƣơng pháp này sử dụng khoảng cách
Euclide giữa mỗi vector đặc trƣng và tâm của lớp đó để có đƣợc sự gọn nhẹ trong mỗi lớp mà vẫn đảm bảo sự phân tán trong trong mỗi lớp bằng Softmax loss. Tuy nhiên, việc cập nhật các tâm trong q trình huấn luyện trên thực thế rất khó khăn. Bởi số lƣợng khuôn mặt huấn luyện rất lớn và liên tục tăng.
Ta có thể thấy trọng số từ lớp kết nối đầy đủ cuối cùng của phân lớp DCNN đƣợc huấn luyện trên hàm Softmax loss mang sự tƣơng đồng với các tâm của mỗi lớp. Do đó, xử lý biên góc nhân (multicative angular margin penalty) đƣợc đề xuất để thực thi đồng thời sự nhỏ gọn trong mỗi lớp và sự khác biệt giữa các lớp, dẫn tới khả năng phân biệt tốt hơn cho model đƣợc huấn luyện. Mặc dù Sphereface đã giới thiệu ý tƣởng quan trọng này của biên góc (angular marrgin), nhƣng hàm này đòi hỏi một loạt các sấp xỉ để đƣợc tính tốn, dẫn đến việc huấn luyện mạng khơng ổn định. Để q trình huấn luyện ổn định, một hàm mất mát lai (hybrid loss) đƣợc đề xuất, nó bao gồm các tiêu chuẩn của Softmax loss. Theo các nghiên cứu, softmax
loss chi phối quá trình huấn luyện bởi vì biên góc nhân dựa vào một số ngun làm đƣờng cong logit mục tiêu rất dốc và cản trở sự đồng quy (hội tụ). CosFace cộng thêm trực tiếp các biên cosin vào logit mục tiêu, nó đạt đƣợc hiệu suất tốt hơn so với SphereFace nhƣng thừa nhận việc thực hiện dễ dàng hơn nhiều và giảm nhu cầu giám sát chung từ Softmax loss.
Do đó, tơi đã nghiên cứu và sử dụng ArcFace để cải thiện hơn nữa khả năng phân biệt của mơ hình nhận dạng khn mặt và để ổn định q trình huấn luyện.
Hình 4.12: Mơ hình ArcFace
Nhƣ đƣợc minh họa trong Hình 4.12, tích vơ hƣớng giữa tính năng DCNN và lớp kết nối đầy đủ cuối cùng bằng khoảng cách cosin sau khi chuẩn hóa tính năng và trọng số. Chúng ta sử dụng hàm arc-cosine để tính góc giữa tính năng hiện tại và trọng số mục tiêu. Sau đó, chúng ta thêm một góc góc phụ vào lề góc mục tiêu và chúng ta lấy lại logarit bằng hàm cosine. Sau đó, chúng ta chia tỷ lệ lại tất cả các bản ghi theo một định mức đặc trƣng cố định và các bƣớc tiếp theo hoàn toàn giống nhƣ trong softmax loss. Những ƣu điểm của ArcFace đƣợc đề xuất có thể đƣợc tóm tắt nhƣ sau:
Engaging: ArcFace trực tiếp tối ƣu hóa biên độ khoảng cách trắc địa
(geodesic) nhờ vào sự tƣơng ứng chính xác giữa góc và cung trong siêu cầu(hypersphere) đƣợc chuẩn hóa. Bằng việc phân tích số liệu thống kê góc giữa các đặc trƣng và trọng số, chúng ta có thể minh họa đƣợc các sự kiện trong không gian 512 chiều.
Effective (hiệu quả): ArcFace là một trong mƣời phƣơng pháp dạng khuôn
mặt hiệu quả nhất hiện nay trên các bộ dữ liệu hình ảnh và video quy mơ lớn.
Easy (Dễ dàng): ArcFace chỉ cần một vài dòng code và cực kỳ dễ thực hiện
Tensorflow. Hơn nữa, ArcFace không cần kết hợp với các loss function khác để có hiệu suất ổn định và có thể dễ dàng thực hiện trên bất kỳ bộ dữ liệu huấn luyện nào.
Efficient: ArcFace chỉ thêm độ phức tạp hoạt tính tốn khơng đáng kể trong
q trình huấn luyện. Các GPU hiện tại có thể dễ dàng hỗ trợ hàng triệu danh tính để đào tạo và mơ hình song song mơ hình có thể dễ dàng hỗ trợ nhiều danh tính hơn.
4.3.2 ArcFace
Hàm phân lớp đƣợc sử dụng rộng rãi nhất là Softmax loss:
W 1 1 W 1 1 log T yi yi T j i j N n i j b x b e L N e (4-1) Trong đó: d i
x R biểu thị đặc trƣng của mẫu thứ i trong class thứ yi
d là kích thƣớc đặc trƣng nhúng (embeding feature) đƣợc cài đặt là 512
W d jR biểu thị cột thứ j của trọng số WRdxn n j b R
là giới hạn ƣu tiên (bias term) N là kích thƣớc batch(lơ)
n là số Class
Tuy hàm Softmax loss truyền thống đƣợc sử dụng rộng dãi trong nhận diện khuôn mặt. Tuy nhiên, hàm Softmax loss không thể tối ƣu hóa rõ ràng feature