Skip to content
This repository has been archived by the owner on Sep 23, 2022. It is now read-only.

[DAY 32] CV - 이미지 분류 2 & Semantic segmentation #97

Closed
bsm8734 opened this issue Mar 10, 2021 · 0 comments
Closed

[DAY 32] CV - 이미지 분류 2 & Semantic segmentation #97

bsm8734 opened this issue Mar 10, 2021 · 0 comments

Comments

@bsm8734
Copy link
Member

bsm8734 commented Mar 10, 2021

오늘 배운 내용

Image Classification 2

  • (비교적 최신) Image classification network

Semantic segmentation

  • 각 pixel이 어떤 종류의 물체인지 pixel-wise classification을 수행하는 semantic segmentation에 대한 이해
  • FCN, U-Net, DeepLab등 대표적인 semantic segmentation architecture

질문

  • 히스: 아래 그림에서 빈 틈이 생기는 이유?
    • 후미: stride = 2이기 때문에 빈칸이 생김
      • 만약 stride가 2인 경우에, 빈칸이 나와서, 드문드문하게 겹치면 아래와 같은 그림처럼, 결과가 나옴

      • 겹치는 부분을 고르게 만들어 주어야 함



  • 펭귄: DeepLab은 더 큰 receptive field를 반영하는데, stride를 1을 적용하면 포괄적으로 적용되나?
    • deconvolution(X)
    • 큰 receptive field, 영역은 커지는데 파라미터는 줄어들어서 연산량이 줄어듦
    • 참고: https://3months.tistory.com/213

      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 컨볼루션은 연산량을 줄이고 최대한 넓은 영역까지 커버하기 위해서 몇가지의 점들만 이용해서 풀링하는 방법
    • Spatial Pyramid Pooling은 이를 합치는 과정
  • 펭귄: (CH04 ppt.48) DeepLab에서 rate의 의미가 정확히 무엇일까?

image

image

이미지_출처


  • U-Net: 크기에 맞는 이전의 정보를 가져오는 것인가? YES

  • 과제: torch.nn.Parameter(fc_out.weight) 을 해야하는데, type이 안맞아서 fc_out.weight reshape를 넣음

    • copy method를 사용
    • weight를 copy해서 tensor로 만들었음
    • fc_out의 output이 tensor이기 때문?
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants