[CNN] 이미지 데이터

유가연·2022년 2월 8일
0

TIL

목록 보기
18/32

이미지 데이터

CNN은 대표적인 딥러닝 모델. 이미지 분석 작업에 최적화된 성능을 보임. CNN이 이미지 데이터를 잘 학습하는 원리를 알기 위해 이미지 데이터를 이해할 필요가 있음.
EX. 사진, 그림, 게임 그래픽, JPG, PNG. 사진, 그림등을 컴퓨터로 저장한 데이터.

디지털 매체는 데이터를 저장하는데의 최소 단위를 필요로함.

이미지 최소 단위 : 픽셀
이미지는 픽셀이라 불리는 점을 기반으로 구성됨. 각 픽셀은 색깔이나 밝기 정보를 가짐. 이러한 픽셀이 가로, 세로로 모여 2차원 이미지를 형성.

컬러이미지

  • 각 픽셀은 3가지 값을 가짐. RGB채널.
  • 각 채널은 8비트의 수로 이루어짐. 총 24비트(2^24개의 색을 표현 가능)
  • 각 채널의 값이 클수록 색의 세기가 강해짐.

흑백이미지

  • 각 픽셀은 한가지 값만 가짐 -> 해당 위치에서의 밝은 정도
  • 각 픽셀은 8비트의 값을 가짐
  • 값이 클수록 흰색에 가까움

딥러닝을 활용한 이미지 처리 예시

  • 사물인식
    자율주행, 안면인식, 의료이미지에서 비정상 부위 탐지
  • 이미지 캡셔닝
    딥러닝 모델이 이미지를 분류한 후 분류 결과를 기반으로 이미지를 설명하는 문장 생성 + 자연어처리
  • 이미지 합성 : 딥페이크
    한 사람의 얼굴에 다른 사람의 얼굴을 합성
  • 화질 개선
    SUPER RESOLUTION(해상도 상승), NVIDIA DLSS(게임에서 사용) 4K모니터(고해상도)가 일반인에게도 많이 보급됨. 컴퓨터가 게임을 잘 보내는건 실시간 화면이 부드러움. 이건 FPS로 측정. 연속적 이미지를 얼마나 보여주는지. 1초에 30장이면 30FPS. 저해상도 그림을 그린 후 딥러닝으로 고해상도로 변경. 원래의 고해상도와 최대한 비슷하게 만들고 곧 FPS가 늘어남. FPS는 저해상도때의 값을 유지하면서 고해상도를 보여줌
  • 알파고
    바둑판 이미지를 통해 학습

딥러닝 이전의 이미지 처리

전통적인 이미지 처리 기법
: 딥러닝 이전에도 수많은 이미지 처리 기법들이 발전해옴. 포토샵 등 이미지 편집 프로그램에서 쉽게 접할 수 있음. 현재는 딥러닝 모델 학습을 위한 데이터 가공에도 사용

  • 형태변환
    잘라내기(CROP), 회전(ROTATE), 사이즈 변환(RESIZE), 전단변환(SHEARING, 사각형이었던 사진을 삼각형으로 변환), 비율변환(RESCALE)

  • 색상변환
    밝기변화(BRIGHTNESS), 대조변화(CONTRAST; 대조가 낮으면 색상 간 차이가 줄어들고 높으면 색상 간 차이가 커짐), 흑백변화(GRAYSCALE: RGB에서 하나만 가져옴. 컬러의 세기를 밝기로 변환)

  • 필터변환
    샤프닝(SHARPENING : 이미지의 선을 샤프하게 해서 너무 과하게 되면 노이즈들도 부각됨), 블러(BLUR : 샤프닝과 반대로 흐릿하게), 경계선 감지(EDGE DETECTION : 이미지 내 사물의 형태만을 뽑아내기 위해 사용. 사물의 종류를 찾아내기 위해 사용했음)

특정 필터를 사용하여 이미지를 변환. CNN에서 핵심적인 역할

PIL

기존 파이썬 내의 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 가로, 세로임. 넘파이는 반대로 적어줘야 함. 넘파이의 순서는 [,] 앞에 오는게 세로, 행 값이기 때문임.

profile
유가연

0개의 댓글