競プロ系Vtuberちょこ利奈緒への道 part1

ネタバレ:続きません

競プロ初参加

昨日のAGCで競プロデビューしました。

全くもって知識ないけど行けるやろ、と挑んだ結果は1完でした。笑ってやってください。

D以降は問題も読んでない。BはO(B)になった先が分からなかった。Cは文字列操作でエラー吐きまくって死んでた。あの環境の文字列の扱い方がわからなかったので次回までに調べておく。計算方法は考えてたのでよさそうだけどBを見るに実装考えると面倒なんだと思う。

200点だから割る10くらいでスコア10の灰色かなと思ってたら、灰色なのは変わらないけどパフォーマンス自体は1000ちょい出ててすこし不思議。

ビギナーなんちゃらとか解いて練習して次回はもう少しまともなスコア取りたい。

私も可愛いVtuberになってみたかった

これまであまりVtuberとか見てなかったのだが、Twitterで地獄コンテンツって言って流れてきて面白そうだったのでマグロナちゃんの動画を見ました。

ボイチェン使ってあの声作ってるらしいとのことなので早速恋声ダウンロードして使ってみました。そして絶望しました。

設定どんなに弄ってもかわいい声は生まれません。しゃべり方を工夫すると比較的まともっぽい音にはなったんだが、かわいい女の子の声かと言われると言えない。風邪を引いた従妹の声に近いものが生まれて悲しい。仲間内のDiscordでうるさいとミュートされました。

その時の音声がこんな感じ

これで一番できのいい設定。悲しい。

まだ輪郭すら出来てないが将来DLでボイチェン作りたい身として既存技術調べるのは無駄にならないので、と言い訳付けていろいろ調べましたが、一種の停滞状態に入っているみたい。声の質を変えたいのに変えられる質かどうかで差が出るという絶望。まあ目標が低い分やり様がありそうというのはある。

ボイチェンでかわいい声作れる人って強い。

競プロ系Vtuberへの道

ちょこ利奈緒の挑戦はまだまだ続く……(大嘘)

筍のように生えてきて、どんな奴でも居ると思われるVtuber界でも、まだ競プロ系Vtuberはいないみたい。

リアルタイム実況できないけどコンテスト終了と共に答え合わせ配信系でやればそこそこのリアルタイム性を確保できそう。やってみるのも楽しいのかもなぁ、と。もしモデルが完成しても居ないみたいだったらやろうかね。

つまりは全然モデルは完成しないのでその未来は訪れないのだった。

関係ない近況

車乗るのも弄るのも楽しい。(今やってるのがいい辺りまで行ったら詳しく書く)

合宿に向けた講義資料も進めなくてはいけない。(多分書かない)

PRMUアルコン出そうとしてるけど今回は去年比で課題内容が怪しげ。(もし機会があったら詳しく書く)

Rayのマウスパッド最初微妙だったけど慣れてくるとめっちゃ良い。

明日はキスマイのライブに行きます。親がファンなので応募したやつです。前回はコンサートマスターがゴミだったので今回こそは期待してます。(書かない)

 

前から一月経たずに更新できてよかった。また一月開けずに書く。では。

Kerasの仕様に疑問を抱いたやつ

投稿に凄まじく間が空いたので実質初投稿です。
タイトルの通りでなんでこうなってるのか謎なところを見つけた。
ネットの闇に投げたら答えが返ってくるのかなと淡い期待を持って書いてみる。

発端

大学で機械学習の簡単な講義のようなものがあったときに、Jpyter下でTensorFlowを入れてKerasを使い機械学習をやってみようという話になった。

でもって教科書の通りにまずは線形分類やってみてPython楽だねってした後MNISTを単純なNNで学習させてみるというお決まりのパターンのものをやったのだが、お決まりっぽくないデータが出たりした。

内容

コードは以下の通り。ほぼ教科書通りだし余計な文があるとか以外は特に問題はないと思う。

import numpy as np
import keras.optimizers

from keras.models import Sequential
from keras.layers.core import Dense, Activation

