On-device Face Recognition의 타당성 검토에 대한 실험

박재훈

박재훈

2021년 4월 12일 (월)

Alchera Client Team에서 얼굴인식 출입 시스템을 개발하던 중, 서버에 얼굴인식을 요청, 결과를 전달받는 방식이 아닌 디바이스 자체적으로 얼굴인식을 수행하는 온디바이스(On-device) 얼굴인식의 가능성을 검토하기 위해 수행한 실험의 결과를 공유하고자 작성하였습니다.

알체라 얼굴출입 시스템

현재 Alchera의 각 출입문에는 Client Team에서 개발한 얼굴인식 출입시스템이 도입되어 있습니다.
출입시스템 설치 이후 많은 분이 사용해주셨고, 사용 경험에 대한 설문조사를 통해 소중한 의견을 받을 수 있었습니다.
시스템의 아쉬운 사항에 대한 여러 의견 중 가장 많은 부분을 차지한 것은 워크스루(Walkthrough) 기능에 부족함이 있다는 것이었습니다.

 

 

[그림 1] 출입시스템 설문조사 결과

 

워크스루를 지향하는 시스템임에도 이따금 출입문에 가까워지거나 출입문을 지난 뒤에서야 인식 성공이 되는 등 워크스루 경험을 충족하기에 얼굴인식 속도가 조금 부족하다는 점이었습니다.


해결법 고안

이러한 문제를 클라이언트 단에서 해결하는 방법으로 서버에 얼굴인식 요청하는 대신 클라이언트 단에서 자체적으로 얼굴인식을 수행하여 서버 통신 지연시간을 없애는 것을 고안했고, 타당성을 검증하기 위한 실험을 진행하였습니다.

현재 방식인 서버를 통한 얼굴인식은 물론 여러 장점이 있으므로 사용 중입니다.

1.  컴퓨팅 파워가 보장된 서버가 디바이스 대신 얼굴인식을 수행하기 때문에 낮은 스펙의 모바일 디바이스에서도 안정적인 인식 속도 및 정확도를 취득 가능
2.  새로운 Client application을 개발할 때마다 얼굴인식기능을 구현/기존에 구현한 것을 이식할 필요 없이 안정화된 서버 API를 사용함으로써 개발효율 증대
3.  많은 양의 얼굴 database를 디바이스에서 관리하기 쉽지 않음

하지만 다음과 같이 사용에 어려움이 있는 때도 있습니다.

1.  네트워크가 불안정하여 만족스러운 인식속도를 얻지 못하는 설치환경
2.  네트워크 연결이 불가능한 경우
3.  서버 통신 지연시간조차 아쉬운 빠른 인식속도를 필요로 하는 경우

알체라의 출입시스템의 경우 워크스루로 동작해야 하므로 사용자가 출입문과 가까워지기 전에 빠르게 인식하여 결과를 통보하고 출입문을 개/폐 할 필요가 있고, 이는 3의 상황에 해당되게 됩니다.

Client Team에서는 해당 문제를 해결하기 위한 방법의하나로 얼굴인식을 서버에 요청하는 것이 아닌 디바이스 내부에서 직접 수행하는 온디바이스 얼굴인식 방식을 고안하였습니다

추가로, Alchera Face Analysis Lab에서 기존의 얼굴인식 연산법을 개선한 새로운 연산법을 전달받아 어플리케이션에 도입하였습니다.


인식 프로세스 변경점

 

 

[그림 2] 기존의 얼굴인식 프로세스(왼쪽)과 온디바이스 얼굴인식 프로세스(오른쪽)
 

얼굴인식 수행마다 서버에서 얼굴 데이터 집합을 받아 어플리케이션에서 사용할 수 있도록 데이터를 가공, 사용하는 것은 말이 필요 없을정도로 느립니다.
이에 먼저 서버에서 미리 인식에 필요한 얼굴 데이터 집합을 받아 필요에 맞게 가공하여 저장해 둡니다.

이후 인식을 시작하고 카메라 이미지에서 적절한 얼굴을 찾은 경우, 디바이스 자체적으로 해당 얼굴의 특징점을 추출합니다. 그리고 미리 저장한 얼굴 데이터 집합의 얼굴 특징점들과 비교하여 인식 결과를 얻고 출입시스템에 맞게 사용합니다.


