CNN은 대표적인 딥러닝 모델. 이미지 분석 작업에 최적화된 성능을 보임. CNN이 이미지 데이터를 잘 학습하는 원리를 알기 위해 이미지 데이터를 이해할 필요가 있음.
EX. 사진, 그림, 게임 그래픽, JPG, PNG. 사진, 그림등을 컴퓨터로 저장한 데이터.
디지털 매체는 데이터를 저장하는데의 최소 단위를 필요로함.
이미지 최소 단위 : 픽셀
이미지는 픽셀이라 불리는 점을 기반으로 구성됨. 각 픽셀은 색깔이나 밝기 정보를 가짐. 이러한 픽셀이 가로, 세로로 모여 2차원 이미지를 형성.
전통적인 이미지 처리 기법
: 딥러닝 이전에도 수많은 이미지 처리 기법들이 발전해옴. 포토샵 등 이미지 편집 프로그램에서 쉽게 접할 수 있음. 현재는 딥러닝 모델 학습을 위한 데이터 가공에도 사용
형태변환
잘라내기(CROP), 회전(ROTATE), 사이즈 변환(RESIZE), 전단변환(SHEARING, 사각형이었던 사진을 삼각형으로 변환), 비율변환(RESCALE)
색상변환
밝기변화(BRIGHTNESS), 대조변화(CONTRAST; 대조가 낮으면 색상 간 차이가 줄어들고 높으면 색상 간 차이가 커짐), 흑백변화(GRAYSCALE: RGB에서 하나만 가져옴. 컬러의 세기를 밝기로 변환)
필터변환
샤프닝(SHARPENING : 이미지의 선을 샤프하게 해서 너무 과하게 되면 노이즈들도 부각됨), 블러(BLUR : 샤프닝과 반대로 흐릿하게), 경계선 감지(EDGE DETECTION : 이미지 내 사물의 형태만을 뽑아내기 위해 사용. 사물의 종류를 찾아내기 위해 사용했음)
특정 필터를 사용하여 이미지를 변환. CNN에서 핵심적인 역할
기존 파이썬 내의 PIL 개발은 2011년에 중단되었으나 이를 복제(FORK)한 PILLOW라는 프로젝트가 현재까지 개발되고 있음.
python3 -m pip install Pillow
from PIL import Image
img = Image.open("Lenna.png")
from matplotlib.pyplot import imshow
imshow(img)
print("Size: {}, Mode: {}".format(img.size, img.mode))
pil은 넘파이와 호환성이 자유로우나 픽셀 위치를 찾아올 때 x, y 가로, 세로임. 넘파이는 반대로 적어줘야 함. 넘파이의 순서는 [,] 앞에 오는게 세로, 행 값이기 때문임.