Ultralytics YOLO27:
Get Started

Ultralytics YOLO를 사용한 인스턴스 세그멘테이션#

Ultralytics YOLO instance segmentation examples

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

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



시청: Python에서 사전 학습된 Ultralytics YOLO 모델로 분할을 실행합니다.
팁

YOLO26 Segment 모델은 -seg 접미사를 사용합니다. 예를 들면 yolo26n-seg.pt이며, COCO로 사전 학습됩니다.

모델#

COCO 데이터셋으로 사전 학습된 YOLO26 Segment 모델은 아래와 같습니다.

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

모델크기
(픽셀)
mAP박스
50-95(e2e)
mAP마스크
50-95(e2e)
속도
CPU ONNX
(ms)
속도
T4 TensorRT10
(ms)
파라미터
(M)
FLOPs
(B)
YOLO26n-seg64039.633.953.3 ± 0.52.1 ± 0.02.79.3
YOLO26s-seg64047.340.0118.4 ± 0.93.3 ± 0.010.434.5
YOLO26m-seg64052.544.1328.2 ± 2.46.7 ± 0.123.6121.7
YOLO26l-seg64054.445.5387.0 ± 3.78.0 ± 0.128.0140.1
YOLO26x-seg64056.547.0787.0 ± 6.816.4 ± 0.162.8314.0
  • mAPval 값은 COCO val2017 데이터셋에서 단일 모델, 단일 스케일로 측정한 결과입니다.
    yolo segment val data=coco.yaml device=0 nms=False로 재현할 수 있습니다.
  • 속도는 CPU의 ONNX와 NVIDIA T4 GPU의 TensorRT10을 사용하여 COCO val 이미지에서 측정한 평균값입니다.
    yolo segment val data=coco.yaml batch=1 device=0|cpu nms=False로 재현할 수 있습니다.
  • Params 및 FLOPs 값은 Conv/BatchNorm 폴딩과 사용하지 않는 감지 브랜치 제거 후의 융합 모델 기준입니다. 사전 학습된 체크포인트에는 전체 학습 아키텍처가 유지되므로 값이 더 높을 수 있습니다.

이 체크포인트는 COCO의 80개 클래스를 세그멘테이션합니다. 재학습 없이 목록에 없는 카테고리를 세그멘테이션하려면, 텍스트 프롬프트, 시각적 예시 또는 내장 어휘를 입력으로 받는 YOLOE를 참조하세요.

예비 COCO 박스 및 마스크 결과는 미출시 YOLO27 미리 보기를 참조하세요.

학습#

COCO8-seg 데이터셋에서 이미지 크기 640으로 100 에포크 동안 YOLO26n-seg를 학습합니다. 사용 가능한 인수의 전체 목록은 Configuration 페이지를 참조하세요.

예제
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n-seg.yaml")  # YAML에서 새 모델을 생성합니다.
model = YOLO("yolo26n-seg.pt")  # 사전 학습된 모델을 불러옵니다(학습에 권장).
model = YOLO("yolo26n-seg.yaml").load("yolo26n-seg.pt")  # YAML에서 모델을 생성하고 가중치를 전이합니다.

# 모델 학습
results = model.train(data="coco8-seg.yaml", epochs=100, imgsz=640)

train 모드의 전체 세부 정보는 Train 페이지를 참조하세요. 세그멘테이션 모델은 Ultralytics Platform 클라우드 학습으로도 학습할 수 있습니다.

데이터셋 형식#

YOLO 세그멘테이션 데이터셋 형식의 자세한 내용은 Dataset Guide를 참조하세요. 기존 COCO JSON 데이터셋을 YOLO 형식으로 변환하려면 COCO to YOLO guide에 설명된 대로 내장 convert_coco 함수를 use_segments=True와 함께 사용하세요. 다각형 도구와 SAM 기반 스마트 어노테이션을 사용하여 Ultralytics Platform 어노테이션으로 세그멘테이션 마스크를 만들 수도 있습니다.

검증#

