Insight

Image Segmentation 이란? - 정의, 종류, 응용분야, 딥러닝, 트렌드

Image segmentation의 정의부터 Segment Anything까지

2023
.
06
.
29
Image Segmentation 이란? - 정의, 종류, 응용분야, 딥러닝, 트렌드

Image Segmentation 이란?

Image segmentation 정의

Image Segmentation은 Image classification의 확장으로, 이미지 내 정보의 분류와 더불어 이미지 속 픽셀 수준에서 무엇이 있는지 이해하는 데에 사용하는 컴퓨터 비전 기술입니다. 물체의 경계를 윤곽선으로 표시하여 해당 object, 물체가 있는 위치를 찾아내며, 개별 object detection부터 이미지 속 여러 영역에 개별 레이블을 지정하는 것까지 다양한 미션을 수행합니다.

Image Segmentation은 특히 컴퓨터 비전에서 가장 중요한 분야 중 하나입니다. Machine learning에서 Image segmentation은 데이터를 개별 그룹으로 분리하는 프로세스를 의미합니다. Deep learning에서 Image segmentation은 Label이나 범주를 이미지의 모든 픽셀과 연결하는 segment map을 만드는 과정이 중요하죠. 예를 들어 자율주행차가 차량과 보행자, 교통 표지판이나 기타 도로 등을 식별하는 것과 같습니다.

Input Image to Segmentation Labels
Input Image to Segmentation Labels

Image segmentation 과 Video segmentation

Image segmentation은 컴퓨터 비전 및 디지털 이미지 처리의 하위 도메인입니다. 이미지의 유사한 영역 또는 세그먼트를 각각의 class label로 그룹화하는 것을 목표로 합니다.

Image classification vs Object detection vs Image Segmentation
Image classification vs Object detection vs Image Segmentation | Deep Learning Tutorial 28

또한 Image segmentation은 Image classification의 확장으로, 분류 외에도 객체의 관계를 표시하여 해당 객체가 있는 위치를 정확히 가리킬 수 있습니다. 요약하자면 아래와 같습니다.

  • Image Classification: 이미지 전체에 대해서 하나의 정보만을 줌
  • Image Segmentation: 이미지 내에 경계를 부여하고, 해당 경계에 대한 독립적인 정보를 라벨링

Video segmentation은 object boundary, motion, color, texture 또는 기타 visual feature와 같은 특성을 기반으로 비디오를 여러 영역으로 segmentation하는 작업입니다. Video segmentation의 목표는 비디오의 배경 및 temporal event에서 서로 다른 object를 식별하고 분리하여 시각적 콘텐츠를 보다 상세하고 구조적으로 표현하는 것입니다.

video segmentation은 비디오 내 individual object와 event를 식별하고 characterization (특성화)할 수 있을 뿐만 아니라 비디오 콘텐츠를 구성하고 분류할 수 있기 때문에 computer vision 및 멀티미디어 분야에서 매우 중요한 작업입니다. 정확성과 효율성을 극대화하기 위해 다양한 기술의 video segmentation이 지속적으로 개발되고 있습니다.

Image Segmentation 유형

Segmentation은 데이터를 유사한 특성을 가진 그룹으로 나눌 수 있는 머신러닝의 핵심 기술로 AI 모델을 더 정확하고 효율적으로 만들어, 성능을 향상시키는 데에 사용됩니다. 그 유형과 원리, 모델은 a~d 순서로 발전했다고 볼 수 있습니다.

출처: Computer vision algorithms and hardware implementations

  • (a) image classification
  • (b) object detection
  • (c) semantic segmentation
  • (d) instance segmentation

Semantic segmentation

Semantic segmentation은 입력된 이미지의 모든 단일 픽셀에 클래스 레이블을 할당하는 작업입니다. 아래의 자료를 통해 다양한 방식의 컴퓨터 비전 작업 방식간의 차이점을 알 수 있습니다.

Semantic segmentation은 각 이미지의 픽셀에 시맨틱 레이블을 할당하는 Image segmentation의 한 유형입니다. 즉, 각 픽셀에 ‘도로’, ‘나무’, ‘건물’과 같이 해당 콘텐츠를 설명하는 레이블을 할당하는 방식입니다.

