BBC R & D의 비디오 얼굴 인식에 대한 간단한 안내서

종종 배후에서 가장 복잡한 처리가 필요한 것은 생각없이 인간이하는 일입니다. 음식을 맛보고, 친구들과 채팅하고, 음악을 듣고, 실제로 사람들을 인식합니다. Eastenders 에피소드를 볼 때 각기 다른 각도에서 다른 조명으로 다른 배우를 볼 수 있지만, 두뇌는 이러한 변형을 즉시 처리하여 장면에서 Dot Cotton 및 Phil Mitchell임을 알 수 있습니다. 우리는 관련된 처리에 대해 생각하지 않기 때문에 이러한 작업이 기계 학습에 적용하려고 할 때 처음 생각했던 것보다 훨씬 복잡하다는 사실에 놀랐습니다.

거리에서 Harry Prince와 Megan Markle의 다음 이미지를 가져옵니다. 앞, 옆, 뒤 등 다양한 각도에서 Harry와 Megan을 볼 수 있지만 피부색, 머리 색 등의 특징에서 쉽게 인식 할 수 있습니다. 우리는 또한 특정한 사회적 신호를 고려하고 있습니다. 관중들은 그들을보고, 옷을 잘 입었고, 모든 장면의 중심에 있으며, 같은 장면에서 나온 장면의 명백한 연속성이 있습니다. 여기에는 문화적 지표뿐만 아니라 물리적 지표도 감지 할 때 생각조차하지 않는 인간 직관의 계층이 많이 있습니다.

우리는 해리와 메건을 자연스럽게 인식합니다.

그렇다면 어떻게 컴퓨터에게이 모든 것을 배우도록 가르치는가? 사람처럼 생각할 수있는 알고리즘을 얻을 수는 없지만 머신 러닝이 가장 잘하는 일을 수행 할 수 있습니다. 라벨이있는 큰 데이터 세트에서 패턴을 감지합니다. 여기에는 이미지 수집, 알고리즘 교육, 비디오 처리 및 이미지 인식이 포함됩니다. 최종 출력은 비디오에서 인식 된 사람들의 목록과 그들이 나타나는 프레임의 시간 및 위치입니다.

우리는 이미 BBC에서이 기술을 구축하기 위해 노력하고 있습니다. FaceRec이라는 시스템은 BBC Research and Development 내의 인터넷 리서치 및 미래 서비스 데이터 팀에 의해 개발되고 있습니다 (일부 키 입력을 저장하고 여기서부터 데이터 팀이라고 함). 사내 코드와 외부 오픈 소스 소프트웨어, 특히 C ++ 얼굴 인식 엔진 인 Seetaface를 조합하여 구축되었습니다.

FaceRec은 일련의 알고리즘 단계를 통해 비디오를 처리하여 작동하며, 각 단계는 전체 문제의 특정 부분을 해결합니다. 모든 작동 방식에 대한 개요를 알려 드리겠습니다.

1. 샷 감지

비디오에서 각 얼굴을 감지하려면 먼저 비디오를 구성 샷으로 분할해야합니다 (샷은 중단없는 시간 동안 실행되는 일련의 프레임으로 정의 됨). 이를 위해 FaceRec는 미디어 처리 라이브러리 FFmpeg를 사용합니다.이 기능은 지정된 비디오 내에서 모든 샷의 시작 및 종료 시간을 반환하는 기능을 사용합니다.

2. 얼굴 감지

다음 단계는 각 프레임에 사람의 얼굴이 포함되어 있는지 확인하는 것입니다. 이것은 까다로운 문제입니다. 축구 경기에서 모든 얼굴을 감지해야합니까? 티셔츠의 얼굴이 중요합니까? 신문 앞면에 사진이 있습니까?

각 샷을 반복하면서 FaceRec는 샷에서 프레임을 가져와 SeetaFace에 공급 한 다음 얼굴이 생각되는 위치의 경계 상자를 반환합니다. SeetaFace의 얼굴 감지 엔진은 얼굴이 출력에 포함하기에 충분한 "수"를 식별합니다. SeetaFace는 탐지 된 사람들이 누구라고 생각 하는지를 말하는 것이 아니라 단지 프레임 내 주어진 위치에서 얼굴을 탐지했다고 생각한다는 점에 유의하십시오.

3. 얼굴 트랙 만들기

이제 얼굴이 포함 된 모든 프레임을 수집 했으므로 다음 작업은 이러한 감지 된 얼굴을 함께 연결하여 얼굴 트랙을 만드는 것입니다. 페이스 트랙은 샷 프레임 내에서 움직일 때 얼굴 주위에 경계 상자가 연속적으로 흐르는 것입니다.

