Views
No views yet
⚠️ 성능 경고: 이 저장소의 Faster R-CNN 가중치(frcnn.pth)는 1 에폭만 학습한 데모용입니다. 실사용 목적이 아니라 "구현이 올바른가"를 검증하고 원리를 이해하기 위한 교육 자료입니다.
| Faster R-CNN (직접 구현) | YOLOv8 (Ultralytics) | |
|---|---|---|
| 방식 | 2-stage (후보영역 → 분류) | 1-stage (한 번에 예측) |
| 속도 | 느림 | 매우 빠름 (실시간) |
| 구현 | 밑바닥부터 (교육적) | 라이브러리 호출 |
| 학습 데이터 | Pascal VOC (20 클래스) | COCO (80 클래스) |
| 이 저장소의 역할 | 원리 학습 | 실무 표준과 비교 |
| 파일 | 내용 |
|---|---|
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_infer.py | YOLOv8(COCO 사전학습) 추론 — 같은 이미지 비교용 |
1pip install torch torchvision pillow
2
3# VOC 2007 다운로드 (torchvision 자동)
4python -c "import torchvision; torchvision.datasets.VOCDetection(root='./data', year='2007', image_set='trainval', download=True)"
5
6# 학습
7python train.py --voc_root ./data/VOCdevkit/VOC2007 --epochs 12
8
9# 추론
10python infer.py --ckpt frcnn.pth --image ./sample.jpg --score_thresh 0.51pip install ultralytics
2
3# 같은 이미지로 추론 (결과를 Faster R-CNN과 비교)
4python yolo_infer.py --image ./sample.jpg이미지
│ ResNet50 (conv1~layer3, stride 16)
▼
특징맵
├─▶ RPN ── 앵커별 (객체여부 + 박스보정) ── 후보영역(proposal)
│
▼ RoI Align (7x7)
RoI Head ── (클래스 분류 + 클래스별 박스보정) ── 최종 탐지box_utils.generate_anchors): 격자마다 9개 기준 박스losses.rpn_loss): IoU≥0.7 객체 / <0.3 배경model._proposals): RPN 출력 → NMSlosses.assign_roi_targets): IoU≥0.5 positivemodel.RoIHead): 후보영역 → 7×7 고정 특징batch_size=1 고정yolo_infer.py가 사용): Ultralytics YOLO는 AGPL-3.0.
yolo_infer.py는 Ultralytics를 호출만 하며, YOLO 가중치는 포함하지
않습니다(사용자가 실행 시 자동 다운로드). 상업적 폐쇄소스 사용 시
Ultralytics 상용 라이선스가 별도로 필요합니다.fasterrcnn_resnet50_fpn_v2) 또는 Ultralytics YOLO를
정식 라이선스 하에 사용하세요.