Chương 1. Chuyendecntt

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 23

Tìm hiểu cấu trúc mô hình mạng và nguyên lý làm việc"

Tìm hiểu MTCNN và áp dụng để xác định vị trí các khuôn mặt.
Chương 1. GIỚI THIỆU
Giới thiệu tổng quan:
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 Phần đầu tiên sẽ là về Face Detection, một bài toán với nhiệm vụ phát hiện các khuôn mặt có trong
ảnh. Mạng MTCNN sẽ giúp chúng ta điều này với 3 lớp mạng khác biệt, tượng trưng cho 3 stage chính là P-Net,
R-Net và O-Net (PRO!) 
và đồng thời hoạt động khi detect khuôn 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í khuôn mặt và các điểm trên mặt như: mắt, mũi,
miệng…
+ Chủ đề: Nhận diện khuôn mặt (Face Recognition) là một trong những thách thức lớn mà các nhà nghiên cứu về
Học máy - Học sâu. Bài toán này ra thành 2 vấn đề chính: Phát hiện khuôn măt (Face Detection) và Phân biệt
khuôn mặt (Face Verification). Để đi sâu hơn về quá trình hiểu và áp dụng hoàn chỉnh một bài Face Recognition,
chúng ta sẽ cùng tìm hiểu và inference 2 mạng nổi tiếng cho 2 vấn đề trên: MTCNN (Multi-task Cascaded
Convolutional Networks) và FaceNet.
Hệ thống nhận diện khuôn mặt là một ứng dụng máy tính tự động xác định hoặc nhận dạng một người nào đó từ
một bức ảnh hình ảnh kỹ thuật số hoặc một khung hình video từ một nguồn video
+Tính cấp thiết đề tài

+ Nội dung sẽ thực hiện

1. Face detection: phát hiện một hay nhiều khuôn mặt trong ảnh. Việc này có thể thực hiện bằng nhiều cách ví
dụ như HaarCascade hay dùng Deep Learning để phát hiện khuôn mặt.
2. Feature extraction: Trích xuất các đặc trưng quan trọng nahats từ ảnh chứa khuôn mặt (vùng ảnh chứa
khuôn mặt được thực hiện sau bước 1). Có thể dùng FaceNet để trích xuất đặc trưng (128 dimensions).
3. Face classification: phân loại khuôn mặt dựa trên đặc trưng đã được trích xuất. Việc này có thể thực hiện
bằng cách sử dụng SVM hay Softmax

Đây là pepline chung cho nhận diện khuôn mặt. Bài này sẽ tập trung vào sử dụng MTCNN để phát
hiện khuôn mặt, FaceNet để trích xuất đặc trưng và Softmax để phân loại khuôn mặt.

MTCNN
MTCNN (Multi-task cascaded convolutional neural networks) - mạng NN nhằm phát hiện khuôn mặt
và các facical landmarks (vị trí của mắt, mũi, miệng..) trong ảnh. MTCNN được công bố năm 2016 bởi
Zhang et al.

1
MTCNN là một trong những công cụ phổ biến và chính xác nhất để phát hiện khuôn mặt hiện nay.
MTCNN gồm 3 mạng NN kết nối với nhau theo kiểu tầng.

FaceNet
FaceNet là mạng NN dùng để trích xuất đặc trưng từ ảnh mặt người (là mạng NN trong Siamese
Network, Siamese Network bao gồm 2 mạng FaceNet giống hệt nhau). FaceNet được công bố năm
2015 bởi tác giả Schroff et al.

Như bài trước đã nói rất kĩ, đầu vào của FaceNet là ảnh khuôn mặt, đầu ra là là vector có chiều 128
thể hiện đặc trưng của khuôn mặt (còn gọn là encoding hay embedding). Gọi là embedding vì những
thông tin quan trọng được embedded vào vector. Việc mapping dữ liệu có số chiều lớn (như ảnh chẳng
hạn) xuống biểu diễn có số chiều nhỏ (embedding) là vấn đề rất hay thấy hiện nay. Xem thêm
về embedding tại đây.

Nên nhớ FaceNet (chính xác Siamese Net - 2 mạng NN) đã được train dựa trên các bộ 3 ảnh (triplels).
Vì vậy chúng ta có parameters sắn rồi nên mới có thể xác định được embedding.

2

Các giá trị trong embedding là gì? Kích thước của mắt, mũi, khoảng cách giữa 2 mắt… Các giá trị này
rất quan trong, nhưng thực tế chúng ta không biết rõ ý nghĩa của chúng là gì. Có thể tìm hiểu được
không?

Softmax
Sau khi có vector embedding có thể thực hiện classification thông qua việc tính toán khoảng cách
giữa khuôn mặt mới và các khuôn mặt có trong database. Ngay cả không lưu ảnh raw mà chỉ lưu mỗi
vector embedding, việc này cũng yêu cầu tính toán nhiều (phương pháp kNN). Thay vào đó chúng ta
quyết định sử dụng Softmax classifier. Ngoài ra cũng có thể sử dụng SVM, Random Forest… để phân
loại.

Chương 2. NGHIÊN CỨU LIÊN QUAN


