SlideShare a Scribd company logo
1 of 22
Download to read offline
Python Machine Learning
Chapter 07. Image & Deep Learning
ceo@partprime.com
Ryan Jeong
Today …
7-1 IMAGE DETECT
7-2 IMAGE CLASSIFICATION WITH CNN
7-3 IMAGE CLASSIFICATION DRILL
6-1 IMAGE DETECT
with Average Hash
WHAT IS AVERAGE HASH?
Average hash는 유사 이미지를 찾는 알고리즘.
매우 비슷한 이미지를 찾을 때는 아주 탁월한 성능을 보이지만,
워터마크나 테두리가 있는 이미지를 찾을 때는 좀 어려운 점이 있음.
간단하게 개발해서 쓸 수 있다는 점과 빠른 처리성능이 장점.
Average hash 3단계 :
1. 이미지 사이즈/컬러 단순화 하기 (resize & grayscale)
2. 이미지내 평균픽셀값 구하기 (the percent gray)
3. 평균픽셀값을 기준으로 비교하여 해시생성
AVERAGE HASH, HOW TO WORK?
00010E3CE08FFFFE
원본이미지
resize grayscale Bits(B&W) hash value
해밍거리(Hamming Distance)를
계산해서, 값이 0에 가까울 수록
비슷한 이미지라 할수 있다.
def hamming_distance(s1, s2):
“””해시값의 길이가 같을 때만 해밍거리를 계산할 수 있습니다”””
if len(s1) != len(s2):
raise ValueError(“해시값의 길이가 달라서 해밍거리를 계산 못합니다.”)
return sum(el1 != el2 for el1, el2 in zip(s1, s2))
zip은 파이썬의 내장함수
INSTALL Pillow/PIL
$pip3 install Pillow or
연습 1단계 : IMAGE를 AVERAGE HASH 하기
소스 결과출력
앞에서 설명한 average hash 3단계를 기억하면서,
소스코드 6 라인의 average_hash 함수를 살펴보세요.
원본이미지 (도쿄타워)
연습 2단계 : AVERAGE HASH로 유사 이미지 찾기소스
결과출력
.
책에는 이렇게 해밍거리 구하는 함수를 좀 다르게 구현했네요.
하지만 결과는 마찬가지 입니다.
비슷한 이미지를 찾은 결과(해밍거리 0.25미만)를 이렇게 html 파일로
만들어서 저장합니다.
연습 2단계 : AVERAGE HASH로 유사 이미지 찾기
결과출력 저장된 html 파일
7-2 IMAGE CLASSIFICATION
with CNN
WHAT IS CNN?
CNN(Convolutional Neural Network)는 번역하면 합성곱신경망이라고 함.
입력층과 출력층 사이에 합성곱층과 풀링층을 넣어서, Affine Layer NN의 단점을 보완.
데이터 형상 무시
fully-connected Layer라고도 불림.
전처리 함수에서 데이터를 이 Affine Layer에 넘길 때, Affine Layer
에서는 1차원 데이터만 입력 받을 수 있기 때문에, 이미지와 같은 3차원
데이터(x, y, RBG channel)를 1차원으로 평탄화 한 후 입력해야 함.
이렇게 데이터를 평탄화 하는 과정에서 공간정보를 잃게됨.
WHAT IS CNN?
Conv ReLU Pooling ReLUAffine SoftmaxAffine
ReLUAffine SoftmaxAffineReLUAffine
단순 Affine Layer NN 모델구성
단순 CNN 모델구성
WHAT IS CNN?
Conv. Layer
합성곱 연산의 예 (padding : 1, stride : 2)
WHAT IS CNN?
Pooling Layer
max pooling의 예 (stride : 2)
※max pooling과 average pooling 이 있는데, 

이미지 프로세싱쪽에서는 주로 max pooling을 사용하기에, 

