yolov8 / docs /ko /modes /train.md
ChelseaTang2023
added
ebdcee1

A newer version of the Gradio SDK is available: 5.35.0

Upgrade
metadata
comments: true
description: YOLOv8 λͺ¨λΈμ„ Ultralytics YOLOλ₯Ό μ‚¬μš©ν•˜μ—¬ ν›ˆλ ¨ν•˜λŠ” 단계별 κ°€μ΄λ“œλ‘œ, 단일 GPU 및 닀쀑 GPU ν›ˆλ ¨μ˜ 예제 포함
keywords: >-
  Ultralytics, YOLOv8, YOLO, 객체 감지, ν›ˆλ ¨ λͺ¨λ“œ, μ‚¬μš©μž μ •μ˜ 데이터셋, GPU ν›ˆλ ¨, 닀쀑 GPU, ν•˜μ΄νΌνŒŒλΌλ―Έν„°,
  CLI 예제, Python 예제

Ultralytics YOLO와 ν•¨κ»˜ ν•˜λŠ” λͺ¨λΈ ν›ˆλ ¨

Ultralytics YOLO μƒνƒœκ³„ 및 톡합

μ†Œκ°œ

λ”₯λŸ¬λ‹ λͺ¨λΈμ„ ν›ˆλ ¨ν•œλ‹€λŠ” 것은 λͺ¨λΈμ— 데이터λ₯Ό κ³΅κΈ‰ν•˜κ³  그것이 μ •ν™•ν•œ μ˜ˆμΈ‘μ„ ν•  수 μžˆλ„λ‘ λ§€κ°œλ³€μˆ˜λ₯Ό μ‘°μ •ν•˜λŠ” 과정을 λ§ν•©λ‹ˆλ‹€. Ultralytics YOLOv8의 ν›ˆλ ¨ λͺ¨λ“œλŠ” ν˜„λŒ€ ν•˜λ“œμ›¨μ–΄ κΈ°λŠ₯을 μ™„μ „νžˆ ν™œμš©ν•˜μ—¬ 객체 감지 λͺ¨λΈμ˜ 효과적이고 효율적인 ν›ˆλ ¨μ„ μœ„ν•΄ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이 κ°€μ΄λ“œλŠ” YOLOv8의 κ°•λ ₯ν•œ κΈ°λŠ₯ μ„ΈνŠΈλ₯Ό μ‚¬μš©ν•˜μ—¬ 자체 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” 데 ν•„μš”ν•œ λͺ¨λ“  μ„ΈλΆ€ 정보λ₯Ό λ‹€λ£¨λŠ” 것을 λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€.



μ‹œμ²­ν•˜κΈ°: Google Colabμ—μ„œ μ—¬λŸ¬λΆ„μ˜ μ‚¬μš©μž μ •μ˜ λ°μ΄ν„°μ…‹μœΌλ‘œ YOLOv8 λͺ¨λΈμ„ ν›ˆλ ¨ν•˜λŠ” 방법.

Ultralytics YOLO둜 ν›ˆλ ¨ν•˜λŠ” 이유?

YOLOv8의 ν›ˆλ ¨ λͺ¨λ“œλ₯Ό μ„ νƒν•˜λŠ” λ°λŠ” λͺ‡ κ°€μ§€ 섀득λ ₯ μžˆλŠ” μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€:

  • νš¨μœ¨μ„±: 단일 GPU 섀정이든 μ—¬λŸ¬ GPU둜 ν™•μž₯ν•˜λ“ , ν•˜λ“œμ›¨μ–΄λ₯Ό μ΅œλŒ€ν•œ ν™œμš©ν•˜μ„Έμš”.
  • λ‹€μ–‘μ„±: COCO, VOC, ImageNetκ³Ό 같은 기쑴의 λ°μ΄ν„°μ…‹λΏλ§Œ μ•„λ‹ˆλΌ μ‚¬μš©μž μ •μ˜ λ°μ΄ν„°μ…‹μœΌλ‘œλ„ ν›ˆλ ¨ κ°€λŠ₯.
  • μ‚¬μš©μž μΉœν™”μ : κ°„λ‹¨ν•˜λ©΄μ„œλ„ κ°•λ ₯ν•œ CLI 및 Python μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•œ 직관적인 ν›ˆλ ¨ κ²½ν—˜ 제곡.
  • ν•˜μ΄νΌνŒŒλΌλ―Έν„° μœ μ—°μ„±: λͺ¨λΈμ˜ μ„±λŠ₯을 λ―Έμ„Έ μ‘°μ •ν•  수 μžˆλŠ” λ‹€μ–‘ν•˜κ²Œ ꡬ성 κ°€λŠ₯ν•œ ν•˜μ΄νΌνŒŒλΌλ―Έν„°.

