[컴퓨터 비전의 모든 것] Data Augmentation

2024. 12. 20. 01:44MOOC

1. 데이터의 중요성과 편향(bias)

  • Neural Network와 데이터:
    • 신경망은 데이터를 학습하여 내부의 weight(가중치)로 정보를 압축하는 모델이다.
    • 모델의 성능은 데이터의 질에 크게 좌우된다.
  • 데이터 편향의 문제:
    • 데이터는 대개 현실 세계(real data distribution)에서 일부만 샘플링한 것이며, 대부분 bias(편향)을 포함한다.
    • 예: 인터넷에서 수집된 이미지 데이터는 사람이 보기 좋은 구도로 촬영되어 특정 패턴이 반복될 가능성이 크다.
    • 편향된 데이터는 현실의 다양한 상황을 충분히 반영하지 못하기 때문에, 테스트 시 새로운 조건(예: 어두운 이미지)에서 성능이 저하될 수 있다.


2. 문제 해결: Data Augmentation (데이터 증강)

  • 정의:
    • 데이터를 인위적으로 변환하여 학습 데이터의 다양성을 증가시키는 기법이다.
    • 현실적으로 데이터를 추가 확보하지 않고도 모델의 성능을 개선할 수 있는 효과적인 방법이다.
  • 예시 기법:
    1. 이미지 회전: 이미지를 특정 각도로 회전.
    2. 밝기 조절: RGB 값을 조정하여 이미지 밝기를 변화.
    3. 크롭(Crop): 이미지의 일부분을 잘라내서 새로운 데이터를 생성.
    4. Affine 변환: 선의 평행 관계와 길이 비율을 유지하면서 이미지를 변환.
    5. CutMix: 두 개 이상의 이미지 일부를 합성하고 레이블을 합성 비율에 맞게 조정.
    6. 조합 적용: 여러 augmentation 기법을 결합하여 적용(예: 회전 후 크롭).


 

3. RandAugment: 최적의 데이터 증강 탐색

  • 문제점: 다양한 Data Augmentation 기법을 조합하여 최적의 조합을 찾는 것은 시간과 비용이 많이 든다.
  • RandAugment:
    • 사전에 설정한 augmentation 옵션 리스트에서 랜덤으로 샘플링하여 조합(policy)을 자동 탐색.
    • 각 조합의 성능을 평가해 최적의 증강 방법을 찾을 수 있다.

4. Data Augmentation의 효과

  • 장점:
    1. 데이터 다양성 증가 → 모델이 더 일반화된 학습 가능.
    2. 과적합(overfitting) 방지.
    3. 현실 세계의 다양한 상황에 대비한 강건한 모델 구축.
  • 활용 사례:
    • 이미지 분류, 객체 탐지, 세분화 등 다양한 컴퓨터 비전 작업에서 사용.

 

1. Brightness Augmentation 코드

  • brightness_augmentation(img) 함수는 이미지의 RGB 채널 값을 100씩 증가시키는 밝기 증강 기법을 보여준다.
  • RGB 값이 255를 초과하지 않도록 제한(clipping)하는 과정도 포함되어 있다.
  • numpy 배열로 처리하며, 밝기를 조절하여 데이터 다양성을 확보하는 방법을 보여준다.

2. 회전 및 반전

  • OpenCV를 사용하여 이미지를 90도 시계 방향으로 회전(cv2.ROTATE_90_CLOCKWISE)하거나, 180도로 뒤집는(cv2.ROTATE_180) 변환 기법을 보여준다.
  • 이미지 데이터를 회전 및 반전시켜 다양한 데이터 증강 사례를 보여준다.

3. 이미지 크롭

  • 이미지의 일부를 잘라내는 크롭(crop) 작업을 보여준다.
  • 크롭 시작 좌표(x_start, y_start)와 크기(crop_x_size, crop_y_size)를 지정하여 원하는 영역을 추출한다.
  • 크롭된 이미지는 데이터 증강과 객체 탐지에서 활용될 수 있다.

 

4. Affine Transformation

  • Affine 변환은 이미지를 기하학적으로 변형시키는 기법을 보여준다.
  • 세 개의 변환 전후 대응 점(pts1, pts2)을 설정하여 변환 행렬을 계산하고 OpenCV의 cv2.warpAffine 함수로 변환을 적용한다.
  • 변환 후에도 선의 평행 관계와 길이 비율이 유지된다.

5. CutMix Augmentation

  • 두 개의 이미지를 합성하여 새로운 이미지를 생성하는 CutMix 기법을 설명한다.
  • 원본 이미지(x1, x2)를 잘라 합성된 이미지(xnew)를 생성하며, 레이블(y1, y2)도 합성 비율에 맞게 조정(ynew)된다.
  • 데이터 증강에서 레이블까지 고려한 기법으로 모델 일반화를 높이는 데 도움을 준다.