오늘은 케라스에서 심층 신경망을 구축하기 앞서 Python 기반의 한 가지 라이브러리를 소개하려 합니다.

 

 

 

영상 기반의 인공지능 모델을 사용하여 어떠한 객체를 검출 및 인식하기 위해선 가장 먼저 해야될 작업은

 

이미지 데이터를 수집하여 CNN을 거쳐 훈련을 시키는 것입니다.

 

이때 이미지 데이터의 수는 인식률을 높히기 위해선 객체당 수백장에서  수천, 수만장까지 필요합니다.

* 이미지의 수에 비례하여 인식률이 높아지는 것은 아닙니다. 


물론 COCO data, Kaggle, GitHub 등에서 오픈하여 제공하는 데이터를 가져와 활용하면 쉽게 데이터셋을

구축할 수 있지만 내가 원하는 이미지 데이터가 존재하지 않을 수도 있으며, 또는 이미지 데이터가 수가

 

부족한 상황이 매우 드물게 마주칩니다.

 

그래서 오늘은 이미지를 증강시킬 수 있는 파이썬 라이브러리인 Augmentation를 사용해보도록 하겠습니다.

 

 

 

 

Augmentation 라이브러리엔 이미지를 회전, 확대, 왜곡, 반전 등등의 함수들이 있습니다.

 

설치 방법은 아래와 같으며, 저는 Window 10에서 가상환경을 구축하여 cmd 창을 통해 라이브러리를 설치하고

Spyder 툴에서 설치된 라이브러리를 이용하여 파이썬 기반의 코드로 이미지를 증강하였습니다.

 

* 가상환경을 구축하지 않고 Anaconda를 설치하여 Spyder가 아닌 Jupyter Notebook을 이용하셔도 됩니다.

  저는 케라스를 사용하기 위해 구축된 가상환경에서 Augmentation 라이브러리를 설치한 것입니다.

 

 

라이브러리 설치

pip install Augmentor

 

라이브러리 설치는 매우 간단합니다...

 

 

 

 

라이브러리에서 몇가지의 함수를 코드를 통해 알아보겠습니다.

 

아래 그림의 원본 이미지를 좌우 반전, 상하 반전, 왜곡시키며 이 세 가지를 통합한 결과입니다.

 

import Augmentor

## 증강 시킬 이미지 폴더 경로
img = Augmentor.Pipeline("D:/이미지 증강")

## 좌우 반전
img.flip_left_right(probability=1.0) 

## 상하 반전
img.flip_top_bottom(probability=1.0)

## 왜곡
img.random_distortion(probability=1, grid_width=10, grid_height=10, magnitude=8)

## 증강 이미지 수
img.sample(10)

 

원본 이미지

 

좌우 반전

 

상하 반전

 

왜곡

 

좌우, 상하 반전 + 왜곡

 

상하, 좌우 반전은 눈으로 쉽게 확인하실 수 있겠지만, 왜곡운 둥근 그릇의 모양을 보시는 게 쉽게 확인되실겁니다.

 

좌우, 상하 반전 함수는 인자에 전체 이미지에서 적용시킬 확률값을 입력할 수 있으며, 왜곡 함수는 왜곡시킬 범위를

인자에 입력할 수 있습니다

 

 

 

< 정리글 >

 

  오늘은 이미지를 증강하는 파이썬 기반의 라이브러에 대해 알아보았습니다. 이미지가 부족거나 조금의 변화에 객체를

인식 못하는 상황에 이 라이브러리를 사용하는 것이 인식률 향상에 도움이 될거라 생각이 듭니다. 위에서 사용한 함수 

말고도 Rotation, Cropping, Perspective Transforms 등을 이용하여 증강시킬 수 있는 다양한 함수들이 존재합니다.

자세한 설명은 아래 참고 자료에 첨부한 사이트를 참고해주세요.

 

 

 

 

< 참고 자료 >

 

https://github.com/mdbloice/Augmentor

 

mdbloice/Augmentor

Image augmentation library in Python for machine learning. - mdbloice/Augmentor

github.com

 

'딥러닝 > Keras' 카테고리의 다른 글

[Keras] 숫자 인식  (0) 2020.04.04

+ Recent posts