Paper/Vision

GhostFaceNets: Lightweight Face RecognitionModel From Cheap Operations

룰루랄라룰루랄라 2024. 4. 17. 21:00

paperswithcode : https://paperswithcode.com/paper/ghostfacenets-lightweight-face-recognition

 

Papers with Code - GhostFaceNets: Lightweight Face Recognition Model From Cheap Operations

🏆 SOTA for Face Recognition on CFP-FF (Accuracy metric)

paperswithcode.com

 

오늘은 Face Recognition 의 GhostFaceNets 에 대하여 읽어 보았다

sota 의 상위에 올라온것 중 최근이기도 하고, ArcFace loss 를 사용했는데 기존 ArcFace 보다 더 좋았다는 것 에서 어떤 점이 다른지 알고 싶었다 

 

Abstract

딥러닝 기반의 생체 모델들이 발전하고 있고, 작은 장치에서도 사용할 수 있도록 가벼운 모델을 만드는게 하나의 과제이다

이 논문에서는 가볍고 또 성능이 좋은 모델을 만들기 위해 Ghost module 을 사용하였다

Ghost module 은 GhostNetV1, GhostNetV2 에 사용되는 모듈로 linear transformations 를 이용하였고 feature map 의 redundancy 를 줄여 준다고 한다

GhostNetV1, V2 가 GhostFaceNets 의 foundation 이다

GhostNet 에 대해서는 추후에 한번 읽어보도록 해야겠다!

이번엔 우선 대략적인 내용만 인지한 후 GhostFaceNet 을 읽었다

 

GhostNetV1 에서 장기 의존성(long-range dependencies) 를 위해 attention 메커니즘을 추가하여 확장한것이 V2 라고 한다

 

이렇게 만들어진 GhostFaceNets 은 다양한 벤치마크에서 우수한 성능을 보였고, 계산 복잡도 또한 약 60~275 사이의 MFLOPs 밖에 되지 않는다고 한다

 

학습은 ArcFace loss 기반으로 하였고, 데이터셋은 refined MS-Celeb-1M 을 사용하였다고 한다

 

Introduction

요즘은 모바일 기기의 사용이 거의 필수적이다

또한 정보 접근도 아주 쉬워서 유저나 기업들은 적절한 보안 옵션이 없다면 보안 문제와 위협에 노출될 수 있다

얼굴 검출, 인증 등 vision based task 들이 스마트폰에서 보안을 위한 인증도구로 많이 쓰이고 있다

embedding 기반의 face recognition 딥러닝 모델들은 많은 parameters 로 인해서 모바일 기기에서 쓰기에 많은 제한이 있기도 하다

최근 FR(Face Recognition)의 발전은 이러한 한계를 점점 극복하는 중 이다

 

Knowledge Distillation 을 이용해서 큰 pretrained SOTA  FR 모델에서 작은 모델로 만든다거나, 모델 자체를 quantization 해서 사이즈를 줄이는 등 여러 방법들이 있다

 

그 중 경량화 DNN 을 만드는 것이 speed-accuracy 의 균형을 개선하는 가장 유망한 방법 중 하나로 등장했다

앞서 소개한 GhostNetV1,V2 또한 최근 image classification task 에서 제안된 아주 잘 경량화된 backbone 이라고 한다

이 모델들은 더 적은 parameters 를 사용하여 더 많은 features 를 만드는 Ghost module 을 사용했고 다른 모델들 보다 성능이 좋다

 

그래서 여기서는 GhostNetV1,V2 를 적용해서 FR 필드의 backbone 으로 사용할 GhostFaceNets 을 만들기로 하였다

간단하게 보자면

1. discriminative power(분별력) 을 향상 시키기 위해 SE(Squeeze and Excitation) 모듈을 조정

2. ReLU 를 더 높은 정확도를 제공하는 PReLU 로 변경

3. 클래스간 분리성, 클래스내 압축성을 해 ArcFace loss 채택

을 적용했다

 

Validation 벤치마크에서 Sota 를 달성하고 아주 적은 계산 복잡도를 보였으며, GhostFaceNet 보다 더 계산 복잡도가 높은 compact FR/FV sota 모델과 비교했을때 유사한 결과를 달성했다고 한다

 

 

Related Work

FR 쪽에서 성능과 모델 복잡도 사이의 trade-off 균형을 잘 잡기 위한 도전을 많이 해왔다

몇가지 모델들을 살펴보자면

 

1. ShiftFaceNet

: FaceNet 에 shift 적용

: parameters 수가 거의 36.54배 줄었으나 정확도도 떨어짐

 

2. MobileFaceNet

: MobileNetV2 를 기반

: 비선형 활성화 함수로 PReLU 사용

: 더 분별력 있는 face representation 을 위해 GAP(Global Average Pooling)을 GDC(Global Depthwisw Convolution)으로 대체

: sota 성능 달성, 실시간 임베드디 장치에도 적합한 크기

 

3. ShuffleFaceNet

: ShuffleNetV2 를 기반

: 비선형 활성화 함수로 PReLU 사용 하여 fine tuning

: GAP 대신 GDC 사용

: MobileFaceNet 보다 크기는 좀 크지만 정확도는 더 높음

 

4. VarGFaceNet