Semantic segmentation

Semantic segmentation은 이미지의 콘텐츠를 여러 의미적 클래스로 나눌 수 있다는 원칙에 기반해 시작되었습니다. 이러한 의미적 클래스를 사용하여 이미지에서 개체를 식별하고 추적할 수 있게 됩니다. Semantic Segmentation은 Supervised learning과 Unsupervised learning으로 나눌 수 있습니다. 전자의 경우 수동으로 시맨틱 레이블을 붙인 이미지 데이터 세트를 통해 머신러닝 모델을 훈련시킨 뒤 작업을 수행합니다. 후자의 경우, 레이블이 지정된 이미지 데이터 세트가 필요하지 않지만 다양한 방법을 통해 사전 지식 없이도 이미지의 레이블을 학습하는 방식을 사용합니다.

Semantic Segmentation Network는 Image classification 모델을 약간 수정하는 것에서 시작되었습니다. 최초의 성공적인 Semantic segmentation Network는 완전 컨볼루션 네트워크(FCN)에서 시작되었죠. 현재는 크고 작은 개선이 다방면으로 이루어지면서 다양한 아키텍처가 탄생되었습니다. 최근 가장 많이 언급되는 Semantic segmentation 모델로는  DeepLab, FastFCN, DeepLabV3, Transformer-based models가 있습니다.

Instance segmentation

instance segmentation은 이미지의 개별 개체를 식별하고 분할하는 image segmentation의 한 유형입니다. 즉, 이미지의 각 객체에 고유한 레이블을 할당하고 각 객체의 경계도 식별할 수 있는 기술입니다.

Instance segmentation

Instance segmentation은 이미지의 객체가 모양이나 컨텍스트에 따라 이미지의 개별 개체를 식별하고 세분화할 수 있게 됩니다. 최근 다양한 분야에서 적용 가능성이 대두되면서 일상 생활에도 영향을 미치고 있죠. 일반적으로 instance segmentation은 Mask R-CNN Architecture 모델 기반으로 제작되고 있습니다.

Instance segmentation을 수행하는 기법은 두 가지 범주로 나눌 수 있습니다.

  • Bottom-up 방식: 이미지의 개별 픽셀을 감지하는 것부터 시작해, 이러한 픽셀을 함께 그룹화하여 객체를 형성합니다.
  • Top-down 방식: 이미지의 전체 장면을 감지하고 개별 개체를 식별한 뒤 세그먼트화합니다.

Panoptic segmentation

컴퓨터 비전을 통해 인공지능이 우리의 눈을 모방했다면, 이제는 주변 세계를 평가하고 이해하는 감각과 마음의 능력을 닮아가려 하고 있습니다. Panoptic segmentation은 단순히 구별하기만 했던 semantic segmentation과 객체의 경계를 이해했던 instance segmentation 개념을 병합한 것이라고 볼 수 있습니다.

Panoptic segmentation 모델은 이미지의 개별 객체를 식별하고 세분화할 수 있을 뿐만 아니라, 장면의 의미적 내용도 식별할 수 있도록 개선되었습니다. 이는 semantic segmentation과 instance segmentation이 상호 보완적이라는 원칙에 기반해 만들어졌습니다. semantic segmentation을 통해 장면의 시맨틱 콘텐츠를 식별할 수 있으며, instance segmentation은 장면의 개별 객체를 식별하고 세분화하는 데에 사용합니다. 이 두 가지 작업을 결합한 panoptic segmentation은 둘 중 한 가지만 사용하는 것보다 더 높은 수준의 정확도와 디테일을 보장합니다.

머신러닝에서 panoptic segmentation이 다른 이미지 세분화 기술과 차별화되는 이유는, 출력에 물건과 사물을 모두 포함하여 정확하게 표현할 수 있다는 것입니다. 예를 들어 사람이나 차량, 나무는 셀 수 있는 대상이지만 도로, 하늘 등은 수량화하기 어려운 요소입니다. Semantic segmentation은 본질적으로 사물에 집중하며, Instance segmentation은 사물에 초점을 맞추는 방향으로 작업을 수행하지만 panoptic segmentation은 둘 중 하나를 제외하지 않기 때문에 더욱 디테일합니다.

