728x90
저번 포스팅에 설치를 완료했으니 이제 라이브러리를 이용해서 이미지에 적용시켜 볼 예정이다.
코드는 다음과 같다.
import albumentations as A
import cv2
import matplotlib.pyplot as plt
#Lambda function 전용 메소드
def cusmtom_fn(image, **kwargs):
rose = cv2.imread('rose.bmp')
h, w = image.shape[:2]
rose = cv2.resize(rose, (h,w), interpolation=cv2.INTER_CUBIC)
image = cv2.addWeighted(image,0.5, rose,0.5, 0)
print('Lambda function Seuccess!')
print(kwargs)
return image
#증강 파이프라인 구축
transform = A.Compose([
A.GaussianBlur(blur_limit=(3,7), sigma_limit=4, p=1),
A.RandomRotate90(p=1),
A.RandomGridShuffle(grid=(2,2), p=1),
A.Lambda(name='Lambda', image = cusmtom_fn, p=1)
])
src = cv2.imread('lenna.bmp')
#augmentation
dst = transform(image= src)['image']
#출력
cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()
cv2.destroyAllWindows()
1. Albumentation을 import 해준다.
2. albumentations의 lambda 함수를 쓰기 위해 개인이 직접 메소드를 만들어서 정의한다. API는 다음과 같다.
- 이미지를 증강시킬 메소드를 만들었다면 image = 메소드명 을 하면 된다.
3. A.Compose() 안에 증강 파이프라인을 구축한다 API 상에 있는 transforms 인자에 배열형태로 집어넣는다.
4. 결과는 다음과 같다. 람다함수가 정상적으로 적용된걸 알 수 있다.
+ 추가적으로 def custom_fn에서 **kwargs인자에 뭐가 들어오나 궁금해서
print(kwargs)코드를 추가해봤는데 결과는 다음과 같이 영상의 크기를 딕셔너리 형태로 터미널에 출력해준다.
이상으로 다음엔 데이터셋에 적용시켜보기를 해보겠다.
728x90
'Data Augmentation' 카테고리의 다른 글
Albumentation을 이용해 Image augmentation 해보기04 - Project 01. 데이터 증강 알고리즘 만들기 (0) | 2021.03.16 |
---|---|
Albumentation을 이용해 Image augmentation 해보기03- 바운딩박스 포함 증강 (0) | 2021.03.05 |
Albumentation을 이용해 Image augmentation 해보기01- 설치 (0) | 2021.03.03 |