반응형
Dilated convolution - PyTorch Code
Dilated Convolution 을 이해하기 쉽게 예를들어 생각해보자
일단 convolution에서 filter는 도장같은 역할을 한다. 똑같은 모양을 사진 여기저기 찍어보면서 도장과 유사한 모양이 있으면 높은 값을 반환하게 된다. 도장은 손바닥처럼 꽉 채워져 있었다.
Dilated Convolution에서 쓰이는 filter는 위의 사진처럼 서로 한칸씩 떨어져 있다. 이는 손바닥이 아닌 손가락을 펼쳐서 도장을 찍는 느낌이다.
이렇게 했을때 장점이 무엇일까?
- Receptive field의 크기가 커진다. 즉 전체적인 특징을 잘 잡아낼 수 있어서 Segmentation(contextual info)에 좋다
- 연산량이 줄어든다.
→ 기존의 방법으로 Receptive field를 크게하려면 kernel size의 확장 또는 깊은 레이어를 사용해야한다.
→ 따라서 기존의 방법으로는 연산량이 커진다는 단점이 있다.
import torch.nn as nn
class DilBonv(nn.Module):
def __init__(self, C_in, C_out, kernel_size, stride, padding,dilation, affine=True):
super(ConvBNReLU, self).__init__()
self.op = nn.Sequential(
nn.Conv2d(C_in, C_in, kernel_size=kernel_size, stride=stride, padding=padding,dilation=dilation, groups=C_in, bias=False),
nn.Conv2d(C_in, C_out , kernel_size=1, padding=0, bias=False),
nn.BatchNorm2d(C_out, affine=affine),
nn.ReLU(inplace=False)
)
def forward(self, x):
return self.op(x)
[ 참고자료 ]
https://www.slideshare.net/ssuser6135a1/ss-106656779
https://3months.tistory.com/213
반응형
'Artificial Intelligence > Neural Networks' 카테고리의 다른 글
[ CVPR2022 / GML4VC ] 1. 개요 (Graph Machine Learning, GNNs) (0) | 2022.08.22 |
---|---|
[ CNN ] 가중치 초기화 (Weight Initialization) - PyTorch Code (0) | 2021.08.13 |
[ CNN ] 5. Depth-wise Separable convolution - PyTorch Code (0) | 2021.08.12 |
[ CNN ] 4. Depth-wise convolution - PyTorch Code (0) | 2021.08.12 |
[ CNN ] 3. Point-wise convolution - PyTorch Code (0) | 2021.08.12 |