시맨틱 세그멘테이션

Semantic segmentation examples

시맨틱 세그멘테이션은 이미지 내 모든 픽셀에 클래스 레이블을 할당하여 전체 장면을 포괄하는 밀집 클래스 맵을 생성합니다. 개별 객체를 분리하는 인스턴스 세그멘테이션과 달리, 시맨틱 세그멘테이션은 장면 내 객체의 수와 관계없이 동일한 클래스에 속한 모든 픽셀을 그룹화합니다.

시맨틱 세그멘테이션 모델의 출력은 각 픽셀 값이 예측된 클래스 ID에 대응하는 단일 높이-너비 클래스 맵입니다. 이러한 특성 덕분에 시맨틱 세그멘테이션은 자율 주행, 의료 영상 분석, 토지 피복 매핑과 같은 장면 해석 작업에 이상적입니다.

Use task=semantic or the yolo semantic CLI task for semantic segmentation. YOLO26 semantic segmentation model files use the -sem suffix, such as yolo26n-sem.pt.

모델

Cityscapes 데이터셋으로 사전 학습된 YOLO26 시맨틱 세그멘테이션 모델은 아래와 같습니다.

모델은 처음 사용할 때 최신 Ultralytics 릴리스에서 자동으로 다운로드됩니다.

모델크기
(픽셀)
mIoUval속도
RTX3090 PyTorch
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n-sem1024 × 204878.34.4 ± 0.01.622.7
YOLO26s-sem1024 × 204880.88.4 ± 0.06.588.8
YOLO26m-sem1024 × 204882.019.9 ± 0.114.3304.5
YOLO26l-sem1024 × 204882.926.5 ± 0.117.9384.7
YOLO26x-sem1024 × 204883.648.9 ± 0.240.2861.7
  • mIoUval 값은 Cityscapes 검증 세트에서의 단일 모델 단일 스케일 성능입니다.
    다음 명령어로 재현할 수 있습니다: yolo semantic val data=cityscapes.yaml device=0 imgsz=2048
  • 속도 측정값은 Amazon EC2 P4d 인스턴스를 사용하여 Cityscapes 검증 이미지에서 평균을 낸 값입니다.
    다음 명령어로 재현할 수 있습니다: yolo semantic val data=cityscapes.yaml batch=1 device=0|cpu imgsz=2048
  • Params(파라미터) 및 FLOPs 값은 Conv 및 BatchNorm 레이어를 병합하는 model.fuse() 이후의 융합된 모델에 대한 것입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.

학습(Train)

Cityscapes8 데이터셋에서 1024 이미지 크기로 100 에폭 동안 YOLO26n-sem을 학습시키십시오. 사용 가능한 전체 인수 목록은 구성 페이지를 참조하십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.yaml")  # build a new model from YAML
model = YOLO("yolo26n-sem.pt")  # load a pretrained model (recommended for training)
model = YOLO("yolo26n-sem.yaml").load("yolo26n-sem.pt")  # build from YAML and transfer weights

# Train the model
results = model.train(data="cityscapes8.yaml", epochs=100, imgsz=1024)

train 모드에 대한 자세한 내용은 학습 페이지를 참조하십시오.

데이터셋 형식

시맨틱 세그멘테이션 데이터셋은 일반적으로 PNG 형식의 단일 채널 마스크 이미지를 사용하며, 각 픽셀 값은 클래스 ID를 나타냅니다. 255 값의 픽셀은 "무시"로 처리되어 손실 계산에서 제외됩니다. 데이터셋 YAML 파일에는 이미지 및 해당 마스크 디렉토리에 대한 경로를 지정해야 합니다. 형식에 대한 자세한 내용은 시맨틱 세그멘테이션 데이터셋 가이드를 참조하십시오. 지원되는 데이터셋에는 CityscapesADE20K가 포함됩니다.

검증(Val)

학습된 YOLO26n-sem 모델의 정확도를 시맨틱 세그멘테이션 데이터셋에서 검증하십시오. 검증 시 의도한 데이터셋 YAML이 사용되도록 data 인수를 명시적으로 전달하십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Validate the model
metrics = model.val(data="cityscapes.yaml")
metrics.miou  # mean Intersection over Union
metrics.pixel_accuracy  # overall pixel accuracy

예측(Predict)

학습된 YOLO26n-sem 모델을 사용하여 이미지에 대한 예측을 수행하십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Predict with the model
results = model("https://ultralytics.com/images/bus.jpg")  # predict on an image

# Access the results
for result in results:
    semantic_mask = result.semantic_mask.data  # height x width class map (torch.Tensor)

predict 모드에 대한 자세한 내용은 예측 페이지를 참조하십시오.

내보내기(Export)

YOLO26n-sem 모델을 ONNX, CoreML 등 다른 형식으로 내보내십시오.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-sem.pt")  # load an official model
model = YOLO("path/to/best.pt")  # load a custom model

# Export the model
model.export(format="onnx")

