인스턴스 세그멘테이션

Instance segmentation examples

인스턴스 세그멘테이션은 객체 감지보다 한 단계 더 나아가 이미지 내의 개별 객체를 식별하고 나머지 이미지 영역과 분리하는 작업입니다.

인스턴스 세그멘테이션 모델의 출력은 이미지 내 각 객체의 윤곽을 나타내는 마스크 또는 컨투어 세트와 함께 각 객체에 대한 클래스 라벨 및 신뢰도 점수입니다. 인스턴스 세그멘테이션은 이미지 내 객체의 위치뿐만 아니라 정확한 형태를 알아야 할 때 유용합니다.



Watch: Run Segmentation with Pretrained Ultralytics YOLO Model in Python.

YOLO26 Segment 모델은 -seg 접미사를 사용하며(예: yolo26n-seg.pt), COCO 데이터셋으로 사전 학습되었습니다.

모델

여기에 YOLO26 사전 학습된 Segment 모델이 나열되어 있습니다. Detect, Segment 및 Pose 모델은 COCO 데이터셋으로 사전 학습되었고, Semantic 모델은 Cityscapes로, Classify 모델은 ImageNet 데이터셋으로 사전 학습되었습니다.

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

모델크기
(픽셀)
mAPbox
50-95(e2e)
mAPmask
50-95(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.1
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.2
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.5
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0139.8
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8313.5
  • mAPval 값은 COCO val2017 데이터셋에서의 단일 모델, 단일 스케일 기준입니다.
    yolo val segment data=coco.yaml device=0 명령어로 재현 가능합니다.
  • 속도Amazon EC2 P4d 인스턴스를 사용하여 COCO val 이미지에서 평균을 낸 값입니다.
    yolo val segment data=coco.yaml batch=1 device=0|cpu 명령어로 재현 가능합니다.
  • 파라미터FLOPs 값은 Conv 및 BatchNorm 레이어를 병합하고, end2end 모델의 경우 보조 일대다(one-to-many) 감지 헤드를 제거하는 model.fuse() 이후의 퓨즈드 모델에 대한 값입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.

학습(Train)

COCO8-seg 데이터셋에서 640 이미지 크기로 100 에폭(epochs) 동안 YOLO26n-seg를 학습합니다. 사용 가능한 모든 인자 목록은 구성(Configuration) 페이지를 참조하십시오.

예시
from ultralytics import YOLO

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

# Train the model
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

전체 train 모드 세부 정보는 학습(Train) 페이지를 참조하십시오. 세그멘테이션 모델은 Ultralytics Platform을 통해 클라우드 GPU에서 학습할 수도 있습니다.

데이터셋 형식

YOLO 세그멘테이션 데이터셋 형식에 대한 자세한 내용은 데이터셋 가이드에서 확인할 수 있습니다. 기존 데이터셋을 다른 형식(COCO 등)에서 YOLO 형식으로 변환하려면 Ultralytics의 JSON2YOLO 도구를 사용하십시오. 또한 Ultralytics Platform에서 폴리곤 도구와 SAM 기반 스마트 어노테이션을 사용하여 세그멘테이션 마스크를 생성할 수 있습니다.

검증(Val)

COCO8-seg 데이터셋에서 학습된 YOLO26n-seg 모델의 정확도(accuracy)를 검증합니다. model이 학습 data 및 인자를 모델 속성으로 유지하므로 별도의 인자는 필요하지 않습니다.

예시
from ultralytics import YOLO

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

# Validate the model
metrics = model.val()  # no arguments needed, dataset and settings remembered
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # a list containing mAP50-95(B) for each category
metrics.box.image_metrics  # per-image metrics dictionary for det with precision, recall, F1, TP, FP, and FN
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # a list containing mAP50-95(M) for each category
metrics.seg.image_metrics  # per-image metrics dictionary for seg with precision, recall, F1, TP, FP, and FN

예측

학습된 YOLO26n-seg 모델을 사용하여 이미지에 대한 예측을 실행합니다.

예시
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-seg.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:
    xy = result.masks.xy  # mask polygons in pixel coordinates
    xyn = result.masks.xyn  # normalized mask polygons
    masks = result.masks.data  # binary masks, shape (N,H,W), dtype torch.uint8

전체 predict 모드 세부 정보는 예측(Predict) 페이지를 참조하십시오.

결과 출력

YOLO 인스턴스 세그멘테이션은 이미지당 하나의 Results 객체를 반환합니다. 각 결과는 객체 수준의 예측값을 저장하며, 감지된 각 인스턴스에는 고유한 바이너리 마스크, 클래스, 신뢰도 및 박스가 포함됩니다.

속성유형형태(Shape)설명
result.masksMasks(N)인스턴스 마스크.
result.masks.datatorch.uint8(N,H,W)바이너리 마스크, 값은 0 또는 1.
result.masks.xynp.float32list[(P,2)]픽셀 폴리곤.
result.masks.xynnp.float32list[(P,2)]정규화된 폴리곤.
result.boxesBoxes(N)인스턴스 박스/클래스/신뢰도.
result.boxes.clstorch.float32(N,)클래스 ID; 이름을 확인하려면 int로 변환하십시오.

모든 작업에 걸친 작업별 Results 필드에 대해서는 작업별 예측 결과(Predict Results by Task) 섹션을 참조하십시오.

시맨틱 세그멘테이션과의 차이점

인스턴스 세그멘테이션은 객체 수준의 세그멘테이션입니다. 예를 들어, 자동차 두 대가 있다면 두 개의 마스크, 두 개의 박스, 두 개의 신뢰도 점수가 생성됩니다. 시맨틱 세그멘테이션(Semantic segmentation)은 픽셀 수준의 분류입니다. 즉, 동일한 자동차들이 이미지 크기의 클래스 맵 안에서 동일한 클래스 ID를 가진 픽셀들로 처리되며, 객체별 박스, 신뢰도 점수 또는 기본 폴리곤 리스트는 제공되지 않습니다.

내보내기(Export)

YOLO26n-seg 모델을 ONNX, CoreML 등 다른 형식으로 내보냅니다.

예시
from ultralytics import YOLO

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

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

사용 가능한 YOLO26-seg 내보내기 형식은 아래 표와 같습니다. format 인자(예: format='onnx' 또는 format='engine')를 사용하여 어떤 형식으로든 내보낼 수 있습니다. 내보낸 모델에 대해 직접 예측하거나 검증할 수 있습니다(예: yolo predict model=yolo26n-seg.onnx). 내보내기가 완료되면 모델에 대한 사용 예시가 표시됩니다.

형식format 인자모델메타데이터인수
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, half, dynamic, optimize, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, half, dynamic, simplify, opset, nms, batch, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, half, dynamic, int8, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, half, dynamic, simplify, workspace, int8, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, half, int8, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, int8, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, batch, device
TF Litetfliteyolo26n-seg.tfliteimgsz, half, int8, nms, batch, data, fraction, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, int8, data, fraction, device
TF.jstfjsyolo26n-seg_web_model/imgsz, half, int8, nms, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, batch, int8, half, device
NCNNncnnyolo26n-seg_ncnn_model/imgsz, half, batch, device
IMX500imxyolo26n-seg_imx_model/imgsz, int8, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/imgsz, batch, name, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/imgsz, batch, int8, data, fraction, device
DeepXdeepxyolo26n-seg_deepx_model/imgsz, int8, data, optimize, device

전체 export 세부 정보는 Export 페이지를 참조하십시오.

FAQ

YOLO26 인스턴스 세그멘테이션 모델을 커스텀 데이터셋으로 학습하려면 어떻게 해야 합니까?

YOLO26 인스턴스 세그멘테이션 모델을 커스텀 데이터셋으로 학습하려면, 먼저 데이터셋을 YOLO 세그멘테이션 형식으로 준비해야 합니다. JSON2YOLO와 같은 도구를 사용하여 다른 형식의 데이터셋을 변환할 수 있습니다. 데이터셋이 준비되면 Python 또는 CLI 명령을 사용하여 모델을 학습할 수 있습니다:

예시
from ultralytics import YOLO

# Load a pretrained YOLO26 segment model
model = YOLO("yolo26n-seg.pt")

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

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

YOLO26에서 객체 탐지와 인스턴스 세그멘테이션의 차이점은 무엇입니까?

객체 탐지는 이미지 내의 객체를 식별하고 경계 상자(BBox)를 그려 위치를 파악하는 반면, 인스턴스 세그멘테이션은 경계 상자를 식별할 뿐만 아니라 각 객체의 정확한 형태를 구분합니다. YOLO26 인스턴스 세그멘테이션 모델은 탐지된 각 객체의 윤곽을 나타내는 마스크나 컨투어를 제공하며, 이는 의료 영상이나 자율 주행과 같이 객체의 정확한 형태를 아는 것이 중요한 작업에 특히 유용합니다.

왜 인스턴스 세그멘테이션에 YOLO26을 사용합니까?

Ultralytics YOLO26은 높은 정확도와 실시간 성능으로 인정받는 최첨단 모델로, 인스턴스 세그멘테이션 작업에 이상적입니다. YOLO26 Segment 모델은 COCO 데이터셋으로 사전 학습되어 있어 다양한 객체에 대해 강력한 성능을 보장합니다. 또한 YOLO는 학습, 검증, 예측 및 내보내기 기능을 원활하게 통합하여 지원하므로 연구 및 산업 응용 분야 모두에서 매우 다재다능합니다.

사전 학습된 YOLO 세그멘테이션 모델을 로드하고 검증하려면 어떻게 해야 합니까?

사전 학습된 YOLO 세그멘테이션 모델을 로드하고 검증하는 것은 간단합니다. Python과 CLI를 모두 사용하여 수행하는 방법은 다음과 같습니다:

예시
from ultralytics import YOLO

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

# Validate the model
metrics = model.val()
print("Mean Average Precision for boxes:", metrics.box.map)
print("Mean Average Precision for masks:", metrics.seg.map)

이 단계를 통해 모델 성능을 평가하는 데 중요한 Mean Average Precision (mAP)과 같은 검증 지표를 얻을 수 있습니다.

YOLO 세그멘테이션 모델을 ONNX 형식으로 내보내려면 어떻게 해야 합니까?

YOLO 세그멘테이션 모델을 ONNX 형식으로 내보내는 것은 간단하며 Python 또는 CLI 명령을 사용하여 수행할 수 있습니다:

예시
from ultralytics import YOLO

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

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

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

댓글