[Ep.13] AI-REMEMBER (07.14)

권승민·2021년 7월 14일
0

Fundamental 12 - 파이썬으로 이미지 파일 다루기

♣ 12.7은 실습 기반이므로 AI-REMEMBER에서는 생략합니다.

★ 성취 목표 ★
1. 컴퓨터에서 이미지가 표현되는 방식을 이해할 수 있다.
2. Pillow와 OpenCV를 활용 (이미지 파일 열기 + 정보 추출)
3. CIFAR-100 환경에서 히스토그램을 기반으로 유사 이미지를 찾아낼 수 있다. (12.7 내용)

12.2 디지털 이미지

  1. 디지털 화면은 수많은 점들의 집합이며 색상을 가지는 점 하나를 화소(pixel) 라고 한다.
  2. 각각의 화소는 RGB라 하여 각각의 단일 색 강도를 조절하여 다양한 색상을 표현한다.
  3. 화소의 색이 RGB 3개인 이유 : 망막에 있는 시세포가 대부분 이들 3가지로 이루어져 있다.
    참고자료
  4. Raster 또는 Bitmap 방식의 이미지는 보통 색상별로 점당 8비트를 사용하고 0~255 사이의 값으로 색의 감도를 표시한다.
  5. Vector 방식의 이미지는 상대적인 점이나 선의 위치를 방정식으로 기록해 두었다가 디지털 화면의 각 화소에 어떻게 표현할지를 확대나 축소를 통해 다시 계산하므로 깨짐 현상이 없다.
  6. (참고) YUV 방식 : grayscale 흑백 TV에서 컬러 TV로 넘어가는 시점에, 기존 흑백 채널에다 25% 수준의 해상도를 가진 두 색상 채널을 덧입혀 송출하는 방식
  7. 컬러 스페이스 : 색 공간, 색을 표현하는 다양한 방식
  8. 채널 : 컬러 스페이스를 구성하는 축(R, G, B..)

12.3 Pillow 사용법

  1. Pillow : Numpy와 결합하여 간단한 이미지 작업을 간편하게 하는 도구
  2. 이미지는 Array 형태의 데이터이다.
  3. 가로 세로 각 n 픽셀에 RGB 색상 채널이 있다면 Numpy로 [n, n, 3] 차원의 배열을 생성할 수 있다.
  4. uint8 데이터 타입 : 부호가 없는(unsigned) 8비트 정수 즉, 0부터 255 사이의 값을 나타낸다.
  5. np.zeros() : 모든 픽셀의 모든 채널의 값을 0으로 초기화시킨다. 이는 검은색을 나타낸다.

12.4 Pillow를 활용한 데이터 전처리

  1. np.reshape()order라는 인자를 'F' 라고 주면 원하는 형태로 reshape할 수 있다.
  2. np.swapaxes(0, 1) : 이미지의 축을 바꾸는 메서드

12.5 OpenCV - 안녕, OpenCV

  1. OpenCV는 오픈소스로 제공되는 컴퓨터 비전용 라이브러리이다.
  2. Python뿐만 아니라 C++, Java, MATLAB 등의 다양한 프로그래밍 언어에서 호출하여 사용할 수 있다.
  3. 영상 처리에 관한 고급 기능들을 사용하기 용이하도록 구현되어 있다.
  4. 결국 이미지는 [너비, 높이, 채널] 형태를 가지는 배열(Array)이자 숫자 행렬이고 컴퓨터 비전(Computer Vision)이란 배열 형태의 데이터를 처리하는 것이 주요 골자가 된다.
  5. OpenCV에서는 RGB가 아닌 BGR 방식을 사용한다.

12.6 (12.5)에 대한 코드리뷰

  1. OpenCV의 imread() : 지정된 파일에서 이미지를 로드하고 반환하는 메서드
  2. 가로 300, 세로 300 픽셀짜리 이미지에 대하여 frame과 hsv는 각각 픽셀 당 BGR, HSV 세 개의 색상 채널별 값에 대응하여 300 × 300 × 3의 크기를 갖는 배열이 되고, mask는 픽셀마다 1 또는 0만을 값으로 가졌기에 300 × 300 × 1의 크기를 갖는다. 여기서 0과 1은 흰색과 검정색을 나타내며, 이들을 묶어 1개의 채널로 간주되어 2가 아닌 1이 곱해지는 것이다. 참고링크

TF Master - 밑바닥부터 시작하는 딥러닝 (퍼셉트론)

  1. 퍼셉트론은 신경망(딥러닝)의 기원이 되는 입출력을 갖춘 알고리즘이다.
  2. 퍼셉트론은 다수의 신호를 입력받아 정해진 규칙에 의해 하나의 신호를 출력한다.
  3. 신호가 흐르는 경우 1, 그 반대의 경우는 0으로 간주한다.
  4. 전류에서의 가중치는 저항에 해당하여 이 값이 작을수록 전류는 크게 흐른다.
  5. 퍼셉트론에서의 가중치는 값이 클수록 신호는 크게 흐른다. 전류와 작용 방향이 반대이다.
  6. 퍼셉트론에서는 가중치편향을 주요 매개변수로 한다.
  7. 단층 퍼셉트론으로 AND, NAND, OR 논리 회로를 표현할 수 있다. 좌표상에 (x,y)에 대응하는 점을 찍고 직선을 그어 보면 쉽게 파악할 수 있다.
  8. XOR 게이트는 2층 퍼셉트론 구조를 활용하면 표현할 수 있다.
  9. 다층 퍼셉트론이 되면 비선형 영역도 표현할 수 있다.
  10. 다층 퍼셉트론은 이론상 컴퓨터를 표현할 수 있다.
profile
날개를 달고 날아오르자!

0개의 댓글