ν›ˆλ ¨ λͺ¨λ“œμ˜ μ£Όμš” κΈ°λŠ₯

λ‹€μŒμ€ YOLOv8의 ν›ˆλ ¨ λͺ¨λ“œμ˜ μ£Όμš” κΈ°λŠ₯ 쀑 μΌλΆ€μž…λ‹ˆλ‹€:

  • μžλ™ 데이터셋 λ‹€μš΄λ‘œλ“œ: COCO, VOC, ImageNetκ³Ό 같은 ν‘œμ€€ 데이터셋듀은 첫 μ‚¬μš©μ‹œ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œλ©λ‹ˆλ‹€.
  • 닀쀑 GPU 지원: μ—¬λŸ¬ GPU에 걸쳐 ν›ˆλ ¨ λ…Έλ ₯을 λΉ λ₯΄κ²Œ ν™•λŒ€ν•˜κΈ° μœ„ν•œ 규λͺ¨μžˆλŠ” ν›ˆλ ¨ 지원.
  • ν•˜μ΄νΌνŒŒλΌλ―Έν„° ꡬ성: YAML ꡬ성 νŒŒμΌμ΄λ‚˜ CLI 인수λ₯Ό 톡해 ν•˜μ΄νΌνŒŒλΌλ―Έν„° μˆ˜μ • κ°€λŠ₯.
  • μ‹œκ°ν™” 및 λͺ¨λ‹ˆν„°λ§: ν›ˆλ ¨ μ§€ν‘œμ˜ μ‹€μ‹œκ°„ 좔적 및 ν•™μŠ΅ κ³Όμ •μ˜ μ‹œκ°ν™”λ‘œ 더 λ‚˜μ€ μΈμ‚¬μ΄νŠΈ 제곡.

!!! Tip "팁"

* YOLOv8 데이터셋듀은 첫 μ‚¬μš©μ‹œ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œλ©λ‹ˆλ‹€, 예: `yolo train data=coco.yaml`

μ‚¬μš© 예제

COCO128 λ°μ΄ν„°μ…‹μ—μ„œ YOLOv8n을 이미지 크기 640으둜 100 에포크 λ™μ•ˆ ν›ˆλ ¨ν•©λ‹ˆλ‹€. ν›ˆλ ¨ μž₯μΉ˜λŠ” device 인수λ₯Ό μ‚¬μš©ν•˜μ—¬ μ§€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 인수λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμœΌλ©΄ μ‚¬μš© κ°€λŠ₯ν•œ 경우 GPU device=0이, μ•„λ‹ˆλ©΄ device=cpuκ°€ μ‚¬μš©λ©λ‹ˆλ‹€. 전체 ν›ˆλ ¨ 인수 λͺ©λ‘μ€ μ•„λž˜ Arguments μ„Ήμ…˜μ„ μ°Έμ‘°ν•˜μ„Έμš”.

!!! Example "단일 GPU 및 CPU ν›ˆλ ¨ 예제"

μž₯μΉ˜λŠ” μžλ™μœΌλ‘œ κ²°μ •λ©λ‹ˆλ‹€. GPUκ°€ μ‚¬μš© κ°€λŠ₯ν•˜λ©΄ μ‚¬μš©λ˜λ©°, κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ CPUμ—μ„œ ν›ˆλ ¨μ΄ μ‹œμž‘λ©λ‹ˆλ‹€.

=== "Python"

    ```python
    from ultralytics import YOLO

    # λͺ¨λΈμ„ λ‘œλ“œν•˜μ„Έμš”.
    model = YOLO('yolov8n.yaml')  # YAMLμ—μ„œ μƒˆ λͺ¨λΈ ꡬ좕
    model = YOLO('yolov8n.pt')  # 사전 ν›ˆλ ¨λœ λͺ¨λΈ λ‘œλ“œ (ν›ˆλ ¨μ„ μœ„ν•΄ ꢌμž₯됨)
    model = YOLO('yolov8n.yaml').load('yolov8n.pt')  # YAMLμ—μ„œ ꡬ좕 및 κ°€μ€‘μΉ˜ 전달

    # λͺ¨λΈμ„ ν›ˆλ ¨ν•©λ‹ˆλ‹€.
    results = model.train(data='coco128.yaml', epochs=100, imgsz=640)
    ```