보통 pooling 이라고 하면 max pooling으로 통용됨.
WHAT IS CNN?
TENSORFLOW, HOW TO BE IMPLEMENTED?
Create
or
Import
Data Set
Convert
and
Normalize
Data
Split Data
to
training set,
test set,
validation set
set Hyper
Parameters
for
Algorithm
set
Parameters
and
Placeholders
Define
Model
Declare
loss function
Initialize
Model
and
train
Validate
Model
Adjust
Hyper
Parameters
Apply
and
Predict
data=tf.nn.batch_norm_with_global_normalization(…)
learning_rate = 0.03
batch_size = 200
iterations = 1000
var_1 = tf.constant(10)
x_input = tf.placeholder(tf.float32, [None, input_size])
model = tf.add(tf.mul(), a_matrix)
loss = tf.reduce_mean(tf.square(…))
with tf.Session(graph=graph) as session
…
session.run(…)
…
model.fit(…)
score = model.evaluate(…)
pre = model.predict(…)
1 2 3 4 5 6
7 8 9 10 11
연습 1단계 : IMAGE를 파이썬데이터(npy)로 변환하기
소스 결과출력
.
5개의 카테고리 폴더에 있는 이미지들만을 대상으로 합니다.
라벨을 만듭니다.
[1,0,0,0,0][0,1,0,0,0][0,0,1,0,0][0,0,0,1,0][0,0,0,0,1]
각 이미지를 RGB에 64x64 크기로 리사이즈 합니다.
RGB값은 3개의 데이터를 갖고 있기에,
이렇게하여 1개의 이미지는 총 3x64x64 개의 데이터 배열이 됩니다.
X에 이미지 데이터를 넣고,
Y에 라벨을 넣어 둡시다.
연습 2단계 : CNN으로 IMAGE 분류하기소스 결과출력
자! 이제 만들어둔 이미지 데이터(npy 파일)를 불러와서
학습을 시켜보겠습니다.
데이터를 불러와 tensorflow에서 사용할수 있는 형태로 정규화한 후,
모델을 만듭니다.
모델을 만드는 방식은 앞에 CNN에 대한 설명을 기억하시면,
쉽게 이해하실 수 있습니다.
이 예제 소스에서는 아래와 같은 구조입니다.
Conv ReLU Pooling ReLUDense SoftmaxDenseConv ReLU Pooling Conv
연습 3단계 : CNN학습된 모델 저장하기소스
결과출력
model.load_weights(hdf5_file)
hdf5파일로 저장된 모델이 있으면, 불러오는 부분입니다.
model.save_weights(hdf5_file)
학습시킨 모델을 hdf5파일로 저장하는 부분입니다.
7-3 IMAGE CLASSIFICATION DRILL
with CNN
7-2 와 같음
Thank youhttp://www.partprime.com

More Related Content

Similar to Python machine learning Chapter 07 - PART1

111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web
CARROTCG
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식
NAVER D2
 

Similar to Python machine learning Chapter 07 - PART1 (20)

딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)
 
CNN
CNNCNN
CNN
 
111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web111118 ch 4_basic image manipulation_web
111118 ch 4_basic image manipulation_web
 
[Paper] shuffle net an extremely efficient convolutional neural network for ...
[Paper] shuffle net  an extremely efficient convolutional neural network for ...[Paper] shuffle net  an extremely efficient convolutional neural network for ...
[Paper] shuffle net an extremely efficient convolutional neural network for ...
 
247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식247 deview 2013 이미지 분석 - 민재식
247 deview 2013 이미지 분석 - 민재식
 
Deep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendationsDeep neural networks for You-Tube recommendations
Deep neural networks for You-Tube recommendations
 
Deep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNetDeep Learning Into Advance - 1. Image, ConvNet
Deep Learning Into Advance - 1. Image, ConvNet
 
FCN to DeepLab.v3+
FCN to DeepLab.v3+FCN to DeepLab.v3+
FCN to DeepLab.v3+
 
Face recognition
Face recognitionFace recognition
Face recognition
 
3.unsupervised learing
3.unsupervised learing3.unsupervised learing
3.unsupervised learing
 
Photo realistic single image super-resolution using a generative adversarial ...
Photo realistic single image super-resolution using a generative adversarial ...Photo realistic single image super-resolution using a generative adversarial ...
Photo realistic single image super-resolution using a generative adversarial ...
 
[Paper] EDA : easy data augmentation techniques for boosting performance on t...
[Paper] EDA : easy data augmentation techniques for boosting performance on t...[Paper] EDA : easy data augmentation techniques for boosting performance on t...
[Paper] EDA : easy data augmentation techniques for boosting performance on t...
 
Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?
Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?
Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?
 
carrier of_tricks_for_image_classification
carrier of_tricks_for_image_classificationcarrier of_tricks_for_image_classification
carrier of_tricks_for_image_classification
 
Image classification
Image classificationImage classification
Image classification
 
History of Vision AI
History of Vision AIHistory of Vision AI
History of Vision AI
 
Direct Sparse Odometry (DSO) Review
Direct Sparse Odometry (DSO) ReviewDirect Sparse Odometry (DSO) Review
Direct Sparse Odometry (DSO) Review
 
[Paper] eXplainable ai(xai) in computer vision
[Paper] eXplainable ai(xai) in computer vision[Paper] eXplainable ai(xai) in computer vision
[Paper] eXplainable ai(xai) in computer vision
 
