순서상 훨씬 전에 읽었어야 했지만 이제서야 읽는, 그리고 올리는 VGG 다.
마찬가지로 제목에서부터 요약이라고 하고 있기 때문에, 이번 포스팅에서는 말 그대로 핵심만 짚는다.
이 논문은 앞에 1,2 장에 모든 핵심이 있기 때문에 정말 금방 읽었다. 어쩌면 논문을 읽느라 많이 굴림을 당해서 일지도
[논문]
https://arxiv.org/abs/1409.1556
Very Deep Convolutional Networks for Large-Scale Image Recognition
요약
이 논문이 나온 시점은 AlexNet 이후로 얼마 지나지 않았을 때다. 다들 convolution을 이용하여 image 를 분류하기 위해 혈안이 되어 있을 때라는 뜻이다. 예를 들어 어떤 연구에서는 smaller 한 window, stride 사이즈를 이용하여 기존의 AlexNet을 deform 하기도 했다. 그러는 한편 multi scale 을 처리할 수 있도록 Network를 설계하기도 했다. 그러나 본 연구에서 주목하고 있는 것은 깊이depth 이다. 딥러닝의 이름에 걸맞게, 어떻게 하면 깊은 구조를 만들 수 있을지 고민하고 있다. 이 논문에서는 크게 2개의 도약 포인트가 있다. 도약 포인트라니.. 김상욱 교수님 유튜브를 너무 봤다.
1. 답은 receptive field에 있다.
AlexNet에서는 첫번째 conv layer에서 7*7 이라는 굉장히 큰 커널을 이용한다. 즉 receptive field가 7*7이다. 이 VGG 를 설계한 사람들의 말인 즉슨, 3*3 filter를 2번 쌓은 것은 5*5 filter 하나를 쓴 것과 동일한 receptive field를 가진다는 것이다!
이게 무슨 말인고 한다면 아래의 그림을 보자.
즉 최종 output의 한 픽셀에는 이전이전 layer의 5개의 픽셀의 정보를 담고 있다는 것이다.
따라서 본 논문은 매우 큰 size의 필터를 이용하는 대신, (상하좌우의 정보를 담을 수 있는 선에서) 가장 작은 3*3 필터를 여러 개 쌓기로 한 것이다. 그렇다면 필터의 크기를 줄이면 이점이 무엇인가?
(1) 파라미터의 수가 줄어든다.
5*5 커널을 이용한다고 치자. 그러면 파라미터는 25개다. 하지만 3*3 커널을 2개 이용한다고 치자. 그러면 파라미터는? 18개다. 얼마 차이 안 나는 것처럼 보일 수 있지만 layer가 깊어진다면 그 차이가 확연히 드러날 것이다. 파리미터 수가 적기 때문에 우리의 GPU는 메모리 고생을 덜 수 있다. 메모리 고생이 적어진다는 것은 곧, 더 깊은 구조로 이어진다.
(2) non-linearty 가 쌓인다.
우리가 단순히 다층 퍼셉트론에서 노드만 연결하는 것이 아니라 activation function을 이용하는 이유는? 비선형성을 추가하기 위해서다. 비선형성이 있어야 우리는 다양한 feature를 표현할 수 있다. 5*5 커널을 하나 사용하면, 그 커널을 사용한 후에 1의 non-linearty를 쌓을 수 있다. 그러나 만약 3*3 layer 2개를 쓴다면? 동일한 receptive field를 쓰면서도, 3*3 layer 사이에 non-linearty(ReLU, Sigmoid) 를 넣으면 되니 비선형성이 늘어나, 표현할 수 있는 feature가 다양해진다.
=> 그러니까 한 마디로 가성비 갑이라는 것이다.
따라서 본 논문에서는 작은 필터를 여러 개 쌓는 전략을 택한다. 이를 통해서 깊은 아키텍처를 구현한다.
이 모델의 깊이에 따라 여러 버전이 존재한다. VGG16, VGG19. 하지만 내 기억상 둘 중에 가성비가 좋았던 건 VGG16이다. 요즘 뭐다 뭐다 해서 classification model이 많은데, 그래도 한 동안은 VGG가 오래 점령해왔다. GoogLeNet에 비해서도 더 보편적으로 이용되었다고 한다. ResNet은 성능은 좋지만 속도는 느려서 .. 그런 부담 때문에 안 쓰게 되는 경향이 있는 걸지도 모르겠지만 이건 어디까지나 내피셜이다.
요즘 가장 많이 쓰고 있는 classification backbone은 사실 mobilenet이나 efficientnet 같이 가벼운 친구들 아닐까?
시간이 남으면 kubig에서 이런 것들도 소개해주면 좋겠다.
덧으로 여기서 이용하고 있는 하나의 특징이 더 있다.
2. 1 X 1 커널
여기서는 그렇게 중요하게 많이 언급되고 있는 사항은 아니지만, 그럼에도 불구하고 이는 기억해 두어야 한다. 1*1 필터는 추후에 딥러닝을 가볍게 하려는 목적으로 많이 이용되기 때문이다. 여기서 1*1 커널을 이용한 이유는 비선형성을 추가하면서도 receptive field느 변화시키지 않기 위해서이다. 1*1 커널 자체는 linear transformation을 하는 것이고 이걸 거친 다음에 activation function을 거쳐서 non-linearty를 추가해주는 셈이다. 한편 본 논문에서는 그런 목적으로 사용하지 않았지만, 1*1 커널을 이용하면 output의 채널 사이즈를 우리가 임의로 조정할 수 있다. 뭐 그렇다고!
'딥러닝 > CV 논문' 카테고리의 다른 글
[Object Detection] CenterNet2 요약 (0) | 2022.03.21 |
---|---|
[GAN] pix2pix HD (0) | 2022.02.10 |
[Object Detection] CenterNet 요약 (0) | 2022.01.28 |
[SuperResolution] EDRS (0) | 2021.09.29 |
[Classification]FuCiTNeT (0) | 2021.09.16 |
댓글