python machine learning_chap07_1

Post on 21-Jan-2018

31 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Python Machine LearningChapter 07. Image & Deep Learning

ceo@partprime.comRyan Jeong

Today …

7-1 IMAGE DETECT

7-2 IMAGE CLASSIFICATION WITH CNN

7-3 IMAGE CLASSIFICATION DRILL

6-1 IMAGE DETECTwith 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 CLASSIFICATIONwith 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?

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

연습�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 DRILLwith CNN

7-2�와�같음

Thank�youhttp://www.partprime.com

top related