Dilated Convolution은 필터 내부에 zero padding을 추가해 강제로 receptive field를 늘리는 방법이다.
위 그림은 파란색이 인풋, 초록색이 아웃풋인데, 진한 파랑 부분에만 weight가 있고 나머지 부분은 0으로 채워진다.
receptive field란 필터가 한 번의 보는 영영으로 볼 수 있는데, 결국 필터를 통해 어떤 사진의 전체적인 특징을 잡아내기 위해서는 receptive field는 높으면 높을 수록 좋다.
그렇다고 필터의 크기를 크게하면 연산의 양이 크게 늘어나고, 오버피팅의 우려가있다. 그래서 일반적인 CNN에서는 이를 conv-pooling의 결합으로 해결한다.
pooling을 통해 dimension을 줄이고 다시 작은 크기의 filter로 conv를 하면, 전체적인 특징을 잡아낼 수 있다.
하지만 pooling을 수행하면 기존 정보의 손실이 일어난다.
이를 해결하기 위한것이 Dilated Convolution으로 Pooling을 수행하지 않고도 receptive field의 크기를 크게 가져갈 수 있기 때문에 spatial dimension의 손실이 적고, 대부분의 weight가 0이기 때문에 연산의 효율도 좋다.
공간적 특징을 유지하는 특성 때문에 Dilated Convolution은 특히 Segmentation에 많이 사용된다.
Atrous Convolution?
Atrous라는 말은 hole이라는 뜻
Atrous 컨볼루션은 연산량을 줄이고 최대한 넓은 영역까지 커버하기 위해서 몇가지의 점들만 이용해서 풀링하는 방법
오늘 배운 내용
Image Classification 2
Semantic segmentation
질문
히스: 아래 그림에서 빈 틈이 생기는 이유?
겹치는 부분을 고르게 만들어 주어야 함
히스: 아래 세개의 차이는 무엇일까?
아래 코드에서 보면, transposed, nearest 방식이 각각 어떻게 구현되는지에 대한 내용이 헷갈림
Atrous Convolution?
펭귄: (CH04 ppt.48) DeepLab에서 rate의 의미가 정확히 무엇일까?
이미지_출처
U-Net: 크기에 맞는 이전의 정보를 가져오는 것인가? YES
과제:
torch.nn.Parameter(fc_out.weight)
을 해야하는데, type이 안맞아서fc_out.weight
reshape를 넣음fc_out
의 output이 tensor이기 때문?