albumentations
Albumentations는 Image Augmentations을 위한 python 라이브러리이다.
Image augmentation 은 딥러닝과 컴퓨터 비전에서 학습모델의 성능을 향상시키는 역할을 한다. Image augmentation의 목적은 현재의 데이터로부터 새로운 학습 샘플링을 만들기 위함이다.
albumentations의 장점
1. 모든 컴퓨터 비전의 task 를 지원한다
ex) classification, semantic segmentation, instance segmentation, object detection, and pose estimation.
2. 단순화된 통일된 API로 공급
3. 70개 이상의 서로 다른 Augmentation를 포함
4. Fast (논문에 따르면 torchvision이나 keras 등 보다 빠른 속도로 지원)
5. Flexible (pytorch, tensorflow같은 대중적인 딥러닝 프레임 워크에 지원)
설치 및 사용 방법
PyPI로 최신 버전을 설치 하며, 이때 최소 파이썬 버전을 요구하고 있다
pip install -U albumentations
albumentations 는 opencv를 활용하는 방법과 pillow를 활용하는 방법을 제시하고 있다. opencv를 이용하는 방법은
import albumentations as A
import cv2
# Declare an augmentation pipeline
transform = A.Compose([
A.RandomCrop(width=256, height=256),
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.2),
])
# Read an image with OpenCV and convert it to the RGB colorspace
image = cv2.imread("image.jpg")
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Augment an image
transformed = transform(image=image)
transformed_image = transformed["image"]
opencv를 활용하는 방법뿐만 아니라 pillow 라이브러리를 사용할 수 있다.
from PIL import Image
import numpy as np
# Declare an augmentation pipeline
transform = A.Compose([
A.RandomCrop(width=256, height=256),
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.2),
])
# Read an image with pillow
image = np.array(Image.open("image.jpg"))
# Augment an image
transformed = transform(image=image)
transformed_image = transformed["image"]
이처럼 활용 목적과 방법에 따라서 다양한 augmentation을 할 수 있으며, 해당 조건에 맞는 예시를 확인 할 수 있다.
자세한 사항은 https://albumentations.ai/docs/ 에서 확인할 수 있다.
그럼 Augmentation는 어떻게 생성될까 ?
다음과 같이 Augmentation을 하게 된다면 Original에 해당되는 이미지를 A.RandomCrop을 height 및 Width의 조건에 따라서, 랜덤하게 Crop을 하게 된다. 다음으로는 50%의 확률을 통해서 A.HorizontalFlip을 진행하게 되고, Flip된 이미지를 다시 20:80의 확률로 Brightness 그리고 Contrast를 진행하게 된다.
그럼 두개의 파라미터를 가지고 있는 augmentation은 어떻게 처리가 가능할 것인가?
transform = A.Compose([
A.RandomBrightnessContrast(brightness_limit=1, contrast_limit=1, p=1.0),
])
transformed_image_1 = transform(image=image)['image']
transformed_image_2 = transform(image=image)['image']
transformed_image_3 = transform(image=image)['image']
그림1에서 참조하듯이 발생되는 조건과 확률 조건에 따라서 그림 2처럼 결과가 달라질 수 있다.
참고 자료 및 출처
https://github.com/albumentations-team/albumentations
논문 : Albumentations_Fast_and_Flexible_Image_Augmentatio
'Machine-Learning > CV (Computer Vision)' 카테고리의 다른 글
[CV] VGGNet (Simonyan and Zisserman, 2015) (0) | 2022.10.28 |
---|---|
[CV] ResNet (0) | 2022.10.11 |
[영상] Bilinear Interpolation (0) | 2022.10.06 |
[CV] 특징(Feature) 이란? (0) | 2022.09.26 |
[CV] 합성곱 신경망 (Convolutional Neural Network, CNN) (0) | 2022.08.23 |
댓글