Python 사용법#
Ultralytics YOLO Python 사용법 문서에 오신 것을 환영합니다! 이 가이드는 객체 감지, 인스턴스 세그멘테이션, 시맨틱 세그멘테이션, 깊이 추정, 분류를 위해 Ultralytics YOLO를 Python 프로젝트에 원활하게 통합하는 방법을 안내합니다. 사전 학습된 모델을 불러와 사용하는 방법, 새 모델을 학습하는 방법, 이미지에서 예측을 수행하는 방법을 알아봅니다. 사용하기 쉬운 Python 인터페이스는 YOLO를 Python 프로젝트에 통합하려는 모든 분에게 유용한 리소스로, 고급 객체 감지 기능을 빠르게 구현할 수 있습니다. 시작해 보겠습니다!
시청: Ultralytics YOLO 마스터하기: Python
예를 들어 몇 줄의 코드만으로 모델을 불러오고 학습한 뒤 검증 세트에서 성능을 평가하고, ONNX 형식으로 내보낼 수도 있습니다.
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()예측#
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])내보내기#
Export 모드는 배포에 사용할 수 있는 형식으로 YOLO 모델을 내보내는 데 사용됩니다. 이 모드에서는 다른 소프트웨어 애플리케이션이나 하드웨어 장치에서 사용할 수 있는 형식으로 모델을 변환합니다. 이 모드는 프로덕션 환경에 모델을 배포할 때 유용합니다.
공식 YOLO 모델을 동적 배치 크기 및 이미지 크기를 지원하는 ONNX로 내보냅니다.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
model.export(format="onnx", dynamic=True)추적#
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")벤치마크#
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을 상속합니다. 이러한 아키텍처를 통해 머신러닝 워크플로를 더욱 유연하게 구성하고 사용자 지정할 수 있습니다.
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: 다양한 구성에서 모델 성능을 벤치마킹합니다.
각 모드는 모델 개발 및 배포의 여러 단계에 필요한 포괄적인 기능을 제공하도록 설계되었습니다.
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 모드 페이지를 참조하세요.