C3AE
본 포스팅은 C3AE 모델에 대해 공유합니다.
등장 배경
C3AE(Compact yet efficient Cascade Context-based Age Estimation model)은 거리 계산 방법으로 나이를 추정하는 작은 모델입니다[1]. 저자는 적은 파라미터와 작은 크기의 이미지로도 나이 예측이 가능한 모델을 만들고자 했습니다. 해당 모델은 0.25MB로 파라미터 수가 적고(VGG-16이 약 528MB임[3]), 작은 크기의 이미지로 좋은 성능을 내는 것이 목표입니다.
모델 구조
모델의 구조는 다음과 같습니다. compact plain model이라고 부르며, 합성곱 연산과 FC layer로 구성되어 있습니다[2]. 이 모델의 입력으로 3가지 크기의 이미지를 넣으며, 각 출력을 합쳐서 나이 예측 층의 입력으로 넣습니다. loss는 거리를 계산 시 나오는 손실과 이미지의 MAE 손실을 합하여 사용합니다.
학습 과정
나이 예측을 하기 위해 모델이 학습하는 과정은 다음과 같습니다.
- 나이대 별로 0세-9세 , 10세-19세 이렇게 10씩 묶어서 0세부터 99세까지 구간을 나눠줍니다.
- 이미지에 대해 합성곱 연산을 하고, linear를 통과 시켜서 예측 포인트(나이)를 2개 추출합니다.
- 예측한 포인트를 해당 나이대에서 양 끝으로부터 거리가 얼마나 되는지 가중치를 이용하여 계산합니다.
$\lambda$는 가중치로, 다음 식을 통해 구할 수 있습니다. $\lambda1$은 최소점으로부터 구한 것이고, $\lambda2$는 최대점으로부터 구한 것입니다.
[공식 요소]
Yn : 실제 나이(정답값)
Zn1 : 구간의 최소점
Zn2 : 구간의 최대점
K : 구간 간격 (10 or 20 이용)
다음 그림은 예측 나이가 68세와 74세인 예시인데, 68세를 기준으로 한 설명입니다. 첫번째를 보면 68세의 Zn1은 60, Zn2는 70입니다.
두 번째는 K가 10인 경우입니다. 68세에서 각 가중치는 식을 적용하여 1-(68-60)/10 = 0.2 과 1-(70-68)/10 = 0.8로 구할 수 있습니다. 따라서, 해당 나이는 60 * 0.2 + 70 * 0.8 = 12 + 56 = 68입니다.
세 번째는 K가 20인 경우입니다. 10일때와 마찬가지로 공식을 통해 가중치를 구하면 1-(68-60)/20 = 0.6 , 1-(80-68)/20 = 0.4가 됩니다. 따라서, 해당 나이는 60 * 0.6 + 80 * 0.4 = 36 + 32 = 68입니다.
참고
[1] 논문
[2] 요약
[3] VGG-16 모델 파일 크기