Semantic segmentation vs. Instance segmentation

Semantic segmentation vs. instance segmentation
Panoptic Segmentation: A Review

Semantic segmentation과 instance segmentation의 구분은 동일한 클래스에 속하는 다른 객체를 구별하지 않는다는 점에서 구별됩니다. 눈 여겨 볼 만한 차이점은 아래와 같습니다.

  • Semantic segmentation은 동일한 범주의 다른 인스턴스를 구별할 수 없습니다. 즉, 모든 동일한 개체를 같은 색으로 표시합니다. 반면 instance segmentation은 동일한 범주의 다른 인스턴스를 구분할 수 있습니다. 따라서 다른 의자는 다른 색상으로 구분됩니다.
  • Semantic segmentation은 먼저 대상 감지가 발생한 다음, 각 픽셀에 레이블이 지정됩니다. 반면 instance segmentation은 표적 탐지와 시맨틱 분할이 함께 이루어집니다.

Image Segmentation 응용 분야

Segmentation은 컴퓨터 비전 기술 프로젝트의 기초이자 핵심입니다. image segmentation은 크고 작은 개선사항을 거쳐 AI의 발전과 함께 우리의 생활에 큰 영향을 미치고 있습니다. 아래에서 segmentation 모델을 활용한 사용 사례를 살펴보겠습니다.

객체 감지 (Object detection) 및 장면 이해

Segmentation은 객체 감지 모델의 정확도를 향상시킵니다. 이미지에서 개별 객체를 식별하고 세분화함으로써, Segmentation 기술은 객체 감지 모델의 정확도를 개선하는 데에 도움이 되죠. 장면의 의미적 콘텐츠를 식별함으로써, 장면 이해도를 향상시킬 수 있으며, 오브젝트를 분할하는 기능을 토대로 Tracking 및 recognition, relation understanding에도 사용할 수 있습니다.

Image Segmentation - Use Cases for 2D and 3D Computer Vision

예를 들어 드론이나 위성, 비행기에 카메라를 장착하면 건물이나 땅, 거리를 분석할 수 있습니다. 이는 군사적 이유로 사용되거나, 농업에서 홍수 모니터링을 위해 사용하기도 합니다. 특히 Segmentation 알고리즘의 결과로 3D 맵핑을 2D 조감도로 변환할 수 있게 되었죠.

👉 AI 모델의 정확도를 평가하는 f1 score

의료 영상

의료 이미지 분석에서 segmentation은 다양한 장기와 조직을 식별하고, 세분화하는 역할을 합니다. 이 정보는 질병을 진단하고 치료 계획을 세우는 데에 사용할 수 있죠. 실제로 Image segmentation은 오늘날 의료용 AI 분야에서 가장 많이 사용하는 알고리즘 중 하나입니다.

치과 방사선 촬영은 임상 진단이나 치료 및 수술에 중요한 부분입니다. 최근에는 임상용 컴퓨터 치과를 사용해 X선 영상을 분석하는 시스템 개발이 화두에 올랐습니다. 자동 치과 방사선 촬영 및 분석 알고리즘에도 Image segmentation 기술이 적용되어 있습니다.

Automatically Segmenting Brain Tumors with AI | NVIDIA Technical Blog
Automatically Segmenting Brain Tumors with AI | NVIDIA Technical Blog

이 이미지는 뇌종양 이미지에 Segmentation 기술을 적용한 입니다. 신경아교종이라 불리는 악성 뇌종양은 최종 진단까지 까다로운 기술이 필요합니다. 의학계는 그간 이미지를 수동으로 묘사하거나, 종양의 경계나 경계의 정확한 위치를 결정하는 것에 많은 어려움을 겪어왔습니다. 해부학적 전문 지식이 필요할 뿐만 아니라, 비용과 인적 오류의 난관에도 부딪혔었죠. 3D 자동 Segmentation 모델이 공개된 후에는 MRI 스캐너를 사용한 인코더-디코더 컨볼루션 신경망을 통해 실측 결과와 유사한 예측 Segmentation 결과를 도출할 수 있었습니다.

자율 주행

