Top Banner
Python Machine Learning Chapter 07. Image & Deep Learning [email protected] Ryan Jeong
22

Python machine learning_chap07_1

Jan 21, 2018

Download

Software

PartPrime
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Python machine learning_chap07_1

Python Machine LearningChapter 07. Image & Deep Learning

[email protected] Jeong

Page 2: Python machine learning_chap07_1

Today …

7-1 IMAGE DETECT

7-2 IMAGE CLASSIFICATION WITH CNN

7-3 IMAGE CLASSIFICATION DRILL

Page 3: Python machine learning_chap07_1

6-1 IMAGE DETECTwith Average Hash

Page 4: Python machine learning_chap07_1

WHAT IS AVERAGE HASH?

Average hash는�유사�이미지를�찾는�알고리즘.�매우�비슷한�이미지를�찾을�때는�아주�탁월한�성능을�보이지만,��워터마크나�테두리가�있는�이미지를�찾을�때는�좀�어려운�점이�있음.��간단하게�개발해서�쓸�수�있다는�점과�빠른�처리성능이�장점.�

Average hash�3단계�:�� 1.� 이미지�사이즈/컬러�단순화�하기 (resize & grayscale)� 2.� 이미지내�평균픽셀값�구하기 (the percent gray)� 3.� 평균픽셀값을�기준으로�비교하여�해시생성

Page 5: Python machine learning_chap07_1

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은�파이썬의�내장함수

Page 6: Python machine learning_chap07_1

INSTALL Pillow/PIL

$pip3 install Pillow or

Page 7: Python machine learning_chap07_1

연습�1단계�:�IMAGE를�AVERAGE�HASH�하기소스 결과출력

앞에서�설명한�average�hash�3단계를�기억하면서,��소스코드�6�라인의�average_hash�함수를�살펴보세요.

원본이미지�(도쿄타워)

Page 8: Python machine learning_chap07_1

연습�2단계�:�AVERAGE�HASH로�유사�이미지�찾기소스

결과출력

.

책에는�이렇게�해밍거리�구하는�함수를�좀�다르게�구현했네요.�하지만�결과는�마찬가지�입니다.

비슷한�이미지를�찾은�결과(해밍거리�0.25미만)를�이렇게�html�파일로�만들어서�저장합니다.

Page 9: Python machine learning_chap07_1

연습�2단계�:�AVERAGE�HASH로�유사�이미지�찾기결과출력 저장된�html�파일

Page 10: Python machine learning_chap07_1

7-2 IMAGE CLASSIFICATIONwith CNN

Page 11: Python machine learning_chap07_1

WHAT IS CNN?

CNN(Convolutional Neural Network)는�번역하면�합성곱신경망이라고�함.�입력층과�출력층�사이에�합성곱층과�풀링층을�넣어서,�Affine�Layer�NN의�단점을�보완.

데이터�형상�무시�fully-connected�Layer라고도�불림.�전처리�함수에서�데이터를�이�Affine�Layer에�넘길�때,�Affine�Layer에서는�1차원�데이터만�입력�받을�수�있기�때문에,�이미지와�같은�3차원�데이터(x,�y,�RBG�channel)를�1차원으로�평탄화�한�후�입력해야�함.��이렇게�데이터를�평탄화�하는�과정에서�공간정보를�잃게됨.

Page 12: Python machine learning_chap07_1

WHAT IS CNN?

Conv ReLU Pooling ReLUAffine SoftmaxAffine

ReLUAffine SoftmaxAffineReLUAffine

단순�Affine Layer�NN�모델구성

단순�CNN�모델구성

Page 13: Python machine learning_chap07_1

WHAT IS CNN? Conv. Layer

합성곱�연산의�예��(padding : 1, stride : 2)

Page 14: Python machine learning_chap07_1

WHAT IS CNN? Pooling Layer

max�pooling의�예��(stride : 2)※max�pooling과�average�pooling�이�있는데,�이미지�프로세싱쪽에서는�주로�max�pooling을�사용하기에,�보통�pooling�이라고�하면�max�pooling으로�통용됨.

Page 15: Python machine learning_chap07_1

WHAT IS CNN?

Page 16: Python machine learning_chap07_1

TENSORFLOW, HOW TO BE IMPLEMENTED?

Createor

ImportData Set

Convertand

NormalizeData

Split Datato

training set, test set,

validation set

set Hyper Parameters

forAlgorithm

set Parameters

andPlaceholders

DefineModel

Declareloss function

Initialize Model

andtrain

ValidateModel

AdjustHyper

Parameters

Apply and

Predict

data=tf.nn.batch_norm_with_global_normalization(…)

learning_rate = 0.03batch_size = 200iterations = 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

Page 17: Python machine learning_chap07_1

연습�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에�라벨을�넣어�둡시다.

Page 18: Python machine learning_chap07_1

연습�2단계�:�CNN으로�IMAGE�분류하기소스 결과출력

자!�이제�만들어둔�이미지�데이터(npy�파일)를�불러와서�학습을�시켜보겠습니다.�

데이터를�불러와�tensorflow에서�사용할수�있는�형태로�정규화한�후,�

모델을�만듭니다.�모델을�만드는�방식은�앞에�CNN에�대한�설명을�기억하시면,�쉽게�이해하실�수�있습니다.�이�예제�소스에서는�아래와�같은�구조입니다.

Conv ReLU Pooling ReLUDense SoftmaxDenseConv ReLU Pooling Conv

Page 19: Python machine learning_chap07_1

연습�3단계�:�CNN학습된�모델�저장하기소스

결과출력

model.load_weights(hdf5_file)

hdf5파일로�저장된�모델이�있으면,�불러오는�부분입니다.�

model.save_weights(hdf5_file)

학습시킨�모델을�hdf5파일로�저장하는�부분입니다.

Page 20: Python machine learning_chap07_1

7-3 IMAGE CLASSIFICATION DRILLwith CNN

Page 21: Python machine learning_chap07_1

7-2�와�같음

Page 22: Python machine learning_chap07_1

Thank�youhttp://www.partprime.com