Howto_Tensorflow+Linear Regression
Howto_Tensorflow+Linear RegressionHowto_Tensorflow+Linear Regression
Howto_Tensorflow+Linear Regression
 
HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델HR Analytics - 퇴직가능성예측모델
HR Analytics - 퇴직가능성예측모델
 

More from Young Oh Jeong

More from Young Oh Jeong (18)

개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 솔하 발표본개혁파교의학 12장 솔하 발표본
개혁파교의학 12장 솔하 발표본
 
개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 동혁 발표본개혁파교의학 12장 동혁 발표본
개혁파교의학 12장 동혁 발표본
 
개혁파교의학 12장 다은 발표본
개혁파교의학 12장 다은 발표본개혁파교의학 12장 다은 발표본
개혁파교의학 12장 다은 발표본
 
개혁파교의학 12장 예건 발표본
개혁파교의학 12장 예건 발표본개혁파교의학 12장 예건 발표본
개혁파교의학 12장 예건 발표본
 
About RNN
About RNNAbout RNN
About RNN
 
About RNN
About RNNAbout RNN
About RNN
 
What is CNN?
What is CNN?What is CNN?
What is CNN?
 
Python machine learning Chapter 06 - PART1
Python machine learning Chapter 06 - PART1Python machine learning Chapter 06 - PART1
Python machine learning Chapter 06 - PART1
 
Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2Python machine learning Chapter 04 - PART2
Python machine learning Chapter 04 - PART2
 
Python machine learning Chapter 02
Python machine learning Chapter 02Python machine learning Chapter 02
Python machine learning Chapter 02
 
10 Scrapping Javascript
10 Scrapping Javascript10 Scrapping Javascript
10 Scrapping Javascript
 
07 Cleaning Your Dirty Data
07 Cleaning Your Dirty Data07 Cleaning Your Dirty Data
07 Cleaning Your Dirty Data
 
푸른아카데미, PART→PARTPRIME
푸른아카데미, PART→PARTPRIME푸른아카데미, PART→PARTPRIME
푸른아카데미, PART→PARTPRIME
 
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
03 Crawling with Beautiful Soup (네이버 카페 크롤링 하기)
 
Day by day iPhone Programming
Day by day iPhone ProgrammingDay by day iPhone Programming
Day by day iPhone Programming
 
네델란드개혁교회역사도식
네델란드개혁교회역사도식네델란드개혁교회역사도식
네델란드개혁교회역사도식
 
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
Everybody need programming skill. 프로그래밍, 현대인의 교양입니다
 
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
마이크로소프트웨어 2002년 10월호 內, 모바일 관련 서적 리뷰 및 평점
 

Recently uploaded

파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
Wonjun Hwang
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
Wonjun Hwang
 

Recently uploaded (6)

파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 

