5.1.1 Thuật tốn
Nhiệm vụ của hệ thống nhận diện khn mặt là thực hiện nhận diện khuôn mặt từ webcam trực tiếp. Hƣớng thực hiện gồm hai gồm 3 bƣớc cơ bản sau
Bƣớc 1 Xác định và lấy ra (các) khn mặt có trong hình ảnh.
Đây là cơng đoạn rất quan trọng của quá trình nhận dạng. Bởi lẽ, để có thể phân tích và nhận dạng khn mặt thì chúng ta cần xác định chính xác vị trí của khn mặt trong bức ảnh. Sau đó, chúng ta cần phải tách khn mặt ra khỏi khung cảnh cịn lại.
Bƣớc 2 Từ hình ảnh các khn mặt lấy ra từ bƣớc 1, thực hiện phân tích,
trích rút các đặc trƣng của khn mặt.
Chúng ta nhận dạng gƣơng mặt mọi ngƣời qua các đặc điểm, hệ thống nhận dạng cũng vậy, nhƣng nó thực hiện đánh giá các đặc điểm ở một cấp độ cao hơn, chính xác hơn. Mỗi khn mặt đều có những điểm mốc, những phần lồi lõm tạo nên các đặc điểm của khuôn mặt. Các hệ thống nhận dạng gƣơng mặt định nghĩa những điểm này là những điểm nút. Mỗi mặt ngƣời có khoảng 80 điểm nút. Trong bƣớc này, dựa vào các điểm nút mà hệ thống trích rút ra đặc trƣng của từng khn mặt. Một số điểm nút có thể đƣợc sử dụng để nhận dạng gồm có khoảng cách giữa hai
mắt, chiều rộng của mũi, độ sâu của hốc mắt, hình dạng của xƣơng gị má, độ dài xƣơng hàm, …
Bƣớc 3 Từ các thơng tin có đƣợc sau khi phân tích, kết luận và xác minh
danh tính ngƣời dùng.
Chúng ta thực hiện so sánh dựa trên các đặc trƣng đã trích rút để đƣa ra phân lớp cho mỗi đối tƣợng khuôn mặt. Sau khi phân lớp, ta có thể thu đƣợc kết quả của q trình nhận dạng đó là danh tính của mỗi khn mặt ngƣời.
Ta có thể khái qt mơ hình hệ thống nhận dạng mặt ngƣời bằng sơ đồ khối nhƣ sau
Start
Dữ liệu huấn luyện Dữ liệu kiểm thử
Huấn luyện bộ nhận dạng khuôn mặt
Nhận dạng khn mặt
End
Hình 5.1 Sơ đồ khối tóm tắt hệ thống nhận diện khn mặt.
Dù là dữ liệu huấn luyện đƣợc lấy từ phƣơng pháp nào thì cũng có chung một đặc điểm những bức ảnh có chứa khn mặt, thƣờng là ảnh một ngƣời, có đầy đủ mắt, mũi, miệng. Dữ liệu hình ảnh đƣợc tổ chức theo cấu trúc
/train
+ face_01.jpg + face_02.jpg + ... /person2 + face_01.jpg + face_02.jpg + ... / ... 5.1.2 Công cụ
Cấu hình phần cứng phục vụ cho quá trình huấn luyện
- Vi xử lý Intel® Core™ i3-9100f CPU @ 2.30GHz (4CPUs) GTX-1650. - Hệ điều hành Ubuntu 18.04.3
Thƣ viện phần mềm
- Thƣ viện phần mềm lập trình đƣợc sử dụng Python 3.68. - Cơng cụ lập tình Pycharm bản Community version 2019.3.
5.1.3 Cài đặt các thƣ viện- Opencv-python - Opencv-python - Keras 2.2.4 - Cython 0.26.1 - Pillow 5.1.0- pip3 - Easdict 1.9 - Face-recognition 1.2.3 - Face-recognition-models 0.3.0 - Imutils 0.5.3 - Skit-image 0.15.0 - Skit-learn 0.21.3 - Scipy 1.3.1- sklern 0.0 - Tensorflow 1.13.2 - Torch 1.2.0 - MTCNN 0.0.9 - Mxnet 1.5.1 - Numpy 1.16.2
5.1.4 Thực hiện huấn luyện dữ liệu ảnh
Sau khi đã có mơi trƣờng huấn luyện, các dữ liệu đầu vào cũng nhƣ các thƣ viện đƣợc hỗ trợ và các pretrain model có sẵn. Tiếp theo, ta sẽ thực hiện huấn luyện các mẫu dữ liệu đó.
Đầu tiên, chuyển các dữ liệu khuôn mặt thành các vector tƣơng ứng với mặt của từng ngƣời. Hệ thống sẽ xử lý lần lƣợt từng bức ảnh trong dữ liệu hệ thống. Kết quả trả về số lƣợng khn mặt đƣợc embedding.
Hình 5.2 Mơ tả q trình xử lý dữ liệu ảnh đầu vào
Tiếp theo, ta thực hiện huấn luyện dữ liệu với các ảnh khuôn mặt đã đƣợc embedding.
Kết quả trả về bao gồm các file accuracy_loss.png, embedings.pickle, le.pickle và my_model.h5 đƣợc lƣu trong folder outputs
Hình 5.4 Cấu trúc thư mục đầu ra sau khi huấn luyện
Trong đó, có biểu đồ accuracy_loss thể hiện độ chính xác của hàm. Biểu đồ đƣợc vẽ dựa vào các giá trị thu đƣợc trong q trình train dữ liệu. Biểu đồ có dạng nhƣ sau
Hình 5.5 Biểu đồ thể hiện tính chính xác của hàm
Theo nhƣ hình 5.5, chúng ta có thể thấy, biểu đồ mơ tả hai mối quan hệ chính giữa epoch với acc (độ chính xác) và giữa epoch với loss (độ sai số). Trong đó, epoch là một điểm cắt tùy ý. Ta có thể hiểu là một lần huấn luyện toàn bộ tập dữ liệu đƣợc phân tách thành các giai đoạn riêng biệt. Giả sử, ta có 1000 mẫu huấn luyện và batch = 500 thì sẽ mất 2 lần lặp để hồn thành một epoch.