Slide 1

Slide 1 text

C-LIS CO., LTD. ػցֶशϋϯζΦϯ ($16(5PLVTIJNB

Slide 2

Slide 2 text

C-LIS CO., LTD. ༗ࢁܓೋʢ,FJKJ"3*:"."ʣ $-*4$0 -5% "OESPJEΞϓϦ։ൃνϣοτσΩϧ ػցֶशॳ৺ऀ Photo : Koji MORIGUCHI (AUN CREATIVE FIRM)

Slide 3

Slide 3 text

C-LIS CO., LTD. TM

Slide 4

Slide 4 text

10% 1SJOU0O%FNBOE ిࢠॻ੶ Impress R&D͔Βൃചத http://amzn.to/2axRog

Slide 5

Slide 5 text

*OUSPEVDUJPO ʰػցֶशʱͱ͸ͳʹ͔

Slide 6

Slide 6 text

ػցֶशʢ͖͔͍͕͘͠Ύ͏ɺӳNBDIJOFMFBSOJOHʣͱ͸ɺਓ޻஌ೳʹ͓͚ Δݚڀ՝୊ͷҰͭͰɺਓ͕ؒࣗવʹߦ͍ͬͯΔֶशೳྗͱಉ༷ͷػೳΛίϯ ϐϡʔλͰ࣮ݱ͠Α͏ͱ͢Δٕज़ɾख๏ͷ͜ͱͰ͋Δɻ ػցֶश ʢWikipedia: https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92ʣ

Slide 7

Slide 7 text

σΟʔϓϥʔχϯάɺਂ૚ֶशʢӳEFFQMFBSOJOHʣͱ͸ɺଟ૚ߏ଄ͷχϡʔ ϥϧωοτϫʔΫʢσΟʔϓχϡʔϥϧωοτϫʔΫɺӳEFFQOFVSBM OFUXPSLʣΛ༻͍ͨػցֶशͰ͋Δɻ σΟʔϓϥʔχϯά ʢWikipedia: https://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0ʣ

Slide 8

Slide 8 text

χϡʔϥϧωοτϫʔΫ ਆܦճ࿏໢ɺӳOFVSBMOFUXPSL // ͸ɺ೴ػೳʹ ݟΒΕΔ͍͔ͭ͘ͷಛੑΛܭࢉػ্ͷγϛϡϨʔγϣϯʹΑͬͯදݱ͢Δ͜ͱ Λ໨ࢦͨ͠਺ֶϞσϧͰ͋Δɻ χϡʔϥϧωοτϫʔΫ ʢWikipedia: https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AFʣ

Slide 9

Slide 9 text

ཁ͢Δʹ਺ֶ

Slide 10

Slide 10 text

C-LIS CO., LTD. TM 5FOTPS'MPXJTBO0QFO4PVSDF4PGUXBSF-JCSBSZ GPS.BDIJOF*OUFMMJHFODF

Slide 11

Slide 11 text

ϋϯζΦϯ

Slide 12

Slide 12 text

w 1ZUIPOʢ(PPHMF$PNQVUFS1MBUGPSN5PPMT͕ରԠͷͨΊʣ w ґଘύοέʔδ w TJY w 1*-1JMMPX w MYNM w QZUIPOHqBHT w 5FOTPS'MPXɹɹ˞ཁ֬ೝ ։ൃ؀ڥͷ֬ೝ

Slide 13

Slide 13 text

͋ΔͱΑ͍΋ͷ https://www.jetbrains.com/pycharm/

Slide 14

Slide 14 text

ը૾෼ྨ ʢग़యIUUQTHJUIVCDPNDB[BMBNOJTUʣ ʢग़యIUUQTXXXDTUPSPOUPFEV_LSJ[DJGBSIUNMʣ MNIST CIFAR-10

Slide 15

Slide 15 text

ݘೣ෼ྨ

Slide 16

Slide 16 text

σʔλͱਖ਼ղϥϕϧΛ༻ҙ͢Δ σʔλΛ5'3FDPSEܗࣜʹม׵͢Δ ϞσϧΛ࡞੒͢Δ σʔλΛධՁʢJOGFSFODFʣ͢Δ ϞσϧΛ܇࿅͢Δ ύϥϝʔλʔΛอଘ͢Δ ܇࿅ࡁΈϞσϧΛݕূ͢Δ େ·͔ͳखॱ

Slide 17

Slide 17 text

εςοϓ̍ σʔλͱਖ਼ղϥϕϧΛ༻ҙ͢Δ

Slide 18

Slide 18 text

σʔληοτͷμ΢ϯϩʔυ http://www.robots.ox.ac.uk/~vgg/data/pets/

Slide 19

Slide 19 text

JNBHFT

Slide 20

Slide 20 text

BOOPUBUJPOT ೣ: Abyssinian ೣ: Ragdoll ೣ: Russian_Blue ݘ: Shiba ݘ: saint_bernard ݘ: samoyed

Slide 21

Slide 21 text

30*ʢ3FHJPO0G*OUFSFTUʣ

Slide 22

Slide 22 text

ίʔυͷμ΢ϯϩʔυ IUUQTHPPHM,TW,I2

Slide 23

Slide 23 text

εςοϓ̎ σʔλΛ5'3FDPSEܗࣜʹม׵͢Δ

Slide 24

Slide 24 text

લॲཧ Abyssinian_1.jpg

Slide 25

Slide 25 text

OXIIIT Abyssinian_1.jpg OXFORD-IIIT Pet Dataset OXIIIT flickr 600 400 3 0 BOOPUBUJPOTYNMT cat Frontal 0 0 333 72 425 158 0 Abyssinian_1.xml

Slide 26

Slide 26 text

30*ͷ੾Γൈ͖

Slide 27

Slide 27 text

ίʔυΛมߋ bndboxͷ֤஋͔Βը૾Λ੾Γൈ͍ͯอଘ͢Δ dataset/crop_roi_image.py

Slide 28

Slide 28 text

FLAGS = gflags.FLAGS
 gflags.DEFINE_string('image_dir', None, 'ॲཧ͢Δը૾ͷσΟϨΫτϦ')
 gflags.DEFINE_string('xml_dir', None, 'ॲཧ͢ΔXMLͷσΟϨΫτϦ')
 gflags.DEFINE_string('output_dir', None, 'ग़ྗ͢ΔσΟϨΫτϦ') HqBHT $ python crop_roi_image.py \ --image_dir /Users/keiji_ariyama/Downloads/catsanddogs/images \ --xml_dir /Users/keiji_ariyama/Downloads/catsanddogs/annotations/xmls \ --output_dir /Users/keiji_ariyama/Desktop/test

Slide 29

Slide 29 text

ը૾ʹϥϕϧΛ෇Ճͯ͠5'3FDPSE΁ม׵ + Cat (1) Abyssinian_1.jpg TFRecord

Slide 30

Slide 30 text

#Image CLASS-ID SPECIES BREED ID #ID: 1:37 Class ids #SPECIES: 1:Cat 2:Dog #BREED ID: 1-25:Cat 1:12:Dog #All images with 1st letter as captial are cat images #images with small first letter are dog images Abyssinian_196 1 1 1 Abyssinian_197 1 1 1 Abyssinian_19 1 1 1 Abyssinian_1 1 1 1 BOOPUBUJPOTUSBJOWBMUYU Abyssinian_1.xml

Slide 31

Slide 31 text

ίʔυΛมߋ 5'3FDPSEʹSPECIES ͷ஋Λ௥Ճ dataset/convert_to_tfrecord.py

Slide 32

Slide 32 text

ςετσʔλΛ෼཭͢Δ σʔληοτ ςετσʔλ

Slide 33

Slide 33 text

εςοϓ̏ ϞσϧΛ࡞੒͢Δ

Slide 34

Slide 34 text

৞ࠐΈχϡʔϥϧωοτϫʔΫʢ̘̣̣ʣ DPOW QPPM GD PVUQVU JOQVU

Slide 35

Slide 35 text

৞ࠐΈʢ$POWPMVUJPOʣ૚

Slide 36

Slide 36 text

# conv1
 with tf.variable_scope('conv1') as scope:
 weights = _get_weights([5, 5, 3, 32], stddev=0.01)
 conv1 = tf.nn.conv2d(image_node, weights, [1, 1, 1, 1], padding='SAME')
 biases = tf.get_variable('biases', [32],
 initializer=tf.constant_initializer(0.0))
 bias = tf.nn.bias_add(conv1, biases)
 conv1 = tf.nn.relu(bias, name=scope.name)
 ৞ࠐΈʢ$POWPMVUJPOʣ૚

Slide 37

Slide 37 text

৞ࠐΈʢ$POWPMVUJPOʣ૚ ৞ΈࠐΉϑΟϧλͷܗʢshapeʣ ຕ਺ εϥΠυ෯ ύσΟϯάͷ༗ແ ׆ੑԽؔ਺

Slide 38

Slide 38 text

ίʔυΛมߋ ৞ࠐΈ૚ͷઃఆΛܾΊΔ model.py

Slide 39

Slide 39 text

ϓʔϦϯάʢ1PPMJOHʣ૚ εϥΠυ෯2

Slide 40

Slide 40 text

pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1],
 padding='SAME', name='pool1')
 ϓʔϦϯάʢ1PPMJOHʣ૚

Slide 41

Slide 41 text

ϓʔϦϯάʢ1PPMJOHʣ૚ ϓʔϦϯάͷछྨ Χʔωϧʢ΢Οϯυ΢ʣͷେ͖͞ εϥΠυ෯ ύσΟϯάͷ༗ແ

Slide 42

Slide 42 text

ίʔυΛมߋ ϓʔϦϯά૚ͷઃఆΛܾΊΔ model.py

Slide 43

Slide 43 text

શ݁߹ʢ'VMMZDPOOFDUFEʣ૚ ※ ʮதؒ૚ʯʮӅΕ૚ʯͱ͍͏৔߹΋͋Δ : : : : :

Slide 44

Slide 44 text

reshape = tf.reshape(pool1, [batch_size, -1])
 dim = reshape.get_shape()[1].value
 
 # fc2
 with tf.variable_scope('fc2') as scope:
 weights = _get_weights([dim, 384], stddev=0.04)
 biases = _get_biases([384], value=0.1)
 fc2 = tf.nn.relu(tf.nn.bias_add(tf.matmul(reshape, weights), biases),
 name=scope.name)
 શ݁߹ʢ'VMMZDPOOFDUFEʣ૚

Slide 45

Slide 45 text

શ݁߹ʢ'VMMZDPOOFDUFEʣ૚ : : : : : ϊʔυͷ਺ ׆ੑԽؔ਺

Slide 46

Slide 46 text

ίʔυΛมߋ શ݁߹૚ͷϊʔυ਺ΛܾΊΔ model.py

Slide 47

Slide 47 text

ग़ྗ૚ : : : : :

Slide 48

Slide 48 text

with tf.variable_scope('output') as scope:
 weights = _get_weights(shape=[384, 2], stddev=1 / 384.0)
 biases = _get_biases([2], value=0.0)
 logits = tf.add(tf.matmul(fc2, weights), biases, name='logits')
 ग़ྗ૚

Slide 49

Slide 49 text

ग़ྗ૚ : : : : : ෼ྨ͢ΔΫϥεͷ਺

Slide 50

Slide 50 text

ίʔυΛมߋ ग़ྗ૚ͷϊʔυ਺ΛܾΊΔ model.py

Slide 51

Slide 51 text

εςοϓ̐ σʔλΛධՁʢJOGFSFODFʣ͢Δ

Slide 52

Slide 52 text

ظ଴͢Δ஋ͱJOGFSFODFͷ݁ՌͷࠩʢޡࠩʣΛٻΊΔɻ ޡࠩؔ਺

Slide 53

Slide 53 text

def __loss(logits, label):
 labels = tf.cast(label, tf.int64)
 cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
 logits, labels, name='cross_entropy_per_example')
 cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')
 return cross_entropy_mean
 ޡࠩؔ਺

Slide 54

Slide 54 text

ίʔυΛมߋ εςοϓ͝ͱʹϩε཰ʢޡࠩʣΛදࣔ͢Δ train.py

Slide 55

Slide 55 text

εςοϓ̑ ϞσϧΛ܇࿅͢Δ

Slide 56

Slide 56 text

ޡࠩʹج͍ͮͯύϥϝʔλʔΛௐ੔͢Δɻ w ޯ഑߱Լ๏ w "EBN0QUJNJ[FS w "EB(SBEͳͲ ֶशʢ܇࿅ʣΞϧΰϦζϜ

Slide 57

Slide 57 text

global_step = tf.Variable(0, trainable=False)
 loss = __loss(logits, specie_batch)
 train_op = tf.train.GradientDescentOptimizer(FLAGS.learning_rate).minimize(
 loss, global_step)
 ֶशʢ܇࿅ʣΞϧΰϦζϜ

Slide 58

Slide 58 text

ίʔυΛมߋ train_opΛ࣮ߦ͢Δ train.py

Slide 59

Slide 59 text

# fc2
 with tf.variable_scope('fc2') as scope:
 weights = _get_weights([dim, 384], stddev=0.04)
 biases = _get_biases([384], value=0.1)
 fc2 = tf.nn.relu(tf.nn.bias_add(tf.matmul(reshape, weights), biases),
 name=scope.name)
 ύϥϝʔλʔ

Slide 60

Slide 60 text

ॏΈʢXFJHIUʣͱόΠΞεʢCJBTʣ : : : : : w b

Slide 61

Slide 61 text

׆ੑԽؔ਺ : : : : :

Slide 62

Slide 62 text

# fc2
 with tf.variable_scope('fc2') as scope:
 weights = _get_weights([dim, 384], stddev=0.04)
 biases = _get_biases([384], value=0.1)
 fc2 = tf.nn.relu(tf.nn.bias_add(tf.matmul(reshape, weights), biases),
 name=scope.name)
 ׆ੑԽؔ਺

Slide 63

Slide 63 text

3F-6ʢ3FDUJpFE-JOFBSʣ ʢग़య: http://cs231n.github.io/neural-networks-1/ʣ

Slide 64

Slide 64 text

4JHNPJE ʢग़య: https://commons.wikimedia.org/wiki/File:Sigmoid-function-2.svgʣ

Slide 65

Slide 65 text

)ZQFSCPMJD5BOHFOU ʢग़య: https://commons.wikimedia.org/wiki/File:Hyperbolic_Tangent.svgʣ

Slide 66

Slide 66 text

εςοϓ̒ ύϥϝʔλʔΛอଘ͢Δ

Slide 67

Slide 67 text

saver = tf.train.Saver(tf.all_variables())
 
 with tf.Session() as sess:
 sess.run(tf.initialize_all_variables())
 step = 0
 while step < FLAGS.max_steps:
 _, step, loss_value = sess.run([train_op, global_step, loss])
 
 if step % 100 == 0:
 print('Step: %d, loss: %.4f' % (step, loss_value))
 saver.save(sess, os.path.join(FLAGS.checkpoint_dir, 'cad_checkpoint'), global_step=step) 4BWFSʹΑΔύϥϝʔλʔͷอଘ

Slide 68

Slide 68 text

ίʔυΛมߋ ύϥϝʔλʔΛอଘ͢Δ train.py

Slide 69

Slide 69 text

εςοϓ̓ ܇࿅ࡁΈϞσϧΛݕূ͢Δ

Slide 70

Slide 70 text

def __restore(sess, saver):
 ckpt = tf.train.get_checkpoint_state(FLAGS.checkpoint_dir)
 if ckpt and ckpt.model_checkpoint_path:
 saver.restore(sess, ckpt.model_checkpoint_path) 4BWFSʹΑΔύϥϝʔλʔͷಡΈࠐΈ

Slide 71

Slide 71 text

saver = tf.train.Saver(tf.all_variables())
 
 with tf.Session() as sess:
 __restore(sess, saver) 4BWFSʹΑΔύϥϝʔλʔͷಡΈࠐΈ

Slide 72

Slide 72 text

logits = model.inference(image_batch, batch_size=FLAGS.batch_size)
 top_k_op = tf.nn.in_top_k(logits, specie_batch, 1)
 for step in range(num_iter): predictions = sess.run(top_k_op)
 true_count += np.sum(predictions)
 ݕূ

Slide 73

Slide 73 text

ίʔυΛมߋ ൑ఆʹࣦഊͨ͠ϑΝΠϧ໊Λ
 දࣔ͢Δ eval.py

Slide 74

Slide 74 text

܇࿅ʢֶशʣͱ͸ σʔλ inference logits ਖ਼ղϥϕϧ ޡࠩؔ਺ ޡࠩʢϩεʣ ֶशΞϧΰϦζϜ ύϥϝʔλʔ (weights / biases)

Slide 75

Slide 75 text

܇࿅ʢֶशʣͱ͸ inference 0 1

Slide 76

Slide 76 text

܇࿅ʢֶशʣͱ͸ inference 0 1

Slide 77

Slide 77 text

$MPVE.-Ͱ܇࿅͢Δ

Slide 78

Slide 78 text

(PPHMF$MPVE1MBUGPSNͷ ར༻Λ։࢝

Slide 79

Slide 79 text

ϓϩδΣΫτͷ࡞੒

Slide 80

Slide 80 text

Ϋʔϙϯͷొ࿥ https://cloud.google.com/redeem

Slide 81

Slide 81 text

C-LIS CO., LTD. ˞ϓϩδΣΫτ࡞੒࣌ʹબ୒ͨ͠
 ੥ٻઌΞΧ΢ϯτͱ
 Ұக͍ͯ͠Δ͔֬ೝ

Slide 82

Slide 82 text

$MPVE.-ͷ༗ޮԽ

Slide 83

Slide 83 text

$MPVE.-ͷ༗ޮԽ

Slide 84

Slide 84 text

$MPVE4%,ͷΠϯετʔϧ https://cloud.google.com/sdk/

Slide 85

Slide 85 text

$MPVE4%,ͷΠϯετʔϧ

Slide 86

Slide 86 text

$ gcloud auth $ gcloud beta ml init-project Cloud ML needs to add its service accounts to your project (catsanddogs-149703) as Editors. This will enable Cloud Machine Learning to access resources in your project when running your training and prediction jobs. Do you want to continue (Y/n)? $MPVE.-ͷϓϩδΣΫτΛॳظԽ

Slide 87

Slide 87 text

$ PROJECT_ID=$(gcloud config list project --format "value(core.project)") $ BUCKET_NAME="cats_and_dogs" $ gsutil mb -l us-central1 gs://$BUCKET_NAME $MPVE.-༻ͷόέοτΛ࡞੒ ※ usͷΑ͏ͳMulti-regionalͰ͸ͳ͘RegionalͰࢦఆ͢Δඞཁ͕͋Δ
 https://cloud.google.com/ml/docs/how-tos/getting-set-up

Slide 88

Slide 88 text

࡞੒ͨ͠όέοτʹ܇࿅σʔλΛసૹ

Slide 89

Slide 89 text

TSDσΟϨΫτϦʹ __init__.py Λ࡞੒͢Δɻ εΫϦϓτΛύοέʔδԽ

Slide 90

Slide 90 text

ϑΝΠϧγεςϜ΁ΞΫηε͢ΔॲཧΛɺ͢΂ͯ5FOTPS'MPXͷ
 tensorflow.python.lib.io.file_ioΛ࢖͏Α͏ʹ͢Δɻ 5FOTPS'MPXͷίʔυΛมߋ

Slide 91

Slide 91 text

$ gcloud beta ml jobs submit training cat_and_dogs \ --package-path=/Users/keiji_ariyama/Developments/catsanddogs/src \ --module-name=src.train \ --staging-bucket=gs://cats_and_dogs \ --region=us-central1 \ -- \ --train_dir gs://cats_and_dogs/cad_train \ --checkpoint_dir gs://cats_and_dogs/cad_checkpoint \ --max_steps 100 $MPVE.-༻ʹδϣϒΛొ࿥͢Δ

Slide 92

Slide 92 text

΄Βɺ؆୯ʂ

Slide 93

Slide 93 text

ݱࡏSpeciesͰ෼ྨ͍ͯ͠Δ΋ͷΛ
 BreedͰ෼ྨ͢ΔΑ͏ʹมߋ͢Δɻ νϟϨϯδ

Slide 94

Slide 94 text

C-LIS CO., LTD. ֤੡඼໊ɾϒϥϯυ໊ɺձ໊ࣾͳͲ͸ɺҰൠʹ֤ࣾͷ঎ඪ·ͨ͸ొ࿥঎ඪͰ͢ɻຊࢿྉதͰ͸ɺ˜ɺšɺäΛׂѪ͍ͯ͠·͢ɻ ຊࢿྉ͸ɺ༗ݶձࣾγʔϦεͷஶ࡞෺Ͱ͋ΓɺΫϦΤΠςΟϒίϞϯζͷදࣔඇӦརܧঝ6OQPSUFEϥΠηϯεͷݩͰެ։͍ͯ͠·͢ɻ

Slide 95

Slide 95 text

݄೔ʙ https://devfestkansai.connpass.com/event/42864/