=== "CLI"

    ```bash
    # YAMLμ—μ„œ μƒˆ λͺ¨λΈμ„ κ΅¬μΆ•ν•˜κ³  μ²˜μŒλΆ€ν„° ν›ˆλ ¨μ„ μ‹œμž‘ν•˜μ„Έμš”.
    yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640

    # 사전 ν›ˆλ ¨λœ *.pt λͺ¨λΈμ—μ„œ ν›ˆλ ¨μ„ μ‹œμž‘ν•˜μ„Έμš”.
    yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640

    # YAMLμ—μ„œ μƒˆ λͺ¨λΈμ„ κ΅¬μΆ•ν•˜κ³ , 사전 ν›ˆλ ¨λœ κ°€μ€‘μΉ˜λ₯Ό μ „λ‹¬ν•˜κ³  ν›ˆλ ¨μ„ μ‹œμž‘ν•˜μ„Έμš”.
    yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
    ```

닀쀑 GPU ν›ˆλ ¨

닀쀑 GPU ν›ˆλ ¨μ„ 톡해 μ‚¬μš© κ°€λŠ₯ν•œ ν•˜λ“œμ›¨μ–΄ λ¦¬μ†ŒμŠ€λ₯Ό 더 효율적으둜 ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°λŠ₯은 Python API와 λͺ…λ Ήν–‰ μΈν„°νŽ˜μ΄μŠ€ λͺ¨λ‘λ₯Ό 톡해 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 닀쀑 GPU ν›ˆλ ¨μ„ ν™œμ„±ν™”ν•˜λ €λ©΄ μ‚¬μš©ν•˜λ €λŠ” GPU μž₯치 IDλ₯Ό μ§€μ •ν•˜μ„Έμš”.

!!! Example "닀쀑 GPU ν›ˆλ ¨ 예제"

2개의 GPU, CUDA μž₯치 0κ³Ό 1둜 ν›ˆλ ¨ν•˜λ €λ©΄ λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ„Έμš”. ν•„μš”μ— 따라 μΆ”κ°€ GPU둜 ν™•μž₯ν•˜μ„Έμš”.

=== "Python"

    ```python
    from ultralytics import YOLO

    # λͺ¨λΈμ„ λ‘œλ“œν•˜μ„Έμš”.
    model = YOLO('yolov8n.pt')  # 사전 ν›ˆλ ¨λœ λͺ¨λΈ λ‘œλ“œ (ν›ˆλ ¨ μΆ”μ²œλ¨)

    # 2개의 GPU둜 λͺ¨λΈμ„ ν›ˆλ ¨ν•©λ‹ˆλ‹€.
    results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device=[0, 1])
    ```

=== "CLI"

    ```bash
    # 사전 ν›ˆλ ¨λœ *.pt λͺ¨λΈλ‘œλΆ€ν„° μ‹œμž‘ν•˜μ—¬ GPU 0κ³Ό 1을 μ‚¬μš©ν•˜μ—¬ ν›ˆλ ¨ν•©λ‹ˆλ‹€.
    yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=0,1
    ```

Apple M1 및 M2 MPS ν›ˆλ ¨

Ultralytics YOLO λͺ¨λΈμ— ν†΅ν•©λœ Apple M1 및 M2 칩듀에 λŒ€ν•œ 지원을 톡해 Apple의 κ°•λ ₯ν•œ Metal Performance Shaders (MPS) ν”„λ ˆμž„μ›Œν¬λ₯Ό ν™œμš©ν•˜μ—¬ μž₯μΉ˜μ—μ„œ λͺ¨λΈμ„ ν›ˆλ ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. MPSλŠ” Apple μ‚¬μš©μž μ§€μ • μ‹€λ¦¬μ½˜μ—μ„œ 컴퓨터 및 이미지 처리 μž‘μ—…μ„ μ‹€ν–‰ν•˜λŠ” κ³ μ„±λŠ₯ 방법을 μ œκ³΅ν•©λ‹ˆλ‹€.

