HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

Helló, Samu! a CIFAR-10 TF tutoriál példából

2016.12.10. 21:29 nb

A mai laboron a https://www.tensorflow.org/versions/r0.12/tutorials/deep_cnn/index.html tutoriál példával indítunk. A háttér kapcsán lásd magát a tutoriált és persze az előadásban is bevezetjük: https://prezi.com/0u8ncvvoabcr/no-programming-programming/.

A tanítást érdemes otthon végezni, mert órákig tart, amit persze kis paraméterezgetéssel lehet csökkenteni, ezt a fészen megbeszélhetjük. Maga a feladat egy saját kép felismerése. Konkrétan lefényképeztem a gyerekek egy Prius matchboxát és azt szeretnénk, ha ezt a hálózat felismerné mint CIFAR-10 kategáriát és azt mondaná rá, hogy: "automobil".

cam00047_600x.jpg
kicsiben, azaz a matchbox.png így fest: matchbox.png

De nem ezzel a saját képpel indítunk, hanem azzal, hogy egy egyedi CIFAR-10 képet felismerjen a program, ezt: https://www.cs.toronto.edu/~kriz/cifar-10-sample/deer6.png

Folyamatában így néz ki a labormérés:


Oké-zsoké, lássuk mit kell ehhez forrás szinten módosítani a tutoriál példájában.

  1. Először is a két tesztelendő képet olyan bináris állománnyá kell alakítani, amit a tutoriál tud értelmezni. Ehhez a legegyszerűbb egy olyan kis progit írni, ami páldául a http://stackoverflow.com/questions/35032675/how-to-create-dataset-similar-to-cifar-10 kis progija mintájára ezt a konverziót elvégzi (itt mi a bemenő képek címkéjét 0-ra állítottuk, mert a pontossággal nem akarunk foglalkozni, csak azzal, hogy az egyedi bemenő képeket felismeri-e a háló).
  2. Aztán a cifar10_input.py-ban módosítsuk az input() fgv.-t, hogy a mi input.bin állományunkat olvassa be:
      else:
        #filenames = [os.path.join(data_dir, 'test_batch.bin')]
        filenames = [os.path.join(data_dir, 'input.bin')]
  3. Majd a cifar10_eval.py forrást butítsuk le, hogy ne számoljon pontosságot, hanem csak nézze meg, hogy minek ismerte fel leginkább a hálózat a bemenő képet, az eval_once() fgv.-ben:
          #while step < num_iter and not coord.should_stop():
          #  predictions = sess.run([top_k_op])
          predictions = sess.run([top_k_op])
          print(sess.run(logits[0]))
          classification = sess.run(tf.argmax(logits[0], 0))
          cifar10classes = ["airplane", "automobile", "bird", "cat", "deer", "dog", "frog", "horse", "ship", "truck"]
          print(cifar10classes[classification])
          
          true_count += np.sum(predictions)
          step += 1

          # Compute precision @ 1.
          precision = true_count / total_sample_count
          # print('%s: precision @ 1 = %.3f' % (datetime.now(), precision))

Van még pár apróság, mint páldául a cifar10.py-ban a batch_size 1-re állítása, de ha minden eszünkbe jutna most, akkor nem lenne olyan izgalmas a labor :)

Nyelvi bevezetés

Az előző MNIST és az iménti CIFAR-10 példa azt domborítja ki, hogy a TF egy ML (Machine Learning) nyelv. Most lássuk a "klasszikus" megközelítést. Láttuk, hogy a hivatalos tutoriál szerint a TF "Helló, Világ!" program az a MNIST-es példa, de lássuk egy szokásos Helló Világot:
screenshot_20161211_185738.png
a részleteket majd az előadáson megbeszéljük. A mi (UDPROG) "klasszikus" példánk a Mandelbrot halmaz (számoltuk C-ben, C++-ban, Qt-vel, P-szálakkal, Open MP-vel, CUDA-val és elosztva, ja és még Javából is megismételtük a számolást, nagyítást, utazást) s lássunk csodát a hivatalos TF tutoriálnak is van Mandelbrotos példája: https://www.tensorflow.org/versions/r0.12/tutorials/mandelbrot/index.html Csináljuk meg ugyanazt az első példát, mint C++-ban és Javában: csak zöld árnyalatokkal rajzolja a halmazt. Magam a TF példájából forkolva csinátam egy csak vöröset:

screenshot_20161211_214940.png
és meg is jeleníti valóban (vegyük észre, hogy ez az ablak egy jupyter-console)

screenshot_20161211_214951.png

De a kis nyelvi bemelegítő után máris térjünk vissza a ML témához. Végezetül próbáljuk ki a hivatalos TF tutoriál képfelismerés példáját, futtatva egy saját képre (itt ehhez nem kell programozni szemben az eddigiekkel)
uszi.png

nbatfai@robopsy:~/Robopsychology/repos/gpu/tensorflow$ bazel-bin/tensorflow/examples/label_image/label_image --image=palyan.png
W tensorflow/core/framework/op_def_util.cc:332] Op BatchNormWithGlobalNormalization is deprecated. It will cease to work in GraphDef version 9. Use tf.nn.batch_normalization().
I tensorflow/examples/label_image/main.cc:206] bathing cap (785): 0.415266
I tensorflow/examples/label_image/main.cc:206] rule (519): 0.163412
I tensorflow/examples/label_image/main.cc:206] swimming trunks (945): 0.0780062
I tensorflow/examples/label_image/main.cc:206] snorkel (507): 0.0300284
I tensorflow/examples/label_image/main.cc:206] maillot (977): 0.017797
nbatfai@robopsy:~/Robopsychology/repos/gpu/tensorflow$

Ugyanez az And-os demóval:


15390925_1380166265335798_835008935988643103_n.jpg

S innentől már majd következik ESAMU arcfelismerése!

komment

Címkék: CIFAR-10 TensorFlow Tutorial

A bejegyzés trackback címe:

https://progpater.blog.hu/api/trackback/id/tr5012039259

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása