-
Convolution Layer논문&부가지식 2021. 2. 18. 15:03
이 글을 쓰는 시점은 ICCV KD 하다가 SepConv 함수에서
self.op = nn.Sequential(
nn.Conv2d(channel_in, channel_in, kernel_size=kernel_size, stride=stride, padding=padding, groups=channel_in, bias=False),
nn.Conv2d(channel_in, channel_in, kernel_size=1, padding=0, bias=False),
nn.BatchNorm2d(channel_in, affine=affine),
nn.ReLU(inplace=False),
nn.Conv2d(channel_in, channel_in, kernel_size=kernel_size, stride=1, padding=padding, groups=channel_in, bias=False),
nn.Conv2d(channel_in, channel_out, kernel_size=1, padding=0, bias=False),
nn.BatchNorm2d(channel_out, affine=affine),
nn.ReLU(inplace=False),
)이게 나왓음. 아래 내용을 보면 이는 Depthwise separable convolution 을 2번 썼다는 것을 알 수 있다.
1. Depthwise Convolution Layer
위 그림처럼 각각의 입력 채널을 나누어서 convolution 연산을 진행한다. 필요한 커널은 입력 채널의 갯수만큼 필요하다. 따라서 위 그림과 같이 입력 채널과 출력 채널이 같다. 장점으로는 연상량이 훨씬 적어진다는 것.
2. Pointwise Convolution Layer
1x1 Convolution을 생각하면 된다. 차원을 조절할 때 많이 쓰인다.
3. Depthwise Separable Convolution Layer
Depthwise + Pointwise convolution.
'논문&부가지식' 카테고리의 다른 글
[ICLR2015] Fitnets : Hints for thin deep nets (0) 2021.02.26 ICCV_KD(hanbeen) 기록들 (0) 2021.02.26 Be Your Own Teacher: Imporve the Performance of Convolutional Neural Networks via Distillation (0) 2021.02.16 Differential Privacy (0) 2021.01.20 Reducing the Teacher-Student Gap via Spherical Knowledge Distillation (0) 2021.01.20