Hướng dẫn ngắn gọn về nhận dạng khuôn mặt video R & D từ BBC

Thông thường, nó làm nhiệm vụ mà con người thực hiện mà không cần phải suy nghĩ đòi hỏi một số xử lý phức tạp nhất đằng sau hậu trường. Nếm thức ăn, trò chuyện với bạn bè, nghe nhạc và, thực sự, nhận ra mọi người. Khi bạn xem một tập phim Eastender, bạn sẽ thấy các diễn viên khác nhau ở các bối cảnh khác nhau, từ các góc độ khác nhau và trong ánh sáng khác nhau, nhưng ngay lập tức não của bạn xử lý các biến thể này để biết rằng đó là Dot Dot Cotton và Phil Mitchell trong cảnh. Vì chúng tôi không nghĩ về việc xử lý, chúng tôi rất ngạc nhiên khi thấy rằng các tác vụ này phức tạp hơn nhiều so với suy nghĩ ban đầu khi chúng tôi cố gắng áp dụng chúng vào học máy.

Lấy những hình ảnh sau đây từ Hoàng tử Harry và Megan Markle trên đường phố. Chúng ta có thể thấy Harry và Megan từ các góc độ khác nhau ở đây - mặt trước, mặt bên và mặt sau - nhưng chúng ta dễ dàng nhận ra chúng từ các đặc điểm của chúng: màu da, màu tóc, v.v. Chúng tôi cũng có một số tín hiệu xã hội nhất định. Đám đông đang nhìn họ, họ mặc quần áo chỉnh tề, họ ở trung tâm của mỗi cảnh quay và ở đó, một sự liên tục rõ ràng của những cảnh quay là từ cùng một cảnh. Có nhiều lớp trực giác của con người ở đây, chúng ta có xu hướng thậm chí không nghĩ đến khi chúng ta phát hiện các chỉ số văn hóa cũng như thể chất.

Chúng tôi tự nhiên nhận ra Harry và Megan, mặc dù các góc khác nhau trong những bức ảnh này

Vậy làm thế nào để chúng ta dạy một máy tính để học cách làm tất cả điều này? Trong khi chúng ta có thể có được một thuật toán để suy nghĩ như một con người, chúng ta có thể khiến nó thực hiện những gì máy học làm tốt nhất: phát hiện các mẫu trong các bộ dữ liệu lớn, được gắn nhãn. Điều này liên quan đến việc thu thập hình ảnh, đào tạo thuật toán, xử lý video và nhận ra những người trong đó. Đầu ra cuối cùng là danh sách những người được nhận dạng trong video cùng với thời gian và vị trí trong các khung hình họ xuất hiện.

Chúng tôi đã làm việc để xây dựng công nghệ này tại BBC. Hệ thống của chúng tôi, được gọi là FaceRec, được phát triển bởi Nhóm dữ liệu nghiên cứu và dịch vụ tương lai trong nghiên cứu và phát triển của BBC (chúng tôi sẽ lưu một số tổ hợp phím và chỉ cần gọi chúng là Nhóm dữ liệu từ đây trở đi). Nó được xây dựng bằng cách sử dụng kết hợp mã nội bộ và phần mềm nguồn mở bên ngoài - đặc biệt là Seetaface, công cụ nhận dạng khuôn mặt C ++.

FaceRec hoạt động bằng cách xử lý video thông qua một loạt các bước thuật toán, mỗi bước giải quyết một phần cụ thể của vấn đề tổng thể. Chúng tôi sẽ cung cấp cho bạn một cái nhìn tổng quan về cách tất cả hoạt động.

1. Phát hiện ảnh

Để mỗi khuôn mặt được phát hiện trong video, trước tiên chúng ta cần chia video thành các cảnh cấu thành của nó (một cảnh được định nghĩa là một loạt các khung hình chạy trong một khoảng thời gian không bị gián đoạn). Để thực hiện việc này, FaceRec sử dụng thư viện xử lý phương tiện FFmpeg, sử dụng chức năng để trả về tất cả các cảnh quay Thời gian bắt đầu và kết thúc trong một video nhất định.

2. Phát hiện khuôn mặt

Bước tiếp theo là kiểm tra từng khung hình để xem nó có chứa khuôn mặt người hay không. Đây là một vấn đề khó khăn - chúng ta có nên cố gắng phát hiện từng khuôn mặt trong một trận bóng đá không? Có một khuôn mặt trên một chiếc áo phông đếm? Làm ảnh trên mặt trước của báo?

Lặp lại qua từng phát bắn, FaceRec lấy các khung hình từ ảnh và đưa chúng vào SeetaFace, sau đó trả về các hộp giới hạn nơi nó nghĩ là các khuôn mặt. Công cụ phát hiện khuôn mặt SeetaFace Nhận thức rõ liệu một khuôn mặt có đếm được đủ để đưa vào đầu ra của nó hay không. Xin lưu ý rằng SeetaFace không nói ai là người mà họ phát hiện ra, chỉ đơn thuần là họ tin rằng họ đã phát hiện ra một khuôn mặt ở một vị trí nhất định trong khung.

3. Tạo dấu vết khuôn mặt

Bây giờ chúng tôi đã thu thập tất cả các khung có chứa các khuôn mặt, nhiệm vụ tiếp theo là ghép các khuôn mặt được phát hiện này lại với nhau để tạo ra một khuôn mặt. Theo dõi khuôn mặt là một dòng liên tục của các hộp giới hạn xung quanh một khuôn mặt khi nó di chuyển trong khung bắn.

FaceRec lấy mỗi hộp giới hạn khuôn mặt và cố gắng ánh xạ nó tới hộp giới hạn logic tiếp theo trong khung sau. Điều này không phải lúc nào cũng hoàn toàn rõ ràng, vì các khuôn mặt có thể bị che khuất tạm thời hoặc các hộp giới hạn có thể giao nhau khi một người di chuyển phía sau người khác.

Các hộp giới hạn theo dõi khuôn mặt thông qua một shot

Dưới mui xe, vấn đề này được giải quyết bằng cách sử dụng phương pháp Dlib và Lucas-Kanade. Điều này tạo ra các rãnh mặt được xác định bởi các mốc thời gian, danh sách các khung và các khung giới hạn của các mặt.

4. Tạo vectơ mặt cho các bản nhạc

Các thuật toán học máy thường hoạt động bằng cách chuyển đổi vật liệu đầu vào thành các vectơ toán học. Sau đó, họ tìm hiểu những phần nào của không gian vectơ này, thuộc về các loại hoặc kiểu đầu vào cụ thể. Về mặt, họ sẽ học được rằng các vectơ đại diện cho khuôn mặt Hoàng tử Harry, có xu hướng ở một khu vực cụ thể, trong khi các vectơ Megan có xu hướng kết thúc ở một phần khác. Bạn cũng sẽ mong đợi các vectơ của khuôn mặt Hoàng tử William William sẽ gần gũi với không gian này với Harry hơn là với Megan, vì chúng có liên quan và chia sẻ các đặc điểm tương tự.

Để tạo vectơ cho các khuôn mặt được phát hiện, FaceRec sử dụng thư viện nhận dạng khuôn mặt SeetaFace. FaceRec cung cấp các ảnh đã cắt của các khuôn mặt được phát hiện trong các hộp giới hạn của chúng từ điểm giữa của rãnh ghi. Nó nhận lại một vectơ 2024 chiều đại diện cho các đặc điểm của khuôn mặt đó.

5. Nhận biết khuôn mặt của mọi người trong các vectơ theo dõi khuôn mặt

Bây giờ chúng ta có một vectơ khuôn mặt cho mỗi khuôn mặt được phát hiện. Bước tiếp theo là biến các vectơ này thành tên thật của các khuôn mặt được nhận diện, cũng như gắn cờ các khuôn mặt mà chúng ta không nhận ra (và do đó có thể gắn nhãn).

Câu hỏi đầu tiên ở đây là: chúng ta nhận ra ai? Chúng tôi chắc chắn có thể xây dựng một mô hình để nhận ra tất cả những người mà sống từng có - và chúng tôi cũng không muốn. Vậy ai là người đủ quan trọng cho hệ thống nhận diện khuôn mặt này?

Trên thực tế, điều này cần phải được thúc đẩy bởi các nhà báo trên BBC News và những người mà họ thường đưa tin nhất. Chúng ta cũng cần lưu ý rằng những người chưa biết tạo ra tin tức mỗi ngày và khi họ làm, chúng ta có thể không có bất kỳ hình ảnh nào trước đó về họ. Với những hạn chế này, Nhóm Dữ liệu tập trung chủ yếu vào những người nổi tiếng, các nhà lãnh đạo quốc tế, các chính trị gia của Vương quốc Anh trong Quốc hội và Hạ viện khi đào tạo FaceRec.

Để nhận ra những người này, họ cần thu thập dữ liệu đào tạo về mỗi người - nghĩa là, rất nhiều ảnh có nhãn của người đó chỉ chứa người đó. Nhóm dữ liệu đã thu thập hàng ngàn bức ảnh và sau đó xây dựng hệ thống mặt trước của riêng họ để dễ dàng xem và gắn nhãn cho từng bức ảnh. Sự thật chưa từng thấy của học máy là việc thu thập dữ liệu chất lượng, được dán nhãn thường là phần tốn kém nhất, tốn nhiều công sức và quan trọng nhất trong việc xây dựng một hệ thống AI hoạt động tốt.

Sau khi thu thập các bức ảnh, Nhóm Dữ liệu sau đó đưa chúng vào một bộ phân loại học máy được gọi là máy vectơ hỗ trợ để tạo ra các mô hình được đào tạo. Khi được cho ăn một vectơ khuôn mặt từ SeetaFace, những người mẫu này dự đoán tên của người trong hình ảnh khuôn mặt ban đầu hoặc cho biết họ có nhận ra khuôn mặt hay không.

