Skip to content

ohhw/forest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

22 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฏ YOLO/๋”ฅ๋Ÿฌ๋‹ ํ™˜๊ฒฝ ์ „๋ฌธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ v2.0

License Platform Python CUDA

๐Ÿ“‹ ๊ฐœ์š”

YOLO/๋”ฅ๋Ÿฌ๋‹ ํ™˜๊ฒฝ์„ ์œ„ํ•œ ์ข…ํ•ฉ์ ์ธ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. NVIDIA GPU, CUDA, PyTorch, Ultralytics YOLO ๋“ฑ์˜ ๋ณต์žกํ•œ ํ™˜๊ฒฝ ์„ค์ •์„ ์ž๋™ํ™”ํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ” ํ™˜๊ฒฝ ์ง„๋‹จ

  • ์‹ค์‹œ๊ฐ„ GPU ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง (์˜จ๋„, ์‚ฌ์šฉ๋ฅ , ๋ฉ”๋ชจ๋ฆฌ)
  • CUDA/PyTorch ํ˜ธํ™˜์„ฑ ๊ฒ€์ฆ
  • ํŒจํ‚ค์ง€ ์˜์กด์„ฑ ๋ถ„์„
  • YOLO ๋ชจ๋ธ ๋กœ๋”ฉ ํ…Œ์ŠคํŠธ

โšก CUDA ๋ฒ„์ „ ๊ด€๋ฆฌ

  • ๋‹ค์ค‘ CUDA ๋ฒ„์ „ ์„ค์น˜ ๋ฐ ์ „ํ™˜
  • alternatives ์‹œ์Šคํ…œ์„ ํ†ตํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ
  • ์ž๋™ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ์„ค์ •

๐Ÿ“ฆ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ

  • PyTorch, Ultralytics, OpenCV ๋“ฑ ํ•ต์‹ฌ ํŒจํ‚ค์ง€
  • ๋ฒ„์ „ ํ˜ธํ™˜์„ฑ ์ž๋™ ๊ฒ€์ฆ
  • ์ถฉ๋Œ ํ•ด๊ฒฐ ๋ฐ ์ž๋™ ๋ณต๊ตฌ

๐ŸŽฏ YOLO ํŠนํ™” ๊ธฐ๋Šฅ

  • ๋ชจ๋ธ๋ณ„ ๊ถŒ์žฅ ์‹œ์Šคํ…œ ์‚ฌ์–‘ ์ œ์‹œ
  • ์‹ค์‹œ๊ฐ„ ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํฌ
  • ๋ชจ๋ธ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆ
  • GPU ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ ์ถ”์ฒœ

๏ฟฝ ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ์ตœ์ ํ™” (NEW!)

  • Intel MKL ๋ฐ OpenMP ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ž๋™ ์„ค์ •
  • OMP_NUM_THREADS, OMP_SCHEDULE, KMP_AFFINITY ์ตœ์ ํ™”
  • conda ํ™˜๊ฒฝ ์˜๊ตฌ ์ €์žฅ์œผ๋กœ ์žฌ๋ถ€ํŒ… ํ›„์—๋„ ์„ค์ • ์œ ์ง€
  • PyTorch ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์„ฑ๋Šฅ ๊ทน๋Œ€ํ™”

โš–๏ธ ์‹ค์‹œ๊ฐ„ CPU ๋ถ€ํ•˜ ๋ถ„์‚ฐ (NEW!)

  • htop ์—ฐ๋™์œผ๋กœ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ์ž๋™ ๊ฐ์ง€
  • taskset ๊ธฐ๋ฐ˜ CPU ์ฝ”์–ด๋ณ„ ๊ท ๋“ฑ ๋ถ„์‚ฐ
  • 8์ฝ”์–ด 100% ํ™œ์šฉ์œผ๋กœ ํ›ˆ๋ จ ์†๋„ ํ–ฅ์ƒ
  • python/conda/yolo ํ”„๋กœ์„ธ์Šค ์šฐ์„  ํƒ€๊ฒŸํŒ…

