Nhận dạng khuôn mặt opencv-python github

Hello xin chào các anh em Mì AI Blog, sau bài đầu tiên về nhận diện khuôn mặt tại đây https. // miai. vn/2019/08/13/nhận diện-thu-lam-he-thong-cham-cong-bang-nhan-dang-khuon-mat/, rất nhiều anh em comment là phương pháp triển khai, thuật toán trong

Mình xác nhận điều đó, nhưng khi mới học thì nên bắt đâu từ những mô hình đơn giản và dễ hiểu để nắm bắt được khái niệm, sau đó sẽ phát triển dần lên

Hôm nay mình sẽ giới thiệu cùng các bạn một bài toán nhận dạng khuôn mặt nữa nhưng sẽ áp dụng những công nghệ mới hơn như. phát khuôn mặt bằng MTCNN, trích xuất đặc trưng băng Facenet và sử dụng SVM để phân loại và nhận mặt. Nhờ đó, giải pháp lần này có nhiều điểm ưu việt hơn những lần trước như vậy. 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 mặt hơn

Công nghệ này áp dụng nhiều trong thực tế hơn các công nghệ sử dụng trong bài trước. Rồi bây giờ chúng ta sẽ đi tiếp nào

Phần 1. Tìm hiểu khái niệm

Haiza, cứ nói đến khái niệm trên Mị AI là thấy lại sao. Nhưng thôi, vẫn phải định nghĩa qua để các bạn biết

  • MTCNN là viết tắt của Multi-task Cascaded Convolutional Networks. Nó bao gồm 3 mạng CNN xếp hạng và đồng thời hoạt động khi phát hiện 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 nhiệm vụ. Đầ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, bầu…
  • Facenet là của ông Google giới thiệu năm 2015, còn thằng model này thì mình 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 đó sử dụng SVM để phân nhóm các vector đó thành các nhóm để biết vector đó là mặt của ai

Thôi chắc đại khái thế nhỉ, anh em cần thêm tin chi tiết thì search google để tìm hiểu thêm hoặc comment trên group Mì AI để cùng trao đổi nhé

Phần 2. Chuẩn bị nguyên liệu

Tạo thư mục và sao chép git

Như thường lệ, anh em tạo 1 thư mục MiAI_FaceRecog_2 để lưu tất cả các món của bài viết này nhé. Sau khi tạo xong, anh em gõ lệnh sau để lấy mã nguồn về

git clone //github.com/thangnch/MiAI_FaceRecog_3 .
Mình edit lại thành MiAI_FaceRecog_3 để chạy tốt trên TF 2.x

Chú ý có dấu chấm cuối dòng nhé

Bây giờ các bạn đã tạo các thư mục như sau

  • Tạo thư mục Dataset trong MìAI_FaceReg_2, trong đó tạo thư mục tiếp theo FaceData và bên dưới FaceData là tạo tiếp 2 thư mục thô và đã xử lý
  • Tạo thư mục Mô hình trong MìAI_FaceReg_2 để chờ sẵn lưu mô hình sau

Chuẩn bị khuôn mặt ảnh để đào tạo

Bây giờ các bạn sưu tập 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à ít nhất 2 người nhé, mình sẽ tìm hiểu thêm sau]. Mình ví dụ 2 người tên là NguyenVanA và LeThiB nhé. Các bạn tạo 02 thư mục NguyenVanA và LeThiB trong thư mục raw và copy ảnh của 2 người vào 2 thư mục riêng, ảnh của ai vào thư mục của người đó nhé

Ví dụ về các ảnh cần sưu tầm. Nguồn. https. // hướng tới khoa học dữ liệu. com

Chú ý . Trong các ảnh bạn sưu tầm, chỉ có đúng 1 khuôn mặt của người đó, ko được có quá 1 khuôn mặt/ảnh nhé.

Ví dụ cây thư mục của mình để các bạn tham khảo

