Computer Vision에서 Segmentation은 이미지를 픽셀 수준에서 이해하는데 사용되는 기술이다. 이미지를 분석할 때 단순히 이미지가 무엇을 포함하는지 식별하는 것을 넘어서서 이미지 내의 각 객체의 적확한 위치와 형태를 파악하는 것이 중요하다. 이 과정에서 주로 Sementic Segmentation과 Instance Segmentation이 사용된다.
Image Classification : 이미지 내에 있는 객체를 식별하고 해당 이미지가 어떤 카테고리에 속하는지 결정하는 과정이다. 위의 이미지에선 이미지에 병, 컵, 큐브가 있다고 분류해 이미지 전체에 대한 단일 레이블을 예측한다.
Object Detection : 이미지 내의 개별 객체를 식별하고 각각의 위치에 대해 Bounding Box를 그리는 작업으로 위의 이미지에서 병, 컵, 큐브에 대해 Bounding Box를 그리고 레이블을 할당하여 위치를 나타낸다.
Semantic Segmentation : 이미지 내의 모든 픽셀을 특정 클래스에 할당하는 과정으로 클래스는 병, 컵, 큐브와 같이 공통된 의미를 가진 픽셀 그룹이다. 여기서 모든 병 픽셀은 같은 색상으로, 컵은 다른 색상으로, 큐브는 또 다른 색상으로 표시되어 객체의 경계를 정확히 구분하는 것에 초점을 맞춘다.
Instance Segmentation : Semantic Segmentation의 더 세부적인 형태로 동일한 클래스에 속하는 개별 객체를 구분한다. 각 병, 컵, 큐브가 별도의 인스턴스로 구분되며 서로 다른 색상으로 표시된다. 이를 통해 같은 종류의 여러 객체를 개별적으로 식별할 수 있다.
Semantic Segmentation에서 사용되는 Encoder-Decoder 아키텍처는 이미지에서 High-level feature를 추출하고(Encoder) 이후 이 feature를 사용해 원본 이미지 크기로 픽셀 단위의 분류를 수행하는 구조(Decoder)를 포함한다. 이 구조는 이미지의 픽셀마다 레이블을 할당하여 객체의 경계를 명확히 구분하고자 할 때 일반적으로 사용된다.
Encoder는 Convolution layers를 통해 이미지로부터 feature를 추출한다. 각 Convolution layer를 통과할 때 마다 이미지의 공간적 차원은 줄어들고 feature의 깊이(채널 수)는 증가한다. 이과정은 이미지 내의 중요한 정보를 요약하고 Semantic 정보를 압축하는 데 도움이 된다.
Decoder는 Encoder를 통해 압축된 feature map을 다시 확장하여 원본 이미지의 해상도에 맞는 크기로 복원한다. De-convolution layer 층은 이 확장 과정에서 사용되며 High-level feature 정보를 픽셀 수준의 예측으로 변환한다. Decoder의 최종 출력은 각 픽셀에 대한 class 레이블이 할당된 픽셀 단위의 Segmentation map이다.
FCN(Fully Convolutional Network for Semantic Segmentation)은 Sementic Segmentation을 위한 신경망 아키텍처로 전체 네트워크가 Convolution layer로만 구성되어 있어서 이미지의 픽셀 수준에서 각각의 픽셀이 어떤 클래스에 속하는지를 결정한다. 이 모델은 고정된 크기의 입력에 제한을 받지 않고 임의 크기의 이미지에 적용이 가능하며 이미지 분류용으로 설계된 네트워크를 Segmentation 작업에 적용할 수 있도록 수정한 최초의 아키텍처 중 하나이다.
Fully Connected layer는 Classification 작업에 주로 사용되며 Convolutional layer는 feature를 추출하고 공간적인 Context를 이해하는 데 사용된다. 현대의 많은 신경망 아키텍처는 특히 이미지 처리 분야에서는 Convolutional layer가 중요한 역할을 담당하며 이를 통해 이미지 내의 객체를 인식하고 위치를 파악할 수 있다.
Up Sampling은 Down Sampling을 통해 얻은 feature map을 원본 이미지 크기로 복원하는 과정이다. 이를 통해 각 픽셀에 대한 정확한 클래스 예측을 수행할 수 있다.
Upsampling된 feature map에 클래스별 확률을 할당한다. 이는 각 클래스에 해당하는 위치에서 확률이 높아진다.
Upsampling과 Class Prediction Layer를 거쳐 얻은 최종 출력은 Segmentation map이다. 이 맵은 이미지의 각 픽셀이 어떤 클래스에 속하는지를 색상을 표시하여 객체의 경계와 형태를 명확하게 구분한다.
FCN-32s, FCN-16s, FCN-8s는 각각 다른 Up Sampling 비율을 나타낸다. 이 모델들은 Down Sampling된 Feature Map을 다시 원본이미지의 해상도로 Up Sampling하는 과정을 거치며 이를 통해 픽셀별 클래스 예측을 수행한다.
각각의 접근법은 더 정밀한 예측을 가능하게 하지만 Up Sampling의 비율이 높아질수록 더 세밀한 겨로가를 얻을 수 있다. 이러한 과정은 학습 중에 각 feature map에서 중요한 정보를 유지하면서 더 세밀한 feature를 추출하고자 할 때 사용 된다.
Mask R-CNN은 객체의 클래스를 분류하고 해당 객체의 위치를 Bounding Box로 감지하는 것뿐만 아니라 객체 각각에 대한 픽셀 단위의 마스크를 생성하여 Instance Segmentation을 수행하는 신경망 모델로 Faster R-CNN에 기반하여 Instance Segmentation 기능을 확장한 모델이다.
Faster R-CNN은 REgion Proposal에서부터 분류 및 Bounding Box regression,에 이르기 까지 전체 과정을 한 네트워크로 통합하여 처리하는 End-to-End 구조를 가지고 있다. 이 모델은 Object Detection을 위해 RPN(Region Proposal Network)와 Fast R-CNN을 결합한다.
RPN으로부터 제안된 영역들은 RoI Pooling을 통해 고정된 크기의 feature map으로 변환된다. 이 과정은 다양한 크기의 제안된 영역들을 동일한 차원의 벡터로 변환하여 후속 분류 및 회귀 게측에 입력할 수 있게 한다.
변환된 RoI feature 벡터들은 Fast R-CNN 구조를 거쳐 객체의 클래스를 분류하고 Bounding Box regression을 통해 위치를 미세 조정한다. Fast R-CNN은 Fully Connected Layer를 사용하여 feature를 분석하고 클래스 분류와 Bounding Box 회귀를 동시에 수행한다.
RPN(Region Proposal Network)
RoIAlign
Bbox Regression
Classification
Binary Mask Prediction
정밀도 손실 : RoI Pooling은 입력 Feature Map을 고정된 크기의 출력으로 변환하는 과정에서 원본 영역의 정확한 위치 정보를 일부 손실한다. 이는 특히 픽셀 단위의 정밀한 Segmentation 작업에서 문제가 될 수 있다.
Quantization Error : 영역의 좌표를 고정된 크기의 격자에 맞추어야 할 때 좌표의 quantization으로 인해 작은 객체나 경계 부분에서 정확한 위치가 왜곡될 수 있다. 이로인해 Bounding Box가 실제 객체보다 클 수도 있고 작을 수도 이쓰며 이는 Binary Mask의 정확성에 영향을 미친다.
비례적인 Scaling 부재 : 모든 RoI를 같은 크기로 변환하기 때문에 원본 영역의 크기와 비율을 고려하지 않는다는 문제가 있다. 따라서 객체의 형태와 크기가 다양한 실제 상황에서 RoI Pooling은 이런 다양성을 적절히 처리하지 못한다.
정확한 mask 생성이 어려움 : RoI Pooling의 정밀도 손실은 객체의 정확한 형태를 파악하고 분리해야 하는 Segmentation 작업에서 정확한 mask를 생성하는데 어려움을 초래한다.
경계 부정확성 : 특히 객체의 경계 부분에서 RoI Pooling의 정밀도 손실은 Binary Mask의 정확성을 저하시킬 수 있으며 이는 세밀한 Segmentation 작업에 부적합하다.
Mask R-CNN에서 Feature Extractor는 입력 이미지에서 유용한 정보를 추출하여 Object detection, classification, Segmentation 작업에 필요한 feature maps를 생성하는 역할을 한다. Mask R-CNN의 경우 ResNet과 FPN이 결합된 구조로 이루어져 있다.
ResNet은 Residual Connections 또는 Skip Connections를 사용한다. 이러한 연결은 입력을 출력에 직접 더해주어 신경망이 더 깊어질 때 발생할 수 있는 학습 문제를 완화시키는데 도움을 준다. 이미지에서 보이는 ResNet의 한 층은 1x1, 3x3, 1x1의 Convolution 연산을 연속으로 수행하며 각각은 다른 목적(차원 축소, Feature Extraction, 차원 복원)을 가지고 있다.
FPN은 Multi Scale Feature를 추출하여 다양한 크기의 객체를 Detection할 수 있게 하는 아키텍처로 ResNet에서 추출된 Feature Map은 FPN의 여러 층을 통해 다양한 해상도에서 처리된다. 이 과정은 큰 해상도의 Feature Map에서 시작하여 점점 작은 해상도로 내려가는 top-down 방식과 결합된다. 이렇게 합성된 Feature Map은 설로 다른 Scale의 객체를 예측할 때 사용된다.
Feature Map은 2배 Up Sampling과 1x1 convolution을 통해 점진적으로 해상도를 높이는 방식으로 처리된다. 최종적으로 각 스케일에 해당하는 Feature Map에서 객체의 위치, 클래스, Binary Mask에 대한 예측이 이루어진다.
Mask R-CNN Loss
Classification Loss
Multiclass cross-entropy Loss
Bounding Box Loss
Mask Loss
K개의 정해진 Class에 대해서 그 class에 pixel이 속하는지 아닌지 sigmoid로 결정
Binary cross-entropy Loss
이 과정을 통해 Mask R-CNN은 Bounding Box와 함께 각 객체의 정확한 형태와 경계를 표현하는 Mask를 생성할 수 있다.