2023.02.07 - [Project] - [2차] CNN 구조의 차량 분류 모델 연구 (2)
[2차] CNN 구조의 차량 분류 모델 연구 (2)
2023.02.07 - [Project] - [2차] CNN 구조의 차량 분류 모델 연구 (1) [2차] CNN 구조의 차량 분류 모델 연구 (1) 위 개와 고양이 이미지는 만약 이미지 분류를 했을 때, 특징이 뚜렷하여 구별이 쉽다. 하지만
zzgrworkspace.tistory.com
지난 포스트에서는 전이 학습 모델인 MobileNet, ResNet50, DenseNet121 중 MobileNet과 DenseNet121을 선정하게 된 배경까지 설명했다. 이어서 Fine tuning 진행 과정에 대해서 설명하고자 한다.
앞선 과정에서 전체 layer에 대해 trainable하게 설정하고 전이학습을 진행했는데, fine tuning을 통해서 일부 layer는 freezing 시켜서 학습되지 않고 imageNet 데이터셋을 학습할 때의 weight 값을 그대로 사용하게 만들었다. layer를 freezing 시키는 위치의 기준은 convolution 층을 기준으로 나누어서, 설정한 convolution 층부터 trainable하게 fine tuning을 진행하였다.

MobileNet은 Convolution층은 14개로 구성되어있다. 각 Convolution 층 이후부터 학습시키게 만들어서 accuracy를 측정했고, 결과가 뚜렷하게 차이 나는 8층, 47층, 84층에 대해 그래프를 그려보았다.


47층 이후부터 trainable하게 만들었을 때 가장 accuracy가 높았다. 아래 MobileNet의 layer 구조를 나타낸 것에서 일정하게 layer가 반복되는 구조인 것을 확인할 수 있다. 따라서, 47층 이전을 freezing 시켰을 때 성능이 가장 좋게 나온 이유는 다음과 같이 추측할 수 있다. MobileNet 모델이 imageNet의 데이터셋을 학습 하였고, 추출한 이미지의 포괄적인 feature를 기반으로 차량 이미지 데이터셋을 학습하였다. 여기서 차량 이미지에 대한 feature를 추출하기에 가장 적당한 기준이 47층임을 추측할 수 있었다.

DenseNet121은 MobileNet과 다르게 Convolution 층의 개수가 120개로 구성되어 있다. Convolution 층마다 fine tuning을 진행하기에 어려움이 있었다. 우선, DenseNet121도 MobileNet처럼 일정한 패턴대로 층 구조를 반복하였는지 확인해보았다.

MobileNet과 다르게 DenseNet121에는 Average Pooling 층이 3개 존재했고, 일정한 층 구조를 반복 하긴 하지만 Concatenate층이 비교적 큰 간격으로 사이사이 존재했다. Average Pooling 층이 accuracy 에 얼마나 영향을 주는지, 우선 Average Pooling 바로 이전 층인 52층, 140층, 312층과 Average Pooling 바로 이후 층인 56층, 144층, 316층에 대해 fine tuning을 진행하였고, accuracy를 비교하였다. 아래 학습 결과 그래프를 통해 Average Pooling이 accuracy를 상승시킨다는 것을 확인할 수 있었다.



MobileNet과 마찬가지로 중간층에 대해 fine tuning을 진행했을 때 성능이 가장 좋았고, 이후의 fine tuning은 중간층을 기준으로 학습했다. DenseNet121에서는 Concatenate 층을 통해 이전의 feature map을 이후의 모든 feature map과 연결하여 layer 초반의 feature를 잃지 않고 보존한다. 이를 토대로 Average Pooling 층을 통과하고, 이후 첫 Concatenate 층을 통과한 151층에 대해 fine tuning을 진행했을 때 가장 성능이 좋을 것이라고 가설을 세웠고, 이에 대한 fine tuning을 진행하였다.

예상과는 달리 concatenate층 아래의 151층보다 Average Pooling층 아래의 144층에 대해 fine tuning 을 진행했을 때 가장 성능이 좋았다. 최종적으로 MobileNet에 대한 fine tuning과 비교해보면, DenseNet 의 144층에 대해 fine tuning을 진행했을 때 train dataset에 대해 loss 0.0048, accuracy 0.9986, validation dataset에 대해 loss 0.0612, accuracy 0.9884로 가장 높은 성능을 나타냈다.
최종적으로 DenseNet121을 전이학습 모델로 선택하였고, Figure 10의 Base CNN 모델을 토대로 전이학습을 진행하였다. 144번 층 이전의 layer는 freezing하는 fine tuning을 진행하였고, compile 시 learning rate 값은 0.0001로 하였다. 최종 모델의 architecture은 아래와 같다.

댓글