- Một số nghiên cứu gần đây về cùng đề tài
- Kết quả đạt được từ những nghiên cứu trước đó
- Hướng thực hiện
Chương 3. Phương pháp thực hiện
Một số phương pháp nổi bật:
Phát hiện khuôn mặt( Face detection)
Haar Cascade
HOG (Histograms Of Oriented Gradients)
Deep learning
+ MTCNN

- Một sơ đồ các bước thực hiện

3
B1: Thu thập ảnh chụp hoặc video

4
B2: Sử dụng model MTCNN để cắt mặt từ các ảnh để tạo bộ dữ liệu huấn luyện

B3: Sử dụng model của FaceNet (model-20180402-114759. Meta) để tạo ra veter 128 đặc điểm của khuôn mặt

5
B4: Sử dụng bộ dữ liệu đã được mã hóa vecter đặc điểm để phận loại với đầu ra là xác suất của một mặt là 1
trong các người đã tral

Kết quả

- Trình bày cụ thể từng bước thực hiện


Chương 4. KẾT QUẢ
- Thời gian huấn luyện
- Tập dữ liệu
- Ảnh thực nghiêm
6
Chương 5. KẾT LUẬN
-Nhận xét: Nhận diện khuôn mặt dùng MTCNN và facenet có nhiều ưu điểm hơn so với các phương pháp khác
như: nhận diện được mặt ở nhiều góc khác nhau, không cần nhìn thẳng, nhận diện chính xác hơn, trích xuất
được nhiều đặc trưng khuôn mặt hơn.
- Hướng phát triển: Với mong muốn phát hiện kể gian khi chúng đang sinh hoạt bình thường như người khác,
các camera theo dõi cần phải được trang bị công nghệ nhận diện khuôn mặt. Sau khi quét toàn bộ các gương
mặt, chúng sẽ so sánh với khác dữ liệu tội phạm để xác nhận và có phương án xử lý phù hợp với đối tượng.
Nhận diện khuôn mặt cũng có thể ứng dụng trong một số lĩnh vực như an ninh, thương mại, marketing, y tế,
khách sạn,….
Tài liệu tham khảo
https://machinelearningmastery.com/how-to-develop-a-face-recognition-system-using-facenet-in-keras-and-an-
svm-classifier/
https://www.youtube.com/watch?v=w4B_JU-tocE
https://www.youtube.com/watch?v=4l_KXbuH_OQ

…………..
Phương pháp:
phát hiện khuôn mặt bằng MTCNN, trích xuất đặc trưng băng Facenet và dùng SVM để
classifier và nhận diện mặt. Nhờ đó, giải pháp lần này có nhiều ưu điểm so với lần trước như:
nhận diện được mặt ở nhiều góc khác nhau, ko cần nhìn thẳng, nhận diện chính xác hơn, trích
xuất được nhiều đặc trưng khuôn mặt hơn
Khái niệm:
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 detect khuôn 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í khuôn mặt và các điểm
trên mặt như: mắt, mũi, miệng…
Facenet là của ông Google giới thiệu năm 2015, và thằng model này thì mình cứ nhét ảnh vào
(đúng size của nó) thì nó trả ra 1 vector 128 features cho 1 khuôn mặt. Sau đó dùng SVM để
phân nhóm các vector đó vào các nhóm để biết vector đó là mặt của ai. Facenet dùng để nhận
dạng khuôn mặt
Cách thực hiện:
Tạo thư mục:
Ta có cây thư mục như sau:
Chuẩn bị ảnh khuôn mặt để train
Chuẩn bị ảnh của 2 người trở lên, mỗi người 10 tấm hình rõ mặt.
Tạo các thư mục đặt tên của những người cần nhận dạng và copy để vào trong thư mục raw.

7
Ở đây cần nhận dạng 5 người, hình ảnh của người nào để vào thư mục của người ấy
hú ý: Trong các ảnh, chỉ có đúng 1 khuôn mặt của người đó, ko được có quá 1 khuôn mặt/ảnh.
Cài đặt các thư viện cần thiết
Quá trình cài đặt mất khoảng 10 phút
Tiền xử lý dữ liệu để cắt khuôn mặt từ ảnh gốc
Với chỗ ảnh mà bạn đã sưu tầm bên trên, có thể là ảnh cả người, bây giờ chúng ta sẽ cắt riêng
khuôn mặt ra để train nhé. Các bạn chuyển về thư mục FaceRecog_2 và chạy lệnh :
Truoc tiên cài
Chạy xong thấy nó hiển thị dạng “Total number of images: …” là thành công rồi đó. Các bạn để
ý sẽ thấy có thêm thư mục processed có cấu trúc tương tự thư mục raw nhưng chỉ chứa dữ liệu
khuôn mặt dã được xử lý. Ví dụ như ảnh dưới:
Tải dữ liệu pretrain của Facenet về máy:
Các bạn tải weights pretrain về tại link này : Tại đây (nếu có khó khăn khi tải, các bạn bấm vào
đây để xem hướng dẫn nhé). Sau khi tải xong về, các bạn copy toàn bộ file tải về vào thư mục
Models, chú ý chỉ lấy file, bỏ hết các thư mục như hình bên dưới của mình (không có file
facemodel.pkl như bên dưới đâu nhé, mình chụp nhầm chút).

…………………

8
9
10
11
12
13
…………………

14
15
16
…………

17
18
19
20
21
22
23

You might also like