頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


SceneKitのライトの明るさを設定するのにはまった

SceneKitにSCNLightってのがあってそのプロパティのintensityを変えればライトの明るさを変更できると思ってたんだけど、、、何だかうまくいかなくてしばし悩んだ。

やろうとしたのは最初は真っ暗で、あるタイミングでライトを点灯する、ってだけ。
最初に
spotLight.light.intensity = 0.0;

として、ライトを点けるところで
spotLight.light.intensity = 1000.0;

とかすりゃいけそうやん?ところがこれが意図通りにならない。

いろいろと調べたけど直接の原因はよくわからなかった。
ただ、最初の値を0にしちゃうとその後いくら値を設定しようがダメで、最初の値を1.0とかにしとくと変更することができた。



memo
Xcode 8.3.1
スポンサーサイト






ffmpegで動画のトリミング

iPhoneの画面を動画で取得した後に、下側何も表示してないから要らないなってことでトリミングしたかったんだわ。
もしかしてffmpegでできるのかな?と調べたらできそうやん!

ffmpegで動画を編集する - 生存報告書
↑こちらを参考に

ffmpeg -i 元ファイル -vf crop= 1080 : 1200 : 0 : 0 出力ファイル

てな感じでやってみたらできたよ!ffmpegはホント優秀なやっちゃな。


TensorFlowを1.2へアップデート

ずっと1.0のまま使ってたんだけど、ここいらで1.2へアップデートすることに。

Installing TensorFlow on Mac OS X  |  TensorFlow
↑本家を参考に。1.0へのアップデートと同じく Installing with native pip でやってみた。

まずはpipのバージョン確認。ターミナルから
pip3 -V とした結果、
pip 9.0.1 from /Users/yamaguchitatsuya/.pyenv/versions/anaconda3-4.1.1/lib/python3.5/site-packages (python 3.5)
で8.1以上なのでOK。

次に
pip3 install tensorflow
でインストールするも、
Requirement already satisfied
とかがいっぱい出て、ダウンロードしない。

これがダメなら、、、と本家ページにあるのでその通りにやってみたのが↓これ。
sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.2.0-py3-none-any.whl

するとダウンロード開始し、無事終了。

print(“version “+str(tf.__version__))
↑これでバージョンを確認すると1.0.0→1.2.0になった〜!
1.1で大きな変更があったとか聞いた気がするんだけど、1.0で動いてたMNISTを試しに動かしたら普通に動いた。



memo
macOS Sierra 10.12.5
Python 3.5.2 :: Anaconda 4.1.1 (x86_64)


機械学習で人体頭部の姿勢を得る(4)

機械学習で人体頭部の姿勢を得る(3)
↑の続き。全然あかん、こうなったらヤケクソや!何がなんでもデータセットに含まれる顔の種類を増やすんやあ!ってことでなんとか楽に増やす方法を検討した。

今まではMakeHumanで出力したdaeファイル及びテクスチャ画像をBlenderで再設定してdaeファイルを出力、それをXcodeに持ってきて使ってた。Blenderで設定するのが面倒だったので、以前はあきらめたBlenderを介さない方法を再検討。

1) MakeHumanでのdae出力のオプションでBone orientationをLocal=Globalってのに変更、OrientationはY up, face Z(デフォ)で出力。
2) SceneKitではScene assetsのSettingsでAlways use the Y-up axisのチェックを外す

この状態だとテクスチャが設定されていないのでそこはコードでやる。
髪形や眉毛の形もdaeファイル内の文字列を調べれば設定すべきpngファイルはわかる。

そんなわけでMHでランダムに顔を作成、できたデータから差し替えていった。最終的には140種類の顔でそれぞれ1,000枚で14万のデータセットとなった。
そしてぶん回した。175kあたりで跳ね上がってるあたりからできたデータから順に差し替えてる。

TensorBoardの結果

↑データ差し替えからでもざっくり700時間くらい動かしてる。
その結果がこちら。↓



微妙だ。汎用性を求めるならやはり相当工夫してデータセットを作成する必要があるのか、、、

さらに、iPhone 7 Plusのフロントカメラで自分の顔の姿勢を把握できるか試してみたのが下の動画。むしろこれだけでもできれば、と思ってたが、やっぱり微妙。普通の光源、背景だとグタグタでそれっぽく動く状態にして撮影してこれだからなあ、、、



こういうのができたら自分専用モーションキャプチャーとか作れんじゃね?と思っていたけど、、、

今後はNNの構成を変更するとかカラー化するとかそもそものデータセットに工夫するとか色々手はあるかもしれないけど、機械学習は時間がかかるなあ。さて、どうするかな。



なお、iOSでのMetal Performance Shaderで推論するのに1画像あたり13〜21msec程度なので60FPSは微妙かもしれないけど1秒に数コマなんてことでもない感じ。今は実装してないけどカメラからの画像をMetal(GPU)使って欲しいサイズのデータを得てそのままMPSへ渡せばもっと早くできるんだろうな。



memo
iOS 10.3.2
MakeHuman 1.1.0
Python 3.5.2 :: Anaconda 4.1.1 (x86_64)
TensorFlow 1.0 ← ええかげんアップデートせにゃ!


SwitchのARMSはJoy-Con一台で遊べるのか?

購入前に色々調べたんだけど、ARMSってJoy-Conを追加購入せずに家族で対戦したり出来んのかな?ってのがよくわからなかった。
ほら、いろんなサイト見ても大抵は左右の手にJoy-Conを一つずつ手にして(「いいね持ち」と言うらしいよ)パンチ!とかしてるじゃない?こんな感じでさ↓

ARMS対戦

ってことは家族で対戦しようとするとJoy-Conセットを購入せんとあかんの?と思っていたんだけど、、、

いざARMSを買って遊んでみたところ、、、できるじゃないか!

「Joy-Con横持ち」ってのがあって、1台で移動やパンチなど全部の操作ができる。これだとデフォで2台あるから家族や友達などと一緒に対戦や協力して遊べる。

操作方法 - ARMS(アームズ) 攻略
↑持ち方についてはこの辺りに詳しく載ってる。

ただやっぱり「いいね持ち」が楽しいし、「横持ち」だと誤操作で何度も一時停止やスクショ撮影とか押しちゃったりしてしまう。やっぱりJoy-Conセット欲しい!ってなっちゃう。まさに任天堂の思う壺だよ。

ともかく息子と対戦してなかなか盛り上がったよ!


あと、一番最初に戸惑ったのがストラップを付けずにソフトを起動して進めていったせいか、「横持ち」を前提にチュートリアルが進んでわけわからず、何かさせるのにいろいろ試すだけという状態になった(こちらは「いいね持ち」で構えていたわけで)。両手でやるなら最初からストラップつけとかないとダメみたい。





Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.