์ฝ˜ํ…์ธ ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๊ณ ๊ธ‰ YOLO11 DVCLive๋ฅผ ์‚ฌ์šฉํ•œ ์‹คํ—˜ ์ถ”์ 

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ ์‹คํ—˜ ์ถ”์ ์€ ๋ชจ๋ธ ๊ฐœ๋ฐœ๊ณผ ํ‰๊ฐ€์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ˆ˜๋งŽ์€ ํ›ˆ๋ จ ์‹คํ–‰์˜ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฉ”ํŠธ๋ฆญ ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ์ดํ•ดํ•˜๊ณ  ๋ชจ๋ธ์„ ๊ฐœ์„ ํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์˜์‚ฌ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

DVCLive๋ฅผ ๋‹ค์Œ๊ณผ ํ†ตํ•ฉํ•˜๋ฉด Ultralytics YOLO11 ์™€ ํ†ตํ•ฉํ•˜๋ฉด ์‹คํ—˜์„ ์ถ”์ ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด ํ†ตํ•ฉ์€ ์ฃผ์š” ์‹คํ—˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ๊ธฐ๋กํ•˜๊ณ , ์—ฌ๋Ÿฌ ์‹คํ–‰์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜๊ณ , ์‹ฌ์ธต ๋ถ„์„์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์›ํ™œํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” DVCLive๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

DVCLive

DVCLive ๊ฐœ์š”

DVC์—์„œ ๊ฐœ๋ฐœํ•œ DVCLive๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์˜ ์‹คํ—˜ ์ถ”์ ์„ ์œ„ํ•œ ํ˜์‹ ์ ์ธ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Git ๋ฐ DVC์™€ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ๋ชจ๋ธ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ํ•™์Šต ์ง€ํ‘œ์™€ ๊ฐ™์€ ์ค‘์š”ํ•œ ์‹คํ—˜ ๋ฐ์ดํ„ฐ์˜ ๋กœ๊น…์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ์„ฑ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ DVCLive๋Š” ์ง๊ด€์ ์ธ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๋ฐ ๋ถ„์„ ๋„๊ตฌ๋กœ ๋จธ์‹  ๋Ÿฌ๋‹ ํ”„๋กœ์ ํŠธ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ  ์—ฌ๋Ÿฌ ์‹คํ–‰์„ ์†์‰ฝ๊ฒŒ ๋น„๊ต ๋ฐ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

YOLO11 DVCLive๋ฅผ ํ†ตํ•œ ๊ต์œก

YOLO11 ๊ต์œก ์„ธ์…˜์„ DVCLive๋กœ ํšจ๊ณผ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ DVC๋Š” ์ถ”์ ๋œ ๋ชจ๋“  ์‹คํ—˜์—์„œ ๋ฉ”ํŠธ๋ฆญ ํ”Œ๋กฏ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ๋ณด๊ณ ์„œ ์ƒ์„ฑ์„ ํฌํ•จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์‹คํ—˜์„ ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ต์œก ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ํฌ๊ด„์ ์ธ ์‹œ๊ฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜

ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค:

์„ค์น˜

# Install the required packages for YOLO11 and DVCLive
pip install ultralytics dvclive

์„ค์น˜ ๊ณผ์ •๊ณผ ๊ด€๋ จ๋œ ์ž์„ธํ•œ ์ง€์นจ๊ณผ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” YOLO11 ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”. YOLO11 ์— ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ํŒ์„ ํ™•์ธํ•˜์„ธ์š”.

DVCLive ๊ตฌ์„ฑ

ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ–ˆ์œผ๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ํ•„์š”ํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ํ†ตํ•ด ๊ธฐ์กด ์›Œํฌํ”Œ๋กœ์šฐ์— DVCLive๋ฅผ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Git์€ ์ฝ”๋“œ์™€ DVCLive ๊ตฌ์„ฑ ๋ชจ๋‘์— ๋Œ€ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์„ธ์š”.

์ดˆ๊ธฐ ํ™˜๊ฒฝ ์„ค์ •

# Initialize a Git repository
git init -q

# Configure Git with your details
git config --local user.email "you@example.com"
git config --local user.name "Your Name"

