수요일!
CNN(Convolutional Neural Network, convnet. 합성곱 신경망)으로 들어간다!
Deep Learning(Deep Neural Network)의 종류 :
- Computer Vision : 컴퓨터가 이미지나 비디오를 보고 여러 객체를 식별하고 파악할 수 있도록 지원하는 Computer Science 분야. 대표적인 알고리즘은 CNN. 목적은 pixel을 이해하는 방법을 고안하는 것
- NLP(Natural Language Process) : 자연어 처리. 대표적인 알고리즘은 RNN, LSTM
이미지를 이루는 가장 작은 단위 → pixel
이미지 좌표계 (Image coordinate)
- 2차원 ndarray로 표현
- pixel (세로, 가로)
1. 이미지 처리(Image Coordinate)
import numpy as np
from PIL import Image # 이미지 처리 모듈, 대표적인 것은 opencv, 이건 pillow
import matplotlib.pyplot as plt
img = Image.open('./images/justice.jpg')
# print(type(img)) # <class 'PIL.JpegImagePlugin.JpegImageFile'>
plt.imshow(img)
plt.show()
pixel = np.array(img)
# print(pixel); print(pixel.shape) # (426, 640, 3). 세로, 가로, 색상(RGB, 3차원, channel)
# .png 파일은 channel이 4(R, G, B, alpha) 값으로 구성됨. alpha는 투명도
print(pixel[100, 100]) # [ 30 71 161]. [Red, Green, Blue]
# Pillow를 이용한 이미지 처리
# cropping(이미지 잘라내기). crop(좌상, 우하) 튜플로 입력
crop_img = img.crop((30, 100, 150, 300))
plt.imshow(crop_img)
plt.show()
# Image Resize
print(img.size) # (640, 426). (가로 픽셀수, 세로 픽셀수)
# int(img.size[0] / 8) # 가로 픽셀수/ 8
# int(img.size[1] / 8) # 세로 픽셀수/ 8
resize_img = img.resize((int(img.size[0] / 8), int(img.size[1] / 8)))
plt.imshow(resize_img)
plt.show()
# Image Rotate
rotate_img = img.rotate(180)
plt.imshow(rotate_img)
plt.show()
rotate_img.save('./images/rotate_justice.jpg') # Image 저장
2. color image의 pixel 값을 조절해서 gray-scaled image로 변환
가장 손쉬운 방법은 color image의 각 pixel을 구성하고 있는 RGB 각 값들을 평균 내서 대체하는 것
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
img = Image.open('./images/fruits.jpg')
plt.imshow(img)
plt.show()
# pixel data 추출
color_pixel = np.array(img)
gray_pixel = color_pixel.copy()
print(gray_pixel.shape) # (426, 640, 3)
for y in range(gray_pixel.shape[0]):
for x in range(gray_pixel.shape[1]):
gray_pixel[y,x] = int(np.mean(gray_pixel[y,x])) # broadcasting
plt.imshow(gray_pixel)
plt.show()
# 흑백 이미지를 2차원으로 표현
gray_2d_pixel = gray_pixel[:,:,0]
print(gray_2d_pixel.shape) # (426, 640)
# plt.imshow(gray_2d_pixel, cmap='Greys')
plt.imshow(gray_2d_pixel, cmap='Greys_r')
plt.show()
Convolution(합성곱) : 두 함수 f, g가 있을때 하나의 함수를 반전(reverse), 전이(shift)시켜서 두 함수를 곱한 후 적분하는 연산
Filter : 정방형(정사각형). 이미지의 특징을 다양하게 추출하기 위해 여러개의 필터를 사용. filter 1개당 1개의 feature map이 생성됨
Stride : filter가 이동하는 거리. 일반적으로 1을 사용함
1. 3/15 화 | 2. 3/16 수 | 3. 3/17 목 | 4. 3/18 금 | 5. 3/21 월 |
ML 환경 설정 (아나콘다, 주피터 노트북), Pandas, Numpy, ndarray |
ML Numpy, 행렬곱연산, 전치행렬, iterator, axis, Pandas, Series, DataFrame |
ML Pandas, DataFrame, 함수들 |
ML Pandas, 데이터 분석, 데이터 전처리 |
ML Pandas, 데이터 전처리, 수행평가 |
6. 3/22 화 | 7. 3/23 수 | 8. 3/24 목 | 9. 3/25 금 | 10. 3/28 월 |
ML 데이터 시각화, Matplotlib, 기술통계 |
ML 기술통계 |
ML 기술통계, 머신러닝 |
ML 미분, Regression |
ML 머신러닝 기법들, Regression |
11. 3/29 화 | 12. 3/30 수 | 13. 3/31 목 | 14. 4/1 금 | 15. 4/4 월 |
ML Regression 구현 (Python, Scikit-Learn) |
ML Outlier, Z-score, MinMaxScaler, 다변수 |
ML Tensorflow, Classification |
ML Binary Classification, Logistic Regression |
ML 평가지표(Metrics) |
16. 4/5 화 | 17. 4/6 수 | 18. 4/7 목 | 19. 4/8 금 | 20. 4/11 월 |
ML 평가 시 주의사항 (Over-fitting, Regularization, Over-Sampling) |
ML Multinomial Classification, SGD Classifier, Softmax, batch |
ML Multinomial Classification Tensorflow 2.0 Keras |
ML KNN |
Deep Learning Perceptron, Nueral Network |
21. 4/12 화 | 22. 4/13 수 | 23. 4/14 목 | 24. 4/15 금 | 25. 4/18 월 |
Deep Learning Initialization, ReLU, Drop-out, Early-Stopping |
Deep Learning Image, CNN, Convolution Layer, Channel, Filter, Stride, Padding, Feature Map, Activation Map |
Deep Learning CNN, Feature Extraction |
Deep Learning |
Deep Learning |
* 전체적인 구조를 계속 생각하자!