Ultralytics YOLO27:
Get Started

Python 사용법#

Ultralytics YOLO Python 사용법 문서에 오신 것을 환영합니다! 이 가이드는 객체 감지, 인스턴스 세그멘테이션, 시맨틱 세그멘테이션, 깊이 추정, 분류를 위해 Ultralytics YOLO를 Python 프로젝트에 원활하게 통합하는 방법을 안내합니다. 사전 학습된 모델을 불러와 사용하는 방법, 새 모델을 학습하는 방법, 이미지에서 예측을 수행하는 방법을 알아봅니다. 사용하기 쉬운 Python 인터페이스는 YOLO를 Python 프로젝트에 통합하려는 모든 분에게 유용한 리소스로, 고급 객체 감지 기능을 빠르게 구현할 수 있습니다. 시작해 보겠습니다!



시청: Ultralytics YOLO 마스터하기: Python

예를 들어 몇 줄의 코드만으로 모델을 불러오고 학습한 뒤 검증 세트에서 성능을 평가하고, ONNX 형식으로 내보낼 수도 있습니다.

Python
from ultralytics import YOLO

# 처음부터 새 YOLO 모델 만들기
model = YOLO("yolo26n.yaml")

# 사전 학습된 YOLO 모델 불러오기(학습에 권장)
model = YOLO("yolo26n.pt")

# 'coco8.yaml' 데이터셋을 사용하여 모델을 3 epoch 동안 학습하기
results = model.train(data="coco8.yaml", epochs=3)

# 검증 세트에서 모델 성능 평가하기
results = model.val()

# 모델을 사용하여 이미지에서 객체 감지 수행하기
results = model("https://ultralytics.com/images/bus.jpg")

# 모델을 ONNX 형식으로 내보내기
success = model.export(format="onnx")

학습#

학습 모드는 사용자 지정 데이터셋으로 YOLO 모델을 학습할 때 사용합니다. 이 모드에서는 지정된 데이터셋과 하이퍼파라미터를 사용해 모델을 학습합니다. 학습 과정에서는 이미지 속 객체의 클래스와 위치를 정확하게 예측할 수 있도록 모델 매개변수를 최적화합니다.

학습
from ultralytics import YOLO

model = YOLO("yolo26n.pt")  # 모든 모델 유형 전달
results = model.train(epochs=5)

학습 예제

검증#

Val 모드는 학습된 YOLO 모델을 검증하는 데 사용됩니다. 이 모드에서는 검증 세트에서 모델을 평가하여 정확도와 일반화 성능을 측정합니다. 모델의 성능을 향상하기 위해 이 모드에서 모델의 하이퍼파라미터를 조정할 수 있습니다.

검증
from ultralytics import YOLO

# YOLO 모델 로드
model = YOLO("yolo26n.yaml")

# 모델 학습
model.train(data="coco8.yaml", epochs=5)

# 학습 데이터 세트의 검증 분할로 검증
model.val()

Val 예제

예측#

Predict 모드는 학습된 YOLO 모델을 사용하여 새 이미지나 동영상에서 예측을 수행하는 데 사용됩니다. 이 모드에서는 체크포인트 파일에서 모델을 로드한 다음, 사용자가 추론을 수행할 이미지나 동영상을 제공할 수 있습니다. 모델은 입력 이미지나 동영상에서 객체의 클래스와 위치를 예측합니다.

예측
import cv2
from PIL import Image

from ultralytics import YOLO

model = YOLO("model.pt")
# 모든 형식 지원 - 이미지/디렉터리/Path/URL/동영상/PIL/ndarray. 웹캠은 0
results = model.predict(source="0")
results = model.predict(source="folder", show=True)  # 예측 결과 표시. 모든 YOLO predict 인수 지원

# PIL에서
im1 = Image.open("bus.jpg")
results = model.predict(source=im1, save=True)  # 플롯한 이미지 저장

# ndarray에서
im2 = cv2.imread("bus.jpg")
results = model.predict(source=im2, save=True, save_txt=True)  # 예측 결과를 레이블로 저장

# PIL/ndarray 목록에서
results = model.predict(source=[im1, im2])

Predict 예제

내보내기#

Export 모드는 배포에 사용할 수 있는 형식으로 YOLO 모델을 내보내는 데 사용됩니다. 이 모드에서는 다른 소프트웨어 애플리케이션이나 하드웨어 장치에서 사용할 수 있는 형식으로 모델을 변환합니다. 이 모드는 프로덕션 환경에 모델을 배포할 때 유용합니다.

내보내기

공식 YOLO 모델을 동적 배치 크기 및 이미지 크기를 지원하는 ONNX로 내보냅니다.

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)

Export 예제

추적#

Track 모드는 YOLO 모델을 사용하여 실시간으로 객체를 추적하는 데 사용됩니다. 이 모드에서는 체크포인트 파일에서 모델을 로드한 다음, 사용자가 실시간 객체 추적을 수행할 라이브 동영상 스트림을 제공할 수 있습니다. 이 모드는 감시 시스템이나 자율주행차와 같은 애플리케이션에 유용합니다.

추적
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n.pt")  # 공식 탐지 모델 로드
model = YOLO("yolo26n-seg.pt")  # 공식 세그멘테이션 모델 로드
model = YOLO("path/to/best.pt")  # 사용자 지정 모델 로드

# 모델로 추적
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True)
results = model.track(source="https://youtu.be/LNwODJXcvt4", show=True, tracker="bytetrack.yaml")

Track 예제

벤치마크#

