頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


Nintendo SwitchでNAT超えができなかった理由

めでたくNintendo Switchを手にいれてARMSを楽しんでるんだけど、パーティマッチをやってみようとしたけど、いくらやっても相手が見つからない。あー、ちなみに俺はまだ人様と戦えるレベルまで行ってないです、はい。
詳しくみるとどうもインターネットの接続に問題があるとか?
へ?ストアにだって接続できてるし、アカウントのログインだってできてるやん?

インターネットへの接続をチェックしてみると、、、

Switchのネット接続テスト1

↑NATタイプがDってなってるやん?これはまずいらしい。

【Switch】エラーコード「2618-0516」が表示されました。どうしたらいいですか?

で、ネットで情報を漁ってSwitchのIPアドレス固定したり、ルータの設定をいじったり奮闘したんだけどいくらやってもNATタイプはD。

対戦するのに今までiPhoneでも何か特別な設定したとかないし、3DSではネットで誰かとモンハンできるのに。Switchの画面見てもグローバルIPアドレス書いてるし。だからルーターかSwitchの設定でなんとかなるんだろうと思ってたんだが、、、

いくらやってもダメなので、Nintendoのヘルプに真っ先に書いてる「契約してる回線の確認」をしたら、ウチにはグローバルIPアドレスは与えられてないことが判明。
ウチはマンションなので、マンションにグローバルIPアドレスがあって、そこからプライベートIPアドレスってのが各戸に与えられるとかなんとか。
そういうことかよ。

それで解決策はというと現在使ってる回線にグローバルIPをもらえるオプション(もちろん有料)があるので、それを申し込んでみた。
うちで使ってる無線LANルータはバッファローのWHR-1166DHP2 でファームウエアのバージョンは2.91。
ここでそれ用の設定画面(192.168.11.1な、取説にあるよね)に入り、グローバルIPアドレス申し込みでもらえたPPPoE接続用のID、パスワードなどを設定。
バッファロールータのPPPoE 接続設定説明
↑こちらのブログが参考になりました。

ところがうちの場合「IPアドレス取得方法」が「インターネット@スタートを行う」と表示されるだけで選択することができなかったんだわ。
バッファロー本家のヘルプを確認したら、ルーター本体背面のスイッチを切り替えるべし、とあったのでAUTOになってたのをROUTERに変えたら

ルーター設定画面

↑このような「IPアドレス取得方法」を選択できる画面が現れた。ここを「PPPoEクライアント機能を使用する」に設定。
Switch本体は特別な(IPアドレス固定するとか)設定はしてない。

その結果、、、

Switchのネット接続テスト2

↑輝かしいぜ、NATタイプ A!!
早速ARMSやってみる。
お〜お〜おお〜 お〜お〜おお〜 お〜お〜お〜〜!(ARMSのテーマね)
するとめでたくパーティマッチ繋がった!!けどやっぱり下手なのでカモられてばかりだけど。
これでスプラトゥーン2も楽しみだ!


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 ← ええかげんアップデートせにゃ!




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

FC2Ad