본문 바로가기

멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차/DL

4/13 수

728x90

수요일!

 

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

* 전체적인 구조를 계속 생각하자!

728x90

'멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차 > DL' 카테고리의 다른 글

4/18 월  (0) 2022.04.18
4/15 금  (0) 2022.04.15
4/14 목  (0) 2022.04.14
4/12 화  (0) 2022.04.12
4/11 월  (0) 2022.04.11