사용 가능한 YOLO26 시맨틱 세그멘테이션 내보내기 형식은 아래 표와 같습니다. format 인수를 사용하여 모든 형식으로 내보낼 수 있습니다. 예: format='onnx' 또는 format='engine'. 내보낸 모델에 대해 직접 예측 또는 검증을 수행할 수 있습니다. 예: yolo predict model=yolo26n-sem.onnx. 내보내기가 완료된 후 모델 사용 예시가 표시됩니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n-sem.pt-
TorchScripttorchscriptyolo26n-sem.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-sem.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-sem_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-sem.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-sem.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-sem_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-sem.pbimgsz, batch, device
TF Litetfliteyolo26n-sem.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-sem_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-sem_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-sem_paddle_model/imgsz, batch, device
MNNmnnyolo26n-sem.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-sem_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-sem_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-sem_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-sem_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-sem_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-sem_deepx_model/imgsz, int8, data, optimize, device

export 모드에 대한 자세한 내용은 내보내기 페이지를 참조하십시오.

자주 묻는 질문(FAQ)

사용자 지정 데이터셋으로 YOLO26 시맨틱 세그멘테이션 모델을 어떻게 학습시키나요?

사용자 지정 데이터셋에서 YOLO26 시맨틱 세그멘테이션 모델을 학습하려면 각 픽셀 값이 클래스 ID(0, 1, 2, ...)를 나타내고 255 값의 픽셀은 학습 중 무시되는 PNG 마스크 이미지를 준비해야 합니다. 이미지와 마스크 디렉토리를 가리키는 데이터셋 YAML 파일을 생성한 후 모델을 학습시키십시오:

예시
from ultralytics import YOLO

# Load a pretrained YOLO26 semantic segmentation model
model = YOLO("yolo26n-sem.pt")

# Train the model
results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=512)

사용 가능한 추가 인수는 구성 페이지를 확인하십시오.

인스턴스 세그멘테이션과 시맨틱 세그멘테이션의 차이점은 무엇인가요?

인스턴스 세그멘테이션과 시맨틱 세그멘테이션은 모두 픽셀 수준의 작업이지만 중요한 차이점이 있습니다:

  • **시맨틱 세그멘테이션**은 모든 픽셀에 클래스 레이블을 할당하지만 동일한 클래스에 속한 개별 객체는 구분하지 않습니다. 예를 들어, 장면 내 모든 자동차는 동일한 클래스 레이블을 공유합니다.
  • **인스턴스 세그멘테이션**은 동일한 클래스에 속하더라도 각 개별 객체를 식별하여 각 객체에 대해 별도의 마스크를 생성합니다.

시맨틱 세그멘테이션은 자율 주행이나 토지 피복 매핑과 같은 장면 이해 작업에 가장 적합하며, 인스턴스 세그멘테이션은 개별 객체를 세거나 추적해야 할 때 선호됩니다.

인스턴스 세그멘테이션 데이터를 사용하여 시맨틱 세그멘테이션을 학습할 수 있나요?

네, 가능합니다. 데이터셋이 Ultralytics YOLO 다각형 레이블(이미지당 .txt 파일 하나)을 사용하는 경우, 데이터셋 YAML에서 masks_dir생략하면 로더가 즉석에서 다각형을 이미지별 시맨틱 마스크로 변환합니다. 다중 클래스 데이터셋(N > 1)의 경우 background 클래스가 names에 자동으로 추가됩니다. 단일 클래스 데이터셋(N == 1)의 경우 학습은 1개 클래스로 유지되며, 선언된 클래스는 마스크에서 1이 되고 배경 픽셀은 0이 됩니다. 자세한 내용은 시맨틱 세그멘테이션 데이터셋 가이드를 참조하십시오.

시맨틱 세그멘테이션에 어떤 데이터셋이 지원되나요?

Ultralytics YOLO26은 여러 시맨틱 세그멘테이션 데이터셋에 대한 내장 구성을 제공합니다:

  • Cityscapes: 19개 클래스를 포함하는 도시 거리 장면 데이터셋으로, 자율 주행 연구에 널리 사용됩니다.
  • ADE20K: 150개 클래스를 포함하는 대규모 장면 파싱 데이터셋입니다.

또한 픽셀 값이 클래스 ID에 대응하는 PNG 마스크 주석을 제공하는 모든 사용자 지정 데이터셋을 사용할 수 있습니다.

사전 학습된 YOLO26 시맨틱 세그멘테이션 모델을 어떻게 검증하나요?

평가에 사용된 데이터셋 YAML을 사용하여 사전 학습된 YOLO26 시맨틱 세그멘테이션 모델을 검증하십시오:

예시
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-sem.pt")

# Validate the model
metrics = model.val(data="cityscapes.yaml")
print("Mean IoU:", metrics.miou)
print("Pixel Accuracy:", metrics.pixel_accuracy)

이 단계를 통해 시맨틱 세그멘테이션 성능을 평가하는 표준 지표인 mIoU(mean Intersection over Union) 및 픽셀 정확도와 같은 검증 지표를 확인할 수 있습니다.

YOLO26 시맨틱 세그멘테이션 모델을 ONNX 형식으로 어떻게 내보내나요?

Python 또는 CLI 명령을 사용하여 YOLO26 시맨틱 세그멘테이션 모델을 ONNX 형식으로 내보내십시오:

예시
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n-sem.pt")

# Export the model to ONNX format
model.export(format="onnx")

다양한 형식으로 내보내는 방법에 대한 자세한 내용은 내보내기 페이지를 참조하십시오.

댓글