산 넘어 산 개발일지

[논문 구현] AlexNet(2012) 구현 본문

논문 리뷰/CV

[논문 구현] AlexNet(2012) 구현

Mountain96 2021. 8. 10. 15:39

논문에 대한 자세한 내용은 여기에 정리해놨다.

2021.08.05 - [논문 리뷰/CV] - [논문 리뷰] AlexNet(2012) 요약 및 리뷰

 

[논문 리뷰] AlexNet(2012) 요약 및 리뷰

서론 배경 객체탐지를 위해서는 많은 데이터셋, 더 강력한 모델, overfitting을 피하기 위한 발달된 기법이 필요하다. 이 중 데이터셋의 경우 기존에는 적은 양의 데이터셋에만 접근이 가능했지만(2

mountain96.tistory.com

1. Dataset

  Keras를 사용하여 CIFAR-10 데이터셋을 불러온다.

  이후, 이를 validation 과 train set으로 각각 분리해주고, Tensorflow에 사용하기 용이한 tf.dataDataset으로 바꿔준다.

    => tf.data.Dataset.from_tensor_slices() 사용

2. Preprocessing(전처리)

  우선, 내가 가져온 이미지들이 정상적인지 확인하는 작업이 필요하다.

  그리고나서, 이미지를 standardize해주고, 이미지 사이즈를 32x32 에서 AlexNet이 사용하는 227x227로 변경해준다.

3. Data/Input Pipeline

  Pipeline : 처리해야할 일은 순차적으로 명시한 것. 즉 연쇄적인 일들을 정리해놓은 것이다.

  Input pipeline에는 [데이터 전처리, 셔플, 배치사이즈만큼 뽑기] 의 작업들이 들어간다

Model 구조

  AlexNet에 맞게 모델을 설계한다.

  AlexNet을 쌓아 올려보면서 다음과 같은 특징들이 있다는 것을 발견했다.

  1. 5개의 Conv. layer 사용
  2. 필터의 개수 : 96 -> 256 -> 384 -> 256
  3. 맨 처음 Conv. layer를 제외하고는 모두 padding을 주어 이미지 사이즈가 줄어들지 않는다.
  4. 이미지 사이즈는 오로지 MaxPooling으로만 줄인다.
  5. MaxPooling 시 OverlapPooling을 사용한다! => pool_size=(3,3), strides=(2,2)
  6. 항상 Conv. layer 뒤엔 Batch Normalization을 적용해주었다.

4. Monitoring

  Tensorboard를 활용하여 훈련이 어떻게 진행되었는지를 확인할 수 있도록 설정한다.

5. Compile / fit

  Optimizer로는 SGD를 사용하였다.

6. Evaluation

  Test데이터를 사용하여 모델의 성능을 평가해본다.

7. Tensorboard 확인

  찍힌 Tensorboard를 확인해본다.

도중에 overfit되는 것을 볼 수 있다.

왜 내 모델만 유독 overfit되는지 모르겠는데, data augmentation을 사용하지 않은 점에서 overfitting이 나지 않았나 싶다.


Reference

https://papers.nips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf

Comments