1day_1paper
1day_1paper copied to clipboard
[19] ResNet strikes back: An improved training procedure in timm
timm pacakge 의 아버지 Ross Wightman 의 논문. (Individual Researcher. 간지 철철) training schedule 을 바꿔줌으로써, 224x224 input으로 vanilla ResNet-50에 80.4% top-1 을 찍어버림 (원래가 76.5 인가 그럼)
실험 논문인 만큼 실험결과에 집중하여 post 를 써 보겠음.
Training Procedure
3개의 training procedure 제안 (A1, A2, A3)
Loss: multi-label classification objective
cutmix 씀. 기존 cutmix와는 다르게! 개, 고양이가 섞이면 multi-label 로 개 1, 고양이 1 을 준다. 나머지는 0. 각 class 에 대해 BCE 를 썼는데, 이렇게 하니 성능이 더 좋았다고 한다. 추가로 label-smoothing 도 수행했다.
Augmentation
- Random Resized Crop
- horizontal flip
- RandAugment
- Mixup
- Cutmix
모두 DEIT 에서도 쓰이던 거다.
Regularization
Repeated augmentation을 썼다. 이게 하나의 이미지에 다양한 augmentation을 적용해서 모두 하나의 batch 안에 넣어버리는 테크닉인데, 효과적이었다. 자세한 건, CVPR20 Augment Your Batch 논문을 보자.
아래 이미지는 stochastic depth 의 figure 이다. training 시킬 때, 랜덤으로 모듈을 skip 시키는 방법. inference 할 때는 전부 다 쓰고. 요즘들어서는 기본적으로 사용하는 테크닉으로 보인다.
A1 procedure에는 regularization을 약하게만 넣어서 수렴속도를 빠르게 했다.
Optimization
BCE + SGD 는 별로더라. 요즘 나오는 transformer 는 adamw 나 LAMB를 쓰던데, 이들을 적용해 보았더니 잘 되더라. batch size 를 2048 로 늘려주고, LAMB를 쓰는데 집중했다.
Results
아 이런 그림 너무 좋다. 한 눈에 정리가 된다.
모델 family 들에 쭉 적용하니까 전부 성능 오르더라
vit 성능은 아직도 압도적이다. ㄷㄷ
재밌는 게 이거다. 같은 training 방법론을 적용해도, set 에 따라 크게 성능이 오르지는 않는다. 데이터 크기와 상관관계가 있는 것으로 보인다.
DeiT-S 의 schedule 을 T2 로 표현했다 (둘이 비슷하다)
이를 통해 알 수 있는 것. 당연하지만, 모델별로 필요한 hyperparam 은 다르다. 그래도 cnn 들끼리는 잘 통하는 것 같지만..
Ablations
A2 기준 Weight decay 는 넣는게 좋고, Repeated augmentation 도 넣으면 좋다.
stochastic depth 와 smoothing 관련 실험.