「ゼミや実験用」カテゴリーアーカイブ

Unityで Dictionary

UnityでDictionaryを使う準備

using System.Collections.Generic;//必ず必要

上の方のusingあたりに追記


Dictionaryを宣言

Dictionary<int, GameObject> prefabDic;

prefabDicという名のDictionaryを宣言


Dctionaryを初期化みたいなの

prefabDic = new Dictionary<int, GameObject> ();

をvoid Start(){ の中にかく


キャラ作成しつつDictionaryに登録

	//キャラn体作成
		for (int i = 0; i < 10; i++) {
			GameObject go = Instantiate (ballPre, new Vector3 (i * 2.0f, 0, 0), Quaternion.identity) as GameObject;
			string myAIname =  "AI" + i.ToString ();
			go.name = myAIname;

			prefabDic.Add (i, go);
		}

iはDictionaryの左列に この後で呼び出す番号にしている

goはゲームオブジェクトが入っているので,

prefabDic.Add(i, go);で番号とゲームオブジェクトのセットでDictionaryに追記(Add)される


dictionaryの3番のゲームオブジェクトを消す

GameObject delobj = prefabDic [3];
		Destroy (delobj);

prefabDic[3]で3番のゲームオブジェクトが呼び出されるので,それをDestroyしている

 

Unity Postprocessing入門

Unityで複数のエフェクトを一度に表示できるPostProcesingを実習します.

  1. Post Processing Stack Assetをダウンロード
  2. アセットをインポート
  3. Assets>Create>Post-Processing Profileを選択
  4. Profileが作成されるので名前を適当に変えておく(ここではccに変更)
  5. MainCameraを選び,Add Componentをクリック>post… で出てきたPost Processing Behaviour スクリプトを追加
  6. 先ほど作成したProfileをPost Processing BehaviourのProfileにドロップ
  7. Profileを選び,各項目を調整します
  8. Depth of Fieldを調整します.これは調整前
  9. 調整後
  10. Bloom を加えた場合(光る)
  11. Color Grading(いわゆるカラコレ)を加え,Filmicモードにした場合
  12. Grainを加えた場合(Film Grain=フィルムの粒子の再現と考えてください)
  13. ビネットを加えた場合(ビネット=フレーム周囲の減光)
  14. Ambient Occlusionを加えた場合(地面とオブジェクトの境界に影をつけること)
  15. Motion Blur(よくあるエフェクト)左:Motion Blurなし,右Motion Blurあり
  16. 上のMotion Blurの設定 シャッター角270度,10フレームサンプル,80%ブレンド
  17. Antialiasing左=なし,右=PresetはDefalut.クリックして拡大し,えりのJaggyを見比べる

使用しているアセットによっては使えないことがあります.

 

 

 

 

Prefabの名前を変える

 

 

たぶんこれで動く?

 

		//キャラn体作成
		for (int i = 0; i < sakusei; i++) {
			GameObject go = Instantiate (myInstance, new Vector3 (i + 1.0f, 0, 0), Quaternion.identity) as GameObject;
			string myAIname =  "AI" + i.ToString ();
			go.name = myAIname;
}

 

3行目 prefabを生成した後,Gameobject goにいれる.これでCloneでなくなる

4行目 forの変数iを利用した名前をAI1みたいにする

5行目 goの名前を4行目の変数 myAInameにする

これでPrefabがそれぞれ別の名前にかわる

Tensorflow mnist tutorial

参考のサイト

http://qiita.com/uramonk/items/c207c948ccb6cd0a1346

 

これをやってみる.

まず tensorflow/tensorflow/examples/tutorials/minist

に移動(移動するのは下記のpythonプログラム中24行目で画像データの場所を指定しているから)

nano mnistbigg.py

でエディタ開いて

※参考サイトのコードでは動かないので,下記を入力(GUI側で作ってもOK)

 

# -*- coding: utf-8 -*-

# TensowFlowのインポート
import tensorflow as tf
# MNISTを読み込むためinput_data.pyを同じディレクトリに置きインポートする
# input_data.pyはチュートリアル内にリンクがあるのでそこから取得する
# https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/examples/tutorials/mnist/input_data.py
import input_data

import time

# 開始時刻
start_time = time.time()
print ("開始時刻: " + str(start_time))

# MNISTデータの読み込み
# 60000点の訓練データ(mnist.train)と10000点のテストデータ(mnist.test)がある
# 訓練データとテストデータにはそれぞれ0-9の画像とそれに対応するラベル(0-9)がある
# 画像は28x28px(=784)のサイズ
# mnist.train.imagesは[60000, 784]の配列であり、mnist.train.lablesは[60000, 10]の配列
# lablesの配列は、対応するimagesの画像が3の数字であるならば、[0,0,0,1,0,0,0,0,0,0]となっている
# mnist.test.imagesは[10000, 784]の配列であり、mnist.test.lablesは[10000, 10]の配列
print ("--- MNISTデータの読み込み開始 ---")
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
print ("--- MNISTデータの読み込み完了 ---")

# 訓練画像を入れる変数
# 訓練画像は28x28pxであり、これらを1行784列のベクトルに並び替え格納する
# Noneとなっているのは訓練画像がいくつでも入れられるようにするため
x = tf.placeholder(tf.float32, [None, 784])

# 重み
# 訓練画像のpx数の行、ラベル(0-9の数字の個数)数の列の行列
# 初期値として0を入れておく
W = tf.Variable(tf.zeros([784, 10]))

# バイアス
# ラベル数の列の行列
# 初期値として0を入れておく
b = tf.Variable(tf.zeros([10]))

# ソフトマックス回帰を実行
# yは入力x(画像)に対しそれがある数字である確率の分布
# matmul関数で行列xとWの掛け算を行った後、bを加算する。
# yは[1, 10]の行列
y = tf.nn.softmax(tf.matmul(x, W) + b)

# 交差エントロピー
# y_は正解データのラベル
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = -tf.reduce_sum(y_*tf.log(y))

# 勾配硬化法を用い交差エントロピーが最小となるようyを最適化する
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

# 用意した変数Veriableの初期化を実行する
init = tf.initialize_all_variables()

# Sessionを開始する
# runすることで初めて実行開始される(run(init)しないとinitが実行されない)

sess = tf.Session()
sess.run(init)

# 1000回の訓練(train_step)を実行する
# next_batch(100)で100つのランダムな訓練セット(画像と対応するラベル)を選択する
# 訓練データは60000点あるので全て使いたいところだが費用つまり時間がかかるのでランダムな100つを使う
# 100つでも同じような結果を得ることができる
# feed_dictでplaceholderに値を入力することができる
print ("--- 訓練開始 ---")
for i in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})
print ("--- 訓練終了 ---")

