딥러닝/이미지 처리
-
Few-shot Learning Few-shot Learning은 매우 적은 양의 dataset으로 이루어진 support set을 기반으로 query를 분류 및 예측하는 것이다. Few-shot Learning은 n-way k-shot learning이라고도 부른다. (n은 Support set의 class의 개수, k는 support set의 각 class 당 갖고 있는 데이터 개수) Support set은 Query를 분류할 때 사용되는 데이터셋으로, 모델이 test 시에 사용되는 데이터셋이다. 위 그림은 3-way-2-shots classification task이다. "3-way"는 3 classes를 의미하고 "2-shots"는 2 example per class를 의미한다. 대부분의 few-..
Prototypcial Networks for Few-shot LearningFew-shot Learning Few-shot Learning은 매우 적은 양의 dataset으로 이루어진 support set을 기반으로 query를 분류 및 예측하는 것이다. Few-shot Learning은 n-way k-shot learning이라고도 부른다. (n은 Support set의 class의 개수, k는 support set의 각 class 당 갖고 있는 데이터 개수) Support set은 Query를 분류할 때 사용되는 데이터셋으로, 모델이 test 시에 사용되는 데이터셋이다. 위 그림은 3-way-2-shots classification task이다. "3-way"는 3 classes를 의미하고 "2-shots"는 2 example per class를 의미한다. 대부분의 few-..
2023.06.22 -
DenseNet은 ResNet처럼 addition하는 것이 아니라 concatenation으로 네트워크를 쌓음으로서 좋은 성능을 낸다. 즉, resnet은 add함으로써 보존해야할 정보를 change하여 다음 layer에 전해주지만 DenseNet은 정보를 바꾸지 않으면서도 굉장히 direct하게 하위의 모든 layer에 뿌려주어 information flow가 잘 된다. 그러나 concatenation을 하면 channel이 커지는 기하급수적으로 문제점이 있다. 따라서 중간에 BatchNorm → 1x1 Conv → 2x2 AvgPooling 으로 이루어진 Transition Block을 넣는다. 1x1 Conv를 통해 channel을 줄임으로서 해당 문제를 해결한다.
DenseNetDenseNet은 ResNet처럼 addition하는 것이 아니라 concatenation으로 네트워크를 쌓음으로서 좋은 성능을 낸다. 즉, resnet은 add함으로써 보존해야할 정보를 change하여 다음 layer에 전해주지만 DenseNet은 정보를 바꾸지 않으면서도 굉장히 direct하게 하위의 모든 layer에 뿌려주어 information flow가 잘 된다. 그러나 concatenation을 하면 channel이 커지는 기하급수적으로 문제점이 있다. 따라서 중간에 BatchNorm → 1x1 Conv → 2x2 AvgPooling 으로 이루어진 Transition Block을 넣는다. 1x1 Conv를 통해 channel을 줄임으로서 해당 문제를 해결한다.
2022.07.16 -
네트워크가 깊을 수록 성능이 좋음을 알 수 있었다. 그러나 깊은 네트워크를 학습시키는데 gradient vanishing문제나 Training loss가 잘 낮아지지 않는 최적화 문제가 존재한다. 만약 layer 20개가 최적의 깊이일 경우 30개 layer를 쌓으면 나머지10개는 identity 함수(x=y)로 학습을 하면 되지 않을까? → 그러나 그게 잘 안된다. → 그럼 잘 되게 하자 따라서 Residual Block을 쌓게 된다. Residual이 없는 plain network의 경우 깊어질수록 성능이 낮고 Resnet은 레이어가 깊어질수록 성능이 높다. 위의 아이디어로 성능이 좋은 줄 알았으나 알고보니 Resnet은 gradient vanishing을 잘 해결해주는 것이었다. ∴ Residual..
ResNet네트워크가 깊을 수록 성능이 좋음을 알 수 있었다. 그러나 깊은 네트워크를 학습시키는데 gradient vanishing문제나 Training loss가 잘 낮아지지 않는 최적화 문제가 존재한다. 만약 layer 20개가 최적의 깊이일 경우 30개 layer를 쌓으면 나머지10개는 identity 함수(x=y)로 학습을 하면 되지 않을까? → 그러나 그게 잘 안된다. → 그럼 잘 되게 하자 따라서 Residual Block을 쌓게 된다. Residual이 없는 plain network의 경우 깊어질수록 성능이 낮고 Resnet은 레이어가 깊어질수록 성능이 높다. 위의 아이디어로 성능이 좋은 줄 알았으나 알고보니 Resnet은 gradient vanishing을 잘 해결해주는 것이었다. ∴ Residual..
2022.07.16 -
GoogLeNet의 구조 Inception blocks 하나의 입력에 대해서 여러개의 receptive field를 갖는 filter를 거치고 여러개의 response들을 concat함을 통해 좀 더 다양한 종류의 특성이 도출된다. 1 X 1 Convolution layer 위에서 봤던 Inception block을 보면 1x1 Convolution layer가 존재하는 것을 알 수 있다. 1x1 Convolution layer는 채널 방향으로 dimension reduction이 들어감에 따라 파라미터의 수를 줄이면서 네트워크 입력 출력의 receptive field와 channel은 같게 할 수 있다.
GoogLeNetGoogLeNet의 구조 Inception blocks 하나의 입력에 대해서 여러개의 receptive field를 갖는 filter를 거치고 여러개의 response들을 concat함을 통해 좀 더 다양한 종류의 특성이 도출된다. 1 X 1 Convolution layer 위에서 봤던 Inception block을 보면 1x1 Convolution layer가 존재하는 것을 알 수 있다. 1x1 Convolution layer는 채널 방향으로 dimension reduction이 들어감에 따라 파라미터의 수를 줄이면서 네트워크 입력 출력의 receptive field와 channel은 같게 할 수 있다.
2022.07.16 -
VGGNet은 Backbone Network이다. 기존 네트워크들은 5X5 or 7X7 conv layer을 사용하는 경우가 많았다. → layer를 거칠 때마다 feature map의 축소가 발생한다. (padding을 붙여주면 되겠지만 크게 붙여주어야함) 3X3 conv layer을 반복 사용하여 5X5나 7X7 layer를 대체가 가능하다. 3X3 2번 == 5X5 1번 / 3X3 3번 == 7X7 1번 → 더 적은 파라미터(weight)으로 더 깊은 네트워크를 구성할 수 있다. +1 padding을 활용하면 feature map의 크기 유지가 가능하다. 1. 3X3 Conv Layer + 1 padding 2. activation func 3. 2x2 maxpooling 직관적으로 CNN 블럭을 ..
VGGNetVGGNet은 Backbone Network이다. 기존 네트워크들은 5X5 or 7X7 conv layer을 사용하는 경우가 많았다. → layer를 거칠 때마다 feature map의 축소가 발생한다. (padding을 붙여주면 되겠지만 크게 붙여주어야함) 3X3 conv layer을 반복 사용하여 5X5나 7X7 layer를 대체가 가능하다. 3X3 2번 == 5X5 1번 / 3X3 3번 == 7X7 1번 → 더 적은 파라미터(weight)으로 더 깊은 네트워크를 구성할 수 있다. +1 padding을 활용하면 feature map의 크기 유지가 가능하다. 1. 3X3 Conv Layer + 1 padding 2. activation func 3. 2x2 maxpooling 직관적으로 CNN 블럭을 ..
2022.06.25 -
AlexNet AlexNet은 ILSVRC 2012 대회에서 우승을 차지한 합성곱 신경망이다. CIFAR10 데이터를 적용할 AlexNet 구현 AlexNet은 1000개의 클래스로 분류되어 있는 227X227의 크기를 갖는 이미지로 이루어진 ImageNet 데이터를 위해 만들어졌다. 따라서 CIFAR10 이미지 데이터에 맞게 Filter의 크기와 Stride를 조정해 모델을 구축하였다. 라이브러리 로드 import torch import torchvision import torchvision.transforms as transforms from torch.utils.data import Dataset, DataLoader import torch.nn as nn import torch.nn.functio..
AlexNetAlexNet AlexNet은 ILSVRC 2012 대회에서 우승을 차지한 합성곱 신경망이다. CIFAR10 데이터를 적용할 AlexNet 구현 AlexNet은 1000개의 클래스로 분류되어 있는 227X227의 크기를 갖는 이미지로 이루어진 ImageNet 데이터를 위해 만들어졌다. 따라서 CIFAR10 이미지 데이터에 맞게 Filter의 크기와 Stride를 조정해 모델을 구축하였다. 라이브러리 로드 import torch import torchvision import torchvision.transforms as transforms from torch.utils.data import Dataset, DataLoader import torch.nn as nn import torch.nn.functio..
2022.02.22