1 분 소요

과제 2

Q. 이미지의 channel order를 고려해야 합니다. cv2의 경우는 default channel order가 BGR인데 반해, PyTorch에서는 일반적으로 RGB order로 학습을 진행하는 경우가 많습니다. 컬러 이미지의 경우 이러한 차이가 큰 문제로 이어질 수 있습니다. 가령, RGB 이미지로 학습을 진행하고 cv2.imread()로 이미지를 불러와 그대로 model에 넣어주는 경우 모델이 아주 낮은 성능을 기록할 수 있습니다.

=> 현재 과제는 cv2인지? 고려를 현재 해줘야 하는 상황인건지?

=> 해결, cv2는 사용안했고 pytorch의 tensor만 고려해주면됨(차원) => permute를 통해 차원변환시켜줘서 해결

  1. CIFAR-10 데이터셋은 다양한 물체의 이미지를 포함하고 있습니다. 이런 경우, 색상 변화나 대비 조정 등의 색상 변환(color augmentation)을 적용하면 성능 향상에 도움이 될 수 있습니다. 왜 색상 변환이 모델 성능 향상에 도움이 되는지 생각해보세요.
  • 실 데이터는 밝기에 따라 다양한 이미지가 존재하므로 특정이미지에 색상,밝기 변화를 주어 다양한 데이터에도 성능이 나올 수 있게 할 수 있기 때문이다.
  • 데이터 다양성 증가, 과적합(overfitting) 방지, 특징 추출 강화, 실제 환경 시뮬레이션, 데이터 부족 문제 해결, 불변성(invariance) 학습
  1. Augmentation의 순서 역시 중요한 요소가 될 수 있습니다. 색상 변환을 먼저 적용하고 이미지를 회전시키는 경우와 이미지를 회전시키고 나서 색상 변환을 적용하는 경우, 이미지가 어떻게 달라질지 예상해보시고, 실제 augmentation 패키지에 따라 결과가 어떻게 나타나는지도 확인해보세요. 그리고 기하학적 변환(geometric augmentation)의 경우에도 순서가 어떻게 영향을 미칠지 생각해보세요.
  • 색상 변환을 먼저 적용하고 회전시키는 것이 조금 더 가지고 있는 데이터셋과 비슷한 환경에서 다른 밝기, 색으로 들어왔을 때 대응을 잘할 것 같고 회전시키고 색상 변환 적용하면 약간 그러한 데이터에 대한 성능이 떨어질 것 같다.
  • 실제로 실험을 해본 결과 색상 변환 먼저 적용하고 RandomHorizontalFlip을 했을 때는 test accuracy가 0.93이 나왔는데 RandomHorizontalFlip을 먼저 적용하고 색상 변환을 하니 test accuracy가 0.95가 나오는 것을 확인할 수 있었다. 이처럼 augmentation 순서도 중요한 요소가 되는 것을 확인 할 수 있었다. epoch가 1이라서 정확성은 약간 떨어질수 있어서 max_epoch를 늘렸을 때도 이러한 결과가 눈에 띄게 나타나는지 궁금하다
  1. Augmentation을 적용했음에도, ViT 모델의 사전 학습된 부분을 고정하고 분류기만 새로 학습하는 fine-tuning을 수행하면 augmentation의 효과가 떨어질 수 있습니다. 그 이유에 대해 생각해보세요.
  • 이미 사전에 학습된 VIT 모델은 특정 패턴이나 변형에 적응된 상태이기 때문에 새로운 Augmentation에 의해 생성된 데이터를 잘 반영못할 수도 있다. Augmentation의 효과를 극대화하기 위해서는 특징 추출기도 함께 업데이트하거나, Augmentation 전략을 조정하는 것이 필요할 수 있다.

  • Training에 적용한 augmentation 1
    • Resize(size)
    • ToTensor()
    • RandomResizedCrop(size)
    • ‘test_loss’: 0.28619784116744995, ‘test_accuracy’: 0.9419999718666077
    • Crop을 이용해 test성능을 끌어올렸다

  • augmentation 2

    • Resize(size)
    • ToTensor()
    • color_jitter
    • RandomHorizontalFlip()
    • [{‘test_loss’: 0.258756160736084, ‘test_accuracy’: 0.9330000281333923}]

    • 색변환, horizontalflip을 이용하여 augmentation 수행

  • augmentation 3
    • Resize(size)
    • ToTensor()
    • RandomHorizontalFlip()
    • color_jitter
    • [{‘test_loss’: 0.21105262637138367, ‘test_accuracy’: 0.9505000114440918}]
    • augmentation2와 순서를 뒤바꿔서 시행해보았다.

  • augmentation 4

    • Resize(size)
    • ToTensor()
    • RandomHorizontalFlip()
    • color_jitter
    • RandomResizedCrop(size)
    • [{‘test_loss’: 0.28888005018234253, ‘test_accuracy’: 0.9394999742507935}]

    • augmentation3에 crop도 추가해서 해보았다.

업데이트:

댓글남기기