교수님께서 새로운 과제를 주셨어요 ~!
지피티가 투두리스트를 정리해 준 것에 따라 이번 과제(어쩌면 방학 중 마지막이 될 수도 있는 !! 그리고 드디어 그냥 공부가 아니라 실제 의료데이터로 하는 것만 같은!!)를 체계적으로 실행해볼게요 !!
■ 최종 과제 목표
"LeNet, ResNet, EfficientNet을 분석하고, ISIC 2020 데이터셋(이미지 데이터)에 적용하여 하이퍼파라미터 튜닝을 통해 성능을 비교 및 최적화하는 것."
1. CNN 모델 분석
→ LeNet, ResNet, EfficientNet의 구조와 특징 이해
2. ISIC 2020 데이터셋 분석
→ 이미지 데이터 구조 및 분포 확인
3. CNN 코드 분석
→ 코드 흐름과 주요 함수 파악
4. 데이터 적용 및 하이퍼파라미터 튜닝
→ 모델 학습 및 최적 하이퍼파라미터 탐색
5. 모델별 성능 비교
→ 평가 지표를 기반으로 모델 성능 분석
6. 최적화 및 결론 도출
→ 최적 모델 선정 및 추가 개선 가능성 검토
1️⃣ LeNet, ResNet, EfficientNet 모델 분석
📌 할 일
✅ 각 CNN 모델의 기본 개념과 동작 방식 이해
✅ 모델별 구조, 레이어 구성, 특징, 입력/출력 형태 정리
✅ 기존 연구나 문서 참고하여 주요 차이점 분석
🎯 세부 작업
- LeNet, ResNet, EfficientNet 논문 및 관련 자료 검토
- 각 모델이 해결하는 문제와 주요 특징 비교
- 구조(레이어 구성, 활성화 함수, 파라미터 수, 연산량 등) 정리
2️⃣ ISIC 2020 데이터셋 다운로드 및 분석
📌 할 일
✅ ISIC 2020 데이터셋 다운로드 (https://challenge2020.isic-archive.com/)
우리가 받은 데이터는 위 데이터셋이었지만, 찾아보니 캐글에도 같은 데이터로 진행되는 대회가 있었다.
https://www.kaggle.com/c/siim-isic-melanoma-classification/overview
SIIM-ISIC Melanoma Classification
Identify melanoma in lesion images
www.kaggle.com
데이터는 "피부 병변 이미지 데이터"이다.
피부 병변(Skin Lesion)은 피부의 정상적인 구조나 색이 변한 부위를 의미한다.
즉, 피부에 생긴 점, 주근깨, 반점, 혹, 염증, 종양 등 모든 이상 증상을 포함하는 용어이다.
공유받은 데이터에 여러가지 데이터셋이 있다(캐글 말고). 그 중 아래 4가지만 다운받았다.
- PEG 이미지 (Train: 23GB, Test: 6.7GB)
- Training Ground Truth (2MB) → 이미지 정답 라벨
- (선택) Metadata v2 (2MB) → 참고용(사용 안 해도 됨)
✅ 데이터셋이 어떤 형식인지 확인
1) 총 33,127개의 데이터가 포함된 Training Ground Truth 파일
위 칼럼 중에
benign : (양성, 비암성 병변)이면 점이나 주근깨 등을 가리키며 타겟은 0이고,
malignant : (악성 암성 병변)이면 흑색종이나, 기저세포암, 편평세포암 등
악성 종양을 나타내는 것으로 타겟은 1로 표현한다.
- 이미지 데이터셋의 샘플 시각화
-> malignant(1) 데이터가 적기 때문에 데이터 불균형 문제를 해결하는 것이 중요하다.
시각화를 통해 데이터 분포를 살펴봐야겠다.
- 데이터셋의 클래스 분포 확인
3️⃣ CNN 코드(LeNet, ResNet, EfficientNet) 분석
📌 할 일
✅ 전달받은 CNN 코드 확인 및 구조 분석
✅ 각 모델이 어떻게 구현되어 있는지 확인
✅ 데이터셋을 입력받는 방식과 forward 과정 이해
🎯 세부 작업
- 모델별 forward() 함수 확인 (입력 → 출력 흐름 분석)
- torchvision 또는 tensorflow.keras 사용 여부 확인
- dataloader와 데이터 전처리 부분 확인
- 모델 학습 루프(optimizer, loss function 등) 분석
4️⃣ 데이터셋을 CNN 코드에 적용하고 하이퍼파라미터 튜닝
📌 할 일
✅ ISIC 2020 데이터셋을 CNN 코드에 적용하여 학습
✅ 기본적인 하이퍼파라미터로 훈련 후 baseline 성능 확인
✅ 하이퍼파라미터 조정하면서 모델 성능 비교
🎯 세부 작업
- (1) 데이터 로딩 및 전처리
- 이미지 크기 변환 (224x224 등 모델 요구 사항에 맞춤)
- 데이터 증강(Augmentation) 여부 결정 (Flip, Rotation 등)
- DataLoader 또는 tf.data.Dataset 생성
- (2) 기본 모델 학습
- 기본 하이퍼파라미터 설정 (lr=0.001, batch_size=32 등)
- 모델 학습 진행 (epoch 단위로 진행)
- 초기 성능 확인
- (3) 하이퍼파라미터 튜닝
- Learning rate, batch size, optimizer(RMSprop, Adam 등) 조정
- Dropout, weight decay, 데이터 증강 등 적용 여부 실험
- Early stopping, model checkpointing 적용
5️⃣ 각 모델별 성능 비교
📌 할 일
✅ 모델별 성능 지표 수집 및 비교
✅ 그래프 및 표로 성능 시각화
✅ 어떤 모델이 가장 적합한지 분석
🎯 세부 작업
- (1) 평가 지표 선정 및 계산
- Accuracy, Precision, Recall, F1-score, AUC-ROC 등 측정
- Loss 값 비교
- (2) 결과 시각화
- Loss/Accuracy 그래프 그리기 (matplotlib, seaborn)
- Confusion Matrix 분석
- (3) 모델별 특징 비교
- 모델의 속도, 정확도, 학습 곡선 비교
- 데이터셋 특성에 따라 어떤 모델이 적절한지 분석
6️⃣ 최적화 및 결론 도출
📌 할 일
✅ 모델 성능 최적화 시도
✅ 최종 모델 선정 및 결론 정리
✅ 향후 추가 개선점 논의
🎯 세부 작업
- (1) 최적 모델 선정
- 가장 성능이 좋은 모델 선택
- 최적 하이퍼파라미터 기록
- (2) 추가 최적화 시도
- 모델 경량화 (BatchNorm, Pruning 등)
- Transfer Learning 적용 고려
- (3) 최종 결과 정리
- 모델별 성능 차이 요약
- 교수님께 보고할 내용 정리
'💻 본업(컴공생) 이야기 > 머신러닝 - 딥러닝 이야기' 카테고리의 다른 글
[CNN 공부하기] AlexNet, VGGNet, ResNet 은 뭘까? (2) | 2025.02.11 |
---|---|
[랩_스터디 과제 3] Gradient descent (경사하강법), how neural networks learn? 🧠 (2) | 2025.01.21 |
[랩_스터디 과제 3] Deep learning (introduction) (2) | 2025.01.21 |
[랩_스터디 과제 2] 발표준비 (0) | 2025.01.11 |
[랩_스터디 과제 2] Decision Tree Regression (1) | 2025.01.11 |