|-FaceData
   |---processed
   |-----Hacd
   |-----ThangnC
   |---raw
   |-----Hacd
   |-----ThangnC

Cài đặt các thư viện cần thiết

Các bạn đang đứng ở thư mục MiAI_FaceRecog_2 chạy lệnh sau để cài đặt tất cả các thư viện cần thiết

pip install -r requirements.txt

Tiền xử lý dữ liệu để cắt mặt từ ảnh gốc

Với vị trí ảnh mà bạn đã sưu tầm bên trên, có thể là ảnh của cả người, bây giờ chúng ta sẽ cắt khuôn riêng mặt ra để huấn luyện nhé. Các bạn chuyển về thư mục MiAI_FaceRecog_2 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 “Tổng số hình ảnh. …” là thành công rồi đó. Các bạn lưu ý rằng sẽ thấy có thêm thư mục đã xử lý có cấu trúc tương tự như thư mục thô nhưng chỉ chứa khuôn mẫu dữ liệu được xử lý. Ví dụ như ảnh dưới

Tiền xử lý ảnh. Nguồn. https. // hướng tới khoa học dữ liệu. com

Load pretrain data của Facenet về máy

Các bạn tải pretrain về tạ tại liên kết này. Tại đây [nếu gặp khó khăn khi tải các bạn click vào đây để xem hướng dẫn nhé]. Sau khi tải xong, 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ư . pkl như bên dưới đâu nhé, mình chụp nhầm chút]. [không có file facemodel.pkl như bên dưới đâu nhé, mình chụp nhầm chút].

Okie rồi, vậy là các cuộc chuẩn bị nguyên liệu và chế độ sơ đồ đã hoàn thành. Giờ sang bước Train thôi nào. Not too then

Phần 3. Train model to process to accept face face

Bây giờ các bạn chuyển về thư mục MiAI_FaceRecog_2 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

Bây giờ các bạn đi lấy tách trà và ngồi đợi nhé, khi màn hình nào hiện lên chữ “Saved classifier model to file “Models/facemodel. pkl” là xong. Chúng ta đã luyện xong rồi, tận hưởng thành quả thôi

Phần 4. Destination to results

Hôm nay chúng ta sẽ kiểm tra model đã đào tạo với 2 nguồn video. một là từ webcam và 2 là nhận diện trong một tệp video có sẵn. Start up nhé

Kiểm tra thử với webcam

You are running file face_rec_cam. py by after command

python src/face_rec_cam.py 

Bạn hãy đợi mô hình tải 1 chút và màn hình webcam sẽ hiển thị như sau, nhận chuẩn ra hạn 😀

Rồi bây giờ chúng ta thử nhận diện qua video xem sao nhé. Các bạn đã chạy lệnh

python src/face_rec.py --path video/camtest.mp4 

Chú ý ở đây mình ví dụ với file camtest. mp4 của mình, các bạn có thể thử với bất kỳ tệp video kỳ lạ nào của các bạn. Chú ý là giảm độ phân giải xuống tầm 320×200 hoặc 640×480 nếu máy bạn không có GPU hoặc cấu hình thấp nhé, ko là giật tung lên đấy 😀

Và đây là thành quả của chúng ta, các bạn xem video bên dưới nhé

Rồi như vậy các bạn đã sở hữu cộng cụ “gần như mạnh nhất” hiện nay để phát hiện khuôn mặt, các hệ thống chấm công cụ đơn giản đã có thể chạy được rồi. Mình rất mong có nhiều hệ thống được các bạn khai thác từ mẫu này. Nếu có thành quả hoặc gặp khó khăn gì thì các bạn cứ chia sẻ cùng Mì AI trên group nhé. Trao đổi nhóm, chia sẻ. https. //www. Facebook. com/groups/miaigroup

Còn bây giờ, xin tạm biệt. Trong bài viết sau mình sẽ viết về 1 vấn đề là chống giả mạo bằng hình ảnh/video trong nhận diện khuôn mặt nhé

Chủ Đề