# Initialize DVCLive in your project
dvc init -q

# Commit the DVCLive setup to your Git repository
git commit -m "DVC init"

์ด ๋ช…๋ น์—์„œ "you@example.com"๋ฅผ Git ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋œ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋กœ, "์‚ฌ์šฉ์ž ์ด๋ฆ„"์„ Git ๊ณ„์ • ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•

์‚ฌ์šฉ ์ง€์นจ์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์— Ultralytics ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ YOLO11 ๋ชจ๋ธ์„ ํ™•์ธํ•˜์„ธ์š”. ํ”„๋กœ์ ํŠธ ์š”๊ตฌ ์‚ฌํ•ญ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ๋ชจ๋ธ์„ ์„ ํƒํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ต์œก YOLO11 DVCLive๋ฅผ ์‚ฌ์šฉํ•œ ๋ชจ๋ธ

YOLO11 ๊ต์œก ์„ธ์…˜์„ ์‹คํ–‰ํ•˜์—ฌ ์‹œ์ž‘ํ•˜์„ธ์š”. ํ”„๋กœ์ ํŠธ์˜ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ๊ตฌ์„ฑ๊ณผ ๊ต์œก ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

# Example training commands for YOLO11 with varying configurations
yolo train model=yolo11n.pt data=coco8.yaml epochs=5 imgsz=512
yolo train model=yolo11n.pt data=coco8.yaml epochs=5 imgsz=640

ํŠน์ • ์š”๊ตฌ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ชจ๋ธ, ๋ฐ์ดํ„ฐ, ์—ํฌํฌ ๋ฐ imgsz ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ํ›ˆ๋ จ ํ”„๋กœ์„ธ์Šค ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ YOLO11 ๋ชจ๋ธ ํ›ˆ๋ จ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

DVCLive๋กœ ์‹คํ—˜ ๋ชจ๋‹ˆํ„ฐ๋ง

DVCLive๋Š” ์ฃผ์š” ์ง€ํ‘œ๋ฅผ ์ถ”์ ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•˜์—ฌ ๊ต์œก ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. Ultralytics YOLO11 ์„ ์„ค์น˜ํ•˜๋ฉด ์‹คํ—˜ ์ถ”์ ์„ ์œ„ํ•ด DVCLive์™€ ์ž๋™์œผ๋กœ ํ†ตํ•ฉ๋˜๋ฉฐ, ๋‚˜์ค‘์— ์„ฑ๋Šฅ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•ด ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ต์œก ์ค‘์— ์‚ฌ์šฉ๋˜๋Š” ํŠน์ • ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ์ดํ•ดํ•˜๋ ค๋ฉด ์„ฑ๋Šฅ ์ง€ํ‘œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ฒฐ๊ณผ ๋ถ„์„

YOLO11 ๊ต์œก ์„ธ์…˜์ด ์™„๋ฃŒ๋œ ํ›„์—๋Š” DVCLive์˜ ๊ฐ•๋ ฅํ•œ ์‹œ๊ฐํ™” ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ์‹ฌ์ธต์ ์œผ๋กœ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DVCLive์˜ ํ†ตํ•ฉ์œผ๋กœ ๋ชจ๋“  ๊ต์œก ์ง€ํ‘œ๊ฐ€ ์ฒด๊ณ„์ ์œผ๋กœ ๊ธฐ๋ก๋˜๋ฏ€๋กœ ๋ชจ๋ธ์˜ ์„ฑ๊ณผ๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์„์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด DVC์˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ—˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•œ ๋‹ค์Œ, ์ด๋ฅผ Pandas๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

import dvc.api
import pandas as pd

# Define the columns of interest
columns = ["Experiment", "epochs", "imgsz", "model", "metrics.mAP50-95(B)"]

# Retrieve experiment data
df = pd.DataFrame(dvc.api.exp_show(), columns=columns)

# Clean the data
df.dropna(inplace=True)
df.reset_index(drop=True, inplace=True)

# Display the DataFrame
print(df)

