Semantic Segmentation

"각 픽셀이 무엇인가?"

Image
→ CNN Encoder
→ Feature Map (C×h×w)
→ 1×1 Conv (class projection)
→ Upsampling / Decoder
→ Segmentation Map (H×W×Class)

 

classification 신경망에서 사용하던 FC layer를 제거하고, 네트워크를 fully convolutional 구조로 변경한다.

이 구조에서는 출력이 공간적 feature map 형태로 유지되어 위치 정보가 보존되며,

FC layer가 없어 입력 크기에 대한 제약 없이 다양한 해상도의 입력을 처리할 수 있다.

(fc layer는 이전 레이어의 모든 뉴런과 연결되어 있고, 입력 size가 변경되면 가중치 수도 변경되기 때문에, 입력 size가 고정되어 있다.)

 

결과적으로 위치 정보를 가진 채로 classification을 할 수 있고, 해당하는 픽셀 영역에 어떤 물체가 있는지 알 수 있다.

 

다만, Conv을 거치면서 spatial dimension이 줄어들었기 때문에,

다시 늘려주기 위한 deconvolution, unpooling 등의 upsample 과정을 거친다.

그러고 나면 이미지에 대한 semantic segmentation을 얻을 수 있다.

 

이밖에도 다양한 segmentation 방법과 종류가 있다.

Detection

"뭐가 어디에 있나?"

 

수행해야 하는 2가지 Task

  • bounding box를 알고리즘 또는 신경망으로 추정한다.
  • 각각의 bounding box에 클래스를 예측한다.

위 2가지를 동시에 수행하면 One-Stage-Detector 모델,

2가지를 한 단계씩 순차적으로 진행하면 Two-Stage-Detector 모델이다.

 

ex) One-Stage-Detector - YOLO, SSD, RetinaNet

ex) Two-Stage-Detector - R-CNN, Mask R-CNN, Cascade R-CNN

 

왼쪽 - Faster R-CNN, 오른쪽 - YOLO

 

detection 모델에 따라 2가지 task를 수행하기 위한 다양한 접근과 방법이 있다.

참고 강의

https://www.boostcourse.org/ai111/joinLectures/316854

 

딥러닝 기초 다지기

부스트코스 무료 강의

www.boostcourse.org