Segmentation/Detection 방법
이 글은 Tistory에서 이전된 포스팅입니다. 원본은 여기에서 확인할 수 있습니다.
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
detection 모델에 따라 2가지 task를 수행하기 위한 다양한 접근과 방법이 있다.




