Data Augmentation이란?

데이터 증강(data augmentation)은 딥러닝 기반의 컴퓨터 비전 분야에서 중요한 역할을 한다. 데이터 증강은 제한된 양의 훈련 데이터를 더 다양한 형태로 변형시켜 모델의 성능을 향상시키는 것을 목표로 한다. 이번 글에서는 OpenCV를 활용한 Data Augmentation을 구현하는 것을 목표로 한다.

1. 이미지 불러오기 및 표시

먼저 OpenCV를 사용하여 이미지를 불러오고 imshow()를 사용하여 이미지를 표시한다.

import cv2

# 이미지 파일 경로
image_path = "image.jpg"

# 이미지 불러오기
image = cv2.imread(image_path)

# 이미지 표시
cv2.imshow("Original Image", image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. 이미지 회전

getRotationMatrix2D()warpAffine()를 사용하여 이미지를 회전시킬 수 있다. 아래의 코드는 45도만큼 시계 방향으로 이미지를 회전하는 코드이다. 

# 이미지 회전
rows, cols, _ = image.shape
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)
rotated_image = cv2.warpAffine(image, M, (cols, rows))

# 이미지 표시
cv2.imshow("Rotated Image", rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

[결과 이미지]

45도만큼 시계방향으로 회전

3. 이미지 반전

flip()를 사용하여 이미지를 반전시킬 수 있다. 아래 코드는 이미지를 좌우로 반전시키는 코드이다. 

# 이미지 반전
flipped_image = cv2.flip(image, 1)

# 이미지 표시
cv2.imshow("Flipped Image", flipped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

[결과 이미지]

좌우 반전

4. 이미지 밝기 조절

이미지의 밝기를 조절하여 데이터셋을 변형시킬 수도 있다. convertTo()를 사용하면 된다. 아래 코드는 이미지의 밝기를 50만큼 증가시킨 코드이다. 

# 이미지 밝기 조절
brightened_image = np.clip(image.astype(np.int16) + 50, 0, 255).astype(np.uint8)

# 이미지 표시
cv2.imshow("Brightened Image", brightened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

[결과 이미지]

밝기 +50

5. 그 외의 기법

1) 이미지 크기 조절 : resize()

2) 가우시안 노이즈 추가 : randn(), add()

3) 색상 변환 : cvtColor()

 

 

반응형
SMALL

+ Recent posts