학습된 YOLO26n-seg 모델의 정확도를 검증합니다. model은 학습 data와 인수를 모델 속성으로 유지하므로 인수가 필요하지 않습니다. Train 예제의 path/to/best.pt은 COCO8-seg에서 검증합니다. 공식 가중치에는 사용자 컴퓨터에 존재하지 않는 학습 데이터셋 경로가 기록되어 있으므로, 경고와 함께 기본 작업 coco8-seg.yaml로 대체됩니다. 다른 데이터셋에서 검증하려면 data을 전달하세요.

예제
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n-seg.pt")  # 공식 모델을 불러옵니다
model = YOLO("path/to/best.pt")  # 사용자 지정 모델 로드

# 모델을 검증합니다
metrics = model.val()  # 데이터셋과 설정이 기억되므로 인수가 필요하지 않습니다
metrics.box.map  # map50-95(B)
metrics.box.map50  # map50(B)
metrics.box.map75  # map75(B)
metrics.box.maps  # 각 카테고리의 mAP50-95(B)가 포함된 목록
metrics.box.image_metrics  # 정밀도, 재현율, F1, TP, FP, FN을 포함하는 이미지별 det 메트릭 딕셔너리
metrics.seg.map  # map50-95(M)
metrics.seg.map50  # map50(M)
metrics.seg.map75  # map75(M)
metrics.seg.maps  # 각 카테고리의 mAP50-95(M)가 포함된 목록
metrics.seg.image_metrics  # 정밀도, 재현율, F1, TP, FP, FN을 포함하는 이미지별 seg 메트릭 딕셔너리

예측#

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

예제
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n-seg.pt")  # 공식 모델을 불러옵니다
model = YOLO("path/to/best.pt")  # 사용자 지정 모델 로드

# 모델로 예측을 수행합니다
results = model("https://ultralytics.com/images/bus.jpg")  # 이미지에 대해 예측을 수행합니다

# 결과에 액세스합니다
for result in results:
    xy = result.masks.xy  # 픽셀 좌표의 마스크 다각형
    xyn = result.masks.xyn  # 정규화된 마스크 다각형
    masks = result.masks.data  # 이진 마스크, shape (N,H,W), dtype torch.uint8

Predict 페이지에서 predict 모드의 전체 세부 정보를 확인하세요.

결과 출력#

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

속성유형형태설명
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 필드를 확인하려면 작업별 예측 결과 섹션을 참조하세요.

인스턴스 세그멘테이션과 시맨틱 세그멘테이션 비교#

인스턴스 세그멘테이션은 객체 수준 세그멘테이션입니다. 자동차 두 대는 마스크 두 개, 박스 두 개, 신뢰도 점수 두 개를 생성합니다. 시맨틱 세그멘테이션은 픽셀 수준 분류입니다. 동일한 자동차 두 대는 객체별 박스, 신뢰도 또는 기본 다각형 목록 없이 한 이미지 크기의 클래스 맵에서 같은 클래스 ID를 가진 픽셀이 됩니다. 시맨틱 세그멘테이션 페이지의 항목별 비교를 참조하세요.

내보내기#

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

예제
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n-seg.pt")  # 공식 모델을 불러옵니다
model = YOLO("path/to/best.pt")  # 사용자 지정 모델 로드

# 모델을 내보냅니다
model.export(format="onnx")

사용 가능한 YOLO26-seg 내보내기 형식은 아래 표에 나와 있습니다. format 인수를 사용하여 모든 형식으로 내보낼 수 있습니다. 예를 들면 format='onnx' 또는 format='engine'입니다. 내보낸 모델에서 바로 예측 또는 검증을 실행할 수 있습니다. 예를 들면 yolo predict model=yolo26n-seg.onnx입니다. 내보내기가 완료되면 모델의 사용 예제가 표시됩니다.

참고

CoreML은 정적 shape에서 객체 탐지, 인스턴스 세그멘테이션 및 포즈를 위한 내장 NMS(nms=True)를 지원합니다. 기본 세그멘테이션 내보내기(nms=None)에서는 NMS 처리를 사용자가 맡습니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n-seg.pt✅-
TorchScripttorchscriptyolo26n-seg.torchscript✅imgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnx✅imgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/✅imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engine✅imgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackage✅imgsz, dynamic, quantize, nms, batch, device
Apple Core AIcoreaiyolo26n-seg.aimodel✅imgsz, batch, quantize
TF SavedModelsaved_modelyolo26n-seg_saved_model/✅imgsz, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pb❌imgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tflite✅imgsz, quantize, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tflite✅imgsz, quantize, batch, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/✅imgsz, batch, device
MNNmnnyolo26n-seg.mnn✅imgsz, batch, dynamic, quantize, simplify, opset, nms, device
NCNNncnnyolo26n-seg_ncnn_model/✅imgsz, quantize, batch, device
IMX500imxyolo26n-seg_imx_model/✅imgsz, quantize, data, fraction, nms, device
RKNNrknnyolo26n-seg_rknn_model/✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
ExecuTorchexecutorchyolo26n-seg_executorch_model/✅imgsz, batch, device
Axeleraaxelerayolo26n-seg_axelera_model/✅imgsz, batch, quantize, data, fraction, device
DEEPXdeepxyolo26n-seg_deepx_model/✅imgsz, quantize, simplify, opset, data, optimize, device
Qualcomm QNNqnnyolo26n-seg_qnn.onnx✅imgsz, batch, name, quantize, simplify, opset, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/✅imgsz, name, quantize, data, fraction, simplify, conf, iou, device
Huawei Ascendascendyolo26n-seg_ascend_model/✅imgsz, batch, name, quantize, opset, simplify, nms, device
AMD Xilinxxilinxyolo26n-seg_xilinx_model/✅imgsz, name, quantize, data, fraction, opset, simplify, device

nms=None은 외부 NMS를 위한 원시 출력을 기본값으로 사용합니다. 사용 가능한 NMS-free head를 선택하려면 nms=False을 설정합니다. 지원되지 않는 형식은 해당 형식의 기본 출력 경로로 대체됩니다. 위의 nms 항목은 nms=True을 사용해 NMS를 포함할 수 있는 형식을 나타냅니다.

자세한 export 내용은 내보내기 페이지를 참조하세요.

자주 묻는 질문#

  • 사용자 지정 데이터셋으로 YOLO26 세그멘테이션 모델을 학습하려면 먼저 YOLO 세그멘테이션 형식으로 데이터셋을 준비해야 합니다. 내장 convert_coco 유틸리티를 사용하여 COCO JSON 데이터셋을 변환할 수 있습니다. 데이터셋을 준비한 후 Python 또는 CLI 명령으로 모델을 학습할 수 있습니다.

    예제
    from ultralytics import YOLO
    
    # 사전 학습된 YOLO 세그먼트 모델 로드
    model = YOLO("yolo26n-seg.pt")
    
    # 모델 학습
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    사용 가능한 인수에 대한 자세한 내용은 Configuration 페이지를 참조하세요.

  • 객체 탐지는 이미지 내 객체 주위에 바운딩 박스를 그려 객체를 식별하고 위치를 찾습니다. 반면 인스턴스 세그멘테이션은 바운딩 박스를 식별할 뿐만 아니라 각 객체의 정확한 형태도 구분합니다. YOLO26 인스턴스 세그멘테이션 모델은 감지된 각 객체의 윤곽을 나타내는 마스크 또는 컨투어를 제공하므로, 의료 영상이나 자율 주행처럼 객체의 정확한 형태가 중요한 작업에 특히 유용합니다.

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

  • 사전 학습된 YOLO 세그멘테이션 모델은 간단하게 로드하고 검증할 수 있습니다. Python과 CLI를 사용하면 다음과 같이 실행할 수 있습니다.

    예제
    from ultralytics import YOLO
    
    # 사전 학습된 모델 불러오기
    model = YOLO("yolo26n-seg.pt")
    
    # 모델을 검증합니다
    metrics = model.val()
    print("Mean Average Precision for boxes:", metrics.box.map)
    print("Mean Average Precision for masks:", metrics.seg.map)

    이 단계를 통해 모델 성능을 평가하는 데 중요한 평균 정밀도(mAP)와 같은 검증 메트릭을 얻을 수 있습니다.

  • Python 또는 CLI 명령을 사용하면 YOLO 세그멘테이션 모델을 간편하게 ONNX 형식으로 내보낼 수 있습니다.

    예제
    from ultralytics import YOLO
    
    # 사전 학습된 모델 불러오기
    model = YOLO("yolo26n-seg.pt")
    
    # 모델을 ONNX 형식으로 내보내기
    model.export(format="onnx")

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

댓글