import matplotlib.pyplot as plt
%matplotlib inline

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

from keras.utils import np_utils

from keras.optimizers import Adam

x_train = x_train.reshape(60000, 784)  ## 学習データ
x_train = x_train.astype('float32')
x_train = x_train / 255
num_classes = 10
y_train = np_utils.to_categorical(y_train, num_classes)

x_test = x_test.reshape(10000, 784)   # テストデータ
x_test = x_test.astype('float32')
x_test = x_test / 255
y_test = np_utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Dense(128, input_dim=784, activation='relu')) # 1層目
model.add(Dense(128, input_dim=128, activation='relu')) # 2層目
model.add(Dense(128, input_dim=128, activation='relu')) # 3層目
model.add(Dense(128, input_dim=128, activation='relu')) # 4層目
model.add(Dense(128, input_dim=128, activation='relu')) # 5層目
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy'])

history = model.fit(x_train, y_train, epochs=10, batch_size=1000, verbose=1, validation_data=(x_test, y_test)) 
score = model.evaluate(x_test, y_test, verbose=0)

print('Test loss:', score[0])
print('Test accuracy:', score[1])

でもってこれを動かすと学習を行ってくれたりするのだが、結果はこんな感じになる。

f:id:kud_wata:20180616205547p:plain

だんだん学習されて行って*1正答率が上がるのはいいのだが、epoch1の結果を見ると妙なことに、トレーニングデータよりもテストデータの方が正答率が良くなっている。
たまたまか?と何度かパラメータを変えてみても初回やまだ最適化が済んでいないときはテストデータの方が良くなるようで……

妙な仕様

でもっていろいろ試したりしてたらKerasのhistoryは妙なところで正答率を計ってるっぽい。

ニューラルネットワークは学習データを順方向に流してから誤差を逆方向に伝播させて学習する仕組みになっているのは常識ではあるが、Kerasはこの時順方向に流した際の正答率を学習データに対する正答率として保存しているらしい。
この結果、学習データの一部はほぼ学習されていない素の状態の学習機を通ることになり見かけ上の正答率が落ちている、というのがこの謎の結果の理由のようだ。


しかしこの仕様、どんな理由があるのか。
計算量下げるにしても順方向なんて誤差みたいなものじゃないのかなぁ。

*1:これは1回目からだいぶ高いけど

スタクラのためにVPNサーバー用意しようとした話

受験終わり、浪人もほぼ終わり、合格発表を待つ身の中で書き始めようとして挫折したブログ思い出したので書いてみる。

発端

高校の時、部活でこのようなゲームが流行っていた。

Starcraft & Starcraft Expansion Set(輸入版)

Starcraft & Starcraft Expansion Set(輸入版)

とてつもなく古いゲームのため必要なスペックも低く、今の基準では性能の限りなく低いPCでも満足に動かせることもありかなりの人数がプレイしていた。
基本的にLANで繋げば通信できたので、ケーブルを持ち寄ってジャンクの24口ルーターで繋いで遊んでいたのだが、これを家でもできないかという話が上がった。

VPNというものを知った

LANで繋げばつなぐだけでプレイできるのだから、ネットに繋がってるPCを使えばそのままネットを介してできるのではないか、と一瞬考えたができるはずもなく、物が古すぎるせいでネットにも満足な情報がないので難儀していたところ、VPNなるものの存在を知った。が、VPNルータなんてものを持っている人が居るわけもなく、買おうとしても秋葉原のジャンクショップでもそれなりの値段がするものだったので断念……となりかけたときにSoftEther VPNなるものを発見。

というわけで使った

ソフトウェアでVPNを用意できるとのことなので早速使ってみた。
他のスタクラをやる人にもSoftEther VPN Clientをインストールしてもらい接続してもらおうとしたが、まったくもって繋がらない。localhostへの接続は通っているのでネットへの接続部分に問題がありそう……といじっていたところ、モデムとPCの間に挟んでいたルーターを外してモデムとPCを直接つないだらうまくつながるようになった。
しかしこの方法だともちろんスタクラを動かしている最中は他のネットワーク機器が一切繋がらないので使えない方法に近い。ということで設定とかいじってどうにかルータを挟んで使えないものかと試行錯誤。

その結果、ポートマッピングの設定を弄ったらルータを挟んでもつながるようにできた。
が、そんなことしなくてもVPN azureとやらを使ったらクライアント側がソフトインストール無しで繋ぐことができるらしい。(できた)
こんな簡単にできるのなら自分の苦労は一体…?

しかし動かない

同じようにLANで繋げばできるソフトでも動かないものがあるらしい。
store.steampowered.com
このソフトもやろうとしたがこのVPNでは動かなかった。
こちらはHamachiでは動いたのでなんの違いがあるのやら。

Oculusで出来なかったこと

2、3回どころか一度も投稿せずに放置していた……
やはり自分はブログとかに向いていないんだろうなぁと。
よーし今度こそは続けるぞ。

ここから本題

この頃Oculus Riftなる物をいじっているのですが、必要スペックが高いからかあまりポピュラーでは無いようで、使いやすいライブラリ等も無く困っております。
簡単なFPSのようなものであれば、UnityでもUE4でも使えば簡単に作れるんだが、ゲーム以外のものを作ろうとすると、出来ないことが多くてUnityもUE4も扱いづらい。
自分の知識不足の可能性もあるし、もし本当に出来ないのであれば同じようなことをしようとしている人が同じ轍を踏まずに済むかと思うので書いておきます。

Unity編

始めた時はUE4がまだ無料化されていなかったのでUnityで開発スタート。
借り物のKinect(古い方)があったので3Dお絵かきのようなものを作ろうとノートパソコンでKinectのプログラム書いて家のPCでUnityいじっていました。
Kinectのプログラムは必要な体の部位の座標求めるだけだったから簡単だったのですが、いざ合わせようと思った時にUnityのプログラム中にKinectの制御が書けないことが発覚。
有料版ならアドオンのような形で出来るそうなのですが、これだけのために有料版の200k円近くを払うのも考えものなので他に方法がないか模索していたところnamedpipeと呼ばれるプロセス間通信が使えそうだと思いました。

で、namedpipeを使ってみたんですが、.NETとMonoの差かUnityの仕様か自分のミスかわかりませんが通信がうまく行きませんでした。
どちらをサーバーにしてもダメで、繋がりはするし送信側では例外吐かないのに、受信されませんでした。

一週間くらい不毛な格闘を続け断念。

UE4編

しばらく忘れていたところにUE4無料化のニュースが流れてきたので早速ダウンロード。
外部ライブラリを使うことも簡単なのでKinectを使うことも簡単。
これは便利!と思い少し触ってみたのですが、Unityに比べて動作が非常に重たくて自分のPCでは快適に動かせませんでした。
エディタは動くし作ったプログラムも自分のいじる範囲では動くのですが、ビルドに時間が掛かり過ぎるのとプレビューが重い&微妙に動作が違うので作業になりません。

自分の使っているPCの性能が悪いのが原因なのですが、今のPCから費用対効果が良い変え方が分からない、一応受験生なので買うのは保留。


ちなみにこれが6月最初の辺り。
完全にブログの存在を忘れていました。

これから

続けたい的なことを書いておいてアレですが、受験生なので書くようなことしないと思います。
勉強の合間に少しやったりはすると思うがまとまった時間は取れないし取っていたら浪人ですね。

一体なんでブログはじめたんだろう?

ブログを始めた

最近、いろんな方からブログを作って自分の活動記録を付けたほうがいいと言われたので作りました。自分、こういうものを作った時は2、3回投稿したらその後が続かないタイプですが続けるように頑張ります。

一応自己紹介を。

電子工作からAVR、メカトロを経てパソコンのプログラムを今は書いている凡人です。

途中高電圧とかに寄り道したりしたりもしたので低レイヤの広くて浅い知識とか技術くらいはあるはず。