Semantic Segmentation
semantic segmentation을 통한 픽셀 수준의 이미지 이해를 살펴봅니다. 지금 Ultralytics YOLO26을 사용해 정밀한 segmentation 모델을 학습하고 배포하는 방법을 알아봅니다.
시맨틱 세그멘테이션은 모든 개별 픽셀에 특정 클래스 라벨을 할당하여 이미지를 서로 다른 영역으로 나누는 컴퓨터 비전 작업입니다. 이미지 전체에 하나의 라벨만 할당하는 이미지 분류와 같은 더 단순한 작업이나, 객체 주변에 바운딩 박스를 그리는 객체 감지와 달리 시맨틱 세그멘테이션은 장면을 픽셀 수준으로 이해할 수 있게 합니다. 이러한 세밀한 분석은 객체의 정확한 형태와 경계가 객체의 정체성만큼 중요한 애플리케이션에서 매우 중요합니다. 이를 통해 기계는 인간과 더욱 유사하게 세상을 "보고", 도로, 보행자 또는 의료 스캔 이미지 내 종양을 구성하는 정확한 픽셀을 구분할 수 있습니다.
시맨틱 세그멘테이션의 작동 방식#
시맨틱 세그멘테이션은 기본적으로 이미지를 분류해야 하는 픽셀 그리드로 취급합니다. 딥러닝 모델, 특히 합성곱 신경망 (CNNs)은 이 작업의 표준 아키텍처입니다. 널리 사용되는 U-Net과 같은 일반적인 아키텍처는 인코더-디코더 구조를 사용합니다. 인코더는 입력 이미지의 크기를 축소하여 텍스처와 형태 같은 고수준 특징을 추출하고, 디코더는 이러한 특징을 원본 이미지 해상도로 업샘플링하여 정밀한 세그멘테이션 마스크를 생성합니다.
이를 위해 모델은 사람이 각 픽셀을 해당 클래스에 따라 신중하게 색칠한 대규모 주석 데이터셋으로 학습됩니다. Ultralytics Platform과 같은 도구는 고품질 ground truth 데이터 생성을 가속하는 자동 주석 기능을 제공하여 이 과정을 지원합니다. 학습이 완료되면 모델은 모든 픽셀 값이 클래스 ID에 대응하는 마스크를 출력하며, 이를 통해 이미지에 의미를 "칠하는" 것과 같은 결과를 생성합니다.
관련 개념 구분하기#
시맨틱 세그멘테이션을 다른 픽셀 수준 작업과 혼동하는 경우가 많습니다. 프로젝트에 적합한 접근 방식을 선택하려면 차이점을 이해하는 것이 중요합니다:
- 인스턴스 세그멘테이션: 시맨틱 세그멘테이션은 같은 클래스에 속한 모든 객체를 하나의 개체로 취급합니다(예: 모든 "자동차"를 파란색으로 표시). 반면 인스턴스 세그멘테이션은 개별 객체를 구분합니다(예: "자동차 A"는 파란색, "자동차 B"는 빨간색).
- 파놉틱 세그멘테이션: 이는 두 가지 개념을 결합합니다. 모든 픽셀에 클래스를 할당하는 동시에(시맨틱) 개수를 셀 수 있는 객체의 개별 인스턴스도 분리하여(인스턴스) 가장 포괄적인 장면 이해를 제공합니다.
실제 적용 사례#
픽셀 단위의 완벽한 정확도로 시각 데이터를 해석하는 기능은 다양한 중요 산업 분야의 혁신을 이끌고 있습니다:
- 자동차 분야의 AI: 자율주행 차량은 안전한 주행을 위해 세그멘테이션에 크게 의존합니다. 주행 가능 영역과 보도를 구분하고 보행자, 자동차 및 장애물의 윤곽을 정밀하게 표시함으로써 자율주행 시스템은 실시간으로 중요한 의사 결정을 내릴 수 있습니다.
- 의료 분야의 AI: 의료 영상에서 모델은 CT 스캔과 MRIs에서 장기, 병변 또는 종양을 세그먼트로 분리합니다. 이를 통해 영상의학 전문의는 치료 계획 수립을 위한 종양 부피를 계산하거나 로봇 수술 도구를 매우 정밀하게 유도할 수 있습니다.
- 농업 분야의 AI: 농부들은 작물의 상태를 모니터링하기 위해 항공 드론 이미지와 세그멘테이션을 사용합니다. 픽셀을 "건강한 작물", "잡초" 또는 "토양"으로 분류하면 자동화 시스템이 제초제 살포 대상을 지정하여 화학 물질 사용량을 줄이고 수확량을 최적화할 수 있습니다.
Ultralytics를 사용한 세그멘테이션 구현#
최신 세그멘테이션 모델은 정확도와 속도의 균형을 맞춰야 하며, 특히 엣지 디바이스에서 실시간 추론을 수행할 때 더욱 그렇습니다. Ultralytics YOLO26 모델 제품군에는 특화된 세그멘테이션 모델이 포함되어 있으며, 이러한 모델은 -seg 접미사로 표시됩니다. 또한 기본적으로 end-to-end 방식으로 작동하여 YOLO11과 같은 이전 아키텍처보다 뛰어난 성능을 제공합니다.
다음 예제는 ultralytics Python 패키지를 사용하여 이미지에서 세그멘테이션을 수행하는 방법을 보여줍니다. 이 과정에서 객체 경계를 구분하는 바이너리 마스크가 생성됩니다.
from ultralytics import YOLO
# Load a pre-trained YOLO26 segmentation model
model = YOLO("yolo26n-seg.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
# Visualize the results
# This will display the image with the segmentation masks overlaid
results[0].show()과제와 향후 방향#
상당한 발전에도 불구하고 시맨틱 세그멘테이션은 여전히 계산 집약적입니다. 모든 개별 픽셀에 대한 분류 결과를 생성하려면 상당한 GPU 리소스와 메모리가 필요합니다. 연구자들은 효율성을 높이기 위해 이러한 모델을 최적화하는 작업을 활발히 진행하고 있으며, 모델 양자화와 같은 기법을 활용하여 모바일 기기와 임베디드 디바이스에서 대규모 네트워크를 실행하는 방법을 모색하고 있습니다.
또한 대규모 라벨링 데이터셋이 필요하다는 점도 병목 현상입니다. 이를 해결하기 위해 업계는 합성 데이터 생성과 자기지도 학습으로 전환하고 있습니다. 이를 통해 모델은 수백만 개의 픽셀에 대한 수동 라벨 없이도 원시 이미지에서 학습할 수 있습니다. 이러한 기술이 발전함에 따라 스마트 카메라, 로보틱스 및 증강 현실 애플리케이션에서 세그멘테이션이 더욱 널리 활용될 것으로 기대됩니다.