Benchmark 모드는 YOLO의 다양한 내보내기 형식에 대한 속도와 정확도를 프로파일링하는 데 사용됩니다. 벤치마크는 내보낸 형식의 크기, 객체 탐지 및 세그멘테이션을 위한 mAP50-95 메트릭 또는 분류를 위한 accuracy_top1 메트릭, 그리고 ONNX, OpenVINO, TensorRT 등 다양한 내보내기 형식에서 이미지당 밀리초 단위로 측정한 추론 시간을 제공합니다. 이 정보를 바탕으로 사용자는 속도와 정확도 요구 사항에 따라 특정 사용 사례에 적합한 최적의 내보내기 형식을 선택할 수 있습니다.

벤치마크

공식 YOLO 모델을 모든 내보내기 형식에서 벤치마킹합니다.

from ultralytics.utils.benchmarks import benchmark

# Benchmark
benchmark(model="yolo26n.pt", data="coco8.yaml", imgsz=640, device=0)

벤치마크 예제

Trainer 사용#

YOLO 모델 클래스는 Trainer 클래스의 상위 수준 래퍼 역할을 합니다. 각 YOLO 작업에는 고유한 Trainer가 있으며, Trainer는 BaseTrainer을 상속합니다. 이러한 아키텍처를 통해 머신러닝 워크플로를 더욱 유연하게 구성하고 사용자 지정할 수 있습니다.

탐지 Trainer 예제
from ultralytics.models.yolo.detect import DetectionPredictor, DetectionTrainer, DetectionValidator

overrides = {"model": "yolo26n.pt", "data": "coco8.yaml", "epochs": 3}

# Trainer
trainer = DetectionTrainer(overrides=overrides)
trainer.train()
trained_model = trainer.best  # best.pt 경로

# Validator
validator = DetectionValidator(args={"data": "coco8.yaml"})
validator(model=trained_model)

# Predictor
predictor = DetectionPredictor(overrides={"model": trained_model})
predictor(source="https://ultralytics.com/images/bus.jpg")

# 마지막 체크포인트에서 중단된 학습 실행 재개
trainer = DetectionTrainer(overrides={"resume": "path/to/last.pt"})
trainer.train()

사용자 지정 작업을 지원하거나 연구 개발 아이디어를 탐색하도록 Trainer를 쉽게 사용자 지정할 수 있습니다. Ultralytics YOLO의 모듈식 설계를 통해 새로운 컴퓨터 비전 작업을 수행하거나 더 나은 성능을 위해 기존 모델을 미세 조정하는 등 특정 요구 사항에 맞게 프레임워크를 조정할 수 있습니다.

사용자 지정 튜토리얼

자주 묻는 질문#

  • Ultralytics YOLO를 Python 프로젝트에 간단하게 통합할 수 있습니다. 사전 학습된 모델을 로드하거나 새 모델을 처음부터 학습할 수 있습니다. 시작하는 방법은 다음과 같습니다.

    from ultralytics import YOLO
    
    # 사전 학습된 YOLO 모델 로드
    model = YOLO("yolo26n.pt")
    
    # 이미지에서 객체 탐지 수행
    results = model("https://ultralytics.com/images/bus.jpg")
    
    # 결과 시각화
    for result in results:
        result.show()

    자세한 예제는 Predict 모드 섹션을 참조하세요.

  • Ultralytics YOLO는 다양한 머신러닝 워크플로에 맞춰 여러 모드를 제공합니다. 제공되는 모드는 다음과 같습니다.

    • Train: 사용자 지정 데이터 세트를 사용하여 모델을 학습합니다.
    • Val: 검증 세트에서 모델 성능을 검증합니다.
    • Predict: 새 이미지나 동영상 스트림에서 예측을 수행합니다.
    • Export: ONNX 및 TensorRT와 같은 다양한 형식으로 모델을 내보냅니다.
    • Track: 동영상 스트림에서 객체를 실시간으로 추적합니다.
    • Benchmark: 다양한 구성에서 모델 성능을 벤치마킹합니다.

    각 모드는 모델 개발 및 배포의 여러 단계에 필요한 포괄적인 기능을 제공하도록 설계되었습니다.

  • 사용자 지정 YOLO 모델을 학습하려면 데이터 세트와 기타 하이퍼파라미터를 지정해야 합니다. 간단한 예제는 다음과 같습니다.

    from ultralytics import YOLO
    
    # YOLO 모델 로드
    model = YOLO("yolo26n.yaml")
    
    # 사용자 지정 데이터 세트로 모델 학습
    model.train(data="path/to/your/dataset.yaml", epochs=10)

    학습에 관한 자세한 내용과 사용 예제 링크는 Train 모드 페이지를 참조하세요.

  • export 함수를 사용하면 배포에 적합한 형식으로 YOLO 모델을 간단하게 내보낼 수 있습니다. 예를 들어 모델을 ONNX 형식으로 내보낼 수 있습니다.

    from ultralytics import YOLO
    
    # YOLO 모델 로드
    model = YOLO("yolo26n.pt")
    
    # 모델을 ONNX 형식으로 내보내기
    model.export(format="onnx")

    다양한 내보내기 옵션은 Export 모드 문서를 참조하세요.

  • 예, 서로 다른 데이터 세트에서 YOLO 모델을 검증할 수 있습니다. 학습 후 검증 모드를 사용하여 성능을 평가할 수 있습니다.

    from ultralytics import YOLO
    
    # YOLO 모델 로드
    model = YOLO("yolo26n.yaml")
    
    # 모델 학습
    model.train(data="coco8.yaml", epochs=5)
    
    # 다른 데이터 세트에서 모델 검증
    model.val(data="path/to/separate/data.yaml")

    자세한 예제와 사용법은 Val 모드 페이지를 참조하세요.

댓글