Computer Vision/image classification
image classification
GoogleNet
구글에서 발표한 Inception계통의 network
1x1 Convolution을 통해서 연산량을 줄였다.
1x1 Convolution
-
Channel 수 조절
파라미터의 수가 급격하게 증가한느 것을 예방하기 때문에, channel수를 조절할 수 있다.
-
계산량 감소
channel수를 조절할 수 있기 때문에, 계산량 자체도 감소할 수 있다.
1x1 convolution의 채널수를 줄였다가 늘였다 하는 구조는 Bottleneck구조라고 부른다.
-
비선형성
파라미터 수가 감소하게 됨에 따라, 모델을 더 깊게 구성할 수 있고,
이는 비선형성 활성화 함수를 더 많이 사용할 수 있음을 의미한다.즉, 더 구체적인 패턴을 파악할 수 있게 된다.
Auxiliary classifier
vanishing gradient 문제를 해결하기 위한 방법이다.
lower layers에 추가적인 gradients를 주입시킨다.
학습시에만 사용하는 방법이다.
ResNet
최초로 깊은 layer를 쌓은 network
VGGNet보다 8배정도 깊은 층 수.
network가 깊어질 수록 정확도가 높아지지 않고 최적화가 안된다.
이는 degrade rapidly문제이며, overfitting에 의한 문제는 아니였다.(최적화에 의한 문제)
Residual block을 이용해서 그 자신에 대한 identity mapping 뿐만 아니라, 잔차에 대한 학습을 진행한다.
Semantic segmentation
영상 단위가 아닌, 하나의 영상에서 물체를 구분함.
Fully Convolutional Networks(FCN)
입력에서 부터 출력까지 모두 미분가능한 network 구조이다.(end-to-end)
사람의 조작없이 학습을 통해 최적화 가능하다.(?)
Fully connected layer | Fully convolutional layer |
---|---|
공간 정보 고려 x | 입력도 tensor 출력도 tensor |
fix된 차원으로 출력 | 1x1 convolution 사용 |
각 위치마다 채널을 축으로 벡터를 쌓아서 Flattening 적용 | 각 위치마다 채널을 축으로 필터 개수마다 결과값을 채운다 |
Upsampling
영상의 저해상도 문제를 해결하기 위한 기법.
input data의 크기를 feature map에 의해 줄어든다. 이를 upsampling을 통해 다시 키우게 된다.
Upsampling 기법들
-
Unpooling
-
Transposed convolution
-
Upsample and convolution
Transposed convolution
kernel 사이즈가 중첩되는 곳이 일부분인데 이렇게 진행해도 되는 것인가??
kernel size와 stride를 잘 조절해서 중첩이 생기지 않게 해야 한다.
U-Net
fully convolutional network 이고, skip connections으로 낮은 층과 높은층의 feature을 결합한다.
contracting path 와 expanding path로 이루어져 있다.
높은 해상도에서의 공간상의 구분적 특징을 expanding path의 layer에 전달해줄 수 있다.
feature sizes와 input size가 홀수라면, 짝수로 맞춰주게 된다.
이 과정에서 해상도의 저하가 있을수 있다.