일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 논문
- 논문리뷰
- Java
- 관심사분리
- deeplearning
- 알렉스넷
- 짝지어제거하기
- Alexnet
- 백준
- 다익스트라
- cs231n
- 머신러닝
- 백준 1339
- NLP
- 1916
- 딥러닝
- MachineLearning
- 클린코드
- 백준9095
- 논문구현
- 자바
- 3745
- GPT
- 1261
- 백준 1339 자바
- 알고리즘
- 1107번
- dijkstra
- 백준 1916 자바
- 디미터법칙
- Today
- Total
산 넘어 산 개발일지
[논문 구현] AlexNet(2012) 구현 본문
논문에 대한 자세한 내용은 여기에 정리해놨다.
2021.08.05 - [논문 리뷰/CV] - [논문 리뷰] AlexNet(2012) 요약 및 리뷰
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을 쌓아 올려보면서 다음과 같은 특징들이 있다는 것을 발견했다.
- 5개의 Conv. layer 사용
- 필터의 개수 : 96 -> 256 -> 384 -> 256
- 맨 처음 Conv. layer를 제외하고는 모두 padding을 주어 이미지 사이즈가 줄어들지 않는다.
- 이미지 사이즈는 오로지 MaxPooling으로만 줄인다.
- MaxPooling 시 OverlapPooling을 사용한다! => pool_size=(3,3), strides=(2,2)
- 항상 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
'논문 리뷰 > CV' 카테고리의 다른 글
[논문 구현] VGG19(ICLR 2015) 구현 (0) | 2021.09.16 |
---|---|
[논문 리뷰] VGG16(ICLR 2015) 요약 및 리뷰 (0) | 2021.09.06 |
[논문 리뷰] AlexNet(2012) 요약 및 리뷰 (0) | 2021.08.05 |