Bounding box : 필요한 부분만 잘라서 더욱 정제된 data를 feed한다. 직사각형의 경우 2개의 좌표만 사용하면 된다.
Resize : 계산의 효율을 위해 적당한 크기로 사이즈를 변경한다. 화질이 너무 좋은 경우 학습에 굉장히 많은 시간이 걸릴 수 있기 때문에 적절히 줄이는 것이 좋다.
Data Augmentation : 주어진 데이터가 가질 수 있는 case, state의 다양성을 키운다.
torchvision.transforms : RandomCrop, Flip... Compose...
Albumentations : transforms보다 빠르고, 다양하다.
torchvision.transforms을 사용할 때 사이즈를 키운다면 회전, flip등을 거친 후에 키우는 것이 좋고, 사이즈를 줄인다면 사이즈를 먼저 줄인 후에 회전, flip등의 처리를 해주는 것이 속도 면에서 좋다.
DataLoader : Dataset을 효율적으로 사용할 수 있도록 관련 기능 추가. Dataset을 다른 것으로 교체해도 문제 없게끔 효율적으로 작업하는 것이 중요
Model : an informative representation of an object, person or system.
Pytorch : Low-level,Pythonic, Flexibility
nn.Module :
Pytorch 모델의 모든 레이어는 nn.Module 클래스를 따른다.
모든 nn.Module은 forward() 함수를 가진다 : 내가 정의한 모델의 forward()를 한번만 실행한 것으로 그 모델의 forward에 정의된 모듈 각각의 forward()가 실행된다.
Parameters : 모델에 정의되어 있는 modules가 가지고 있는 계산에 쓰일 Parameter. 각 모델 파라미터 들은 data, grad, requires_grad 변수 등을 가지고 있다.
torchvision.models : 쉽게 모델 구조와 PretrainedWeight를 다운로드 할 수 있다.
feature extraction : backbone은 freeze하고 classifier의 parameter만 업데이트
fine-tuning : backbone과 classifier의 parameter를 모두 업데이트. similarity가 적더라도 보통 pretrained = True로 설정하는 것이 좋다.
loss.backward() : 모델의 파라미터의 grad값 업데이트
Loss :
Focal Loss : Class Imbalance 문제가 있는 경우, 맞춘 확률이 높은 Class는 조금의 loss를, 맞출 확률이 낮은 Class는 Loss를 훨씬 높게 부여.
Label Smoothing Loss : Class target label을 Onehot 표현으로 사용하기 보다는 ex) [0, 1, 0, 0, 0, ...] 조금 Soft 하게 표현해서 일반화 성능을 높이기 위함 ex) [0.025, 0.9, 0.025, 0.025, ...]
Optimizer :
StepLR : 특정 Step마다 LR 감소
CosineAnnealingLR : cosine 함수 형태처럼 LR을 급격히 변경
ReduceLROnPlateau : 더 이상 성능 향상이 없을 때 LR 감소
Votiong
Cross validation
Stratified K-fold Cross validation : Split시에 class 분포를 고려한다.
TTA