UAV(드론) 영상에서 소형 객체를 탐지하기 위한 딥러닝 프로젝트입니다. PyTorch와 Faster R-CNN을 기반으로 구현되었습니다.
이 프로젝트는 드론으로 촬영된 영상에서 다양한 소형 객체를 탐지하는 것을 목표로 합니다. Faster R-CNN with ResNet50 FPN v2 아키텍처를 사용하여 11가지 클래스의 객체를 탐지할 수 있습니다.
building(건물)ship(선박)vehicle(차량)prefabricated-house(조립식 주택)well(우물)cable-tower(송전탑)pool(수영장)landslide(산사태)cultivation-mesh-cage(양식망)quarry(채석장)
- Python >= 3.12
- PyTorch >= 2.9.0
- CUDA 지원 GPU (권장)
- 저장소 클론:
git clone <repository-url>
cd UAV_small_object_detection- 서브모듈 초기화:
git submodule update --init --recursive- 가상 환경 생성 및 활성화:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# 또는
.venv\Scripts\activate # Windows- 의존성 설치:
pip install -e .또는 uv를 사용하는 경우:
uv syncUAV_small_object_detection/
├── src/
│ ├── config.py # 학습 및 모델 설정
│ ├── model.py # Faster R-CNN 모델 정의
│ ├── datasets.py # 데이터셋 로더
│ ├── train.py # 학습 스크립트
│ ├── inference.py # 추론 스크립트
│ ├── eval.py # 평가 스크립트
│ ├── transform.py # 데이터 변환
│ ├── custom_utils.py # 유틸리티 함수
│ └── ground_truth.py # Ground truth 처리
├── SUPIR/ # 이미지 복원 서브모듈
├── small-weak-UVA-object-dataset/ # 데이터셋
├── inference_outputs/ # 추론 결과 저장
├── outputs/ # 모델 및 학습 결과 저장
├── main.py # 메인 진입점
└── pyproject.toml # 프로젝트 설정
src/config.py에서 다음 설정을 변경할 수 있습니다:
BATCH_SIZE: 배치 크기 (기본값: 4)RESIZE_TO: 이미지 리사이즈 크기 (기본값: 2000)NUM_EPOCHS: 학습 에포크 수 (기본값: 55)NUM_WORKERS: 데이터 로더 워커 수 (기본값: 4)TRAIN_IMG,TRAIN_ANNOT: 학습 이미지 및 어노테이션 경로VALID_IMG,VALID_ANNOT: 검증 이미지 및 어노테이션 경로OUT_DIR: 모델 및 결과 저장 경로
데이터셋은 다음 구조로 준비되어야 합니다:
data/
├── train_images/ # 학습 이미지
├── train_annots/ # 학습 어노테이션 (XML)
├── valid_images/ # 검증 이미지
└── valid_annots/ # 검증 어노테이션 (XML)
어노테이션 파일은 PASCAL VOC 형식의 XML 파일이어야 합니다.
cd src
python train.py학습된 모델은 outputs/ 디렉토리에 저장됩니다.
cd src
python inference.py --input <이미지_디렉토리_경로> --weights <모델_가중치_경로>추론 결과는 inference_outputs/ 디렉토리에 저장됩니다.
cd src
python eval.py- Faster R-CNN 기반 객체 탐지: ResNet50 FPN v2 백본 사용
- 다중 클래스 탐지: 11가지 클래스 동시 탐지
- 데이터 증강: 다양한 변환 기법 적용
- 학습 모니터링: 손실 및 mAP 시각화
- 추론 및 평가: 학습된 모델을 사용한 객체 탐지 및 성능 평가
- GPU 메모리에 따라
BATCH_SIZE를 조정하세요 - 이미지 크기는
RESIZE_TO설정에 따라 조정됩니다 - 학습 중 변환된 이미지를 시각화하려면
VISUALIZE_TRANSFORMED_IMAGES = True로 설정하세요
이 프로젝트의 라이선스 정보는 저장소를 확인하세요.
이슈 및 풀 리퀘스트를 환영합니다.