- vừa được xem lúc

Một số cải tiến của cross-entropy loss cho Face Recognition

0 0 117

Người đăng: Hieu Bui

Theo Viblo Asia

Introduction

Bài toán face recognition trong vài năm trở lại đây đã đạt dược nhiều bước tiến lớn nhờ vào sự phát triển của học sâu (Deep learning), mà cụ thể hơn là mạng neural tích chập (Convolutional neural network - CNN). Các phương pháp deep learning based hầu hết dựa vào mạng CNN để trích xuất ra một vector đặc trưng đại diện cho một khuôn mặt gọi là vector face embedding. Các vector này có đặc điểm là nếu 2 vector được trích xuất từ 2 bức ảnh của cùng 1 người thì khoảng cách giữa chúng sẽ nhỏ (small intra-class distance). Ngược lại, nếu 2 vector từ 2 ảnh của 2 người thì khoảng cách sẽ lớn (large inter-class distance). Hiện nay có 2 xu hướng nghiên cứu chủ đạo để huấn luyện CNN cho face recognition

  • Coi face recognition là 1 bài toán phân lớp thông thường và áp dụng hàm kích hoạt softmax và cross entropy loss để mô hình học được xác suất 1 khuôn mặt sẽ thuộc vào lớp nào. Sau đó vector face embedding được trích xuất từ output của 1 lớp fully connected trong mạng.
  • Hướng thứ 2 là cho mạng học trực tiếp vector face embedding sử dụng contrastive loss và triplet loss. Điển hình cho hướng này thì có mô hình Facenet rất nổi tiếng.

Trong bài viết này, mình sẽ tìm hiểu về một số phương pháp để cải thiện hàm mất mát.

Categorical Cross-Entropy loss

Hay còn được gọi là Softmax loss. Đây là hàm loss thông dụng nhất được sử dụng cho bài toán multi-class classification. Bao gồm hàm kích hoạt softmax tác động vào output của lớp fully connected cuối cùng của mạng (logit) và cross-entropy loss:

Li=1Ni=1NlogeWyiTxi+byiej=1nWjTxi+bjL_i = -\frac{1}{N}\sum^{N}_{i=1}log\frac{e^{W_{y_i}^Tx_i + b_{y_i}}}{e^{\sum^n_{j=1}W_{j}^Tx_i + b_{j}}}

Trong phương trình trên, xix_i là vector thuộc Rd\mathbb{R}^d; WjRdW_j\in \mathbb{R}^d là cột thứ j của ma trận trọng số WRd×nW\in\mathbb{R}^{d\times n}; N và n lần lượt là batch size và số class trong tập dữ liệu. Softmax loss có nhược điểm là nó không trực tiếp tối ưu vector face embedding để đạt được khoảng cách nhỏ giữa các vector trong cùng 1class và khoảng cách lớn khi khác class.

Large Margin Softmax

Paper Large-Margin Softmax Loss for Convolutional Neural Networks là một trong những paper đầu tiên giới thiệu khái niệm về margin (lề) vào softmax loss. Margin ở đây được sử dụng để tăng inter-class distance giữa các class và đồng thời làm giảm intra-class distance. Softmax loss được biến đổi lại như sau

fj=WjTxif_j =W^T_jx_i

Dễ thấy, công thức trên là tích vô hướng giữa WjW_jxix_i. Như đã được học trong môn đại số, tích vô hướng có thể được viết lại thành:

fj=WjTxi=Wjxicos(θj)f_j =W^T_jx_i =||W_j||||x_i||cos(\theta_j)

trong đó, θi\theta_i là góc giữa 2 vector WjW_jxix_i. Trong phân lớp nhị phân sử dụng softmax los, một ảnh sẽ được phân vào lớp thứ nhất nếu W1Tx>W2TxW_1^Tx > W_2^Tx hoặc W1xcos(θ1)>W2xcos(θ2)||W_1||||x|| cos(θ_1) > ||W_2||||x|| cos(θ_2). Nhưng ta cần 1 khoảng margin m giữa decision boundary của 2 class nên, tác giả paper yêu cầu W1xcos(θ1)>W2xcos(θ2)(0θ1πm)||W_1||||x|| cos(θ_1) > ||W_2||||x|| cos(θ_2) (0 \leq\theta_1\leq \frac{\pi}{m}). Desion boundary từ đó sẽ trở thành

Hàm L-softmax loss được định nghĩa là

Li=logeWyixiψ(θyi)eWyixiψ(θyi)+jyiWyixicos(θj)L_i = -log\frac{e^{||W_{y_i}||||x_i||\psi(\theta_{y_i})}}{e^{||W_{y_i}||||x_i||\psi(\theta_{y_i})+\sum_{j\neq y_i}||W_{y_i}||||x_i||cos(\theta_{j})}}

ψ(θ)={cos(mθ),0θπm D(θ),πmθπ\psi(\theta)= \begin{cases} cos(m\theta), 0\leq \theta \leq \frac{\pi}{m}\ \\ D(\theta), \frac{\pi}{m} \leq \theta \leq \pi\\ \end{cases}

trong đó m là 1 số thực dương. m càng lớn thì margin sẽ càng lớn. D(θ)D(\theta) là 1 hàm đơn điệu giảm sao cho D(πm)=cos(πm)D( \frac{\pi}{m}) = cos( \frac{\pi}{m}) Hàm ψ\psi được xây dựng trong paper:

ψ(θ)=(1)kcos(mθ),θ[kπm,(k+1)πm],k[0,m1]\psi(\theta) = (-1)^kcos(m\theta), \theta \in [ \frac{k\pi}{m}, \frac{(k+1)\pi}{m}], k\in [0, m-1]

Angular Softmax (A-Softmax)

Về mặt công thức, Angular softmax giống hệt như L-softmax. Điểm khác biệt duy nhất là trong A-softmax sẽ chuẩn hóa vector WiW_i sao cho Wi=1||W_i||=1. Hàm L-softmax sẽ trở thành

Li=logexiψ(θyi)exiψ(θyi)+jyixicos(θj)L_i = -log\frac{e^{||x_i||\psi(\theta_{y_i})}}{e^{||x_i||\psi(\theta_{y_i})+\sum_{j\neq y_i}||x_i||cos(\theta_{j})}}

A-softmax không chỉ làm tăng tính phân biệt cho các vector embedding mà còn có một số đặc tính hình học khá thú vị

Phía trên là hình ảnh trực quan của các các vector face embedding đã được học với các giá trị m khác nhau. Hàng đầu tiên hiển thị các vector 3D được chiếu trên hình cầu đơn vị. Các điểm màu là giao điểm của vector embedding và hình cầu đơn vị. Hàng thứ hai hiển thị sự phân bố góc của cả cặp dương tính và cặp âm tính (tác giả chọn lớp 1 và lớp 2 từ tập con của dataset CASIA-WebFace để xây dựng các cặp ảnh âm tính và dương tính ). Vùng màu cam biểu thị các cặp dương tính trong khi màu xanh lam biểu thị các cặp âm tính . Giá trị các góc được tính bằng radian.

Additive Angular Margin Softmax

Paper ArcFace: Additive Angular Margin Loss for Deep Face Recognition có cách tiếp cận khác để giới thiệu margin cho decision boundary. Thay vì nhân m với θ\theta như trong L-softmax và A-softmax, tác giả thay đổi hàm ψ(θ)\psi(\theta) thành

ψ(θ)=cos(θ+m)\psi(\theta) = cos(\theta + m)

Công thức này đơn giản hơn rất nhiều so với ψ(θ)\psi(\theta) của L-Softmax và A-Softmax và Arcface cũng hoạt động tốt hơn. Bên cạnh đó, Arcface cũng chuẩn hóa cũng chuẩn hóa trọng số WiW_i giống với A-softmax và đồng thời cũng chuẩn hóa cả vector embedding xix_i sao cho xi=s||x_i|| = s (s là 1 hyperparameter) Cuối cùng, loss của Arcface có thể được xác định như sau:

Li=logescos(θyi+m)escos(θyi+m)+jyiscos(θj)L_i = -log\frac{e^{s\cos(\theta_{y_i} + m)}}{e^{s\cos(\theta_{y_i}+m)+\sum_{j\neq y_i}scos(\theta_{j})}}

Thuật toán của arcface:

  1. Chuẩn xóa vector x||x|| và các cột của ma trận trọng số WW
  2. Tính WxWx
  3. Tính cos(θj)cos(\theta_j) giữa từng cột của ma trận WWxx
  4. Tính arccos(θj)arccos(\theta_j) giữa từng cột của ma trận WWxx
  5. Cộng θ\theta của class groudn truth với margin m (góc tính bằng radian)
  6. Nhân giá trị logit với xi||x_i||
  7. Tính softmax loss như trong công thức

Tổng kết

Trên đây, mình đã giới thiệu một số cải tiến của cross-entropy loss để tăng hiệu suất của mô hình deep learning trong bài toán face recognition nói riêng và classification nói riêng. Bài viết tới đây là hết. Cảm ơn mọi người đã theo dõi.

References

  1. Large-Margin Softmax Loss for Convolutional Neural Networks
  2. SphereFace: Deep Hypersphere Embedding for Face Recognition
  3. ArcFace: Additive Angular Margin Loss for Deep Face Recognition

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tìm hiểu về YOLO trong bài toán real-time object detection

1.Yolo là gì. . Họ các mô hình RCNN ( Region-Based Convolutional Neural Networks) để giải quyết các bài toán về định vị và nhận diện vật thể.

0 0 284

- vừa được xem lúc

Xây dựng hệ thống Real-time Multi-person Tracking với YOLOv3 và DeepSORT

Trong bài này chúng ta sẽ xây dựng một hệ thống sử dụng YOLOv3 kết hợp với DeepSORT để tracking được các đối tượng trên camera, YOLO là một thuật toán deep learning ra đời vào tháng 5 năm 2016 và nó nhanh chóng trở nên phổ biến vì nó quá nhanh so với thuật toán deep learning trước đó, sử dụng YOLO t

0 0 316

- vừa được xem lúc

Sơ lược về bài toán Person Re-identification

Với những công nghệ hiện đại của thế kỷ 21 chúng ta đã có những phần cứng cũng như phần mềm mạnh mẽ để giải quyết những vấn đề và bài toán nan giải như face recognition, object detection, NLP,... Một trong những vấn đề nan giải cũng được mọi người chú ý ko kém những chủ đề trên là Object Tracking, v

0 0 63

- vừa được xem lúc

Bacteria classification bằng thư viện fastai

Giới thiệu. fastai là 1 thư viện deep learning hiện đại, cung cấp API bậc cao để giúp các lập trình viên AI cài đặt các mô hình deep learning cho các bài toán như classification, segmentation... và nhanh chóng đạt được kết quả tốt chỉ bằng vài dòng code. Bên cạnh đó, nhờ được phát triển trên nền tản

0 0 37

- vừa được xem lúc

Xác định ý định câu hỏi trong hệ thống hỏi đáp

Mục tiêu bài viết. Phân tích câu hỏi là pha đầu tiên trong kiến trúc chung của một hệ thống hỏi đáp, có nhiệm vụ tìm ra các thông tin cần thiết làm đầu vào cho quá trình xử lý của các pha sau (trích c

0 0 94

- vừa được xem lúc

Epoch, Batch size và Iterations

Khi mới học Machine Learning và sau này là Deep Learning chúng ta gặp phải các khái niệm như Epoch, Batch size và Iterations. Để khỏi nhầm lẫn mình xin chia sẻ với các bạn sự khác nhau giữa các khái n

0 0 45