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()
[결과 이미지]
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()
[결과 이미지]
5. 그 외의 기법
1) 이미지 크기 조절 : resize()
2) 가우시안 노이즈 추가 : randn(), add()
3) 색상 변환 : cvtColor()
반응형
SMALL
'인공지능 > 컴퓨터비전' 카테고리의 다른 글
[YOLOv8] 커스텀 데이터셋으로 Object Detection해보기 (0) | 2023.11.09 |
---|---|
[CV] LeNet-5 쉽게 이해하고 구현하기(Tensorflow) (2) | 2023.07.17 |
[OpenCV] Python으로 간단하게 Face Detection 구현하기 (1) | 2023.06.24 |
[OpenCV] Python OpenCV 라이브러리 설치하기 (0) | 2023.06.24 |