์œ„ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์˜ ์ถœ๋ ฅ์€ YOLO11 ๋ชจ๋ธ๋กœ ์ˆ˜ํ–‰ํ•œ ๋‹ค์–‘ํ•œ ์‹คํ—˜์„ ํ‘œ๋กœ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๊ฐ ํ–‰์€ ์‹คํ—˜์˜ ์ด๋ฆ„, ์—ํฌํฌ ์ˆ˜, ์ด๋ฏธ์ง€ ํฌ๊ธฐ(imgsz), ์‚ฌ์šฉ๋œ ํŠน์ • ๋ชจ๋ธ ๋ฐ mAP50-95(B) ๋ฉ”ํŠธ๋ฆญ์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ›ˆ๋ จ ์‹คํ–‰์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด ๋ฉ”ํŠธ๋ฆญ์€ ๋ชจ๋ธ์˜ ์ •ํ™•๋„๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•˜๋ฉฐ, ๊ฐ’์ด ๋†’์„์ˆ˜๋ก ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

Plotly๋กœ ๊ฒฐ๊ณผ ์‹œ๊ฐํ™”ํ•˜๊ธฐ

์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋‹ค ๋Œ€ํ™”ํ˜•์ ์ด๊ณ  ์‹œ๊ฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ ค๋ฉด Plotly์˜ ํ‰ํ–‰ ์ขŒํ‘œ ํ”Œ๋กฏ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์œ ํ˜•์˜ ํ”Œ๋กฏ์€ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฉ”ํŠธ๋ฆญ ๊ฐ„์˜ ๊ด€๊ณ„์™€ ์ ˆ์ถฉ์ ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ํŠนํžˆ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

from plotly.express import parallel_coordinates

# Create a parallel coordinates plot
fig = parallel_coordinates(df, columns, color="metrics.mAP50-95(B)")

# Display the plot
fig.show()

์œ„ ์ฝ”๋“œ ์Šค๋‹ˆํŽซ์˜ ์ถœ๋ ฅ์€ ์‹œ๋Œ€, ์ด๋ฏธ์ง€ ํฌ๊ธฐ, ๋ชจ๋ธ ์œ ํ˜• ๋ฐ ํ•ด๋‹น mAP50-95(B) ์ ์ˆ˜ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ”Œ๋กฏ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ—˜ ๋ฐ์ดํ„ฐ์˜ ์ถ”์„ธ์™€ ํŒจํ„ด์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

DVC๋กœ ๋น„๊ต ๋น„์ฃผ์–ผ๋ฆฌ์ œ์ด์…˜ ์ƒ์„ฑ

DVC๋Š” ์‹คํ—˜์„ ์œ„ํ•œ ๋น„๊ต ํ”Œ๋กฏ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋ช…๋ น์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋‹ค์–‘ํ•œ ํ›ˆ๋ จ ์‹คํ–‰์— ๊ฑธ์ณ ์—ฌ๋Ÿฌ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ๋น„๊ตํ•˜๋Š” ๋ฐ ํŠนํžˆ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# Generate DVC comparative plots
dvc plots diff $(dvc exp list --names-only)

์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด DVC๋Š” ์—ฌ๋Ÿฌ ์‹คํ—˜์˜ ๋ฉ”ํŠธ๋ฆญ์„ ๋น„๊ตํ•˜๋Š” ํ”Œ๋กฏ์„ ์ƒ์„ฑํ•˜๋ฉฐ, ์ด ํ”Œ๋กฏ์€ HTML ํŒŒ์ผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ผ๋ฐ˜์ ์ธ ํ”Œ๋กฏ์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์‹œ ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฏธ์ง€์—๋Š” mAP, ๋ฆฌ์ฝœ, ์ •ํ™•๋„, ์†์‹ค ๊ฐ’ ๋“ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ๊ทธ๋ž˜ํ”„๊ฐ€ ํ‘œ์‹œ๋˜์–ด ์žˆ์–ด ์ฃผ์š” ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

DVCLive ํ”Œ๋กฏ

DVC ํ”Œ๋กฏ ํ‘œ์‹œ

