Skip to content

[Seg] Day6_0503

nureesong edited this page May 3, 2021 · 1 revision

피어세션 요약

  • k-fold, TTA + pseudo labeling 이상으로 더 할 게 있을까??
  • backbone: SE 말고 그냥 ResNext 계열이 좋다. (가볍게)
  • Augmentation: flip. cutout 꼭 넣기!! TTA는 flip만!!!
    cutMix는 효과가 있는 걸까??
  • 솔루션 윤곽
    공통: k-fold 앙상블 적용하기. 폴드 나누는 기준을 다르게 해서 시너지 효과 기대.
    ( class imbalance, object 개수 ) → 기민님 코드 참고
    k-fold 한 걸 싱글모델로 치면 0.65까지 나오는 게 목표!!
    제출할 때 꼭 TTA로 해보기.
  • 수요일부터는 앙상블 해야 함!!!
    각자 잘 나온 모델 주영님께 보내드리기 (폴드별로 pt 파일 5개, config, 성능)
  • (다른 캠퍼) 어떻게 싱글 모델 성능이 0.64까지 나왔을까??
    분명히 건드릴 게 많이 없어서 다 비슷한데... 의문이다.
  • 민정님의 예지몽(0.71...😲)으로 가는 로또 티켓이 무엇일까??

[실험 내용 및 결과 공유]

준철님

  • 예전에 잘 나왔던 EMANet으로 다시 돌아감.
    GPU 랜덤시드가 고정이 안 돼서 결과가 약간씩 달라지는데 조금 상승함.
    lr 크게 주면 잘 안 나옴. resnet50보다 101이 좋은 성능 나옴.
    local minimum에 빠지도록 scheduler 빼고 normalize도 빼봄.
    flip. brightness 도 실험 중.
  • swin transformer - upernet 합칠 수 있을 듯.
    https://github.com/zhanghang1989/PyTorch-Encoding/blob/master/encoding/models/sseg/upernet.py

형민님

  • 폴드 나눠서 학습까지 했는데 아직 앙상블은 안 한 상태.
    batch=4, stratified 5-fold로 나누고 lr만 절반으로 (lr=5*1e-5) 줄였는데,
    29에폭 때 valid=0.64 → LB=0.5872
    19에폭 → LB=0.5954 뭔가 이상하다...
    폴드 나누기 전에 0.6203까지 나오는데 앙상블을 안해서 낮은 건가??
  • train, valid batch=4 & test_loader batch_size=3 or 5.
  • 폴드별로 점수 차이가 클까요??

기민님

  • k-fold, resnext50_32x4d, TTA, cutout, cutmix 로 binary classification으로 실험
    20, 21에폭 정도에서 보통 최고 성능이 나온다.
    Resnext (SE 없는거!!) > Resnet > EfficientNet
    50으로 해야 잘 나오고 101로 하면 바로 오버피팅 생김..
    augmentation을 좀 빼서 성능이 올라갔는데 오버피팅은 좀 빨리 오는 듯.
  • randombrightness 빼니까 20에폭 안에 수렴하고 더 빠르고 성능도 더 좋음.
    GridDistortion도 빼는 게 나은 거 같다.
  • k-fold를 할 때 클래스가 별로 없는 이미지부터 11개로 라벨링 했음.
    object 개수로 하는 게 나으려나?? valid set을 잘 만지면 test set이랑 비슷해질 수 있을 것 같다.
  • 수달님 label smoothing 파고 계심. semantic segmentation으로 바꾸는 게 어렵다...
  • 멀티 라벨링이 제발 0.71 나왔으면!!
  • 앙상블할 때 제곱평균!!

주영님

  • DeeplabV3Plus(resnext101, se_resnext101 _32x8d) → 5-fold 실험 중.
  • DeepLabV3Plus : depth=5로 고정되어 있는게 백본 선택에 영향을 줄까??
    깊은 모델을 쓰면 receptive field가 커져서 그런가??
    데이터가 적은데 EfficientNet처럼 큰 모델을 쓰면 파라미터들이 국소적인 영역을 다 외워버리는 것 같다.
    stride=8로 하면 경계선을 잘 잡아내서 성능은 훨씬 좋아지는데,
    시간이 너무 오래 걸려서 그냥 stride=16 하는 게 낫다.
  • inference 코드에서 TTA 부분이 제대로 동작을 안 해서 수정 중.
    for models와 TTA를 동시에 하면 안 돌아가서 수정 중.
    마무리되면 pseudo-labeling 해보고 싶다.
  • k-fold 한 뒤에 모델별로 가중치를 약간 다르게 주는 것도 한 방법.
  • WarmupRestart 하는 게 좋을 듯.
  • TransUnet: https://github.com/The-AI-Summer/self-attention-cv

민정님

  • ASGNet - train 이미지 반으로 나눠서 support 로 넣어줘야 함.
    binary 실험 → 모델이 12개라서 GPU가 부족. 그래서 코드 수정해서 나눠서 돌리는 중.

누리님

  • 서버...후... 술 땡긴다🍺
    주영님 코드랑 베이스라인 코드 합치는 중.
    코랩 프로 gpu도 터지고..믿을 게 못 된다.
  • Augmentation 실험하기
    → 백본 se_resnext50_32x4d, resnext101_16d swsl
    → 배치 4 또는 8. Adam에 weight decay 없이. 스케줄러는 고민.
    → TTA flip만!! k-fold 추가하기
    → Fast AutoAugmentation 논문 공부해보기.