TỔNG QUAN VỀ ĐỀ TÀI

Một phần của tài liệu báo cáo chuyên đề học phần ngôn ngữ lập trình python đề tài xây dựng chương trình nhận dạng khuôn (Trang 22 - 25)

2.1. Giới thiệu

Nhận diện khuôn mặt là một công nghệ sinh trắc học ánh xạ các đặc điểm

khuôn mặt của một cá nhân về mặt toán học và lưu trữ dữ liệu dưới dạng faceprint (dấu khuôn mặt). Nói một cách dễ hiểu, nó cho phép nhận dạng một người cụ thể từ ảnh hoặc 1 đoạn video.

Trình phân tích khuôn mặt là phần mềm xác định hoặc xác nhận danh tính của một người qua khuôn mặt của họ. Công nghệ này hoạt động bằng cách xác định và đo lường các đặc điểm khuôn mặt trong hình ảnh. Công nghệ nhận dạng khuôn mặt có thể xác định khuôn mặt người trong hình ảnh hoặc video, xác định xem khuôn mặt xuất hiện trong hai hình ảnh có phải là cùng một người không hoặc tìm kiếm khuôn mặt trong một bộ sưu tập đồ sộ các hình ảnh hiện có. Các hệ thống bảo mật sinh trắc học sử dụng công nghệ nhận dạng khuôn mặt để nhận dạng cá nhân độc nhất trong lúc triển khai người

dùng hoặc đăng nhập, cũng như để tăng cường cho hoạt động xác thực người dùng. Các thiết bị di động và cá nhân cũng thường sử dụng công nghệ phân tích khuôn mặt để bảo mật thiết bị.

2.2. Mô tả về bài toán

Gần đây, sự chú ý rộng rãi đã tăng lên trong lĩnh vực thị giác máy tính, đặc biệt là trong nhận dạng khuôn mặt, phát hiện và địa bàn hóa các điểm mốc trên khuôn mặt. Nhiều đặc điểm quan trọng có thể bắt nguồn trực tiếp từ khuôn mặt con người, chẳng hạn như tuổi tác, giới tính cảm xúc.

Ước tinh tuổi có thể được định nghĩa là quá trình tự động phân loại hình ảnh

khuôn mặt thành độ tuổi chính xác hoặc vào một độ tuổi cụ thể. Về cơ bản,

ước tính tuổi từ khuôn mặt vẫn là một vấn đề khó khăn và việc đoán chính

xác từ một hình ảnh là rất khó do các yếu tố như trang điểm, ánh sáng, vật cản và biểu cảm khuôn mặt.

Lấy cảm hứng từ nhiều ứng dụng phổ biến trên nhiều kênh như “AgeBot”

trên Android, “AgeCalculator” trên iOS, chúng em sẽ xây dựng một công cụ

dự đoán tuổi đơn giản bằng OpenCV trong Python.

Mục tiêu chính là phát triển một tiện ích dựa trên dòng lệnh nhẹ, thông qua các module dựa trên Python và nó nhằm mô tả các bước để tự động phát hiện khuôn mặt trong một hình ảnh tĩnh và dự đoán tuổi của những người được phát hiện bằng cách sử dụng mô hình phát hiện độ tuổi dựa trên deep learning.

3.3. Thực hiện bài toán

Để nhận diện khuôn mặt, chúng ta có tệp .pb đây là tệp protobuf (bộ đệm giao thức), nó nắm giữ định nghĩa đồ thị và các trọng số được đào tạo của mô hình.

Chúng ta có thể sử dụng điều này để chạy mô hình được đào tạo. Và trong khi tệp .pb giữ protobuf ở định dạng nhị phân, một tệp có phần mở rộng .pbtxt giữ nó ở định dạng văn bản. Đây là các tệp TensorFlow. Đối với độ tuổi và giới

tính, tệp .prototxt mô tả cấu hình mạng và tệp .caffemodel xác định trạng thái bên trong của các tham số của các lớp.

Chúng ta sử dụng thư viện argparse để tạo một trình phân tích cú pháp đối số để chúng tôi có thể lấy đối số hình ảnh từ dấu nhắc lệnh. Chúng ta làm cho nó phân tích cú pháp đối số giữ đường dẫn đến hình ảnh để phân loại giới tính và độ tuổi. Đối với khuôn mặt, tuổi và giới tính, hãy khởi tạo bộ đệm và mô hình giao thức.

Khởi tạo các giá trị trung bình cho mô hình và danh sách các độ tuổi và giới tính để phân loại. Bây giờ, sử dụng phương thức readNet() để tải mạng. Tham số đầu tiên chứa các trọng số được huấn luyện và tham số thứ hai mang cấu hình mạng. Hãy ghi lại luồng video trong trường hợp bạn muốn phân loại trên luồng của webcam. Đặt phần đệm thành 20.

Bây giờ cho đến khi bất kỳ phím nào được nhấn, chúng tôi đọc luồng và lưu trữ nội dung vào các tên hasFrameframe. Nếu đó không phải là video, nó phải đợi và do đó chúng tôi gọi waitKey() từ cv2, sau đó ngắt.

Hãy thực hiện một cuộc gọi đến hàm highlightFace() với các tham số faceNet

frame, và những gì nó trả về, chúng tôi sẽ lưu trữ trong các tên resultImg

faceBoxes. Và nếu chúng tôi nhận được 0 faceBox, có nghĩa là không có khuôn mặt nào để phát hiện.Tạo một bản sao nông của khung và lấy chiều cao và chiều rộng của nó.Tạo một đốm màu từ bản sao nông.

Đặt đầu vào và thực hiện chuyển tiếp tới mạng, faceBoxes bây giờ là một danh sách trống. Với mỗi giá trị từ 0 đến 127, hãy xác định độ tin cậy (từ 0

đến 1). Bất cứ nơi nào chúng tôi tìm thấy độ tin cậy lớn hơn ngưỡng tin cậy là 0,7 chúng ta nhận được tọa độ x1, y1, x2y2 và thêm một danh sách các tọa độ đó vào faceBox. Sau đó, chúng ta đặt các hình chữ nhật trên hình ảnh cho mỗi danh sách tọa độ như vậy và trả về hai thứ: bản sao nông và danh sách các faceBox.

Nhưng nếu thực sự có các ô khuôn mặt, thì với mỗi ô trong số đó, chúng tôi xác định khuôn mặt, tạo ra một đốm màu 4 chiều từ hình ảnh. Khi làm điều này chúng ta chia tỷ lệ, thay đổi kích thước và chuyển các giá trị trung bình vào.

Một phần của tài liệu báo cáo chuyên đề học phần ngôn ngữ lập trình python đề tài xây dựng chương trình nhận dạng khuôn (Trang 22 - 25)

Tải bản đầy đủ (PDF)

(34 trang)