1. Segmentation
1.1 Segmentation 이란
Segmentation은 물체가 점유하는 영역, pixel 집합을 지정하는 작업으로 각 픽셀에 대한 class probability도 같이 출력
대표적으로 Semantic Segmentation과 Instance Segmentation이 있음
•
Semantic Segmentation
: 모든 pixel에 class를 할당하고, 같은 class는 구분하지 않음
→ 구분 가능한 객체(things) 와 구분 불가능한 배경(stuff)를 모두 포함해서 분할
◦
Thing : 일반적으로 개별적으로 구분 가능한 객체로 사람, 자동차, 의자같은 분리된 object
◦
Stuff : 하늘이나 도로, 물과 같은 연속적인 영역을 포함하는 구체적인 개체로 나눠지지 않는 한 덩어리로 존재하는 영역
•
Instance Segmentation
: thing만 분할하고, 같은 class의 object가 여러개면 각 인스턴스도 분류
→ 배경인 stuff부분은 무시하고 각 개별적인 객체의 경계와 위치를 파악해서 분할
1.2 Segmentation에서 성능 평가
Segmentation은 화소마다 class를 지정하기 때문에 PA(Pixel Accuracy)를 바탕으로 성능 측정을 진행
1.
Pixel Accuracy
예측된 픽셀 중에서 실제로 맞은 픽셀의 비율을 나타넴
•
◦
분모 : 전체 pixel 수
◦
분자 : GT와 모델의 예측 값이 같은 pixel 수
•
MPA(Mean Pixel Accuracy)는 PA 값을 전체 클래스수(로 평균 낸 값
◦
2.
IoU(Intersection over Union)
예측과 실제 분할 영역의 교집합을 두 영역의 합집합으로 나눈 값
→ 주로 물체의 경계를 얼마나 잘 맞췄는지 평가하고, 분할 모델의 성능을 정밀하게 측정가능
•
•
mIoU 는 모든 클래스에 대한 평균 IoU
3.
Dice Score
IoU와 유사하지만, 교집합을 두번 고려해서 예측영역을 더 강조해서 평가하는 방법으로 목표 영역의 크기가 작거나, 불균형 문제가 있는 데이터셋에서 좋은 성능을 내는 지표
•
•
Dice score는 F1 score와 동일함
1.3 Segmentation Dataset
•
PASCAL VOC, ImageNet, COCO, OpenImages 데이터셋에서는 분할 label도 제공함
•
특수 목적을 위한 데이터셋 예시
◦
도심 도로 장면 분할 Cityscape 데이터셋
◦
유투브 비디오 분할 Youtube-Objects 데이터셋
◦
자율주행 KITTI 데이터셋
◦
RGB-D 분할 NYU-Depth V2 데이터셋
◦
COCO 데이터셋을 확장한 LVIS 데이터셋
2. FCN(Fully Convolutional Networks)
FCN 네트워크는 Segmentation을 처음 성공적으로 시도한 convolutional networks으로, CONV 레이어만으로 구성된 네트워크
2.1 컨볼루션에 따른 feature map 크기 변화
•
feature map을 filter로 convolution 해서 의 map을 출력하게 됨
→ 다운샘플링 작업
•
◦
s: stride 크기, q: padding 크기
2.2 Trasposed Convolution(전치 컨볼루션)
•
feature맵을 transposed convolution을 통해서 맵으로 업샘플링하는 방법
1.
행, 열 사이에 개의 0 행과 열을 삽입
→ 새로운 영상은
2.
새로운 영상에 q’ = h-q-1 만큼 0 padding을 집어 넣음
→
3.
새로운 영상에 stride가 1인 convolution을 적용
→ 세 단계를 적용하면
2.3 FCN의 구조
•
DownSampling 구조
◦
CONV layer와 Pooling layer를 통해 이미지의 특징을 추출하면서 feature map의 크기를 점점 줄여감
◦
pool3, pool4, conv7 layer를 통해 down sampling이 이루어지고, 고수준의 feature map을 얻을 수 있음
•
1x1 convolution을 통한 클래스 예측
◦
down sampling 된 feature map에 대해서 C+1(클래스 수)개의 1x1 필터를 적용해서 class 별 classification score를 생성
→ 각 feature map을 픽셀별 class score map으로 변환하는 과정
•
UpSampling 구조
◦
다양한 배율(8배,16배,32배)로 upsampling이 이루어지고, 고해상도의 출력 맵을 복원
→ downsampling된 feature map을 원본 이미지 크기로 복원하고, 픽셀단위의 예측을 수행
◦
Skip-connection을 통해서 다운샘플링된 이전의 feature map과 결합
→ 각 단계의 정보 손실을 최소화해서 더 정확한 분할 결과를 얻을 수 있음
3. DeconvNet
DeconvNet은 convolution network과 deconvolution network로 구성된 image segmentation 모델
3.1 DeconvNet 구조
1.
Convolution Network
•
입력 이미지에서부터 특징을 추출하는 부분으로 max-pooling과 convolution layer가 반복됨
•
downsampling으로 이미지 크기가 줄어들고, convolution 연산을 통해 중요한 고수준의 feature 추출
→ 224x224 입력이미지가 7x7 사이즈까지 다운샘플링됨
2.
Deconvolution Network
•
feature map을 다시 원래 크기로 복원하는 부분으로 unpooling과 transpose convolution layer 가 반복됨
→ 원본 이미지로 크기 복원과 픽셀에 대해 class 별 예측 값 생성
•
unpooling : max pooling의 반대 과정으로, 이전 단계에서 추출한 위치정보를 통해서 특징을 복원
max pooling에서 가장 컸던 윈도우의 위치를 기억해서 max unpooling에서 해당 윈도우에 값을 유지하고, 나머지 윈도우는 0으로 채우는 방식으로 크기 복원
•
transpose convolution : 이미지 크기를 확대해서 feature map을 원래 이미지 크기로 되돌리는 역할
4. U-Net
•
U-Net은 의료 영상 분할을 목적으로 개발되어서 다양한 분야에서도 많이 사용되는 Segmentation 네트워크이고, U자 구조로 Upsampling과 Downsampling 수행
•
Skip-connection을 통해서 인코더와 디코더를 직접연결해서 downsampling 과정의 정보손실을 최소화 함