모바일 얼굴인식 SDK개발[컨퍼런스 내용정리]

2024. 12. 3. 13:23전공관련 이슈 어슬렁어슬렁

728x90
반응형

https://if.kakao.com/2022/session/68 

 

1. 얼굴인식 SDK 소개(janus SDK)

예시) Kakao Enterprise 사무실 워크스루

—모바일 얼굴인식 SDK의 필요성

 

경량화 및 성능 극대화 필요

-FRT KIOSK 부분 1위에 적용된 모델은 모바일에 

적용 하기에 너무 크다.

-미국 국립표준기술연구소(NIST)의 얼굴 인식 벤더 

벤치마크 테스트

 

다양한 플랫폼 및 디바이스에 적용 가능

-각 디바이스가 가지고 있는 최고의 성능으로 동작해야 한다.

-여러 디바이스를 혼합 운영이 가능하다.

 

—주요 디바이스별 실행 속도

20fps 정도를 서비스에 원활한 속도로 볼 수 있습니다.

 

SDK가 지원하는 PlatForm

모바일과 서비환경에 필요한 Library제공

—모바일과 서버 앱 상호 운영이 일반적이다.

—모바일 앱 단독 운영 구성 가능

—서버 앱 단독 운영 구성 가능

 

2. Platform Level에서의 효율화 팁

 

얼굴 인식 SDK의 모듈 Pipeline

얼굴 영역 검출 —> 얼굴 랜드마크 검출 —> 얼굴 위조 감지 —> 얼굴 특징 생성/ 얼굴 속성 검출

 

—딥러닝 프레임워크(DL Framework)

Tensorflow-Lite를 모바일 프레임 워크로 선택한 이유

-Latency 성능이 좋다.

-다양한 백엔드(Backend) 지원

-cpu, gpu, nnapi, xnnpack, cormel etc

-Arm기반 f32에서는 xnnpack기반 backend가 좋은 성능

-최근의 Device에서 gpu기반 성능이 점점 

좋아지고 있다.

-NNAPI(Neural Network API)는 안드로이드의

표준 머신러닝 스펙이다.

-상대적으로 발열에 취약하지 않다.

-안정적인 양자화(Quatization) 지원

-다양한 플랫폼(iOS, Android, Server) 지원

 

—DL 모델의 개수를 줄여라

인식 Network과 마스크 검출 Network을 통합

-거의 마스크 검출 Network 만큼의 Latency을 적약 할 수 있었다.

-추가 코스트가 거의 없이 다른 속성들도 추가 할 수 있었다.

 

—NEON을 적극적으로 활용하라

NEON은 Arm7이 지원하는 SIMD(Single Instruction Multiple Data)

 

—NEON을 이미지 처리(Image Processing)에 적용

1. Color model conversion

2. Rotate&Flip

3. Pixel Normalization

-(0,255)->(-1.0,1.0) or (-128,127)

-1mS도 소중합니다.

 

—Pixel Normalization 최적화

통합 가능한 연산을 미리 수행(offline)

-Batch Normalization Layer의 fusing과 유사

-Quantization을 고려하여 소수점이 발생하지 않는 mean(128), std(128)을 사용함.

 

3. 양자화(Quantization)적용시의 팁

—모델 양자화(Quantization)에 의한 Latency 개선

2020년 이후의 디바이스에서는 int8과 f32의 성능 차이가 확연하다.

-GPU 보다도 좋다.

 

—양자화(Quantization)에 친화적 모델 설계 가이드

1. 네트워크의 Depth가 낮을 수록 유리

2. Width가 넓을 수록 유리

3. 우회경로(Short Connection)이 있을 수록 유리하다.

 

—레이어 분할로 양자화 성능 하락 개선

출력 특성이 다른 레이어의 물리적 분할이 양자화에 유리할 수 있다.(Post-Training Split)

 

——————————————————————————————

[Mode Optimization(속도와 퍼포먼스 사이의 최적점 찾기)]

—Overall Model Optimization Process

: Select Target Device / Search Architecture / Performance Optimization

 

—Common Model Optimization Heuristics

: Simple Computational Graph / Reduce Computational / Use Optimized Ops 

 

—Device-aware Model Optimization Heuristics

*CPU Inference-Lower FLOPS, Lower Latency

*GPU/ NPU Inference : Lower Complexity, Lower Latency

 

—Design Structure

Architecture의 구성 요소

Design

Slim Face Design

-Face Recognition은 공개된 pre-trained backbone들의 학습 환경과 크게 다르다.

-최적의 design을 위해서는? —> Re-design

 

—Design Micro-architecture

Two-Track : NAS / Simple Face

 

For CPU : NAS(Neural Architecture Search)

—NAS란?

—주어진 리소스, 데이터, 태스크에 최적화된 operation과 sturucture를 알고리즘으로 탐색

—computational graph의 각 node에서, 어떤 operation을 사용해 다음 node로 진행할지 결정

 

PNA(Proxyless Neural Architecture Adaptation)

—search space가 넓어지면 NAS의 효율은 감소

—기존 human-designed module에서 connection의 유무만을 search하여 성능 향상

—baseline 대비 skip-connection 1개 추가

—동일 연산량에서 기존 SlimFace 대비 인식 실패율 70% 감소

 

For GPU/NPU : Simple Face

—SlimFace 대비 동일 레이턴시에서 인식 실패율 75% 감소

—SlimFace 대비 동일 성능에서 inference시 속도 2배 증가

 

—Knowledge Distillation to Improve Performance

: teacher에서 student로 지식(Knowledge)을 증류(distill)하여 전달

—얼굴 인식의 전체 파이프라인에서 추출할 knowledge를 결정

: student의 학습을 방해하지 않기 위해 smoothing을 통해 soft한 지식을 전달

 

—teacher와 student의 차이가 크면 student가 제대로 배우지 못하기 때문에, student가 충분히 커야 하는 문제

—더 높은 성능을 가진 teacher보다 동일한 성능을 가진 teacher를 사용하는 것이 더 좋은 효과

—distillation 진행한 student 재차 student 써서 여러번 distillation 경우 성능 향상

728x90
반응형