Skip to content

hanseungsoo13/UAV-Small-Object-Detect-with-Super-Resolution

Repository files navigation

UAV Small Object Detection

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 (권장)

설치

  1. 저장소 클론:
git clone <repository-url>
cd UAV_small_object_detection
  1. 서브모듈 초기화:
git submodule update --init --recursive
  1. 가상 환경 생성 및 활성화:
python -m venv .venv
source .venv/bin/activate  # Linux/Mac
# 또는
.venv\Scripts\activate  # Windows
  1. 의존성 설치:
pip install -e .

또는 uv를 사용하는 경우:

uv sync

📁 프로젝트 구조

UAV_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로 설정하세요

📄 라이선스

이 프로젝트의 라이선스 정보는 저장소를 확인하세요.

🤝 기여

이슈 및 풀 리퀘스트를 환영합니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published