Panoptic Segmentation
파노픽 분할은 모든 픽셀에 클래스를 지정하고 셀 수 있는 각 객체에 고유 ID를 부여하여 시맨틱 분할과 인스턴스 분할을 통합합니다. 모델, PQ 및 코드를 다룹니다.
파놉틱 세그멘테이션은 컴퓨터 비전 작업으로, 이미지의 모든 픽셀에 두 가지 값을 할당합니다. 하나는 클래스 레이블이며, 셀 수 있는 객체에 속하는 픽셀에는 인스턴스 ID도 할당합니다. 이는 모든 픽셀에 클래스를 지정하지만 같은 클래스의 객체를 합치는 시맨틱 세그멘테이션과 개별 객체를 분리하지만 배경에는 레이블을 지정하지 않는 인스턴스 세그멘테이션을 결합합니다. 그 결과 도로, 하늘, 잔디를 영역으로 표시하고 각 자동차와 사람을 개별 세그먼트로 나타내는, 장면 전체의 단일 비중첩 맵이 만들어집니다. Facebook AI Research와 하이델베르크 대학교의 Alexander Kirillov와 동료들은 CVPR 2019에서 발표한 파놉틱 세그멘테이션 논문에서 이 작업과 지표를 정의하고, 한 번에 보이는 모든 것을 포함한다는 의미로 이 용어를 선택했습니다.
배경 영역과 객체#
파놉틱 세그멘테이션은 클래스를 두 종류로 나눕니다:
- 객체: 사람, 자동차, 동물, 핸드백처럼 형태가 명확하고 셀 수 있는 객체입니다. 각 객체에는 자체 인스턴스 ID가 부여되므로 나란히 서 있는 두 사람은 두 개의 세그먼트가 됩니다.
- 배경 영역: 도로, 하늘, 잔디, 물, 벽처럼 텍스처나 재질이 비슷하고 형태가 불분명한 영역입니다. 하늘을 인스턴스로 나누는 것은 의미가 없으므로, 배경 클래스의 모든 픽셀은 하나의 세그먼트를 이룹니다.
COCO 파놉틱 벤치마크는 133개 클래스(객체 80개, 배경 영역 53개)를 사용하며, Cityscapes 주행 벤치마크는 19개 클래스(객체 8개, 배경 영역 11개)를 평가합니다. 모호하거나 어떤 클래스에도 속하지 않는 픽셀은 void로 표시하고 평가에서 제외합니다. COCO 파놉틱 형식은 각 세그먼트가 고유 ID를 갖는 PNG 이미지와 각 ID를 카테고리에 매핑하는 JSON 파일로 이미지를 저장합니다.
파놉틱 모델 작동 방식#
초기 시스템은 공유 백본에서 시맨틱 브랜치와 인스턴스 브랜치를 실행하고 고정된 규칙으로 출력을 병합했습니다. 예를 들어 Panoptic FPN은 신뢰도에 따라 인스턴스 간 겹침을 해결하고, 배경 영역보다 인스턴스를 우선시한 뒤, 면적 임계값 미만인 배경 영역을 제거합니다:
Panoptic-DeepLab 같은 바텀업 모델은 시맨틱 맵과 함께 각 객체의 중심 및 모든 픽셀에서 중심까지의 오프셋을 예측한 다음, 픽셀이 가리키는 중심에 따라 객체 픽셀을 그룹화합니다. 유니버설 모델은 시맨틱, 인스턴스, 파놉틱 세그멘테이션에 하나의 마스크 분류 아키텍처를 사용합니다. Mask2Former는 각각 마스크 하나와 클래스 하나를 생성하는 고정된 쿼리 집합을 예측하여 객체와 배경 영역을 모두 처리합니다. CVPR 2022 논문에서 COCO 파놉틱 PQ 57.8을 달성했습니다. 다음 Hugging Face Transformers 파이프라인은 COCO 파놉틱으로 학습된 Mask2Former 체크포인트를 실행합니다:
import numpy as np
from transformers import pipeline
# Load Mask2Former trained on COCO panoptic: 80 thing and 53 stuff classes
segmenter = pipeline("image-segmentation", model="facebook/mask2former-swin-tiny-coco-panoptic")
# Each returned segment is one non-overlapping region with a class label and a binary mask
segments = segmenter("https://ultralytics.com/images/bus.jpg", subtask="panoptic")
for segment in segments:
share = np.array(segment["mask"]).mean() / 255
print(f"{segment['label']}: {share:.1%} of pixels")출력에는 세그먼트 10개가 나열됩니다. 사람 4명, 핸드백 2개, 버스(이미지의 30.7%)는 각각 별도의 객체 세그먼트로 표시되며, 포장도로 병합(30.9%), 기타 건물 병합(19.5%), 나무 병합(4.8%)은 각각 배경 영역 세그먼트 하나로 표시됩니다. "-merged" 접미사는 세분화된 레이블을 합쳐 만든 COCO 배경 클래스를 나타냅니다. 어떤 픽셀도 두 세그먼트에 속하지 않으며, 어떤 세그먼트도 포함하지 않는 픽셀 0.4%는 void입니다.
파놉틱 품질(PQ)#
파놉틱 예측은 파놉틱 품질로 평가합니다. 예측 세그먼트와 정답 세그먼트가 같은 클래스이고 교집합 대비 합집합(IoU)이 0.5를 초과하면 두 세그먼트가 매칭됩니다. 세그먼트는 서로 겹치지 않으므로 각 세그먼트는 최대 한 개의 세그먼트와만 매칭됩니다. 매칭된 세그먼트는 참 양성(TP), 매칭되지 않은 예측은 거짓 양성(FP), 매칭되지 않은 정답 세그먼트는 거짓 음성(FN)입니다. PQ는 모든 매칭의 IoU 합을 TP + ½FP + ½FN으로 나눈 값이며, 다음 두 부분으로 나뉩니다:
- 세그멘테이션 품질(SQ): 매칭된 세그먼트의 평균 IoU로, 마스크가 얼마나 잘 맞는지 측정합니다.
- 인식 품질(RQ): TP / (TP + ½FP + ½FN)이며, 세그먼트 검출의 F1 점수입니다.
PQ는 클래스별로 계산한 뒤 평균을 구하며, 벤치마크에서는 객체와 배경 영역에 대한 점수도 별도로 보고합니다.
파놉틱 세그멘테이션과 시맨틱·인스턴스 세그멘테이션 비교#
- 시맨틱 세그멘테이션: 모든 픽셀에 대해 "이 픽셀은 어떤 클래스인가?"에 답합니다. 인접한 자동차 세 대는 하나의 자동차 영역이 됩니다.
- 인스턴스 세그멘테이션: 검출된 객체에 대해서만 "이 픽셀은 어떤 객체에 속하는가?"에 답합니다. 배경 픽셀에는 레이블이 없으며 서로 다른 객체의 마스크는 겹칠 수 있습니다.
- 파놉틱 세그멘테이션: 모든 픽셀에 대해 두 질문 모두에 답하며, 픽셀마다 세그먼트가 정확히 하나씩 할당됩니다.
Ultralytics YOLO26은 두 가지 기능을 별도의 작업으로 제공합니다. -seg 모델은 객체마다 마스크와 클래스를 반환하며, -sem 시맨틱 세그멘테이션 모델은 19개 Cityscapes 클래스 또는 150개 ADE20K 클래스로 사전 학습되어 모든 픽셀의 클래스를 반환합니다.
실제 적용 사례#
- 자율주행차: 하나의 출력에서 주행 가능한 도로와 보도를 배경 영역으로 표시하고, 모든 보행자와 차량을 추적기가 추적할 수 있도록 개별 객체로 표시합니다.
- 로보틱스: 이동 로봇은 주행 가능한 바닥과 집거나 피해야 할 각 객체를 일관된 하나의 맵에서 파악해야 합니다.
- 의료 영상 분석: 디지털 병리학은 조직 영역을 배경 영역으로 세그멘테이션하고 개별 핵과 세포를 객체로 셉니다.
- 3D 및 비디오: 비디오 파놉틱 세그멘테이션은 프레임 간 인스턴스 ID를 일관되게 유지하며, SemanticKITTI와 nuScenes에서 벤치마크하는 LiDAR 파놉틱 세그멘테이션은 스캔의 모든 3D 점에 클래스와 인스턴스 ID를 지정합니다.