자율 주행 차량에는 주로 Semantic segmentation 기술이 적용됩니다. 이미지의 각 픽셀을 미리 정의된 클래스와 연결하는 방식으로, 자동차의 센서와 카메라에서 수집된 주변 데이터를 해석하는 작업을 수행합니다.

Semantic segmentation in autonomous driving
Supercharging One of the World’s Fastest Segmentation Models by 3X - Deci

Semantic segmentation은 모든 단일 입력에 대한 명확한 그림을 제공합니다. 따라서, 감각 입력에 대해 뛰어난 이해를 제공할 수 있습니다. 요약하자면 사람이 이해하기 쉽다는 장점이 있죠. 또한 이 정보는 자율주행 차량이 주변 환경을 이해하고 차량의 안전한 경로를 계획할 수 있다는 장점이 있습니다.

👉 NVIDIA Drive의 자율주행 솔루션이 궁금하다면?

Image Segmentation 구조와 원리

Recognition + Localization

Image segmentation 모델은 먼저 이미지에서 특징을 추출하여 이미지를 [ Recognition ] 객체를 인식하고 [ Localization ] 위치를 파악합니다. 여기서 추출하는 특징은 색상이나 텍스처, 모양 등이 있습니다. image segmentation에 사용되는 model은 이러한 특징을 사용해 이미지를 부분적으로 구성하고 segment map을 만들고 픽셀 단위의 경계를 기준으로 정보를 정의할 수 있습니다.

이미지가 segment 화되면 모델은 각 세그먼트를 객체 또는 배경으로 분류합니다. 이 작업은 이미지에 포함된 객체로, 레이블이 지정된 이미지 데이터 세트에 대해 학습한 Classification 기능을 사용하여 수행합니다.

마지막으로 모델은 객체 주변의 경계 상자를 식별하여 이미지에서 객체의 위치를 찾습니다. 경계 상자는 객체의 경계를 정의하는 네 개의 좌표 집합을 의미합니다.

Encoder + Decoder

Computer vision 분야에서 대부분의 image segmentation model은 Encoder - Decoder 구조로 구성됩니다. Decoder로부터 나온 segment map은 이미지에서 각 개체의 위치를 나타내는 일종의 지도라고 생각할 수 있습니다.

  • Encoder: 점점 더 좁고 깊어지는 일련의 필터를 통해 이미지를 추출하는 레이어
  • Decoder: 인코더의 출력을 입력 이미지의 픽셀 해상도와 유사한 세분화 마스크로 확장시키는 레이어 마스크

image segmentation Auto-encoder Architecture
Auto-encoder Architecture

Deep learning을 통한 Image Segmentation

Traditional Image Segmentation 기술

AI가 이미지 데이터에서 Segmentation을 수행하는 원리는 이미지 또는 비디오의 객체가 유사한 속성을 가지고 있다는 아이디어에서 착안되었습니다. Raw-data에서 특징을 추출하고, 유사성에 따라 픽셀을 클러스터링함으로써 AI 모델은 객체를 식별하고 객체의 움직임을 추적하는 방법을 학습할 수 있었죠.

Image segmentation 모델에 적용된 객체 인식 및 위치 파악 기술은 다음과 같습니다. 어떤 기술을 적용할 것인지는 특정 애플리케이션이나 세그먼트화할 이미지 유형에 따라 달라집니다. 하지만 각각의 장단점이 있기 때문에 구분해서 알아둘 필요가 있습니다.

Image Segmentation Methods

  • Threshold Method: 임계값(thresholding)에 따라 이미지를 전경과 배경의 두 영역으로 나누는 기술
  • ~ 전경과 배경의 대비가 높은 이미지에 적합
  • Region Based Method: 인접한 픽셀 간의 유사성을 찾아 공통 클래스로 그룹화하는 방식
  • ~Watershed based method가 euclidean distance map의 로컬 최대값에서 시작하여 2개의 seed가 동일한 지역 또는 segment map에 속하는 것으로 분류될 수 없다는 제약 조건이 있다는 점에서 유사하다고 볼 수 있음
  • ~다양한 특징을 가진 이미지에 적합, 큰 이미지의 경우 속도가 느림
  • Edge Based Method: Edge detection 으로 불리기도 하며, 이미지에서 어떤 픽셀이 에지 픽셀인지 분류하고 그에 따라 별도의 클래스에 따라 해당 에지 픽셀을 골라내는 작업
  • ~대비가 낮은 이미지에 적합, 노이즈에 민감
  • Clustering Based Method: 최신 image segmentation은 일반적으로 Clustering algorithm을 사용합니다. 시트 픽셀로 시작한 다음 유사성 기준에 따라 해당 픽셀을 중심으로 영역을 확장하는 기술입니다.
  • ~개체가 많은 이미지에 적합, 계산 비용이 많이 들 수 있음
  • Deep Learning based Method: 머신러닝 알고리즘을 사용하여 이미지에 있는 물체의 특징을 학습한 뒤, 알고리즘을 사용하여 세그먼트를 객체 또는 배경으로 분류
  • ~다양한 특징을 가진 이미지에 적합, 많은 양의 학습 데이터가 필요

Deep learning based Method

Image Segmentation의 기존 기술에 딥 러닝을 통합한 형태는 성능과 정확도 두 마리의 토끼를 잡았다고 볼 수 있습니다.

딥 러닝을 사용한 Image segmentation 모델은 매우 다양하지만 여기서는  대표적인 몇 가지만 다루어 보도록 하겠습니다.

Convolutional Encoder-Decoder Architecture: 앞서 언급했던 Encoder decoder architecture는 2015년에 SegNet(Badrinarayanan 외)과 같은 연구가 시작되면서 대중화 되었습니다. SegNet은 convolutional block과 downsampling block의 조합을 사용하여 정보를 bottle-neck현상으로 압축하고 입력의 표현을 형성할 것을 제안합니다. 그런 다음 decoder는 입력 정보를 재구성하여 입력의 영역을 강조하고 해당 class에 따라 그룹화하는 segment map을 형성합니다.

SegNet Explained | Papers With Code

U-Net Model: U-Net은 기본적으로 생물학적 현미경 이미지의 segmentation에 사용됩니다. 데이터 증강 기술을 사용하여 사용 가능한 주석이 달린 이미지에서 학습이 가능합니다. U-Net 아키텍처는 각각 컨텍스트를 캡처하고 정밀한 위치 파악을 가능하게 하는 contracting 부분과 summetric expanding의 두 부분으로 구성됩니다.

Segment Anything Model - SAM

Segmentation Anything은 이미지 분할을 위해 제작된 Meta의 모델입니다. 기본적으로, 사람의 개입 없이 이미지를 자동으로 분할하는 프로세스를 목적으로 구축되었습니다.

SAM은 대규모 언어 모델에서 영감을 받아, Alexander Kirillov 등의 Segment Anything 논문에서 처음으로 소개되었습니다. 저자는 이미지 분할의 세계를 오픈 소싱하여 가능성을 확장하고자 했습니다. 즉, 브라우저에서 실시간으로 실행할 수 있는 딥 러닝 모델인 셈입니다.

Universal segmentation model - Segment Anything

이전의 딥 러닝 접근 방식은 방대한 양의 학습 데이터를 수집하고, 수동으로 레이블링한 뒤 교육하는 시간이 필요했습니다. 이러한 접근 방식으로 우수한 성능의 모델을 만들어왔지만, 만약 데이터 세트를 변경해야 한다면 상당한 양의 모델 재교육이 필요한 문제가 있었습니다. 그러나 SAM을 통해, 사용자는 이미지에서 거의 모든 분할할 수 있을 뿐만 아니라 실시간성까지 갖추게 되었죠.

데이터헌트의 노하우 - Image segmentation 정확도 높이는 법