์ฃผํ”ผํ„ฐ ๋…ธํŠธ๋ถ์„ ์‚ฌ์šฉ ์ค‘์ด๊ณ  ์ƒ์„ฑ๋œ DVC ํ”Œ๋กฏ์„ ํ‘œ์‹œํ•˜๋ ค๋ฉด IPython ํ‘œ์‹œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

from IPython.display import HTML

# Display the DVC plots as HTML
HTML(filename="./dvc_plots/index.html")

์ด ์ฝ”๋“œ๋Š” ์‹œ๊ฐํ™”๋œ ์‹คํ—˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด Jupyter ๋…ธํŠธ๋ถ์—์„œ ์ง์ ‘ DVC ํ”Œ๋กฏ์ด ํฌํ•จ๋œ HTML ํŒŒ์ผ์„ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์˜์‚ฌ ๊ฒฐ์ •

์ด๋Ÿฌํ•œ ์‹œ๊ฐํ™”์—์„œ ์–ป์€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ ์ตœ์ ํ™”, ํ•˜์ดํผํŒŒ๋ผ๋ฏธํ„ฐ ์กฐ์ • ๋ฐ ๊ธฐํƒ€ ๋ชจ๋ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ •๋ณด์— ์ž…๊ฐํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ—˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์‹คํ—˜์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ ๊ตฌ์„ฑ, ํ•™์Šต ๋งค๊ฐœ๋ณ€์ˆ˜ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์ž…๋ ฅ์„ ์กฐ์ •ํ•˜๊ณ  ํ•™์Šต ๋ฐ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ˜๋ณต์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ชจ๋ธ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์š”์•ฝ

์ด ๊ฐ€์ด๋“œ๋Š” DVCLive๋ฅผ Ultralytics' YOLO11 ๊ณผ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋จธ์‹  ๋Ÿฌ๋‹ ์ž‘์—…์—์„œ ์ƒ์„ธํ•œ ์‹คํ—˜ ๋ชจ๋‹ˆํ„ฐ๋ง, ํšจ๊ณผ์ ์ธ ์‹œ๊ฐํ™” ๋ฐ ํ†ต์ฐฐ๋ ฅ ์žˆ๋Š” ๋ถ„์„์„ ์œ„ํ•ด DVCLive์˜ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ DVCLive์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋˜ํ•œ, ์œ ์šฉํ•œ ๋ฆฌ์†Œ์Šค์™€ ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋ชจ์•„๋†“์€ Ultralytics ํ†ตํ•ฉ ๊ฐ€์ด๋“œ ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•˜์—ฌ Ultralytics ์˜ ๋” ๋งŽ์€ ํ†ตํ•ฉ๊ณผ ๊ธฐ๋Šฅ์„ ์‚ดํŽด๋ณด์„ธ์š”.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

์‹คํ—˜ ์ถ”์ ์„ ์œ„ํ•ด DVCLive๋ฅผ Ultralytics YOLO11 ๊ณผ ์–ด๋–ป๊ฒŒ ํ†ตํ•ฉํ•˜๋‚˜์š”?

DVCLive์™€ Ultralytics YOLO11 ํ†ตํ•ฉ์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”:

์„ค์น˜

pip install ultralytics dvclive

๊ทธ๋Ÿฐ ๋‹ค์Œ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์—์„œ DVCLive๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค:

์ดˆ๊ธฐ ํ™˜๊ฒฝ ์„ค์ •

git init -q
git config --local user.email "you@example.com"
git config --local user.name "Your Name"
dvc init -q
git commit -m "DVC init"

์ž์„ธํ•œ ์„ค์ • ์ง€์นจ์€ YOLO11 ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

YOLO11 ์‹คํ—˜์„ ์ถ”์ ํ•˜๋Š” ๋ฐ DVCLive๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

YOLO11 ์™€ ํ•จ๊ป˜ DVCLive๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค:

  • ์ž๋™ํ™”๋œ ๋กœ๊น…: DVCLive๋Š” ๋ชจ๋ธ ํŒŒ๋ผ๋ฏธํ„ฐ ๋ฐ ๋ฉ”ํŠธ๋ฆญ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์‹คํ—˜ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ„ํŽธํ•œ ๋น„๊ต: ์—ฌ๋Ÿฌ ์‹คํ–‰์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์‰ฝ๊ฒŒ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ๊ฐํ™” ๋„๊ตฌ: ์‹ฌ์ธต ๋ถ„์„์„ ์œ„ํ•ด DVCLive์˜ ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™” ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ YOLO11 ๋ชจ๋ธ ํŠธ๋ ˆ์ด๋‹ ๋ฐ YOLO ์„ฑ๋Šฅ ์ง€ํ‘œ์—์„œ ์‹คํ—˜ ์ถ”์  ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

YOLO11 ๊ต์œก ์„ธ์…˜์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ๋ถ„์„์„ ๊ฐœ์„ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•˜๋‚˜์š”?

YOLO11 ๊ต์œก ์„ธ์…˜์„ ์™„๋ฃŒํ•œ ํ›„ DVCLive๋Š” ๊ฒฐ๊ณผ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์‹คํ—˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ํ‘œ์‹œํ•˜๋Š” ์ฝ”๋“œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

import dvc.api
import pandas as pd

# Define columns of interest
columns = ["Experiment", "epochs", "imgsz", "model", "metrics.mAP50-95(B)"]

# Retrieve experiment data
df = pd.DataFrame(dvc.api.exp_show(), columns=columns)

# Clean data
df.dropna(inplace=True)
df.reset_index(drop=True, inplace=True)

# Display DataFrame
print(df)

๊ฒฐ๊ณผ๋ฅผ ๋Œ€ํ™”ํ˜•์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๋ ค๋ฉด Plotly์˜ ํ‰ํ–‰ ์ขŒํ‘œ ํ”Œ๋กฏ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

from plotly.express import parallel_coordinates

fig = parallel_coordinates(df, columns, color="metrics.mAP50-95(B)")
fig.show()

๋” ๋งŽ์€ ์‚ฌ๋ก€์™€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋Š” YOLO11 DVCLive๋ฅผ ์‚ฌ์šฉํ•œ ๊ต์œก ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

DVCLive ๋ฐ YOLO11 ํ†ตํ•ฉ์„ ์œ„ํ•ด ๋‚ด ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

DVCLive์™€ YOLO11 ์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์„ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”:

  1. ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ์„ค์น˜: ์‚ฌ์šฉ pip install ultralytics dvclive.
  2. Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ดˆ๊ธฐํ™”: ์‹คํ–‰ git init -q.
  3. DVCLive ์„ค์ •: ์‹คํ–‰ dvc init -q.
  4. Git์— ์ปค๋ฐ‹: ์‚ฌ์šฉ git commit -m "DVC init".

์ด ๋‹จ๊ณ„๋Š” ์‹คํ—˜ ์ถ”์ ์„ ์œ„ํ•œ ์ ์ ˆํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ฐ ์„ค์ •์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๊ตฌ์„ฑ ๋‚ด์šฉ์€ ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

DVCLive๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ YOLO11 ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์š”?

DVCLive๋Š” YOLO11 ์‹คํ—˜์˜ ๊ฒฐ๊ณผ๋ฅผ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ต ํ”Œ๋กฏ์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

๋น„๊ต ํ”Œ๋กฏ ์ƒ์„ฑ

dvc plots diff $(dvc exp list --names-only)

์ด๋Ÿฌํ•œ ํ”Œ๋กฏ์„ Jupyter ๋…ธํŠธ๋ถ์— ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:

from IPython.display import HTML

# Display plots as HTML
HTML(filename="./dvc_plots/index.html")

์ด๋Ÿฌํ•œ ์‹œ๊ฐํ™”๋Š” ์ถ”์„ธ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๋ชจ๋ธ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ข…ํ•ฉ์ ์ธ ๋‹จ๊ณ„์™€ ์˜ˆ์ œ๋Š” YOLO11 ์‹คํ—˜ ๋ถ„์„์—์„œ ์ž์„ธํ•œ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๐Ÿ“…1 ๋…„ ์ „ ์ƒ์„ฑ๋จ โœ๏ธ 2๊ฐœ์›” ์ „ ์—…๋ฐ์ดํŠธ๋จ

๋Œ“๊ธ€