# 正しいかの予測
# 計算された画像がどの数字であるかの予測yと正解ラベルy_を比較する
# 同じ値であればTrueが返される
# argmaxは配列の中で一番値の大きい箇所のindexが返される
# 一番値が大きいindexということは、それがその数字である確率が一番大きいということ
# Trueが返ってくるということは訓練した結果と回答が同じということ
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

# 精度の計算
# correct_predictionはbooleanなのでfloatにキャストし、平均値を計算する
# Trueならば1、Falseならば0に変換される
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

# 精度の実行と表示
# テストデータの画像とラベルで精度を確認する
# ソフトマックス回帰によってWとbの値が計算されているので、xを入力することでyが計算できる
print ("精度")
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

# 終了時刻
end_time = time.time()
print ("終了時刻: " + str(end_time))
print ("かかった時間: " + str(end_time - start_time))

実行結果

> python3 mnistbigg.py
開始時刻: 1499857321.2323244
--- MNISTデータの読み込み開始 ---
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
--- MNISTデータの読み込み完了 ---
WARNING:tensorflow:From mnistbigg.py:57: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.global_variables_initializer` instead.
--- 訓練開始 ---
--- 訓練終了 ---
精度
0.9143
終了時刻: 1499857332.378188
かかった時間: 11.14586353302002

お疲れ様でした,,

と思ったら警告が出ている.

WARNING:tensorflow:From mnistbigg.py:57: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.

 

どうも期限切れのコマンドあったみたいなので

# -*- coding: utf-8 -*-

# TensowFlowのインポート
import tensorflow as tf
# MNISTを読み込むためinput_data.pyを同じディレクトリに置きインポートする
# input_data.pyはチュートリアル内にリンクがあるのでそこから取得する
# https://tensorflow.googlesource.com/tensorflow/+/master/tensorflow/examples/tutorials/mnist/input_data.py
import input_data

import time

# 開始時刻
start_time = time.time()
print ("開始時刻: " + str(start_time))

# MNISTデータの読み込み
# 60000点の訓練データ(mnist.train)と10000点のテストデータ(mnist.test)がある
# 訓練データとテストデータにはそれぞれ0-9の画像とそれに対応するラベル(0-9)がある
# 画像は28x28px(=784)のサイズ
# mnist.train.imagesは[60000, 784]の配列であり、mnist.train.lablesは[60000, 10]の配列
# lablesの配列は、対応するimagesの画像が3の数字であるならば、[0,0,0,1,0,0,0,0,0,0]となっている
# mnist.test.imagesは[10000, 784]の配列であり、mnist.test.lablesは[10000, 10]の配列
print ("--- MNISTデータの読み込み開始 ---")
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
print ("--- MNISTデータの読み込み完了 ---")

# 訓練画像を入れる変数
# 訓練画像は28x28pxであり、これらを1行784列のベクトルに並び替え格納する
# Noneとなっているのは訓練画像がいくつでも入れられるようにするため
x = tf.placeholder(tf.float32, [None, 784])

# 重み
# 訓練画像のpx数の行、ラベル(0-9の数字の個数)数の列の行列
# 初期値として0を入れておく
W = tf.Variable(tf.zeros([784, 10]))

# バイアス
# ラベル数の列の行列
# 初期値として0を入れておく
b = tf.Variable(tf.zeros([10]))

# ソフトマックス回帰を実行
# yは入力x(画像)に対しそれがある数字である確率の分布
# matmul関数で行列xとWの掛け算を行った後、bを加算する。
# yは[1, 10]の行列
y = tf.nn.softmax(tf.matmul(x, W) + b)

# 交差エントロピー
# y_は正解データのラベル
y_ = tf.placeholder(tf.float32, [None, 10])
cross_entropy = -tf.reduce_sum(y_*tf.log(y))

# 勾配硬化法を用い交差エントロピーが最小となるようyを最適化する
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)

# 用意した変数Veriableの初期化を実行する
#init = tf.initialize_all_variables()
init = tf.global_variables_initializer()
# Sessionを開始する
# runすることで初めて実行開始される(run(init)しないとinitが実行されない)

sess = tf.Session()
sess.run(init)

# 1000回の訓練(train_step)を実行する
# next_batch(100)で100つのランダムな訓練セット(画像と対応するラベル)を選択する
# 訓練データは60000点あるので全て使いたいところだが費用つまり時間がかかるのでランダムな100つを使う
# 100つでも同じような結果を得ることができる
# feed_dictでplaceholderに値を入力することができる
print ("--- 訓練開始 ---")
for i in range(1000):
    batch_xs, batch_ys = mnist.train.next_batch(100)
    sess.run(train_step, feed_dict={x: batch_xs, y_:batch_ys})
print ("--- 訓練終了 ---")

# 正しいかの予測
# 計算された画像がどの数字であるかの予測yと正解ラベルy_を比較する
# 同じ値であればTrueが返される
# argmaxは配列の中で一番値の大きい箇所のindexが返される
# 一番値が大きいindexということは、それがその数字である確率が一番大きいということ
# Trueが返ってくるということは訓練した結果と回答が同じということ
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))

# 精度の計算
# correct_predictionはbooleanなのでfloatにキャストし、平均値を計算する
# Trueならば1、Falseならば0に変換される
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))

# 精度の実行と表示
# テストデータの画像とラベルで精度を確認する
# ソフトマックス回帰によってWとbの値が計算されているので、xを入力することでyが計算できる
print ("精度")
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))

# 終了時刻
end_time = time.time()
print ("終了時刻: " + str(end_time))
print ("かかった時間: " + str(end_time - start_time))

に変更

57行目に初期化のコマンドをコメントアウトして
#init = tf.initialize_all_variables()
58行目のように変更
init = tf.global_variables_initializer()
警告が出なくなりました
sudo python3 mnistbigg.py
開始時刻: 1499859548.4947531
--- MNISTデータの読み込み開始 ---
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
--- MNISTデータの読み込み完了 ---
--- 訓練開始 ---
--- 訓練終了 ---
精度
0.9173
終了時刻: 1499859558.8151393
かかった時間: 10.320386171340942

sudoしてるのは今回はvncでなくsshで入っているから?

TesorFlow on Raspi3 with Pyton3.4

参考サイト1(ここ

※参考サイト1のhello-tf.pyは動かない

(あと Kerasとか入れてみた)

ここで出てたエラー

pi@sogalab1:~/projects $ sudo python3 hello-tf.py
  File "hello-tf.py", line 16
    print sess.run(a+b)
             ^
SyntaxError: invalid syntax

改善策

import tensorflow as tf
import multiprocessing as mp

core_num = mp.cpu_count()
config = tf.ConfigProto(
    inter_op_parallelism_threads=core_num,
    intra_op_parallelism_threads=core_num )
sess = tf.Session(config=config)

hello = tf.constant('hello, tensorflow!')
result = sess.run(hello)
print (result)

a = tf.constant(10)
b = tf.constant(32)
result1 = sess.run(a+b)
print (result1)
実行結果
pi@sogalab1:~/projects $ sudo python3 hello-tf.py
b'hello, tensorflow!'
42

おつかれさまでした

print内で計算はできないみたいで,単に変数だけにした方がよさげです

メモ3年用

メモいろいろ

・窓ポリゴンモデルについて

Unityインポート時に三角分割できない可能性がありますので,スナップショット保存後はUVをいじらないようにして(つまりこの時点で必ず保存をして)窓周りのポリゴンを選択し,三角化してください.Unity側で三角化できない場合,透明ポリゴンになってしまうようです

・NormalMapについて

後回しにします.時間があればやるということで優先順位を下げます

・でも瓦のノーマルマップは欲しい

瓦のノーマルマップは欲しいです.グレースケールでグラデーションつけておけば,Unity側でNormlMapに変更できるようなので,それでいきましょう

・ScaleFactorについて

ScaleFactorの値を知らせてください(ファイル名についてる?)

服の解析など(メモ)

時間があるときにまとめるよてい

ファッションデータセット

https://sites.google.com/site/fashionparsing/dataset

東北大の研究

http://vision.is.tohoku.ac.jp/~kyamagu/ja/research/clothing_parsing/

 

これはなんだろう?

https://github.com/applebym/project5_final

 

ファッションアイテム検索(コードつき?)

http://gigazine.net/news/20161027-fashion-snap-detection-retrieval/

 

??これは見つけない方が良かったのか,,,まんま?

https://github.com/rivukhoda/claridrobe

ん?JSでAPIでつかえるっぽい.ブラウザで出来てしまう?

https://developer.clarifai.com/quick-start/

クライアントIDとパスをパーミッションかけたJSファイルにして,読まれないようにする必要があります.