Apple M1 및 M2 μΉ©μ—μ„œ ν›ˆλ ¨μ„ ν™œμ„±ν™”ν•˜λ €λ©΄, ν›ˆλ ¨ 과정을 μ‹œμž‘ν•  λ•Œ μž₯치둜 'mps'λ₯Ό μ§€μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€. μ•„λž˜λŠ” Python 및 λͺ…λ Ήν–‰ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 이λ₯Ό μˆ˜ν–‰ν•  수 μžˆλŠ” μ˜ˆμ œμž…λ‹ˆλ‹€:

!!! Example "MPS ν›ˆλ ¨ 예제"

=== "Python"

    ```python
    from ultralytics import YOLO

    # λͺ¨λΈμ„ λ‘œλ“œν•˜μ„Έμš”.
    model = YOLO('yolov8n.pt')  # 사전 ν›ˆλ ¨λœ λͺ¨λΈ λ‘œλ“œ (ν›ˆλ ¨ μΆ”μ²œλ¨)

    # 2개의 GPU둜 λͺ¨λΈμ„ ν›ˆλ ¨ν•©λ‹ˆλ‹€.
    results = model.train(data='coco128.yaml', epochs=100, imgsz=640, device='mps')
    ```

=== "CLI"

    ```bash
    # 사전 ν›ˆλ ¨λœ *.pt λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ mps μž₯μΉ˜μ—μ„œ ν›ˆλ ¨μ„ μ‹œμž‘ν•©λ‹ˆλ‹€.
    yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640 device=mps
    ```

M1/M2 칩의 μ—°μ‚°λ ₯을 ν™œμš©ν•˜λ©΄μ„œ ν›ˆλ ¨ μž‘μ—…μ„ 더 효율적으둜 μ²˜λ¦¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μžμ„Έν•œ μ§€μΉ¨κ³Ό κ³ κΈ‰ μ„€μ • μ˜΅μ…˜μ„ μ›ν•˜μ‹ λ‹€λ©΄ PyTorch MPS λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

μ€‘λ‹¨λœ ν›ˆλ ¨ μ΄μ–΄λ‚˜κ°€κΈ°

이전에 μ €μž₯된 μƒνƒœμ—μ„œ ν›ˆλ ¨μ„ μ΄μ–΄λ‚˜κ°€λŠ” κΈ°λŠ₯은 λ”₯λŸ¬λ‹ λͺ¨λΈμ„ λ‹€λ£° λ•Œ μ€‘μš”ν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€. 이 κΈ°λŠ₯은 ν›ˆλ ¨ 과정이 예기치 μ•Šκ²Œ μ€‘λ‹¨λ˜μ—ˆκ±°λ‚˜ μƒˆλ‘œμš΄ λ°μ΄ν„°λ‘œ λͺ¨λΈμ„ 계속 ν›ˆλ ¨ν•˜κ±°λ‚˜ 더 λ§Žμ€ 에포크 λ™μ•ˆ ν›ˆλ ¨μ„ μ§„ν–‰ν•˜κ³  싢을 λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

ν›ˆλ ¨μ„ μž¬κ°œν•  λ•Œ, Ultralytics YOLOλŠ” λ§ˆμ§€λ§‰μœΌλ‘œ μ €μž₯된 λͺ¨λΈμ—μ„œ κ°€μ€‘μΉ˜λ₯Ό λ‘œλ“œν•˜κ³  μ˜΅ν‹°λ§ˆμ΄μ € μƒνƒœ, ν•™μŠ΅λ₯  μŠ€μΌ€μ€„λŸ¬, 에포크 λ²ˆν˜Έλ„ λ³΅μ›ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 ν›ˆλ ¨ 과정을 μ€‘λ‹¨λœ 지점뢀터 μ΄μ–΄κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

Ultralytics YOLOμ—μ„œ train λ©”μ„œλ“œ 호좜 μ‹œ resume 인수λ₯Ό True둜 μ„€μ •ν•˜κ³  λΆ€λΆ„μ μœΌλ‘œ ν›ˆλ ¨λœ λͺ¨λΈ κ°€μ€‘μΉ˜κ°€ ν¬ν•¨λœ .pt 파일의 경둜λ₯Ό μ§€μ •ν•˜λ©΄ ν›ˆλ ¨μ„ μ΄μ–΄λ‚˜κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.