알고리즘을 평가하는 지표는 크게 [픽셀 정확도, 계수, 자카드 인덱스(IOU)] 로 설명할 수 있습니다. Segmentation 정확도를 개선하면, 의료 영상이나 Object detection 등 다양한 응용 분야에서 적극적으로 활용할 수 있습니다. 아래에서는 Segmentation 정확도를 향상하기 위한 제안을 소개합니다.

  • Image segmentation 작업을 위한 다양한 딥 러닝 모델이 있으며, 각 모델 별로 고유한 장단점이 있습니다. 최상의 결과를 얻기 위해 애플리케이션에 적합한 모델을 선택하는 것이 중요합니다.
  • 학습 데이터셋의 품질은 딥 러닝 모델의 성능에 큰 영향을 미칩니다. 따라서 데이터셋이 segmentation할 물체의 다양성을 포착할 수 있을 만큼 충분히 커야 합니다. 또한 이미지 데이터셋에 레이블링이 잘 되어있어야, 모델이 각 객체에 속하는 픽셀을 알 수 있습니다.
  • 모델이 학습된 후에는 모델을 미세 조정하여 성능을 개선할 수 있습니다. 특정 애플리케이션에 더 잘 맞도록 모델의 매개 변수를 조정하는 작업과 모니터링을 함께 진행해야 합니다.
  • 새로운 분할 알고리즘 개발: 정확도 향상을 위한 새로운 알고리즘의 지속적인 개발은 필수적입니다. 최근에는 Adversarial machine learning 혹은 Reinforcement Learning 와 같은 기법을 통해 Segmentation 결과를 구체화할 수 있게 되었죠.
  • 평가 메트릭 세분화: 물체 경계의 품질을 더 잘 포착할 수 있는 Boundary F1 점수와 같은, 기존의 Dice 계수 및 Jaccard 지수를 넘어서는 새로운 평가 메트릭을 탐색해야 합니다.

데이터헌트는 2가지 자체 알고리즘을 통해 Segmentation 정확도를 개선하고자 했습니다. 결과적으로 작업시간을 50% 이상 단축하고 정확도를 개선할 수 있었죠

  • 기울기 기반 필터링: 임의의 시작 위치부터 하나씩 기울기를 참조하여 변화량이 적은 구간은 점을 삭제하는 방식
  • 비율 기반 필터링: 객체의 사이즈와 곡률을 고려하여 점의 개수를 직접적으로 줄이는 방식

데이터헌트는 위와 같은 방식으로 Polygon을 작업하면서 효율을 측정해보았습니다. 평균적으로 최대 50% 수준의 작업 시간 단축 결과를 이뤄낼 수 있었죠. 수만 장에 달하는 이미지에 자체 개발한 AI 모델을 적용하여 작업 시간을 단축하는 것은 물론, 작업물에 대한 2차/3차 검수까지 철저하게 진행하고 있습니다. 데이터헌트의 자세한 노하우는 이 글에서 확인하실 수 있습니다.

결론: 모델 성능은 개선되고 있으므로, 학습 데이터의 품질이 계속 중요한 시점

최신 Image segmentation 모델은 딥 러닝을 기반으로 대규모 데이터 세트를 통해 학습합니다. 이를 통해 모델이 폭 넓게 일반화가 가능해지면서, 다방면에서 활용될 수 있게 되었죠.

Deep learning 기반의 image segmentation 모델에도 한계가 있습니다. Label이 지정된 대규모 이미지 데이터 세트 확보가 어려운 경우, 많은 양의 학습 데이터를 필요로 하는 모델 특성상 프로젝트 시작 자체가 어려울 수 있습니다. 또한 학습 데이터를 너무 잘 학습해 새로운 데이터를 학습시켜도 변화가 없는 현상이 발생할 수 있습니다. 이런 경우, 적절한 Data augmentation을 통해 극복할 수 있습니다.

물론 기본적으로 모델 성능이 지속적으로 발전하고 있기 때문에, 과거보다 기본적인 데이터의 정확도는 향상되었습니다. 그러나 모든 것을 AI에게 맡겼을 경우 모델이 학습 오류를 일으켰을 때 처음부터 새로 학습해야 한다는 단점이 있습니다. 데이터헌트는 자체 알고리즘을 통한 모델 개선과 중간 PM과 작업자의 2차/3차 검수를 통해, 정확도 99% 데이터를 구축하는 데에 성공했습니다. 온전히 모든 것을 모델에게 맡기는 것보다, AI-Assisted 형태를 통해 훨씬 더 완성도 높은 결과물을 만들 수 있었던 것이죠.

Reference.

Talk to Expert