얼굴인식 연산 변경점

기본적으로 두 개의 얼굴의 유사도는 두 얼굴의 특징점 벡터를 추출, 추출한 두 개의 특징점 벡터를 내적하여 얻은 값을 사용하여 얻습니다.전통적인 얼굴비교 방식으로는 N개의 얼굴 특징점 데이터를 일일이 순회하여 인증할 얼굴과 1:1로 비교, 이 중 가장 유사한 얼굴을 얻는 것이었습니다.

 

 

[그림 3] 기존의 얼굴인식 연산식

하지만 개선된 방식은 얼굴 특징점 데이터가 하나의 벡터임을 이용하여 N개의 특징점을 하나의 행렬로 합성, 인증할 특징점을 한 번에 비교합니다.

 

 

[그림 4] 새로 도입한 얼굴인식 연산식

이처럼 N개의 데이터와 한 개의 얼굴을 동시에 비교함으로써 빠른 연산결과를 얻을 수 있습니다. (물론 실제 구현, 동작 방식, 효율적으로 응용하기 위한 추가적인 구현이 있지만 넘어가겠습니다…)


실험 및 결과

다음의 3가지 실험을 수행하였습니다.

1.    온디바이스 방식에서 기존 얼굴인식방법 vs. 새로운 얼굴인식방법
2.   서버 요청을 사용한 얼굴인식 vs. 온디바이스 얼굴인식
3.   디바이스 별 인식속도 + 비교 데이터 증가에 따른 인식속도 증가율

실험에는 Android OS를 사용하는 Galaxy S5e Tablet, Galaxy S9+ Smartphone 두 가지 디바이스를 사용하였습니다.
온디바이스 방식에서 기존 얼굴인식방법 vs. 새로운 얼굴인식방법
2000개의 얼굴 데이터에서 기존의 얼굴인식방법과 새로운 연산법을 비교 실험한 결과입니다.

 

 

[그림 6] 서버 요청을 사용한 얼굴인식과 온디바이스 얼굴인식의 인식시간

온디바이스 방식이 인식된 얼굴의 특징점을 추출하는데 시간 소요가 많음에도, 빠른 얼굴인식연산으로 서버통신 방식보다 느리지 않은 것을 볼 수 있습니다. 또한 디바이스 스펙이 충분한 경우 더 빠른 결과를 보여주는 것을 볼 수 있습니다.

디바이스 별 인식속도 + 비교 데이터 증가에 따른 인식속도 증가율
마지막으로 최대 25,000개의 얼굴 데이터에서 온디바이스 방식의 실험을 수행한 결과입니다

 

[그림 8] 데이터 증가에 따른 인식에 필요한 각 연산(특징점 추출, 특징점 간 비교)의 소요시간

 

데이터양이 매우 증가했음에도 연산시간은 매우 낮은 비율로 증가했으며 전체 얼굴인식 연산시간에 큰 영향을 미치지 않음을 볼 수 있습니다.
온디바이스 얼굴인식의 문제점으로 추측했던 서버보다 낮은 컴퓨팅 파워와 이로 인한 낮은 연산속도 및 취급 가능한 데이터 양의 한계를 새로운 얼굴인식 연산법으로 극복할 수 있음을 확인하였습니다.

종합적인 성능측정 결과 서버통신 방식을 대체할 수 있을만한 결과를 볼 수 있습니다.
다만 아직 할 일이 많습니다. 실험 결과를 상품에 녹여낼 수 있도록 정리해야 하고 여러 디바이스에서도 안정적으로 동작하도록 하는 안정화, 서버가 해주던 얼굴 데이터 베이스 동기화 구현의 이식 등의 작업을 수행해야 합니다.

알체라의 얼굴인식 기술력은 이미 검증된 훌륭한 기술입니다. 하지만 개발할 상품의 성격에 맞춰 기술을 상품에 적용하는 것은 상품개발자의 역량입니다.
이번 실험도 워크스루라는 상품의 특성에 맞춰 얼굴인식 기술을 출입시스템에 적용하기 위한 노력의 과정 중 하나였습니다. 이렇게 알체라의 훌륭한 얼굴인식 기술을 어느 상품에든 녹여내기 위해 Client Team은 오늘도 열심히 머리와 키보드를 두들기고 있습니다.

 

 

 

...

...