- 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.
- Tạo thư mục MiAI_FaceRecog_3 và clone từ github về máy tính.
- Tạo thư mục Dataset trong MiAI_FaceRecog_3, trong đó tạo tiếp thư mục FaceData và dưới FaceData là tạo tiếp 2 thư mục raw và processed.
- Tạo thư mục Models trong MiAI_FaceRecog_3 để chờ sẵn tẹo lưu model sau.
- Sưu tầm ảnh của 2 người trở lên, mỗi người 10 tấm hình rõ mặt (tạm chấp nhận yêu cầu hiện tại của bài này là at least 2 người nhé, mình sẽ tìm hiểu thêm sau). Mình ví dụ 5 người tên là Anh, dien, Nhut Truong, Truong và Tuan Anh nhé. Các bạn tạo 5 thư mục Anh, dien, Nhut Truong, Truong và Tuan Anh trong thư mục raw và copy ảnh của 5 người vào riêng 5 thư mục đó, ảnh của ai vào thư mục của người đó nhé. Hoặc bạn có thể tạo 100 ảnh dựa vào webcam bằng cách chạy lệnh:
python capture.py
Chú ý: Trong các ảnh sưu tầm, chỉ có đúng 1 khuôn mặt của người đó, không được có quá 1 khuôn mặt/ảnh.
Ví dụ cây thư mục của mình để các bạn tham khảo:
-FaceData
|-processed
| |-Anh
| |-dien
| |-Nhut Truong
| |-Truong
| |-Tuan Anh
|-raw
|-Anh
|-dien
|-Nhut Truong
|-Truong
|-Tuan Anh
Các bạn đứng ở thư mục gốc là MiAI_FaceRecog_3 chạy lệnh sau để cài tất cả các thư viện cần thiết:
pip install -r requirements.txt
- Với chỗ ảnh đã 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é. Chuyển về thư mục MiAI_FaceRecog_3 và chạy lệnh:
python src/align_dataset_mtcnn.py Dataset/FaceData/raw Dataset/FaceData/processed --image_size 160 --margin 32 --random_order --gpu_memory_fraction 0.25
- 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 đã được xử lý. Ví dụ như ảnh dưới:
- Các bạn tải weights pretrain về tại link này: Tại đây (https://drive.google.com/file/d/1EXPBSXwTaqrSC0OhUdXNmKSh9qJUQ55-/view). 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.
- Chuyển về thư mục MiAI_FaceRecog_3 nếu đang đứng ở thư mục khác nhé. Sau đó chạy lệnh train:
python src/classifier.py TRAIN Dataset/FaceData/processed Models/20180402-114759.pb Models/facemodel.pkl --batch_size 1000
- Khi nào màn hình hiện lên chữ “Saved classifier model to file “Models/facemodel.pkl” là xong.
- Các bạn chạy file face_rec_cam.py bằng lệnh sau:
python src/face_rec_cam.py
python src/face_rec.py --path video/camtest.mp4
https://miai.vn/2019/09/11/face-recog-2-0-nhan-dien-khuon-mat-trong-video-bang-mtcnn-va-facenet/