YOLO/๋ฅ๋ฌ๋ ํ๊ฒฝ์ ์ํ ์ข ํฉ์ ์ธ ์์คํ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค. NVIDIA GPU, CUDA, PyTorch, Ultralytics YOLO ๋ฑ์ ๋ณต์กํ ํ๊ฒฝ ์ค์ ์ ์๋ํํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
- ์ค์๊ฐ GPU ์ํ ๋ชจ๋ํฐ๋ง (์จ๋, ์ฌ์ฉ๋ฅ , ๋ฉ๋ชจ๋ฆฌ)
- CUDA/PyTorch ํธํ์ฑ ๊ฒ์ฆ
- ํจํค์ง ์์กด์ฑ ๋ถ์
- YOLO ๋ชจ๋ธ ๋ก๋ฉ ํ ์คํธ
- ๋ค์ค CUDA ๋ฒ์ ์ค์น ๋ฐ ์ ํ
- alternatives ์์คํ ์ ํตํ ๋ฒ์ ๊ด๋ฆฌ
- ์๋ ์ฌ๋ณผ๋ฆญ ๋งํฌ ์ค์
- PyTorch, Ultralytics, OpenCV ๋ฑ ํต์ฌ ํจํค์ง
- ๋ฒ์ ํธํ์ฑ ์๋ ๊ฒ์ฆ
- ์ถฉ๋ ํด๊ฒฐ ๋ฐ ์๋ ๋ณต๊ตฌ
- ๋ชจ๋ธ๋ณ ๊ถ์ฅ ์์คํ ์ฌ์ ์ ์
- ์ค์๊ฐ ์ฑ๋ฅ ๋ฒค์น๋งํฌ
- ๋ชจ๋ธ ํ ์คํธ ๋ฐ ๊ฒ์ฆ
- GPU ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ชจ๋ธ ์ถ์ฒ
- Intel MKL ๋ฐ OpenMP ํ๊ฒฝ๋ณ์ ์๋ ์ค์
- OMP_NUM_THREADS, OMP_SCHEDULE, KMP_AFFINITY ์ต์ ํ
- conda ํ๊ฒฝ ์๊ตฌ ์ ์ฅ์ผ๋ก ์ฌ๋ถํ ํ์๋ ์ค์ ์ ์ง
- PyTorch ๋ฉํฐ์ค๋ ๋ฉ ์ฑ๋ฅ ๊ทน๋ํ
- htop ์ฐ๋์ผ๋ก ์คํ ์ค์ธ ํ๋ก์ธ์ค ์๋ ๊ฐ์ง
- taskset ๊ธฐ๋ฐ CPU ์ฝ์ด๋ณ ๊ท ๋ฑ ๋ถ์ฐ
- 8์ฝ์ด 100% ํ์ฉ์ผ๋ก ํ๋ จ ์๋ ํฅ์
- python/conda/yolo ํ๋ก์ธ์ค ์ฐ์ ํ๊ฒํ
- ๋ชจ๋ ๋ก๊ทธ๋ฅผ ํ๊ตญํ์ค์(KST)๋ก ํต์ผ
- VM ์๊ฐ๊ณผ ์ค์ ์๊ฐ ๊ตฌ๋ถ์ผ๋ก ์ด์ ๋ช ํ์ฑ ํฅ์
- SESSION_ID, ๋ฐฑ์ ๋ฉํ๋ฐ์ดํฐ ์๊ฐ๋ ์ผ๊ด์ฑ
- ์๋ ์ง๋จ ๋ฐ ๋ณต๊ตฌ
- ์ฑ๋ฅ ๋ฒค์น๋งํฌ
- ์์คํ ์ ๋ฆฌ ๋ฐ ์ต์ ํ
- ์ ๋ฌธ์ ์ธ ๋ก๊น ์์คํ
- Ubuntu 22.04 LTS
- NVIDIA GPU (GTX 1060 ์ด์ ๊ถ์ฅ)
- Python 3.10+
- ์ต์ 8GB RAM, 20GB ๋์คํฌ ์ฌ์ ๊ณต๊ฐ
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/ohhw/forest.git
cd forest
# ์คํ ๊ถํ ๋ถ์ฌ
chmod +x check_pkg.sh
# ์์คํ
์คํ
./check_pkg.sh| ๋ชจ๋ธ | GPU ๋ฉ๋ชจ๋ฆฌ | ์์คํ ๋ฉ๋ชจ๋ฆฌ | ์ฉ๋ |
|---|---|---|---|
| YOLOv11n | 2GB | 4GB | ๊ต์ก/์คํ |
| YOLOv11s | 4GB | 8GB | ์ผ๋ฐ ๊ฐ๋ฐ |
| YOLOv11m | 6GB | 12GB | ์์ฉ ๊ฐ๋ฐ |
| YOLOv11l | 8GB | 16GB | ๊ณ ์ฑ๋ฅ ์ถ๋ก |
| YOLOv11x | 12GB+ | 24GB+ | ๋๊ท๋ชจ ํ๋ จ |
- NVIDIA Driver 535+ (LTS)
- NVIDIA Driver 550+ (์์ )
- NVIDIA Driver 580+ (์ต์ , ๊ถ์ฅ)
- CUDA 11.8 (๋ ๊ฑฐ์ ์ง์)
- CUDA 12.1 (์ปค๋ฎค๋ํฐ ์ธ๊ธฐ)
- CUDA 12.4 (๊ถ์ฅ)
- CUDA 12.6+ (์ต์ )
- PyTorch 2.0+ with CUDA support
- torchvision 0.15+
- torchaudio 2.0+
์ ์ฒด ์์คํ ์ํ๋ฅผ ์ข ํฉ์ ์ผ๋ก ๋ถ์ํฉ๋๋ค.
./check_pkg.sh
# ๋ฉ๋ด์์ "1. ํ๊ฒฝ ์ง๋จ" ์ ํ์ฌ๋ฌ CUDA ๋ฒ์ ์ ์ค์นํ๊ณ ์ ํํ ์ ์์ต๋๋ค.
# ์ค์น๋ CUDA ๋ฒ์ ํ์ธ
ls /usr/local/cuda-*
# alternatives๋ฅผ ํตํ ๋ฒ์ ์ ํ
sudo update-alternatives --config cudaCPU ์ฑ๋ฅ์ ๊ทน๋ํํ์ฌ YOLO ํ๋ จ ์๋๋ฅผ ํฅ์์ํต๋๋ค.
./check_pkg.sh
# ๋ฉ๋ด์์ "9. ๋ฉํฐ์ฝ์ด ์ต์ ํ" ์ ํ
# ์ค์ ๋ ํ๊ฒฝ๋ณ์ ํ์ธ
echo $OMP_NUM_THREADS
echo $OMP_SCHEDULE
echo $KMP_AFFINITY์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ CPU ์ฝ์ด์ ๊ท ๋ฑ ๋ถ์ฐ์ํต๋๋ค.
./check_pkg.sh
# ๋ฉ๋ด์์ "10. CPU ๋ถํ ๋ถ์ฐ" ์ ํ
# htop์ผ๋ก ์ค์๊ฐ CPU ์ฌ์ฉ๋ฅ ๋ชจ๋ํฐ๋ง
htop์ค์น๋ ํ๊ฒฝ์์ YOLO ๋ชจ๋ธ์ ์ ์ ๋์์ ๊ฒ์ฆํฉ๋๋ค.
# Python ํ๊ฒฝ์์ ์ง์ ํ
์คํธ
python3 -c "
from ultralytics import YOLO
model = YOLO('yolo11n.pt')
results = model.predict('image.jpg')
"1. CUDA๊ฐ ์ธ์๋์ง ์๋ ๊ฒฝ์ฐ
# NVIDIA ๋๋ผ์ด๋ฒ ์ฌ์ค์น
sudo apt purge nvidia-*
sudo apt install nvidia-driver-580
# ์์คํ
์ฌ๋ถํ
ํ ํ์ธ
nvidia-smi2. PyTorch์์ GPU๋ฅผ ์ฐพ์ง ๋ชปํ๋ ๊ฒฝ์ฐ
# PyTorch ์ฌ์ค์น (CUDA ๋ฒ์ ์ ๋ง๊ฒ)
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu1213. YOLO ๋ชจ๋ธ ๋ก๋ฉ ์คํจ
# Ultralytics ์ฌ์ค์น
pip uninstall ultralytics
pip install ultralytics
# ์บ์ ์ ๋ฆฌ
pip cache purge4. CPU ์ฑ๋ฅ ์ต์ ํ ๋ฌธ์ (NEW!)
# ๋ฉํฐ์ฝ์ด ์ค์ ํ์ธ
./check_pkg.sh
# ๋ฉ๋ด 9๋ฒ์ผ๋ก ๋ฉํฐ์ฝ์ด ์ต์ ํ ์คํ
# ํ๊ฒฝ๋ณ์ ์๋ ์ค์ (์์)
export OMP_NUM_THREADS=8
export OMP_SCHEDULE=dynamic
export OMP_PROC_BIND=spread
export KMP_AFFINITY=granularity=fine,verbose,compact,1,05. CPU ๋ถํ ๋ถ๊ท ํ ๋ฌธ์ (NEW!)
# ์ค์๊ฐ CPU ๋ถํ ๋ถ์ฐ ์ ์ฉ
./check_pkg.sh
# ๋ฉ๋ด 10๋ฒ์ผ๋ก CPU ๋ถํ ๋ถ์ฐ ์คํ
# ์๋์ผ๋ก ํ๋ก์ธ์ค ๋ถ์ฐ
htop # ํ๋ก์ธ์ค PID ํ์ธ
sudo taskset -cp 0-7 [PID] # ๋ชจ๋ ์ฝ์ด์ ๋ถ์ฐforest/
โโโ check_pkg.sh # ๋ฉ์ธ ๊ด๋ฆฌ ์คํฌ๋ฆฝํธ (๋ฉํฐ์ฝ์ด ์ต์ ํ ํฌํจ)
โโโ README.md # ํ๋ก์ ํธ ๋ฌธ์
โโโ LICENSE # ๋ผ์ด์ ์ค ํ์ผ
โโโ .gitignore # Git ๋ฌด์ ํ์ผ ๋ชฉ๋ก (์ ํ์ ์ถ์ )
โโโ code/ # ์ ํธ๋ฆฌํฐ ๋ฐ ๋๊ตฌ
โโโ classification/ # ๋ถ๋ฅ ๋ชจ๋ธ ํ์ต ์ฝ๋
โ โโโ train_cls_csn_yolo11.py
โ โโโ train_cls_jjb_yolo11.py
โโโ detection/ # ํ์ง ๋ชจ๋ธ ํ์ต ์ฝ๋
โ โโโ train_dod_csn_yolo11.py
โ โโโ train_dod_wln_yolo11.py
โ โโโ train_dod_yolo_rev.py
โโโ converter/ # ๋ฐ์ดํฐ ๋ณํ ๋๊ตฌ
โ โโโ img_to_arr.py
โ โโโ tiff_to_bmp.py
โโโ aug_annotation.py # ์ด๋
ธํ
์ด์
์ฆ๊ฐ
โโโ aug_image.py # ์ด๋ฏธ์ง ์ฆ๊ฐ
โโโ check_env.py # ํ๊ฒฝ ๊ฒ์ฆ
โโโ make_txt_yolo.py # YOLO ํ์ ๋ผ๋ฒจ ์์ฑ
โโโ split_images.py # ๋ฐ์ดํฐ์
๋ถํ
โโโ viz_ground_truth.py # ์ ๋ต ์๊ฐํ
# ์๋ ์ต์ ํ (๊ถ์ฅ)
./check_pkg.sh โ ๋ฉ๋ด 9๋ฒ
# ์๋ ์ค์
export OMP_NUM_THREADS=8
export OMP_SCHEDULE=dynamic
export OMP_PROC_BIND=spread
export OMP_PLACES=cores
export KMP_AFFINITY=granularity=fine,verbose,compact,1,0# ์๋ ๋ถ์ฐ (๊ถ์ฅ)
./check_pkg.sh โ ๋ฉ๋ด 10๋ฒ
# htop์ผ๋ก ๋ชจ๋ํฐ๋ง
htop- CPU: 8์ฝ์ด ์ด์ ๊ถ์ฅ (๋ฉํฐ์ฝ์ด ์ต์ ํ ํจ๊ณผ ๊ทน๋ํ)
- GPU: NVIDIA RTX 3060 ์ด์ (CUDA 12.x ์ง์)
- ๋ฉ๋ชจ๋ฆฌ: 16GB ์ด์ (8์ฝ์ด ๋์ ์ฒ๋ฆฌ ์)
- ์คํ ๋ฆฌ์ง: NVMe SSD ๊ถ์ฅ (๋น ๋ฅธ ๋ฐ์ดํฐ ๋ก๋ฉ)
- ์ด ์ ์ฅ์๋ฅผ Forkํ์ธ์
- ์๋ก์ด ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์์ฑํ์ธ์ (
git checkout -b feature/AmazingFeature) - ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํ์ธ์ (
git commit -m 'Add some AmazingFeature') - ๋ธ๋์น์ ํธ์ํ์ธ์ (
git push origin feature/AmazingFeature) - Pull Request๋ฅผ ์ด์ด์ฃผ์ธ์
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.
- ohhw - ์ด๊ธฐ ๊ฐ๋ฐ ๋ฐ ์ ์ง๋ณด์ - GitHub
- Ultralytics - YOLO ๊ตฌํ์ฒด
- PyTorch - ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ
- NVIDIA - CUDA ๋ฐ GPU ์ง์
์ฐธ๊ณ : ์ด ๋๊ตฌ๋ Ubuntu 22.04 ํ๊ฒฝ์์ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ๋์์ต๋๋ค. ๋ค๋ฅธ ๋ฐฐํฌํ์์๋ ์ผ๋ถ ์์ ์ด ํ์ํ ์ ์์ต๋๋ค.