Python machine learning Chapter 07 - PART1

  • 1. Python Machine Learning Chapter 07. Image & Deep Learning ceo@partprime.com Ryan Jeong
  • 2. Today … 7-1 IMAGE DETECT 7-2 IMAGE CLASSIFICATION WITH CNN 7-3 IMAGE CLASSIFICATION DRILL
  • 3. 6-1 IMAGE DETECT with Average Hash
  • 4. WHAT IS AVERAGE HASH? Average hash는 유사 이미지를 찾는 알고리즘. 매우 비슷한 이미지를 찾을 때는 아주 탁월한 성능을 보이지만, 워터마크나 테두리가 있는 이미지를 찾을 때는 좀 어려운 점이 있음. 간단하게 개발해서 쓸 수 있다는 점과 빠른 처리성능이 장점. Average hash 3단계 : 1. 이미지 사이즈/컬러 단순화 하기 (resize & grayscale) 2. 이미지내 평균픽셀값 구하기 (the percent gray) 3. 평균픽셀값을 기준으로 비교하여 해시생성
  • 5. AVERAGE HASH, HOW TO WORK? 00010E3CE08FFFFE 원본이미지 resize grayscale Bits(B&W) hash value 해밍거리(Hamming Distance)를 계산해서, 값이 0에 가까울 수록 비슷한 이미지라 할수 있다. def hamming_distance(s1, s2): “””해시값의 길이가 같을 때만 해밍거리를 계산할 수 있습니다””” if len(s1) != len(s2): raise ValueError(“해시값의 길이가 달라서 해밍거리를 계산 못합니다.”) return sum(el1 != el2 for el1, el2 in zip(s1, s2)) zip은 파이썬의 내장함수
  • 7. 연습 1단계 : IMAGE를 AVERAGE HASH 하기 소스 결과출력 앞에서 설명한 average hash 3단계를 기억하면서, 소스코드 6 라인의 average_hash 함수를 살펴보세요. 원본이미지 (도쿄타워)
  • 8. 연습 2단계 : AVERAGE HASH로 유사 이미지 찾기소스 결과출력 . 책에는 이렇게 해밍거리 구하는 함수를 좀 다르게 구현했네요. 하지만 결과는 마찬가지 입니다. 비슷한 이미지를 찾은 결과(해밍거리 0.25미만)를 이렇게 html 파일로 만들어서 저장합니다.
  • 9. 연습 2단계 : AVERAGE HASH로 유사 이미지 찾기 결과출력 저장된 html 파일
  • 11. WHAT IS CNN? CNN(Convolutional Neural Network)는 번역하면 합성곱신경망이라고 함. 입력층과 출력층 사이에 합성곱층과 풀링층을 넣어서, Affine Layer NN의 단점을 보완. 데이터 형상 무시 fully-connected Layer라고도 불림. 전처리 함수에서 데이터를 이 Affine Layer에 넘길 때, Affine Layer 에서는 1차원 데이터만 입력 받을 수 있기 때문에, 이미지와 같은 3차원 데이터(x, y, RBG channel)를 1차원으로 평탄화 한 후 입력해야 함. 이렇게 데이터를 평탄화 하는 과정에서 공간정보를 잃게됨.
  • 12. WHAT IS CNN? Conv ReLU Pooling ReLUAffine SoftmaxAffine ReLUAffine SoftmaxAffineReLUAffine 단순 Affine Layer NN 모델구성 단순 CNN 모델구성
  • 13. WHAT IS CNN? Conv. Layer 합성곱 연산의 예 (padding : 1, stride : 2)
  • 14. WHAT IS CNN? Pooling Layer max pooling의 예 (stride : 2) ※max pooling과 average pooling 이 있는데, 
 이미지 프로세싱쪽에서는 주로 max pooling을 사용하기에, 
 보통 pooling 이라고 하면 max pooling으로 통용됨.
  • 16. TENSORFLOW, HOW TO BE IMPLEMENTED? Create or Import Data Set Convert and Normalize Data Split Data to training set, test set, validation set set Hyper Parameters for Algorithm set Parameters and Placeholders Define Model Declare loss function Initialize Model and train Validate Model Adjust Hyper Parameters Apply and Predict data=tf.nn.batch_norm_with_global_normalization(…) learning_rate = 0.03 batch_size = 200 iterations = 1000 var_1 = tf.constant(10) x_input = tf.placeholder(tf.float32, [None, input_size]) model = tf.add(tf.mul(), a_matrix) loss = tf.reduce_mean(tf.square(…)) with tf.Session(graph=graph) as session … session.run(…) … model.fit(…) score = model.evaluate(…) pre = model.predict(…) 1 2 3 4 5 6 7 8 9 10 11
  • 17. 연습 1단계 : IMAGE를 파이썬데이터(npy)로 변환하기 소스 결과출력 . 5개의 카테고리 폴더에 있는 이미지들만을 대상으로 합니다. 라벨을 만듭니다. [1,0,0,0,0][0,1,0,0,0][0,0,1,0,0][0,0,0,1,0][0,0,0,0,1] 각 이미지를 RGB에 64x64 크기로 리사이즈 합니다. RGB값은 3개의 데이터를 갖고 있기에, 이렇게하여 1개의 이미지는 총 3x64x64 개의 데이터 배열이 됩니다. X에 이미지 데이터를 넣고, Y에 라벨을 넣어 둡시다.
  • 18. 연습 2단계 : CNN으로 IMAGE 분류하기소스 결과출력 자! 이제 만들어둔 이미지 데이터(npy 파일)를 불러와서 학습을 시켜보겠습니다. 데이터를 불러와 tensorflow에서 사용할수 있는 형태로 정규화한 후, 모델을 만듭니다. 모델을 만드는 방식은 앞에 CNN에 대한 설명을 기억하시면, 쉽게 이해하실 수 있습니다. 이 예제 소스에서는 아래와 같은 구조입니다. Conv ReLU Pooling ReLUDense SoftmaxDenseConv ReLU Pooling Conv
  • 19. 연습 3단계 : CNN학습된 모델 저장하기소스 결과출력 model.load_weights(hdf5_file) hdf5파일로 저장된 모델이 있으면, 불러오는 부분입니다. model.save_weights(hdf5_file) 학습시킨 모델을 hdf5파일로 저장하는 부분입니다.
  • 20. 7-3 IMAGE CLASSIFICATION DRILL with CNN