프로젝트 구조 및 주요 파일 설명
이 프로젝트는 신경미분방정식(NEURAL ODE)을 활용한 세그멘테이션 작업을 위한 구조를 제공합니다. 전체 디렉터리 구성은 다음과 같습니다.
neural-odes-segmentation/
├── data_augment.py
├── checkpoint_border_resnet.pth
├── checkpoint_border_unet.pth
├── checkpoint_border_unode.pth
├── data_loader.py
├── inference_helper.py
├── evaluation_metrics.py
├── model_operations.py
├── network_architecture.py
├── models/
│ ├── resnet_ode.py
│ ├── unet_ode.py
│ └── unode.py
├── visualizations/
│ ├── training_results.png
│ ├── segmentation_output.png
│ └── ...
├── diagrams/
│ ├── model_structure.svg
│ └── loss_curve.svg
├── README.md
├── LICENSE
└── environment.yml
- data_augment.py: 입력 이미지에 대한 다양한 변형 처리(회전, 크기 조절 등)를 정의합니다.
- checkpoint_*.pth: 학습된 최적 모델 파라미터 저장 파일. 각각의 아키텍처(ResNet, U-Net, UNODE)에 맞춰 별도로 제공됩니다.
- data_loader.py: 데이터셋을 로드하고 배치 단위로 전처리하는 클래스를 포함합니다.
- inference_helper.py: 테스트 또는 실시간 예측 시 사용할 유틸리티 함수들.
- evaluation_metrics.py: mIoU, Dice Score 등의 평가 지표 계산 로직.
- model_operations.py: 모델 초기화, 손실 계산, 그래디언트 조정 등의 보조 함수.
- network_architecture.py: 모델 구조 정의 및 미분 방정식 기반 레이어 구성.
- models/: 각각의 모델 클래스가 정의된 하위 파일들.
- visualizations/: 실험 결과 이미지 및 출력 시각화 파일 저장 경로.
- diagrams/: 네트워크 구조 및 손실 변화 추이를 시각화한 SVG 파일.
- README.md: 설치 방법, 실행 절차, 예시 코드 안내.
- LICENSE: 오픈소스 라이선스 정보.
- environment.yml: Conda 환경 설정 파일, 필요한 패키지 버전 관리.
실행 스크립트 및 시작 방법
메인 실행 파일은 일반적으로 run_training.py 또는 pipeline.py 형태입니다. 본 프로젝트에서는 run_training.py를 통해 학습을 시작할 수 있습니다.
python run_training.py --config configs/train_config.yaml
또는 직접 인자 전달 방식으로 실행 가능:
python run_training.py --dataset_path /data/cityscapes --model_type UNODE --epochs 100
설정 파일 구성 및 커스터마이징
모든 실행 파라미터는 configs/train_config.yaml 파일에 정의되어 있으며, 아래와 같은 형식입니다.
dataset:
root_dir: /mnt/datasets/cityscapes
train_split: train
val_split: val
image_size: [512, 512]
model:
type: "UNODE"
use_pretrained: true
ode_layer_steps: 30
hidden_dim: 128
training:
batch_size: 8
num_epochs: 100
lr: 1e-4
weight_decay: 1e-5
gradient_clip: 1.0
output:
save_dir: /outputs/models
log_frequency: 20
save_best_only: true
- dataset.root_dir: 원본 데이터 경로.
- model.type: 사용할 모델 유형 (UNODE, ResNet-ODE 등).
- model.ode_layer_steps: ODE 해법에서 사용할 스텝 수.
- training.batch_size: 한 배치당 처리할 샘플 수.
- output.save_dir: 체크포인트 및 로그 저장 위치.
- output.log_frequency: 로그 출력 주기.
이 설정 파일을 수정함으로써 다양한 실험 조건을 쉽게 재현할 수 있습니다.