FaceRec은 각면 경계 상자를 가져 와서 다음 프레임의 다음 논리 경계 상자에 매핑하려고합니다. 한 사람이 다른 사람 뒤로 이동함에 따라 얼굴이 일시적으로 가려 지거나 경계 상자가 서로 교차 할 수 있기 때문에 이것이 항상 명백한 것은 아닙니다.

경계 상자는 샷을 통해 얼굴을 추적

후드에서이 문제는 Dlib과 Lucas-Kanade 방법을 사용하여 해결됩니다. 이렇게하면 시점, 프레임 목록 및면의 경계 상자로 정의 된 얼굴 트랙이 만들어집니다.

4. 트랙의 얼굴 벡터 만들기

기계 학습 알고리즘은 종종 입력 자료를 수학 벡터로 변환하여 작동합니다. 그런 다음이 "벡터 공간"의 어느 부분이 특정 범주 또는 입력 유형에 속하는지 배웁니다. 얼굴면에서 해리 왕자의 얼굴을 나타내는 벡터는 특정 영역에있는 경향이 있고 Megan 벡터는 다른 섹션에있는 경향이 있다는 것을 알게됩니다. 윌리엄 왕자의 얼굴 벡터는이 공간에서 메간보다 해리와 더 가까울 것으로 예상됩니다. 그것들은 서로 관련이 있고 비슷한 특성을 공유하기 때문입니다.

탐지 된 얼굴에 대한 벡터를 생성하기 위해 FaceRec은 SeetaFace의 얼굴 식별 라이브러리를 사용합니다. FaceRec는 얼굴 트랙의 중간 지점에서 경계 상자 내에서 감지 된 얼굴의 잘린 사진을 피드합니다. 해당면의 특징을 나타내는 2024 차원 벡터를 다시받습니다.

5. 얼굴 트랙 벡터에서 사람들의 얼굴 인식

감지 된 얼굴 트랙마다 얼굴 벡터가 생겼습니다. 다음 단계는 이러한 벡터를 인식 된 얼굴의 실제 이름으로 바꾸고 인식 할 수없는 얼굴에 플래그를 지정하여 레이블을 지정할 수 없습니다.

여기서 첫 번째 질문은 우리가 누구를 인식 하는가하는 것입니다. 우리는 살았던 사람과 우리가 원하지 않는 사람을 모두 인식 할 수있는 모델을 만들 수 없습니다. 그렇다면이 얼굴 인식 시스템에 대해 누가 중요하다고 생각합니까?

현실적으로, 이것은 BBC News의 언론인과 그들이 가장 일반적으로보고하는 사람들이 주도해야합니다. 우리는 또한 알려지지 않은 사람들이 매일 뉴스를 만들고 있다는 사실을 알고 있어야합니다. 이러한 한계를 염두에두고, 데이터 팀은 FaceRec를 훈련 할 때 주로 유명 인사, 국제 지도자, 의회의 영국 정치인 및 하원에 중점을 두었습니다.

이 사람들을 알아보기 위해서는 각 사람에 대한 훈련 데이터를 수집해야했습니다. 데이터 팀은 수천 장의 사진을 수집 한 다음 개별 사진을 쉽게보고 레이블을 지정할 수있는 자체 프런트 엔드 시스템을 구축했습니다. 머신 러닝의 비현실적인 사실은 양질의 라벨링 된 데이터를 수집하는 것이 제대로 작동하는 AI 시스템을 구축 할 때 가장 비싸고 힘들고 여전히 중요한 부분이라는 것입니다.

데이터 팀은 사진을 수집 한 후이를 지원 벡터 머신이라고하는 기계 학습 분류기로 공급하여 훈련 된 모델을 만듭니다. SeetaFace에서 얼굴 벡터를 먹었을 때,이 모델들은 원래 얼굴 이미지에서 사람의 이름을 예측하거나 얼굴을 전혀 인식하지 못하는지 여부를 말합니다.

IRFS는 두 가지 모델을 만들었습니다.

  1. 아카이브 모델 : 20 세기 이후 BBC 아카이브의 사람들이 선택한 유명인. 이 모델에는 약 1,000 명이 포함되어 있습니다.
  2. 뉴스 모델 : 아직 개발 중이지만, 영국 의회와 지역 의회, 하원 및 세계 지도자의 2,000 명이 넘는 회원으로 확대 될 것입니다. 교육 이미지는 BBC News, Factual 및 Drama에서 제공했습니다.

그런 다음이 훈련 된 모델을 사용하여 비디오에서 얼굴 트랙에있는 사람을 예측합니다.

6. 클러스터 얼굴 트랙

모든 얼굴 트랙에 레이블이 지정되었으므로 마지막 단계는 같은 사람의 모든 트랙을 수집하는 것입니다.

이를 위해 비디오에서 추출한 얼굴 벡터를 모두 하나의 벡터 공간에 넣습니다.이를 재미있게 얼굴 공간이라고합니다. 얼굴 공간을 시각화하기 위해 기계 학습 라이브러리 Tensorflow의 일부인 Tensorboard라는 도구를 사용할 수 있습니다.

이 얼굴 공간을 살펴보면 같은 사람의 벡터가 서로 자동으로 그룹화 할 수있을 정도로 서로 가깝고 멀리 떨어져 있기를 바랍니다. 이것은 기계 학습에서 클러스터링 문제로 알려져 있습니다.

아래의 Harry and Megan 비디오를 위해이 페이스 스페이스에 투영 된 페이스 트랙 벡터를 볼 수 있습니다. 그리고 우리는 대부분의 Megan 트랙이 묶여있어 쉽게 묶을 수 있습니다. 그것이 만든 얼굴 벡터가 잘 작동한다는 것을 우리가 아는 한 가지 방법입니다.

TensorBoard로 얼굴 시각화

클러스터링에 익숙한 사람들은 얼굴 클러스터 문제의 어려움을 보게 될 것입니다. 모든 비디오에 대해 다양한 크기의 다양한 클러스터가있을 것입니다. 많은 벡터가 한 번 나타나고 전혀 클러스터에 속하지 않습니다.

데이터 팀은이 문제를 완벽하게 해결하여 암홀을 허비하는 대신 몇 가지 휴리스틱을 사용하기로 결정했습니다. FaceRec는 문제를 인식하는 사람들의 얼굴과 그렇지 않은 사람들의 얼굴로 구분합니다. 인식 된 얼굴의 경우 동일한 예측 레이블 (이름)을 가진 모든 얼굴 트랙을 모으기 만하면됩니다. 인식되지 않는 얼굴의 경우 얼굴 벡터에 계층 적 클러스터링이라는 기술을 사용하여 얼굴 벡터를 그룹화하지만 레이블은 제공하지 않습니다.

7. 정보 출력

FaceRec의 마지막 단계는 여러 단계에서 수집 된 모든 정보를 제공하는 것입니다. 이것은 다음을 포함하는 JSON 파일 형식으로 제공됩니다.

비디오의 트랙 목록. 각 트랙마다 다음이 있습니다.

  • 해당 트랙의 예측 된 사람
  • 예측의 자신감
  • UUID 추적
  • 해당 트랙의 얼굴 벡터
  • 해당 트랙의 프레임 목록

프레임 목록에서 각 프레임의 정보에는 다음이 포함됩니다.

  • 해당 프레임의 얼굴 벡터가 감지 된 경우
  • 면의 경계 상자 좌표
  • 비디오에서 프레임이 발생하는 시간

이 데이터로 무엇을 할 수 있습니까? 다음 블로그 게시물을 확인하여 아이디어를 볼 수 있습니다.

마무리

그게 진짜야 비디오 얼굴 인식 시스템에 들어가는 많은 부분을 이해하는 데 도움이 되었기를 바랍니다. 또한 친구와 사랑하는 사람을 인식 할 때 매일 자신의 두뇌가 수백 번 처리하는 모든 무거운 물건과 모호성을 더 의식하게 만들었을 것입니다.

FaceRec 시스템의 내부 작업을 이해 한 후 News Labs의 임무는이 기술이 BBC 내에서 비즈니스 가치를 추가 할 수있는 위치를 확인하는 것이 었습니다. 직관적 인 데모를 통해 FaceRec의 능력을 어떻게 보여줍니까? FaceRec에 적합한 생산 시스템은 무엇입니까? 누가 워크 플로 문제를 해결할 수 있습니까? 그리고 중요한 것은 사람들이 얼굴 인식 사용에 대해 어떻게 느끼는가? 우리는 대규모 조직 내에서 새로운 기술을 출시하는 데 따른 과제와“얼굴 인식 – 뉴스 룸에 어떤 용도로 사용됩니까?”에서 안면 인식 프로토 타입을 개발할 때 직면 한 질문에 대해 이야기합니다.