: VarGNet 을 기반

: 처음에 SE module 을 임베딩 블럭으로 추가

: 비선형 활성화 함수로 PReLU 사용

: VarGNet 의 downsampling 제거

: parameters 감소를 위해 fully connected 전에 다양한 group convolution 사용

: 일반화 성능을 올리기 위해 recusive KD( Knowledge Distillation ) 제안

: 성능은 완전 sota 지만 크기가 MobileFaceNet 이나 ShuffleFaceNet 보다 큼

 

5. AirFace

: MobileFaceNet 구조 채택

: 모든 bottleneck 에 convolution block attention module 을 추가하여 구조 수정

: Arcface loss 의 cosine function 을 linear function 으로 대체한 Li-ArcFace loss 사용

 

6. QuantFace

: 정확도가 감소되는 것을 줄이기 위해 GAN 으로 만든 얼굴 데이터를 사용하여 quantized 모델과 그것의 parameters 를 수정하는 KD 사용을 제안

 

7. PocketNets

: 사람이 설계해야하는 network 와 어떻게 효율적으로 학습할지에 대한 것을 자동화 해주는 NAS 를 이용 

 

 

GhostFaceNets

 

이제 GhostFaceNets 에 대하여 본격적으로 살펴보자

앞 부분에 Ghost module, GhostNetV1,V2 에 대한 간략한 부분이 있지만 다음에 논문을 따로 읽으면서 다루도록 하겠다

 

GhostFaceNets 은 FR/FV 에서 경량화된 모델을 만들기 위해 이전 GhostNetV1,V2 를 기반으로 디자인한 모델이다

제안된 주요 수정사항들은 이렇다

1. 1x1 convolution layer(pointwise convolution layer), GAP layer, FC layer 를 지우고 modified GDC recognition head 적용

2. 활성화 함수를 ReLU 에서 PReLU 로 교체

3. 분별력을 높이기 위해 SE modules 의 conventional FC layer 를 convolution layer 로 교체하여 조정

4. ArcFace loss 사용

 

이미 설계된 GhostNet 을 사용할 수 도 있었겠지만, image classification 을 위해 디자인된 network 들은 embedding process 의 feature vector 로 GAP출력을 사용하는데, 이것이 FR/FV 에서는 효과적이지 못하다고 한다

왜냐하면, GAP layer 는 face feature vector 를 추출할때 "다른 종류의 units 은 다른 양의 식별 정보를 가져온다" 는 이론과 다르게 출력 feature map 의 각 unit 을 동등하게 취급하기 때문이다!

대신 FC layer 를 사용해서 이런 unit 에 대한 다양한 가중치를 학습한 다음 해당 knowledge 를 작은 facial feature vector 에 투영할 수 있다고 한다..

하지만 FC layer 는 모델을 크게 만들 뿐 아니라, 추가적인 processing power 도 필요하다는 문제가 있다

 

결국 다양한 output featrue map units 을 다양한 relevance 수준으로 처리하여 FR 에 효과적인 구조라는 것이 입증된 GDC layer 를 사용하게 되었다

여기서 사용하는 modified GDC 는 7x7 kernel 크기의 GDC layer 와 batch normalization layer 로 구성 된다

1x1xembeddingsize 의 convolution layer 는 원하는 embedding vector 를 만드는데 적용 된다

flatten layer, batch normalization layer, linear activation function 을 추가해서 512 차원의 embedding vector 를 생성한다

 

ReLU 대신 PReLU 를 사용하는 것은 MobileFaceNets, ShuffleFaceNet, VarGFaceNet, Mix-FaceNets 등에서 더욱 효과적임이 입증되었기 때문에 적용하였다

 

SE module
modified SE module

사진에서 보이듯이 FC 를 Convolution 으로 교체 하여 사용하였다

첫번째 1x1 convolution 과 PReLU 를 이용하여 squeeze operation 을 하고

두번째 1x1 convolution 을 이용하여 excitation operation 을 한 후 sigmoid 를 적용해 주었다

이러한 channel attention mechanism 을 통해 더 중요한 feature 에 더 잘 반응하도록 channel weight 를 조정하였다

 

마지막으로 여러 연구에서 클래스간 분별력과 클래스내의 압축성에 효과적임이 입증된 ArcFace loss 를 채택하였다

 

Experiments , Conclusion

 

높은 정확도와 얼굴 인식 모델로 효과적인 GhostFaceNets 를 소개하였다

LFW, CFP_FP 등 Verification  데이터와 IJB, Megaface 등 잘 알려진 데이터셋에 대하여 앞서 소개한 모델들 및 그 외 모델들과 비교하였을때

전체적으로 성능이 아주 좋다는 것을 보여 주었다

 

 

 

다른 task 목적으로 만들어진 backbone 에서 여러 수정을 통해 또 다른 task 에 적합한 모델이 될 수 있다는 점이 재미 있었다

MobileFaceNet 은 많이 사용해보았었는데 다음엔 GhostFaceNet 또한 사용해보고 싶다

GhostNet 와 Ghost module 에 대해 대략적으로만 알고 논문을 읽었지만 쉽게 잘 읽혀서 좋았다

다음엔 GhostNet 논문도 읽어 보아야 겠다!