๊ณ ๊ธ YOLOv8 DVCLive๋ฅผ ์ฌ์ฉํ ์คํ ์ถ์
๋จธ์ ๋ฌ๋์์ ์คํ ์ถ์ ์ ๋ชจ๋ธ ๊ฐ๋ฐ๊ณผ ํ๊ฐ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์๋ง์ ํ๋ จ ์คํ์ ๋ค์ํ ๋งค๊ฐ๋ณ์, ๋ฉํธ๋ฆญ ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๊ณ ๋ถ์ํ๋ ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ด ํ๋ก์ธ์ค๋ ๋ชจ๋ธ ์ฑ๋ฅ์ ์ดํดํ๊ณ ๋ชจ๋ธ์ ๊ฐ์ ํ๊ณ ์ต์ ํํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ธฐ๋ฐ ์์ฌ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐ ํ์์ ์ ๋๋ค.
DVCLive๋ฅผ ๋ค์๊ณผ ํตํฉํ๋ฉด Ultralytics YOLOv8 ์ ํตํฉํ๋ฉด ์คํ์ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋๋ค. ์ด ํตํฉ์ ์ฃผ์ ์คํ ์ธ๋ถ ์ ๋ณด๋ฅผ ์๋์ผ๋ก ๊ธฐ๋กํ๊ณ , ์ฌ๋ฌ ์คํ์์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํ๊ณ , ์ฌ์ธต ๋ถ์์ ์ํด ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ ์ ์๋ ์ํํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ DVCLive๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
DVCLive
DVC์์ ๊ฐ๋ฐํ DVCLive๋ ๋จธ์ ๋ฌ๋์ ์คํ ์ถ์ ์ ์ํ ํ์ ์ ์ธ ์คํ ์์ค ๋๊ตฌ์ ๋๋ค. Git ๋ฐ DVC์ ์ํํ๊ฒ ํตํฉ๋์ด ๋ชจ๋ธ ๋งค๊ฐ๋ณ์ ๋ฐ ํ์ต ์งํ์ ๊ฐ์ ์ค์ํ ์คํ ๋ฐ์ดํฐ์ ๋ก๊น ์ ์๋ํํฉ๋๋ค. ๋จ์์ฑ์ ์ํด ์ค๊ณ๋ DVCLive๋ ์ง๊ด์ ์ธ ๋ฐ์ดํฐ ์๊ฐํ ๋ฐ ๋ถ์ ๋๊ตฌ๋ก ๋จธ์ ๋ฌ๋ ํ๋ก์ ํธ์ ํจ์จ์ฑ์ ๋์ด๊ณ ์ฌ๋ฌ ์คํ์ ์์ฝ๊ฒ ๋น๊ต ๋ฐ ๋ถ์ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
YOLOv8 DVCLive๋ฅผ ํตํ ๊ต์ก
YOLOv8 ๊ต์ก ์ธ์ ์ DVCLive๋ก ํจ๊ณผ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ๋ํ DVC๋ ์ถ์ ๋ ๋ชจ๋ ์คํ์์ ๋ฉํธ๋ฆญ ํ๋กฏ์ ๋น๊ตํ ์ ์๋ ๋ณด๊ณ ์ ์์ฑ์ ํฌํจํ์ฌ ์ด๋ฌํ ์คํ์ ์๊ฐํํ๊ธฐ ์ํ ํตํฉ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ๊ต์ก ํ๋ก์ธ์ค์ ๋ํ ํฌ๊ด์ ์ธ ์๊ฐ์ ์ ๊ณตํฉ๋๋ค.
์ค์น
ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ์คํํฉ๋๋ค:
์ค์น ๊ณผ์ ๊ณผ ๊ด๋ จ๋ ์์ธํ ์ง์นจ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ YOLOv8 ์ค์น ๊ฐ์ด๋๋ฅผ ํ์ธํ์ธ์. YOLOv8 ์ ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ๋ ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ฌ ํด๊ฒฐ ๋ฐฉ๋ฒ๊ณผ ํ์ ํ์ธํ์ธ์.
DVCLive ๊ตฌ์ฑ
ํ์ํ ํจํค์ง๋ฅผ ์ค์นํ์ผ๋ฉด ๋ค์ ๋จ๊ณ๋ ํ์ํ ์๊ฒฉ ์ฆ๋ช ์ ์ฌ์ฉํ์ฌ ํ๊ฒฝ์ ์ค์ ํ๊ณ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋๋ค. ์ด ์ค์ ์ ํตํด ๊ธฐ์กด ์ํฌํ๋ก์ฐ์ DVCLive๋ฅผ ์ํํ๊ฒ ํตํฉํ ์ ์์ต๋๋ค.
Git์ ์ฝ๋์ DVCLive ๊ตฌ์ฑ ๋ชจ๋์ ๋ํ ๋ฒ์ ๊ด๋ฆฌ์ ์ค์ํ ์ญํ ์ ํ๋ฏ๋ก Git ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ด๊ธฐํํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์.
์ด๊ธฐ ํ๊ฒฝ ์ค์
์ด ๋ช ๋ น์์ "you@example.com"๋ฅผ Git ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ ์ด๋ฉ์ผ ์ฃผ์๋ก, "์ฌ์ฉ์ ์ด๋ฆ"์ Git ๊ณ์ ์ฌ์ฉ์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ์ผ ํฉ๋๋ค.
์ฌ์ฉ๋ฒ
์ฌ์ฉ ์ง์นจ์ ์ดํด๋ณด๊ธฐ ์ ์ Ultralytics ์์ ์ ๊ณตํ๋ ๋ค์ํ YOLOv8 ๋ชจ๋ธ์ ํ์ธํ์ธ์. ํ๋ก์ ํธ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ๋ชจ๋ธ์ ์ ํํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๊ต์ก YOLOv8 DVCLive๋ฅผ ์ฌ์ฉํ ๋ชจ๋ธ
YOLOv8 ๊ต์ก ์ธ์ ์ ์คํํ์ฌ ์์ํ์ธ์. ํ๋ก์ ํธ์ ํ์์ ๋ฐ๋ผ ๋ค์ํ ๋ชจ๋ธ ๊ตฌ์ฑ๊ณผ ๊ต์ก ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด
# Example training commands for YOLOv8 with varying configurations
yolo train model=yolov8n.pt data=coco8.yaml epochs=5 imgsz=512
yolo train model=yolov8n.pt data=coco8.yaml epochs=5 imgsz=640
ํน์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋ชจ๋ธ, ๋ฐ์ดํฐ, ์ํฌํฌ ๋ฐ imgsz ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํฉ๋๋ค. ๋ชจ๋ธ ํ๋ จ ํ๋ก์ธ์ค ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์์ธํ ๋ด์ฉ์ YOLOv8 ๋ชจ๋ธ ํ๋ จ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
DVCLive๋ก ์คํ ๋ชจ๋ํฐ๋ง
DVCLive๋ ์ฃผ์ ์งํ๋ฅผ ์ถ์ ํ๊ณ ์๊ฐํํ์ฌ ๊ต์ก ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ํฉ๋๋ค. Ultralytics YOLOv8 ์ ์ค์นํ๋ฉด ์คํ ์ถ์ ์ ์ํด DVCLive์ ์๋์ผ๋ก ํตํฉ๋๋ฉฐ, ๋์ค์ ์ฑ๋ฅ ์ธ์ฌ์ดํธ๋ฅผ ์ํด ๋ถ์ํ ์ ์์ต๋๋ค. ๊ต์ก ์ค์ ์ฌ์ฉ๋๋ ํน์ ์ฑ๋ฅ ์งํ๋ฅผ ์ข ํฉ์ ์ผ๋ก ์ดํดํ๋ ค๋ฉด ์ฑ๋ฅ ์งํ์ ๋ํ ์์ธํ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๊ฒฐ๊ณผ ๋ถ์
YOLOv8 ๊ต์ก ์ธ์ ์ด ์๋ฃ๋ ํ์๋ 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)
์ ์ฝ๋ ์ค๋ํซ์ ์ถ๋ ฅ์ YOLOv8 ๋ชจ๋ธ๋ก ์ํํ ๋ค์ํ ์คํ์ ํ๋ก ๋ช ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค. ๊ฐ ํ์ ์คํ์ ์ด๋ฆ, ์ํฌํฌ ์, ์ด๋ฏธ์ง ํฌ๊ธฐ(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๋ ์คํ์ ์ํ ๋น๊ต ํ๋กฏ์ ์์ฑํ๋ ๋ฐ ์ ์ฉํ ๋ช ๋ น์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ค์ํ ํ๋ จ ์คํ์ ๊ฑธ์ณ ์ฌ๋ฌ ๋ชจ๋ธ์ ์ฑ๋ฅ์ ๋น๊ตํ๋ ๋ฐ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ช ๋ น์ ์คํํ๋ฉด DVC๋ ์ฌ๋ฌ ์คํ์ ๋ฉํธ๋ฆญ์ ๋น๊ตํ๋ ํ๋กฏ์ ์์ฑํ๋ฉฐ, ์ด ํ๋กฏ์ HTML ํ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ์๋๋ ์ด ํ๋ก์ธ์ค๋ฅผ ํตํด ์์ฑ๋ ์ผ๋ฐ์ ์ธ ํ๋กฏ์ ๋ณด์ฌ์ฃผ๋ ์์ ์ด๋ฏธ์ง์ ๋๋ค. ์ด ์ด๋ฏธ์ง์๋ mAP, ๋ฆฌ์ฝ, ์ ํ๋, ์์ค ๊ฐ ๋ฑ์ ๋ํ๋ด๋ ๊ทธ๋ํ๋ฅผ ๋น๋กฏํ ๋ค์ํ ๊ทธ๋ํ๊ฐ ํ์๋์ด ์์ด ์ฃผ์ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ๋ํ ์๊ฐ์ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค:
DVC ํ๋กฏ ํ์
์ฃผํผํฐ ๋ ธํธ๋ถ์ ์ฌ์ฉ ์ค์ด๊ณ ์์ฑ๋ DVC ํ๋กฏ์ ํ์ํ๋ ค๋ฉด IPython ํ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
from IPython.display import HTML
# Display the DVC plots as HTML
HTML(filename="./dvc_plots/index.html")
์ด ์ฝ๋๋ ์๊ฐํ๋ ์คํ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ํธ๋ฆฌํ๊ฒ ๋ถ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ธฐ ์ํด DVC ํ๋กฏ์ด ํฌํจ๋ HTML ํ์ผ์ Jupyter ๋ ธํธ๋ถ์์ ๋ฐ๋ก ๋ ๋๋งํฉ๋๋ค.
๋ฐ์ดํฐ ๊ธฐ๋ฐ ์์ฌ ๊ฒฐ์
์ด๋ฌํ ์๊ฐํ์์ ์ป์ ์ธ์ฌ์ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ์ต์ ํ, ํ์ดํผํ๋ผ๋ฏธํฐ ์กฐ์ ๋ฐ ๊ธฐํ ๋ชจ๋ธ ์ฑ๋ฅ ํฅ์์ ์ํ ์์ ์ฌํญ์ ๋ํด ์ ๋ณด์ ์ ๊ฐํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์์ต๋๋ค.
์คํ ๋ฐ๋ณตํ๊ธฐ
๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ์คํ์ ๋ฐ๋ณตํฉ๋๋ค. ๋ชจ๋ธ ๊ตฌ์ฑ, ํ์ต ๋งค๊ฐ๋ณ์ ๋๋ ๋ฐ์ดํฐ ์ ๋ ฅ์ ์กฐ์ ํ๊ณ ํ์ต ๋ฐ ๋ถ์ ํ๋ก์ธ์ค๋ฅผ ๋ฐ๋ณตํฉ๋๋ค. ์ด๋ฌํ ๋ฐ๋ณต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ต์์ ์ฑ๋ฅ์ ์ํด ๋ชจ๋ธ์ ๊ฐ์ ํ๋ ๋ฐ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค.
์์ฝ
์ด ๊ฐ์ด๋๋ DVCLive๋ฅผ Ultralytics' YOLOv8 ๊ณผ ํตํฉํ๋ ๊ณผ์ ์ ์๋ดํด ๋๋ฆฝ๋๋ค. ๋จธ์ ๋ฌ๋ ์์ ์์ ์์ธํ ์คํ ๋ชจ๋ํฐ๋ง, ํจ๊ณผ์ ์ธ ์๊ฐํ ๋ฐ ํต์ฐฐ๋ ฅ ์๋ ๋ถ์์ ์ํด DVCLive์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ์ต๋๋ค.
์ฌ์ฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ DVCLive์ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ํ, ์ ์ฉํ ๋ฆฌ์์ค์ ์ธ์ฌ์ดํธ๋ฅผ ๋ชจ์๋์ Ultralytics ํตํฉ ๊ฐ์ด๋ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ์ฌ Ultralytics ์ ๋ ๋ง์ ํตํฉ๊ณผ ๊ธฐ๋ฅ์ ์ดํด๋ณด์ธ์.