러프하게 흐름을 기록하였다.
결과는 새로운 포스팅으로 정리할 예정이다.
앞서 살펴본 데이터셋의 주요한 특징은 아래와 같다.
우선 클래스별 데이터의 갯수가 많지 않기 때문에 성능평가를 train-validation-test로 나누는 것이 아닌, k-fold cross validation기법을 사용하기로 한댜.
또한, 클래스별 데이터수의 편차가 크기 때문에 stratified K-fold 방법을 사용하여 클래스별 데이터비율을 유지하면서 train set과 validation set을 나누었다.
이미지는 학습 속도를 고려하여 그레이스케일 변환 후 300x300으로 리스케일 하였다.
ResNet-101을 baseline model로 사용하였다.
lr : 0.00005
batch size : 16
Adam optimizer
ReLu actvation fn
Weights initialization : Kaiming

f1-score와 loss를 성능지표로 확인하였고, validation loss가 발산함을 통해 overfitting 되고 있음을 추론하였다.
데이터의 과적합을 막기 위해 data augmentation을 적용하였다.
RandomHorizontalFlip 50%, RandomRotation(30), 데이터 정규화를 진행하였다.
그 후 learning rate를 1e-4~5e-5까지 변화시키고, batchsize를 2~32사이의 값으로 학습시켜 보았다.

data augmentation을 통해 overfitting이 개선되는 모습을 보였다. 또 batch size가 작아질 수록 일반화 성능이 좋아짐을 확인하였다.
같은 learning rate 5e-4, batch size 4의 세팅으로 했을 때 가중치 초기화 방식에 따른 성능변화를 보기 위해 실험을 진행하였다.

Xavier 초기화(남색)이 좀 더 성능상 우세한 것으로 확인되었다.


모든 클래스의 예측을 하나의 클래스처럼 다루어 전체 TP(True Positive), FP(False Positive), FN(False Negative)를 합산하여 계산하는 방법
각 클래스의 성능을 계산한 후, 단순 평균을 내는 방법
각 클래스의 성능을 해당 클래스의 샘플 수로 가중평균하는 방법


클래스의 갯수가 많은 benign클래스에 대한 성능이 상대적으로 높음. 데이터가 불균형하기 때문에 클래스의 샘플 수로 가중평균을 구하는 Weighted방법이 제일 높은 성능을 보여준다. 또한, Weighted 방법이 클래스 불균형이 있는 데이터셋에서 성능을 잘 반영하기 때문에 앞으로 성능 매트릭의 표현은 Weighted 방식으로 진행하였다.

