Image Segmentation
- 이미지에서 픽셀 단위로 영역을 분리하는 것
- Semantic segmentation
- 이미지의 각 픽셀이 어느 클래스에 속하는지 알아내는 것
- 대표적 모델 : FCN (Fully Convolution Networks)
- Instance segmentation
- semantic segmentation에서 한 발 더 나아가 같은 클래스의 객체들도 각각의 instance로 구분해내는 것.
Semantic Segmentation
- AlexNet, VGGNet 등 image classification용 CNN 알고리즘들은 일반적으로 convolution 층들과 fully connected 층들로 이루어져 있음. 항상 입력 이미지를 네트워크에 맞는 고정된 사이즈로 작게 만들어서 입력해주면 네트워크는 그 이미지가 속할 클래스를 예측해서 알려줌.
- 그렇지만 이러한 분류용 알고리즘들은 fully connected층에 들어서며 위치정보가 소실되어 그 물체가 어디에 존재하는지는 예측할 수 없음! 따라서 semantic segmentation 과제에 그대로 사용은 불가
- 위치 정보 소실 방지 & 입력이미지의 크기 제약 제거를 위해 알고리즘을 발전시킴
- 고정된 크기의 input만을 허용하는 fully connected 층을 1X1 컨볼루션층으로 바꿔줌
- 네트워크 전체가 convolution층들로 이루어져 입력이미지의 크기에 제한 X
- 여러 convolution층들을 거치고 나서 얻게 된 마지막 특성맵(heatmap)의 개수는 훈련된 클래스의 개수와 동일
- 각 특성맵은 하나의 클래스를 대표. 만약 고양이 클래스에 대한 특성맵이라면 고양이가 있는 위치의 픽셀값들이 높고, 강아지 클래스에 대한 특성맵이라면 강아지 위치의 픽셀값들이 높다.
- 이 대략적인(coarse0 특성맵들의 크기를 원래 이미지 크기로 다시 복원해주어야 함. 이미지의 모든 픽셀에 대해서 클래스를 예측하는 dense prediction을 해주는 것이 semantic segmentation의 목적이기 때문.
=> upsampling : 원래 이미지 크기로 복원하는 과정 - upsampling된 특성맵들을 종합해서 최종적인 segmentation map을 만듦 = 각 픽셀당 확률이 가장 높은 클래스를 선정해주는 것.
Semantic Segmentation tutorial 코드
https://hoya012.github.io/blog/segmentation_tutorial_pytorch/
U-Net
https://blog.naver.com/johnny9696/222442405717
upsampling 관련 설명 참고 가능
transposed covolution
Mask R-CNN
https://ropiens.tistory.com/76
https://ganghee-lee.tistory.com/40
- 이미지 내에서 각 instance에 대한 segmentation mask 생성 (Classification + Localizing(pixel))
- Faster R-CNN + mask branch
- Mask branch : object의 mask를 예측하는 branch
Partial Convolutions
https://labcontext.github.io/restoration/partialconv/
기타
https://honeycomb-makers.tistory.com/14
https://go-hard.tistory.com/118
https://blog.naver.com/laonple/220873446440
'교육 > AI+X 융합 교육' 카테고리의 다른 글
NVIDIA Image Inpainting (0) | 2021.09.02 |
---|---|
[딥러닝] Activation function (0) | 2021.08.26 |
[Pytorch] 변형(Transform) (0) | 2021.08.20 |
[Pytorch] Dataset과 Dataloader (0) | 2021.08.20 |
[Pytorch] torchvision (0) | 2021.08.19 |