IRFS đã tạo hai mô hình:

  1. Mô hình lưu trữ: Những người nổi tiếng từ thế kỷ 20 trở đi được chọn bởi những người từ BBC Archive. Mô hình này chứa khoảng 1.000 người.
  2. Mô hình tin tức: Vẫn đang trong quá trình phát triển, điều này sẽ mở rộng để bao gồm hơn 2.000 thành viên của Quốc hội Anh và các hội đồng khu vực, Hạ viện và các nhà lãnh đạo toàn cầu. Hình ảnh đào tạo được lấy từ BBC News, Factual and Drama.

Những mô hình được đào tạo này sau đó được sử dụng để dự đoán những người đang theo dõi khuôn mặt trong video.

6. Theo dõi khuôn mặt cụm

Bây giờ tất cả các bản nhạc đã được dán nhãn, bước cuối cùng là thu thập tất cả các bản nhạc của cùng một người.

Để làm điều này, chúng tôi đặt tất cả video vectơ trích xuất vào một không gian vectơ, mà chúng tôi sẽ gọi là không gian mặt cho vui. Để trực quan hóa không gian mặt, chúng ta có thể sử dụng một công cụ có tên là Tensorboard, một phần của thư viện máy học Tensorflow.

Nhìn vào không gian mặt này, chúng tôi hy vọng rằng các vectơ từ cùng một người đủ gần nhau và đủ xa so với những người khác để chúng ta có thể tự động nhóm chúng lại. Điều này được biết đến trong học máy như là một vấn đề cụm.

Chúng ta có thể thấy các vectơ theo dõi khuôn mặt được chiếu vào không gian mặt này cho video Harry và Megan bên dưới. Và chúng ta thấy rằng hầu hết các bản nhạc Megan được ghép lại với nhau, làm cho chúng dễ dàng phân cụm. Đó là một cách mà chúng ta biết rằng các vectơ khuôn mặt được tạo ra đang hoạt động tốt.

Hình dung khuôn mặt với TensorBoard

Những người quen thuộc với phân cụm sẽ thấy sự khó khăn của vấn đề phân cụm khuôn mặt của chúng tôi. Đối với mỗi video, sẽ có một số cụm khác nhau có kích thước khác nhau - với rất nhiều vectơ xuất hiện một lần và không thuộc cụm nào cả.

Thay vì rơi xuống một lỗ đen bằng cách cố gắng giải quyết vấn đề này một cách hoàn hảo, Nhóm Dữ liệu đã quyết định chạy với một vài phương pháp phỏng đoán. FaceRec chia vấn đề thành hai loại riêng biệt: khuôn mặt của những người mà nó nhận ra và khuôn mặt của những người không. Đối với các khuôn mặt được nhận dạng, nó chỉ đơn giản tập hợp tất cả các dấu vết khuôn mặt lại với nhau có cùng nhãn dự đoán (tên). Đối với các khuôn mặt không được nhận dạng, nó sử dụng một kỹ thuật gọi là phân cụm theo thứ bậc trên các vectơ khuôn mặt để nhóm chúng, nhưng không cho chúng nhãn.

7. Xuất thông tin

Bước cuối cùng cho FaceRec là cung cấp tất cả thông tin được thu thập trong suốt các bước khác nhau. Điều này có ở dạng tệp JSON chứa:

Một danh sách các bản nhạc trong video. Đối với mỗi bản nhạc, nó có:

  • Người dự đoán cho ca khúc đó
  • Sự tự tin của dự đoán
  • Theo dõi UUID
  • Mặt vector cho bản nhạc đó
  • Danh sách các khung trong bản nhạc đó

Trong danh sách các khung, thông tin trên mỗi khung bao gồm:

  • Mặt vector cho khung đó nếu nó đã được phát hiện
  • Phối hợp hộp cho khuôn mặt
  • Thời gian trong video khung hình xảy ra

Chúng ta có thể làm gì với dữ liệu này? Bạn có thể kiểm tra bài blog tiếp theo của chúng tôi để xem ý tưởng của chúng tôi.

Gói (lại

Điều đó thật sự về nó. Hy vọng rằng chúng tôi đã giúp bạn hiểu được nhiều phần trong hệ thống nhận dạng khuôn mặt video. Và có lẽ chúng tôi cũng làm cho bạn ý thức hơn về tất cả những điều nặng nề và sự mơ hồ mà bộ não của bạn xử lý hàng trăm lần một ngày khi nhận ra bạn bè và những người thân yêu của bạn.

Sau khi hiểu được hoạt động bên trong của hệ thống FaceRec, nhiệm vụ của News Labs là xem công nghệ này có thể bổ sung giá trị kinh doanh trong BBC. Làm thế nào để chúng tôi thể hiện các khả năng của FaceRec với một bản demo trực quan? Những hệ thống sản xuất nào chúng ta có thể thấy FaceRec phù hợp? Nó có thể giải quyết vấn đề của ai? Và quan trọng, mọi người cảm thấy thế nào về việc sử dụng nhận diện khuôn mặt? Chúng tôi nói về những thách thức trong việc đưa ra một công nghệ mới trong một tổ chức lớn và những câu hỏi mà chúng tôi gặp phải khi phát triển một nguyên mẫu nhận dạng khuôn mặt trong Nhận diện khuôn mặt - Sử dụng nó cho Newsroom là gì?