✅ 핵심내용
이미지넷(ImageNet) 은 2010년 ILSVRC2010를 시작으로 1만 개가 넘는 카테고리에 대해 100만 장 규모의 이미지 이미지 데이터를 포함하는 데이터셋이다.
ImageNet 이 만들어진 과정 참고 동영상
링크 : https://youtu.be/40riCqvRoMs
이 데이터셋은 모으는 데서 멈추지 않고 챌린지를 위한 데이터셋으로 제공되었다. 그중 가장 유명한 테스크가 바로 우리가 많이 봐왔던 이미지 분류기(Image Classification Task) 이다.
ImageNet Pretrained Model 의 Accuracy 는 두 가지이다.
ImageNet Challenge 에서 SuperVision 팀이 전년도 대비 10%의 오류율을 낮추면서 1등을 했다. 그 비법은 바로 네트워크를 깊게 쌓는 AlexNet 을 사용했기 때문이다.
AlexNet은 8개의 레이어로 구성되어 있다. 5개의 컨볼루션 레이어와 3개의 full-connected 레이어로 구성되어 있다.
2,4,5 번째 컨볼루션 레이어들은 전 단계의 같은 채널의 특성맵들과만 연결되어 있는 반면, 3번째 컨볼루션 레이어는 전 단계의 두 채널의 특성맵들과 모두 연결되어 있다.
각 레이어에 대한 설명은 아래의 블로그 링크를 참조
VGG는 AlexNet 같이 이미지넷 챌린지에서 공개된 모델이에요. 이 모델은 2014년 이미지넷 챌린지 준우승을 거두었다. VGG 네트워크 모델은 간결한 구조로 많은 활용이 이루어졌다.
VGG 는 깊이의 영향만을 최대한 확인하고자 컨볼루션 필터 커널의 사이즈는 가장 작은 3 x 3으로 고정했다. 따라서 모든 필터 커널의 사이즈를 3 x 3으로 설정했기 때문에 레이어가 많아질 수록 늘어나는 연산량을 비슷한 수준으로 유지하였다.
각 레이어에 대한 설명은 아래의 블로그 링크를 참조
네트워크는 Gradient descent를 통해서 기울기를 학습하는데 깊은 레이어에는 데이터에 따른 차이가 충분하게 반영되지 못한다. 이것을 기울기 소실(Vanishing Grdient) 라고 한다.
Vanishing 또는 Exploding Gradient의 문제가 발생하는 원인은
아래의 그래프는 이미지넷 챌린지의 역대 모델들의 레이어 수와 오류율(error rate)의 그래프이다. ResNet의 레이어 수는 무려 152개를 넘는다.
레이어를 깊게 쌓으면서 생기는 Vanishing/Exploding Gradient 문제를 해결하기 위해서 ResNet 는 Skip Connection이라는 구조를 사용했다.
Skip Connection 은 아래처럼 레이어의 입력을 다른 곳에 이어서 Gradient가 깊은 곳까지 이어지도록 한다.
아래 그림처럼 레이어와 Skip Connection이 있는 블록을 Residual Block 이라고 한다.
우리가 봐왔던 모델이 Tensorflow의 model API와 Keras에서 어떻게 구현되어 있는지 모델 구조와 비교하며 코드를 확인했다.
CIFAR100 이미지셋 분류기의 모델을 VGG와 ResNet 으로 바꿔보는 과정을 진행했다.
자세한 내용은 아래의 GitHub 링크 참조
GitHub Link : FD19_Deep_Network.ipynb