๊ตฌ๊ธ Colab์ ๊ฒฝ์ฐ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ ์ฃผํผํฐ ๋ ธํธ๋ถ ๊ฐ๋ฐํ๊ฒฝ์ผ๋ก
๋ณ๋์ ํ์ด์ฌ ์ค์น๊ฐ ํ์ ์์ผ๋ฉฐ
๋ฐ์ดํฐ ๋ถ์์ ์ฉ์ดํ ํจํค์ง๋ค์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์๋ค.
๋ํ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ง์ดํธ ์
์์ ์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ, ๊น๊ณผ ์ฐ๋ํ์ฌ ํ์ผ์ ํด๋ผ์ฐ๋ ํํ์
์ ์ฅ์์ ๋ณด๊ดํ๋ฉฐ ํ์ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ค.
๊ฐ์ฅ ํฐ ์ฅ์ ์ด๋ผ๋ฉด ์์ ์ด ์ ์ฌ์ ๋ ธํธ๋ถ์ด๋ PC ํ๊ฒฝ์ด๋๋ผ๋
๊ณต๊ฐ ์ ์ฝ์ ๋ฐ์ง ์์ผ๋ฉฐ Google Colab์์ ์ ๊ณตํ๋ GPU๋ฅผ
์ ํ์ ์ด์ง๋ง ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ด๋ค.
์ฐ์ YOLO ๋ชจ๋ธ์ Colab ๊ฐ์ ํ๊ฒฝ์์ ํ์ตํ๊ธฐ ์ํด
Colab์ ์ ์ํ๋ค.
colab.google
Colab is a hosted Jupyter Notebook service that requires no setup to use and provides free access to computing resources, including GPUs and TPUs. Colab is especially well suited to machine learning, data science, and education.
colab.google
Colab ํ๊ฒฝ์ ์ฌ์ฉํ๊ธฐ ์ํด ๋ก๊ทธ์ธ ํ ์ข์ธก ์๋จ์ ํ์ผ>์ ๋ ธํธ๋ฅผ ํด๋ฆญํ์ฌ
์๋ก์ด ์ฃผํผํฐ ๋ ธํธ๋ถ์ ์ด์ด์ค๋ค.
๋ฐํ์์ ์ฐ๊ฒฐ๋๋ฉด ์๋์ ๊ฐ์ด sample_data ํด๋๋ฅผ ๋ณผ ์ ์๋ค.
ํด๋น ๊ฐ์ํ๊ฒฝ์ผ๋ก Colab์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ดํ ๋ฐํ์ ์ฐ๊ฒฐ ํด์ ์
์ ๋ก๋ ํ๋ ํ์ผ์ด๋ ์คํ ๊ฒฐ๊ณผ๋ค์ด ์์ด์ง๋ค
(๋ณ๋๋ก ๋๋ผ์ด๋ธ์ ์ ์ฅํ๊ฑฐ๋ ํ์ผ๋ก ์ ์ฅํ์ง ์๋ ๊ฒฝ์ฐ)
์ด ๋๋ฌธ์ ๋๋ผ์ด๋ธ ๋ง์ดํธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ์ ์ฐ๋ํ์ฌ
ํ์ผ์ ๊ด๋ฆฌํด์ฃผ๋๋ก ํ๋ค.
์ข์ธก ์๋จ์ ๋๋ผ์ด๋ธ ํด๋ ์์ด์ฝ ํด๋ฆญ ํ์ฌ ๋๋ผ์ด๋ธ ๋ง์ดํธ ๊ธฐ๋ฅ์ ์คํํ๋ค.
ํด๋น ์์ ๋ค์ด ์์ฐจ์ ์ผ๋ก ์๋ฃ๊ฐ ๋๋ฉด ์ข์ธก ํ๋จ์ ๋๋ผ์ด๋ธ ํด๋
์์ด์ฝ์ ๋น๊ธ์ด ์๊ธฐ๊ณ ์์ ์ ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ํด๋์ ์ฐ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด์ Colab ๋ ธํธ ์์ฑ ํ ํด๋น ํ์ผ์ ๋๋ผ์ด๋ธ์ ์ ์ฅํ๊ณ
ํ๋ก์ ํธ ํ์ผ ๋ํ ๋์์ ๊ด๋ฆฌํ ์ ์๋ค.
์ข์ธก ์๋จ์ ๋ ธํธ ํ์ผ๋ช ์ ๋ณ๊ฒฝํด์ฃผ๊ณ ์ ์ฅํ๋ฉด
drive/MyDrive/Colab Notebooks ๊ฒฝ๋ก์ ์๋ ์ ์ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ถํ ํ์ผ ๊ฒฝ๋ก ์ค์ ์ ๊ณต๋ฐฑ ๋ฌธ์ ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํด์ค์ผ ํ๋ฏ๋ก
๋ณธ์ธ์ ๋ฏธ๋ฆฌ ColabNotebooks๋ก ํด๋๋ช ์ ๋ณ๊ฒฝํด์ฃผ์๋ค.
์ด์ ๋ณธ๊ฒฉ์ ์ผ๋ก YOLO ํ์ต์ ์ํ ํ๊ฒฝ์ ์ค์ ํด ๋ณด๊ฒ ๋ค.
์ฐ์ ๋ชจ๋ธ ํ์ต ์ GPU๋ฅผ ํตํด ํ์ต์ ์งํํ ๊ฒ์ด๋ฏ๋ก
๋ฐํ์ ์ ํ์ CPU -> GPU๋ก ๋ณ๊ฒฝ ํด์ฃผ์ด์ผ ํ๋ค.
์ข์ธก ์๋จ์ ๋ฐํ์ > ๋ฐํ์ ์ ํ ๋ณ๊ฒฝ ๋ฒํผ์ ํด๋ฆญํ์ฌ ๋ณ๊ฒฝํ๋ค.
๋ฐํ์ ์ ํ ๋ณ๊ฒฝ ์ ์๋์ผ๋ก ๋ฐํ์์ด ์ฌ์์ ๋๊ณ
์กฐ๊ธ ๊ธฐ๋ค๋ฆฌ๋ฉด ๊ตฌ๊ธ ๋๋ผ์ด๋ธ ๋ง์ดํธ๋ ์๋์ผ๋ก ๋๋ค.
์ด์ ์๋์ ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์ ์์ ์ผ๋ก GPU๊ฐ ํ ๋น๋์ด ์๋์ง ํ์ธํ๋ค.
(ํ์ฌ GPU ์ฑ๋ฅ๊ณผ CUDA ๋ฒ์ ์ ํ์ธํ ์ ์๋ค)
๋ณธ์ธ์ด ์ฌ์ฉํ๊ณ ์ ํ๋ YOLO ๋ฒ์ ์ git์ cloning ํด์ค๋ค.
์ด ๋ ๊ฐ YOLO ๋ฒ์ ์ ๋ฐ๋ผ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์์ ๋ฑ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก
๊ฐ ๋ด์ฉ๋ค์ ์ ์ ์์์ ๊นํ๋ธ๋ฅผ ์ฐธ๊ณ ํ๋ค.
๋๋ YOLOv7์ ํด๋ก ํ์ฌ ์งํํ๋ค.
์ด์ ํ๋ จ์ํฌ ๋ฐ์ดํฐ ์ ์ด ํ์ํ๋ค.
ํด๋น ํ์ด์ง์์๋ roboflow ํจํค์ง๋ฅผ ํตํด ์๋์ผ๋ก ๋ฐ์ดํฐ์ ์
๋ค์ด๋ก๋ ํ๋ ๋ฐฉ๋ฒ์ ์๋ดํ๊ณ ์์ผ๋ ์ฐธ๊ณ ํ์.
https://colab.research.google.com/drive/1X9A8odmK4k6l26NDviiT6dd6TgR-piOa?ref=blog.roboflow.com
Training YOLOv7 on Custom Data
Colaboratory notebook
colab.research.google.com
๋๋ ์ด์ ์ ํฌ์คํ ํ๋ ๋ฐฉ๋ฒ์ ํตํด ์ค๋นํ
์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ ์ ์ฌ์ฉํ ๊ฒ์ด๋ค.
[Python] YOLO ๋ชจ๋ธ ํ์ต์ ์ํ ์คํ ๋ฐ์ดํฐ ์ ์ค๋น (1)
[Python] YOLO ๋ชจ๋ธ ํ์ต์ ์ํ ์คํ ๋ฐ์ดํฐ ์ ์ค๋น (2)
ํด๋น ๋ฐฉ๋ฒ๋ค์ ํตํด ์ด๋ฏธ์ง ๋ฐ์ดํฐ ์ ์ด ์ค๋น๋์๋ค๋ฉด
YOLOv7์์ ์ ๊ณตํ๋ ์ฌ๋ฌ ๋ชจ๋ธ์ ๊ฐ์ค์น ํ์ผ์ ์ ํํ์ฌ
yolov7 ํด๋์ ๋ค์ด๋ก๋ ๋ฐ๋๋ค.
(์ YOLOv7x ๋ชจ๋ธ์ ์ฌ์ฉํ์ต๋๋ค.)
ํด๋น ์ด๋ฏธ์ง ๋ฐ์ดํฐ์ ์ ์ด์ ํ์ต ๋ชจ๋ธ์ ๋ง์ถฐ ํ๋ จ ํ๊ธฐ ์ํด
๋ช ๊ฐ์ง ํ์ผ๋ค์ ์์ ๋ฐ ์์ฑํด์ผ ํด์ค๋ค.
์์ ๋ฐ ํ์ํ ํ์ผ ๋ชฉ๋ก์ ์๋์ ๊ฐ์ต๋๋ค.
- test_data.yaml [์ฌ์ฉ์ ํ๋ จ ๋ฐ์ดํฐ์ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ํ์ผ]
- yolov7x-custom.yaml [--cfg ํ๋ผ๋ฏธํฐ์ yolov7x.yaml ํ์ผ์ ์ฌ์ฉ์ ์์ ๋ณธ]
- hyp.scratch.custom.yaml [๋ชจ๋ธ ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์ ํ์ผ]
์ฐ์ ํ๋ จ ๋ฐ์ดํฐ์ ์ ๋ณด๋ฅผ ๋ด์ .yaml ํ์์ ํ์ผ์ ์์ฑ
ํ์์ ๊ฒฝ์ฐ test_data.yaml ํ์ผ๋ก ์์ฑ ํ์ต๋๋ค.
ํด๋น ํ์ผ์ ์์น๋ ./yolov7/data/test_model.yaml์ ์์นํฉ๋๋ค.
# test_data.yaml
# train ์ด๋ฏธ์ง ํด๋์ valid ํด๋ ๊ฒฝ๋ก ์ค์
train: /content/drive/MyDrive/ColabNotebooks/test_dataset/train/images
val: /content/drive/MyDrive/ColabNotebooks/test_dataset/train/images
# parameters (ํด๋์ค ๊ฐฏ์)
nc : 1
# class names
names : ['Jellyfish']
๋ ๋ฒ์งธ๋ก yolov7/cfg/training/ ๊ฒฝ๋ก์ ์์นํ yolo7x.yaml ํ์ผ์ ๋ด์ฉ์
์ ๋ถ ๋ณต์ฌํ์ฌ yolo7x-custom.yaml ํ์ผ์ ์์ฑํด ๋ถ์ฌ ๋ฃ์ด์ค๋๋ค.
์์ ์ ํ๋ จ ๋ฐ์ดํฐ ํด๋์ค ๊ฐฏ์์ ๋ง๊ฒ nc ๋ถ๋ถ๋ง ์ฐ์ ๋ณ๊ฒฝํด์ค๋๋ค.
(ํ์์ ํด๋น ์ฌํญ์ ๋ง์ถฐ ์์ ํ์๋ฉด ๋ฉ๋๋ค)
์ ๋ฐ๋ก ํ์ดํผ ํ๋ผ๋ฏธํฐ ์ต์ ํ๋ฅผ ํ์ง ์์๊ธฐ ๋๋ฌธ์ hyp.scrath.custom.yaml ํ์ผ์
๊ทธ๋๋ก ํ์ดํผ ํ๋ผ๋ฏธํฐ ๋ชจ๋ธ ํ์ผ๋ก ์ฌ์ฉํ์ต๋๋ค.
์ด์ ์๋์ ์ฝ๋๋ฅผ ํตํด ํ์ต์ ์์ํฉ๋๋ค.
!python train.py \
--device 0 \
--batch 16 \ # batch size
--epochs 40 \ # epochs size
--data ./data/test_data.yaml \
--weights ./yolov7x.pt \
--cfg ./cfg/training/yolov7x-custom.yaml \
--hyp ./data/hyp.scratch.custom.yaml \
--project runs/train/test
์ฝ 25๋ถ ์ ๋ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
PR_curve ํ์ผ๊ณผ results.png ํ์ผ์ ํตํด
ํ๋ จ ๊ฒฐ๊ณผ๋ฅผ ํ ๋์ ํ์ ํ ์ ์์ต๋๋ค.
Google Colab ๋ฌด๋ฃ ์ ๊ณต GPU์ ๊ฒฝ์ฐ ์ฌ์ฉ๋ ์ ํ์ด ์์ผ๋
์ฐธ๊ณ ํ์๊ธธ ๋ฐ๋๋๋ค.