Khái niệm phát giác khuôn mặt trong google vision

I. Khái niệm phát giác khuôn mặt

phát giác khuôn mặt là quá trình tự động định vị khuôn mặt người trong phương tiện trực quan (hình ảnh kỹ thuật số hoặc video). Một khuôn mặt được phát giác được báo cáo tại một vị trí có kích thước và hướng quan hệ. Một khi khuôn mặt được phát giác, nó có thể được tìm kiếm các điểm mốc như mắt và mũi.

sau đây là một vài thuật ngữ chúng tôi dùng để thảo luận về phát giác khuôn mặt và các chức năng khác nhau của điện thoại Vision API.

chức năng nhận diện khuôn mặt tự động đánh giá nếu hai khuôn mặt có tuyệt kỹ tương ứng với cùng một người. quan tâm rằng tại lúc này, Google Face API chỉ cung ứng chức năng cho việc phát giác khuôn mặt và không phải đối mặt với sự chấp nhận. chức năng theo dõi khuôn mặt mở rộng việc dò tìm khuôn mặt cho các chuỗi video. Bạn có thể theo dõi bất kỳ khuôn mặt nào có mặt trong video trong bất kỳ khoảng thời gian nào. Đó là, khuôn mặt được phát giác trong khung hình liên tiếp có thể được đánh giá là cùng một người. quan tâm rằng đây không phải là một kiểu nhận dạng khuôn mặt; Cơ chế này chỉ làm cho suy luận dựa trên vị trí và chuyển động của khuôn mặt (s) trong một chuỗi video. Một mốc quan trọng là một nơi ưa thích trong một khuôn mặt. Mắt trái, mắt phải và mũi đều là ví dụ về các mốc. Face API cung ứng tuyệt kỹ tìm các mốc trên một khuôn mặt đã được phát giác. Phân loại là đánh giá xem một đặc điểm mặt nào đó có mặt. Ví dụ, một khuôn mặt có thể được phân loại quan hệ đến việc mắt của nó được mở hoặc đóng cửa. Một ví dụ khác là liệu khuôn mặt có mỉm cười hay không.

II. Định hướng khuôn mặt

API khuôn mặt phát giác khuôn mặt ở nhiều góc độ khác nhau, như trình bày sau đây:

Hình 1. Định vị góc nhìn. (A) Hệ toạ độ với hình ảnh trong mặt phẳng XY và trục Z có mặt trong hình. (B) Ví dụ về góc đứng khi y == Euler Y, r == Euler Z.

Các góc Euler X , Euler Y và Euler Z mô tả hướng của khuôn mặt như cho xem trong hình 1. Face API cung ứng phép đo Euler Y và Euler Z (nhưng không phải Euler X) cho khuôn mặt đã được phát giác.

Góc Euler Z của khuôn mặt luôn được báo cáo. Góc Euler Y chỉ khả dụng khi dùng cài đặt chế độ "chính xác" của máy dò mặt (đối lập với cài đặt chế độ "nhanh", có một vài phím tắt để phát giác nhanh hơn). Góc Euler X hiện không được giúp đỡ.

III. Các địa danh

Mốc là điểm quan tâm trong khuôn mặt. Mắt trái, mắt phải và mũi đều là ví dụ về các mốc. Hình sau đây cho thấy một vài ví dụ về các điểm mốc:

Thay vì phát giác các điểm mốc đầu tiên và dùng mốc làm cơ sở để phát giác tất cả khuôn mặt, Face API sẽ phát giác tất cả khuôn mặt một cách độc lập với tin tức mốc cụ thể. Vì lý do này, việc phát giác mốc là bước option có thể thực hiện được sau khi phát giác khuôn mặt. Việc phát giác Landmark không được thực hiện theo mặc định vì phải mất thêm thời gian để chạy. Bạn có thể tùy ý chỉ định việc phát giác mốc này nên được thực hiện.

Góc Euler Y Các điểm mốc phát giác
<-36 độ Mắt trái, miệng trái, tai trái, nách, má trái
-36 độ đến -12 độ Miệng trái, chân mũi, miệng dưới, mắt phải, mắt trái, má trái, đầu tai trái
-12 độ đến 12 độ Mắt phải, mắt trái, mũi cơ, má trái, má phải, miệng trái, phải miệng, dưới miệng
12 độ đến 36 độ Miệng phải, mũi, miệng dưới, mắt trái, mắt phải, má phải, đầu tai phải
> 36 độ Mắt phải, phải miệng, tai phải, mũi, má phải

Mỗi điểm đánh dấu được phát giác bao gồm vị trí quan hệ của nó trong hình ảnh.

IV. Phân loại

Phân loại đánh giá một đặc điểm mặt nào đó có mặt. Android Face API hiện giúp đỡ hai phân loại: mắt mở và mỉm cười . IOS Face API hiện giúp đỡ phân loại cười . Phân loại được cho xem như là một giá trị đảm bảo, cho thấy sự tự tin rằng nét mặt có mặt. Ví dụ, một giá trị 0,7 hoặc nhiều hơn cho việc phân loại cười cho thấy rằng có thể một người đang mỉm cười.

Cả hai loại phân loại này đều dựa vào sự phát giác mốc.

Cũng quan tâm rằng phân loại "mắt mở" và "mỉm cười" chỉ làm việc đối với mặt mặt trước, nghĩa là phải đối mặt với góc Euler Y nhỏ (tối đa khoảng +/- 18 độ).

V. Tạo bộ dò mặt

Trong ví dụ này, máy dò mặt được tạo ra trong cách thức onCreate của làm việc chính của app. Nó được khởi tạo với các option để phát giác khuôn mặt với các điểm mốc trong một bức ảnh:

FaceDeteGiám đốc kỹ thuậtr deteGiám đốc kỹ thuậtr = new FaceDeteGiám đốc kỹ thuậtr.Builder(context)     .setTrackingEnabled(false)     .setLandmarkType(FaceDeteGiám đốc kỹ thuậtr.ALL_LANDMARKS)     .build(); 

Cài đặt "theo dõi được kích hoạt" thành false được đưa ra để phát giác các hình ảnh cá nhân không quan hệ (trái ngược với video hoặc hàng loạt hình hình chụp liên tiếp), vì đây sẽ cho kết quả chính xác hơn. Nhưng để phát giác các hình ảnh liên tiếp (ví dụ, video trực tiếp), việc theo dõi được kích hoạt cho kết quả chính xác và nhanh hơn.

quan tâm rằng các điểm mốc trên khuôn mặt không yêu cầu khi phát giác khuôn mặt, và phát giác mốc là một bước khác nhau (option). Theo mặc định, chức năng phát giác mốc không được kích hoạt vì nó làm tăng thời gian phát giác. Chúng tôi cấp quyền ở đây để hình dung các điểm mốc đã được phát giác.

VI. phát giác khuôn mặt và điểm mốc trên khuôn mặt

Với một bitmap, ta có thể tạo ra Frame instance từ bitmap để cung ứng cho deteGiám đốc kỹ thuậtr:

Frame frame = new Frame.Builder().setBitmap(bitmap).build(); 

Máy dò có thể được gọi đồng bộ với một khung để phát giác khuôn mặt:

SparseArray<Face> faces = deteGiám đốc kỹ thuậtr.detect(frame); 

Kết quả trả về bao gồm một tập hợp các hoàn cảnh mặt. ta có thể lặp lại bộ sưu tập các khuôn mặt, bộ sưu tập các điểm mốc cho mỗi mặt và rút ra kết quả dựa trên đã có lần vị trí quan trọng:

for (int i = 0; i < faces.size(); ++i) {     Face face = faces.valueAt(i);     for (Landmark landmark : face.getLandmarks()) {         int cx = (int) (landmark.getPosition().x * scale);         int cy = (int) (landmark.getPosition().y * scale);         canvas.drawCircle(cx, cy, 10, paint);     } } 

VII. Truy vấn trạng thái làm việc của máy dò mặt

Lần đầu tiên một app dùng Face API được cài đặt trên thiết bị, GMS sẽ tải xuống một thư viện gốc cho thiết bị để phát giác khuôn mặt Thông thường điều này được thực hiện bởi trình cài đặt trước khi app được chạy lần đầu tiên. Nhưng nếu tải xuống chưa hoàn thành, thì cách thức "phát giác" ở trên sẽ không phát giác bất kỳ khuôn mặt nào. Điều này có thể diễn ra nếu người sử dụng không trực tuyến, nếu người sử dụng thiếu không gian lưu trữ đầy đủ trên thiết bị của họ hoặc nếu tải bị trì hoãn khác (ví dụ do mạng chậm).

Máy dò sẽ tự động làm việc khi tải xuống thư viện đã được hoàn thành trên thiết bị.

cách thức isOperational của deteGiám đốc kỹ thuậtr có thể được dùng để kiểm tra nếu thư viện gốc yêu cầu hiện có:

 if (!deteGiám đốc kỹ thuậtr.isOperational()) {     // ... } 

Ứng dụng của bạn có thể thực hiện hành động dựa trên trạng thái làm việc của máy dò (ví dụ: ngắn hạn tắt chức năng nhất định hoặc hiển thị thông tin cho người sử dụng).

VIII. Phát hành bộ dò mặt

Bộ dò khuôn mặt dùng gốc gác để phát giác. Vì lý do này, cần phải giải phóng máy dò khi không còn rất cần nữa:

deteGiám đốc kỹ thuậtr.release();

Nhưng quan tâm rằng bạn có thể dùng lại cùng một máy dò khuôn mặt để phát giác với nhiều bức ảnh, nếu bạn chọn.

Nguồn dịch từ: https://lập trình viênelopers.google.com/vision/android/detect-faces-tutorial
đường dẫn github demo: https://github.com/googlesamples/android-vision folder photo-demo.

Nguồn viblo.asia