ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Segmenation] Semantic Segmentation의 다양한 기법들
    CS 공부/AI 2023. 7. 2. 16:51

     기존 Augmentation

    1. Horizontal flip
    2. Vertical flip
    3. Rotation
    4. etc...

     

     최신 Augmentation

    • Cutout (Albumentation.CoarseDropout)
      • random하게 박스를 생성하기 때문에 사진마다 성능의 편차가 존재

     

    • Gridmask (Albumentation.GridDropout)
      • cutout이 객체의 중요 부분 혹은 context 정보를 삭제할 수 있다는 단점을 해결하기 위해 규칙성 있는 박스를 통해 cutout하는 방안을 제시

     

    • Mixup

     

    • Cutmix
      • from cutmix.cutmix import Cutmix
      • from cutmix.utils import CutmixCrossEntropyLoss

     

    • SnapMix
      • CAM을 이용해 이미지 및 라벨을 mixing하는 방법
      • 영역 크기만을 고려해 라벨을 생성했던 cutmix와 달리 영역의 의미적 중요도를 고려해 라벨 생성

     

    • CropNonEmptyMaskIfExists
      • object가 존재하는 부분을 중심으로 crop

     

     Scheduler

    • Learning rate가 너무 작으면 학습시간이 오래 소요되고 local minima에 빠질 위험이 있음
    • Learning rate가 너무 크면 loss가 발산하는 문제가 있음
    1. CosineAnnealingLR
      • lr의 최대값과 최소값을 정해 그 범위의 학습율을 cosine 함수를 이용해 스케쥴링
        • 최대/최소값 사이에서 lr을 급격하게 증가시켰다가 감소시키기 때문에 saddle point 정체 구간을 빠르게 벗어나게함
    2. ReduceLROnPlateau
      • metric 성능이 향상되지 않을 때 lr 조절
    3. Gradual Warmup
      • 학습을 시작할 때 매우 작은 lr로 시작해서 특정 값에 도달할 때까지 서서히 lr 증가시키는 방법
      • weight가 불안정한 초반에도 비교적 안정적인 학습 수행 가능 (Pretrained weight)
      • backbone 네트워크 사용시에 weight 망가지는 것 방지

     

    Gradient Accumulation

    • 모델의 weight를 매 step마다 업데이트하지 않고, 일정 step 동안 gradient를 누적한 다음 누적된 gradient를 사용해 weight를 업데이트하는 방법
    • 배치 사이즈를 키우는 장점이 있음 (성능이 항상 오르는 것은 아님)

     

    Look Ahead optimizer

    • Adam이나 SGD를 통해 K번 업데이트 후, 처음 시작했던 point 방향으로 1 step back 후, 그 지점에서 다시 k번 업데이트를 시작하는 방법
    • Adam이나 SGD로는 빠져나오기 힘든 local minima를 빠져나올 수 있게 한다는 장점이 있음

     

    Ensemble

    1. 5-Fold Ensemble (cross validation)
    2. Epoch ensemble: 학습 완료한 후, 마지막부터 N개의 weight ensemble
    3. SWA: 각 step마다 weight를 업데이트하는 SGD와 달리 일정 주기마다 weight 평균 내는 방법
    4. Seed ensemble: seed만 바꿔가며 모델을 학습시킨 후 ensemble
    5. Resize ensemble: input 이미지의 size를 다르게 학습해 ensemble
    6. TTA: 모델의 성능을 테스트할 때 augmentation 수행, augmentation 거친 n장의 이미지를 모델에 입력하고 각각의 결과를 평균
      • ttach library: SegmentationTTAWrapper object는 모델과 Compose의 결과물을 입력으로 받아 한 이미지에 대해 12가지의 TTA를 적용하고 결과물을 평균 내어 return

     

    Pseudo Labeling

    1. 모델 학습을 진행
    2. 성능이 가장 좋은 모델에 대해 test 데이터셋에 대한 예측을 진행
      • softmax를 취한 확률값이나 softmax를 취하기 전의 값, torch.max를 취하기 전의 값을 예측
    3. 2번에서 예측한 test 데이터셋과 train 데이터셋을 결합해 새롭게 학습을 진행
      • test 데이터셋을 예측한 값을 다시 train 데이터로 활용

     

Designed by Tistory.