i2sb-segmentation/
├── Pipfile
├── Pipfile.lock
├── README.md
├── data/
│ ├── OCTA500_3M
│ ├── OCTA500_3M.dvc
│ ├── OCTA500_6M
│ ├── OCTA500_6M.dvc
│ ├── ROSSA
│ └── ROSSA.dvc
├── nbs/
│ └── test.ipynb
├── script/
│ ├── exp.py
│ └── unit_test/
│ ├── test_segmentation_2d_dataset.py
│ ├── test_segmentation_3d_dataset.py
│ └── test_segmentation_model.py
└── src/
├── __init__.py
├── archs/
├── data/
├── losses/
├── metrics/
├── models/
└── utils/
-
Pipenv 설치 (아직 설치하지 않은 경우):
pip install pipenv
-
프로젝트 클론 및 디렉토리 이동:
git clone [repository_url] cd i2sb-segmentation
-
Pipenv 환경 생성 및 의존성 설치:
pipenv install
-
Pipenv 환경 활성화:
pipenv shell
-
실험 스크립트 실행 (예시: 데이터로더와 metric이 잘 작동하는지 코드):
python script/unit_test/test_segmentation_2d_dataset.py
-
Jupyter Notebook 실행 (필요한 경우):
pipenv run jupyter notebook
- OCTA500_3M, OCTA500_6M, ROSSA 데이터셋을 사용.
- 데이터는 DVC(Data Version Control)로 관리.
data/
: 데이터셋 저장 위치nbs/
: Jupyter Notebook 파일 저장 위치script/
: 실험 및 테스트 스크립트 저장 위치unit_test/
: 유닛 테스트 스크립트 저장 위치
src/
: 소스 코드 저장 위치archs/
: 모델 아키텍처 관련 코드data/
: 데이터 처리 관련 코드losses/
: 손실 함수 관련 코드metrics/
: 평가 지표 관련 코드models/
: 모델 구현 관련 코드utils/
: 유틸리티 함수 저장 위치
-
DVC 초기화 (본 리포지토리에서 init 되어있으므로 생략):
dvc init
-
원격 저장소 추가:
dvc remote add -d myremote ssh://user@host:/path/to/dvc-backup
-
원격 저장소 설정 수정:
dvc remote modify myremote user username dvc remote modify myremote password password
-
데이터 추적 (본 리포지토리에서 add 되어있으므로 생략):
dvc add data/dataset_name
-
변경사항 커밋 (본 리포지토리에서 commit 되어있으므로 생략):
git add .dvc git commit -m "Add data to DVC"
-
데이터 푸시(본 리포지토리에서는 pull 목적이므로 생략):
dvc push
-
데이터 풀 (이 부분만 실행):
dvc pull
-
데이터 상태 확인:
dvc status
-
특정 버전의 데이터 가져오기:
git checkout <commit-hash> dvc checkout
- 데이터셋을 로드하고, 데이터 로더를 통해 배치 단위로 데이터를 처리.
- 데이터셋의 샘플을 시각화하고, 오류가 포함된 레이블을 생성하여 메트릭을 계산.
- 데이터셋이 의도대로 잘 구현이 되었는지 확인 위한 목적
- 다양한 모델 아키텍처(SegResNet, FRNet, AttentionUNet 등)를 테스트.
- 데이터셋을 로드하고 모델을 통해 예측을 수행한 후, 결과를 시각화.
- Registry 사용하여 다양한 아키텍쳐들을 효과적으로 관리 가능.
- SupervisedModel 클래스를 사용하여 모델을 학습하고 검증합니다.
- 학습 및 검증 과정을 반복하며, 주기적으로 결과를 출력하고 시각화합니다.
- 본 과정을 통해 Supervised Model 기법이 의도대로 잘 구현이 되었는지 확인 목적
- SegDiffModel 클래스를 사용하여 모델을 학습하고 검증합니다.
- 학습 및 검증 과정을 반복하며, 주기적으로 결과를 출력하고 시각화합니다.
- 본 과정을 통해 SegDiffModel 기법이 의도대로 잘 구현이 되었는지 확인 목적