๐Ÿ•’ KST ํƒ€์ž„์กด ๋กœ๊น… (NEW!)

  • ๋ชจ๋“  ๋กœ๊ทธ๋ฅผ ํ•œ๊ตญํ‘œ์ค€์‹œ(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+ ๋Œ€๊ทœ๋ชจ ํ›ˆ๋ จ

๐ŸŽฎ ์ง€์› ํ™˜๊ฒฝ

GPU ๋“œ๋ผ์ด๋ฒ„

  • NVIDIA Driver 535+ (LTS)
  • NVIDIA Driver 550+ (์•ˆ์ •)
  • NVIDIA Driver 580+ (์ตœ์‹ , ๊ถŒ์žฅ)

CUDA Toolkit

  • CUDA 11.8 (๋ ˆ๊ฑฐ์‹œ ์ง€์›)
  • CUDA 12.1 (์ปค๋ฎค๋‹ˆํ‹ฐ ์ธ๊ธฐ)
  • CUDA 12.4 (๊ถŒ์žฅ)
  • CUDA 12.6+ (์ตœ์‹ )

PyTorch

  • PyTorch 2.0+ with CUDA support
  • torchvision 0.15+
  • torchaudio 2.0+

๐Ÿ“– ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

1. ํ™˜๊ฒฝ ์ง„๋‹จ

์ „์ฒด ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

./check_pkg.sh
# ๋ฉ”๋‰ด์—์„œ "1. ํ™˜๊ฒฝ ์ง„๋‹จ" ์„ ํƒ

2. CUDA ๋ฒ„์ „ ๊ด€๋ฆฌ

์—ฌ๋Ÿฌ CUDA ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ์„ค์น˜๋œ CUDA ๋ฒ„์ „ ํ™•์ธ
ls /usr/local/cuda-*

# alternatives๋ฅผ ํ†ตํ•œ ๋ฒ„์ „ ์ „ํ™˜
sudo update-alternatives --config cuda

3. ๋ฉ€ํ‹ฐ์ฝ”์–ด CPU ์ตœ์ ํ™” (NEW!)

CPU ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜์—ฌ YOLO ํ›ˆ๋ จ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

./check_pkg.sh
# ๋ฉ”๋‰ด์—์„œ "9. ๋ฉ€ํ‹ฐ์ฝ”์–ด ์ตœ์ ํ™”" ์„ ํƒ

# ์„ค์ •๋œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ™•์ธ
echo $OMP_NUM_THREADS
echo $OMP_SCHEDULE
echo $KMP_AFFINITY

4. ์‹ค์‹œ๊ฐ„ CPU ๋ถ€ํ•˜ ๋ถ„์‚ฐ (NEW!)

์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ชจ๋“  CPU ์ฝ”์–ด์— ๊ท ๋“ฑ ๋ถ„์‚ฐ์‹œํ‚ต๋‹ˆ๋‹ค.

./check_pkg.sh
# ๋ฉ”๋‰ด์—์„œ "10. CPU ๋ถ€ํ•˜ ๋ถ„์‚ฐ" ์„ ํƒ

# htop์œผ๋กœ ์‹ค์‹œ๊ฐ„ CPU ์‚ฌ์šฉ๋ฅ  ๋ชจ๋‹ˆํ„ฐ๋ง
htop

5. YOLO ๋ชจ๋ธ ํ…Œ์ŠคํŠธ

์„ค์น˜๋œ ํ™˜๊ฒฝ์—์„œ 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-smi

2. PyTorch์—์„œ GPU๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ

# PyTorch ์žฌ์„ค์น˜ (CUDA ๋ฒ„์ „์— ๋งž๊ฒŒ)
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

3. YOLO ๋ชจ๋ธ ๋กœ๋”ฉ ์‹คํŒจ

# Ultralytics ์žฌ์„ค์น˜
pip uninstall ultralytics
pip install ultralytics

# ์บ์‹œ ์ •๋ฆฌ
pip cache purge

4. 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,0

5. 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 # ์ •๋‹ต ์‹œ๊ฐํ™”

๐Ÿš€ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฐ€์ด๋“œ

CPU ๋ฉ€ํ‹ฐ์ฝ”์–ด ์ตœ์ ํ™”

# ์ž๋™ ์ตœ์ ํ™” (๊ถŒ์žฅ)
./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 ๊ถŒ์žฅ (๋น ๋ฅธ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ)

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

  1. ์ด ์ €์žฅ์†Œ๋ฅผ Forkํ•˜์„ธ์š”
  2. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•˜์„ธ์š” (git checkout -b feature/AmazingFeature)
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜์„ธ์š” (git commit -m 'Add some AmazingFeature')
  4. ๋ธŒ๋žœ์น˜์— ํ‘ธ์‹œํ•˜์„ธ์š” (git push origin feature/AmazingFeature)
  5. Pull Request๋ฅผ ์—ด์–ด์ฃผ์„ธ์š”

๐Ÿ“ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค ํ•˜์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ‘จโ€๐Ÿ’ป ๊ฐœ๋ฐœ์ž

  • ohhw - ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ - GitHub

๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

  • Ultralytics - YOLO ๊ตฌํ˜„์ฒด
  • PyTorch - ๋”ฅ๋Ÿฌ๋‹ ํ”„๋ ˆ์ž„์›Œํฌ
  • NVIDIA - CUDA ๋ฐ GPU ์ง€์›

๐Ÿ“Š ์ƒํƒœ

GitHub stars GitHub forks GitHub issues


์ฐธ๊ณ : ์ด ๋„๊ตฌ๋Š” Ubuntu 22.04 ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์—์„œ๋Š” ์ผ๋ถ€ ์ˆ˜์ •์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors