|
Download README.md from YMmim/object-detection-scratch: direct link, hf CLI and curl.
- Browser
- Download file 4.1 kB
-
https://huggingface.co/YMmim/object-detection-scratch/resolve/main/README.md
- Command line
-
hf download hf://YMmim/object-detection-scratch/README.md
-
curl -L -o README.md https://huggingface.co/YMmim/object-detection-scratch/resolve/main/README.md
4.1 kB
| license: mit | |
| tags: | |
| - object-detection | |
| - faster-rcnn | |
| - yolo | |
| - pascal-voc | |
| - pytorch | |
| - educational | |
| - from-scratch | |
| library_name: pytorch | |
| pipeline_tag: object-detection | |
| datasets: | |
| - pascal-voc-2007 | |
| language: | |
| - en | |
| # Object Detection from Scratch โ Faster R-CNN vs YOLO | |
| ๊ฐ์ฒดํ์ง๋ฅผ **๋ฐ๋ฐ๋ฅ๋ถํฐ ์ง์ ๊ตฌํ**(Faster R-CNN)ํ๊ณ , ์ด๋ฅผ ์ค๋ฌด ํ์ค์ธ | |
| **YOLO์ ๋น๊ต**ํ๋ฉฐ ํ์ตํ๋ ๊ต์ก์ฉ ์ ์ฅ์์ ๋๋ค. | |
| 2-stage ํ์ง๊ธฐ์ ๋ด๋ถ ์๋ฆฌ๋ฅผ ์์ผ๋ก ๊ตฌํํด๋ณด๊ณ , 1-stage ํ์ง๊ธฐ(YOLO)์ | |
| ๊ฒฐ๊ณผยท์ฒ ํ์ ๋์กฐํฉ๋๋ค. | |
| > โ ๏ธ **์ฑ๋ฅ ๊ฒฝ๊ณ **: ์ด ์ ์ฅ์์ Faster R-CNN ๊ฐ์ค์น(`frcnn.pth`)๋ | |
| > **1 ์ํญ๋ง ํ์ตํ ๋ฐ๋ชจ์ฉ**์ ๋๋ค. ์ค์ฌ์ฉ ๋ชฉ์ ์ด ์๋๋ผ "๊ตฌํ์ด ์ฌ๋ฐ๋ฅธ๊ฐ"๋ฅผ | |
| > ๊ฒ์ฆํ๊ณ ์๋ฆฌ๋ฅผ ์ดํดํ๊ธฐ ์ํ **๊ต์ก ์๋ฃ**์ ๋๋ค. | |
| ## ๋ ๊ฐ์ง ์ ๊ทผ์ ๋์กฐ | |
| | | Faster R-CNN (์ง์ ๊ตฌํ) | YOLOv8 (Ultralytics) | | |
| |---|---|---| | |
| | ๋ฐฉ์ | 2-stage (ํ๋ณด์์ญ โ ๋ถ๋ฅ) | 1-stage (ํ ๋ฒ์ ์์ธก) | | |
| | ์๋ | ๋๋ฆผ | ๋งค์ฐ ๋น ๋ฆ (์ค์๊ฐ) | | |
| | ๊ตฌํ | ๋ฐ๋ฐ๋ฅ๋ถํฐ (๊ต์ก์ ) | ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ | | |
| | ํ์ต ๋ฐ์ดํฐ | Pascal VOC (20 ํด๋์ค) | COCO (80 ํด๋์ค) | | |
| | ์ด ์ ์ฅ์์ ์ญํ | **์๋ฆฌ ํ์ต** | **์ค๋ฌด ํ์ค๊ณผ ๋น๊ต** | | |
| ## ํ์ผ ๊ตฌ์ฑ | |
| **Faster R-CNN ์ง์ ๊ตฌํ** | |
| | ํ์ผ | ๋ด์ฉ | | |
| |------|------| | |
| | `dataset.py` | VOC XML ํ์ฑ, ๋ฆฌ์ฌ์ด์ฆ, ์ ๊ทํ | | |
| | `box_utils.py` | ์ต์ปค ์์ฑ, IoU, ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ, NMS | | |
| | `model.py` | ResNet50 ๋ฐฑ๋ณธ + RPN + RoI Align + RoI Head | | |
| | `losses.py` | IoU ๊ธฐ๋ฐ ํ๊น ํ ๋น + RPN/RoI ์์ค | | |
| | `train.py` | ํ์ต ๋ฃจํ + VOC mAP@0.5 | | |
| | `infer.py` | ์ถ๋ก + ๋ฐ์ค ์๊ฐํ | | |
| **YOLO ๋น๊ต** | |
| | ํ์ผ | ๋ด์ฉ | | |
| |------|------| | |
| | `yolo_infer.py` | YOLOv8(COCO ์ฌ์ ํ์ต) ์ถ๋ก โ ๊ฐ์ ์ด๋ฏธ์ง ๋น๊ต์ฉ | | |
| ## ์ฌ์ฉ๋ฒ | |
| ### Faster R-CNN (์ง์ ๊ตฌํ) | |
| ```bash | |
| pip install torch torchvision pillow | |
| # VOC 2007 ๋ค์ด๋ก๋ (torchvision ์๋) | |
| python -c "import torchvision; torchvision.datasets.VOCDetection(root='./data', year='2007', image_set='trainval', download=True)" | |
| # ํ์ต | |
| python train.py --voc_root ./data/VOCdevkit/VOC2007 --epochs 12 | |
| # ์ถ๋ก | |
| python infer.py --ckpt frcnn.pth --image ./sample.jpg --score_thresh 0.5 | |
| ``` | |
| ### YOLOv8 (๋น๊ต) | |
| ```bash | |
| pip install ultralytics | |
| # ๊ฐ์ ์ด๋ฏธ์ง๋ก ์ถ๋ก (๊ฒฐ๊ณผ๋ฅผ Faster R-CNN๊ณผ ๋น๊ต) | |
| python yolo_infer.py --image ./sample.jpg | |
| ``` | |
| ## ์ํคํ ์ฒ (Faster R-CNN) | |
| ``` | |
| ์ด๋ฏธ์ง | |
| โ ResNet50 (conv1~layer3, stride 16) | |
| โผ | |
| ํน์ง๋งต | |
| โโโถ RPN โโ ์ต์ปค๋ณ (๊ฐ์ฒด์ฌ๋ถ + ๋ฐ์ค๋ณด์ ) โโ ํ๋ณด์์ญ(proposal) | |
| โ | |
| โผ RoI Align (7x7) | |
| RoI Head โโ (ํด๋์ค ๋ถ๋ฅ + ํด๋์ค๋ณ ๋ฐ์ค๋ณด์ ) โโ ์ต์ข ํ์ง | |
| ``` | |
| ## ํ์ต ์๋ฆฌ (์ฝ๋์ ๋์) | |
| 1. **์ต์ปค** (`box_utils.generate_anchors`): ๊ฒฉ์๋ง๋ค 9๊ฐ ๊ธฐ์ค ๋ฐ์ค | |
| 2. **RPN ํ๊น ํ ๋น** (`losses.rpn_loss`): IoUโฅ0.7 ๊ฐ์ฒด / <0.3 ๋ฐฐ๊ฒฝ | |
| 3. **ํ๋ณด์์ญ ์์ฑ** (`model._proposals`): RPN ์ถ๋ ฅ โ NMS | |
| 4. **RoI ํ๊น ํ ๋น** (`losses.assign_roi_targets`): IoUโฅ0.5 positive | |
| 5. **RoI Align** (`model.RoIHead`): ํ๋ณด์์ญ โ 7ร7 ๊ณ ์ ํน์ง | |
| 6. **์์ค**: ๋ถ๋ฅ(CE/BCE) + ํ๊ท(smooth L1), positive์๋ง ํ๊ท | |
| ## ๋จ์ํํ ๋ถ๋ถ (์๋ ผ๋ฌธ ๋๋น) | |
| - `batch_size=1` ๊ณ ์ | |
| - RPN objectness๋ฅผ 1-logit(BCE)์ผ๋ก ์ฒ๋ฆฌ | |
| - RoI Head๋ฅผ layer4 ๋์ FC๋ก ๊ตฌ์ฑ | |
| - FPN ๋ฏธ์ ์ฉ โ ์์ ๊ฐ์ฒด์ ์ฝํจ | |
| ## ๋ผ์ด์ ์ค | |
| - **์ด ์ ์ฅ์์ ์ฝ๋**: MIT License | |
| - **YOLOv8** (`yolo_infer.py`๊ฐ ์ฌ์ฉ): Ultralytics YOLO๋ **AGPL-3.0**. | |
| `yolo_infer.py`๋ Ultralytics๋ฅผ *ํธ์ถ*๋ง ํ๋ฉฐ, YOLO ๊ฐ์ค์น๋ ํฌํจํ์ง | |
| ์์ต๋๋ค(์ฌ์ฉ์๊ฐ ์คํ ์ ์๋ ๋ค์ด๋ก๋). ์์ ์ ํ์์์ค ์ฌ์ฉ ์ | |
| Ultralytics ์์ฉ ๋ผ์ด์ ์ค๊ฐ ๋ณ๋๋ก ํ์ํฉ๋๋ค. | |
| - Pascal VOC ๋ฐ์ดํฐ์ ์ ๊ณต์ ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค. | |
| ## ๋ฉด์ฑ | |
| ๊ต์ก ๋ชฉ์ ๊ตฌํ์ ๋๋ค. ํ๋ก๋์ ๋ฐฐํฌ๊ฐ ํ์ํ๋ฉด torchvision ๊ณต์ | |
| Faster R-CNN(`fasterrcnn_resnet50_fpn_v2`) ๋๋ Ultralytics YOLO๋ฅผ | |
| ์ ์ ๋ผ์ด์ ์ค ํ์ ์ฌ์ฉํ์ธ์. | |