YOLO Vision 2026:

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

Ultralytics YOLO instance segmentation examples

Instance segmentation은 객체 검출보다 한 단계 나아간 기술로, 이미지 속 개별 객체를 식별하고 나머지 배경으로부터 분리(세분화)하는 작업을 포함합니다.

인스턴스 세그멘테이션 모델의 출력값은 이미지 내 각 객체의 윤곽을 나타내는 마스크나 등고선 세트이며, 각 객체에 대한 클래스 라벨과 신뢰도 점수가 함께 제공됩니다. 인스턴스 세그멘테이션은 이미지 내 객체의 위치뿐만 아니라 정확한 형태를 파악해야 할 때 유용합니다.



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

YOLO26 Segment 모델은 -seg 접미사(예: yolo26n-seg.pt)를 사용하며 COCO로 사전 학습되어 있습니다.

Models#

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

Models는 첫 사용 시 최신 Ultralytics release에서 자동으로 다운로드됩니다.

모델크기
(픽셀)
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을 통해 재현할 수 있습니다.
  • SpeedAmazon EC2 P4d 인스턴스를 사용하여 COCO val 이미지에서 평균을 낸 것입니다.
    재현하려면 yolo val segment data=coco.yaml batch=1 device=0|cpu을 사용하세요.
  • ParamsFLOPs 값은 Conv 및 BatchNorm 레이어를 병합하고 end2end 모델의 경우 보조 one-to-many 탐지 헤드를 제거하는 model.fuse() 이후의 융합 모델 기준입니다. 사전 학습된 체크포인트는 전체 학습 아키텍처를 유지하므로 더 높은 수치를 보일 수 있습니다.

학습(Train)#

이미지 크기 640으로 100 epochs 동안 COCO8-seg 데이터셋에서 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 cloud training을 사용하여 학습할 수도 있습니다.

데이터셋 형식#

YOLO 세분화 데이터셋 형식에 대한 자세한 내용은 Dataset Guide에서 확인할 수 있습니다. COCO 등 다른 형식의 기존 데이터셋을 YOLO 형식으로 변환하려면 Ultralytics의 JSON2YOLO 도구를 사용하세요. 또한 다각형 도구와 SAM 기반 스마트 어노테이션을 사용하여 Ultralytics Platform annotation으로 세분화 마스크를 생성할 수 있습니다.

검증(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

추론(Predict)#

학습된 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 객체를 반환합니다. 각 결과는 객체 수준의 예측을 저장하며, 감지된 각 인스턴스는 고유한 이진 마스크, 클래스, 신뢰도 및 상자를 가집니다.

속성유형형태설명
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). 내보내기가 완료된 후 모델에 대한 사용 예시가 표시됩니다.

참고

CoreML 임베디드 NMS 파이프라인(nms=True)은 객체 검출 모델만 지원합니다. CoreML로 세분화 내보내기를 수행하면 경고가 발생하며 NMS가 없는 원시 모델을 생성하는 nms=False이 강제 적용됩니다.

형식format 인수모델메타데이터인수
PyTorch-yolo26n-seg.pt-
TorchScripttorchscriptyolo26n-seg.torchscriptimgsz, quantize, dynamic, nms, batch, device
ONNXonnxyolo26n-seg.onnximgsz, quantize, dynamic, simplify, opset, nms, batch, data, fraction, device
OpenVINOopenvinoyolo26n-seg_openvino_model/imgsz, quantize, dynamic, nms, batch, data, fraction, device
TensorRTengineyolo26n-seg.engineimgsz, quantize, dynamic, simplify, opset, workspace, nms, batch, data, fraction, device
CoreMLcoremlyolo26n-seg.mlpackageimgsz, dynamic, quantize, nms, batch, device
TF SavedModelsaved_modelyolo26n-seg_saved_model/imgsz, keras, quantize, opset, nms, batch, data, fraction, device
TF GraphDefpbyolo26n-seg.pbimgsz, opset, batch, device
TF Edge TPUedgetpuyolo26n-seg_edgetpu.tfliteimgsz, quantize, opset, data, fraction, device
PaddlePaddlepaddleyolo26n-seg_paddle_model/imgsz, batch, device
MNNmnnyolo26n-seg.mnnimgsz, 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.onnximgsz, batch, name, quantize, simplify, opset, data, fraction, device
LiteRTlitertyolo26n-seg.tfliteimgsz, quantize, batch, data, fraction, device
Hailohailoyolo26n-seg_hailo_model/imgsz, name, quantize, data, fraction, simplify, conf, iou
Huawei Ascendascendyolo26n-seg_ascend_model/imgsz, batch, name, quantize, opset, simplify, nms

전체 export 세부 정보는 Export 페이지에서 확인하세요.

FAQ#

  • 커스텀 데이터셋으로 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 인스턴스 세그멘테이션 모델은 탐지된 각 객체의 윤곽을 따르는 마스크나 등고선을 제공하며, 이는 의료 영상 처리나 자율 주행과 같이 객체의 정확한 형태 파악이 중요한 작업에 특히 유용합니다.

  • Ultralytics YOLO26은 높은 정확도와 실시간 성능으로 인정받는 최첨단 모델로, 인스턴스 세분화 작업에 이상적입니다. YOLO26 Segment 모델은 COCO dataset으로 사전 학습되어 다양한 객체에 대해 강력한 성능을 보장합니다. 또한 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 형식으로 내보내는 것은 간단하며 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 페이지를 참조하십시오.

댓글