receptive field를 넓히는 데에는
pooling 이 많이 사용됌.
-> 그러나 이는 정보의 손실이 크다.
큰 크기의 커널
-> 연산량이 늘어난다.
dilated conv를 사용하면 정보의 손실을 줄이되 연산량이 기존의 conv와 똑같다.
googlenet에서 사용된 모듈.
receptive field를 넓히기위해 여러 크기의 커널을 사용한다.
그리고 이 결과를 concat한다.
depth wise convolution은 인풋의 각 채널별 필터로 conv연산 수행 후 이를 합치는 것이다.
depth wise convolution은 depth wise convolution 수행 후 1x1 conv를 이용하여 원하는 채널 수 만큼 늘리는 것이다.
즉 기존의 conv연산을 width와 depth 따로 수행하고 더한 것이다.
이는 depth wise covolution은 연산량을 줄일 수 있다.
자세한 내용은 과거의 내 글, 다른 자료를 참고하자.
Xception 모델은 inception 모듈과 depth wise seqarable conv를 이용하여 연산량을 줄이면서 성능을 증가한 자주 사용되는 backbone 모델.
여기까지 deeplab을 이해하기 위한 준비가 다 됐당
DeepLab v3 인코더
ASPP를 활용한 deeplab v3로 인코딩하고 이를 skip conntection으로 디코더와 연결
수정된 Xception 인코더
depth wise separable conv와 inception 모듈을 활용한 Xception모델로 인코딩, 이를 디코더에서 skip conntection으로 연결하여 upsampling
Q. 수정된 Xception이란?
- 연산의 순서: 원래는 depthwise 를 진행하고, pointwise 를 했는데, 이제는 pointwise -> depthwise 로 바꿈
- Non-Linearity 의 유무: Inception 모델의 경우, 첫 연산 후에 non-linearity (ReLU)가 있지만, Xception은 중간에 ReLU non-linearity 를 적용하지 않는다
- Residual connection 이 거의 모든 Layer 에 있다 -> 없애고 실험해봤더니 있을때의 정확도가 훨씬 높았음. residual connection 이 굉장히 중요한 요소임
참조