未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

先週ブログを更新しようと思ったらFirefoxが落ちて記事が消えてしまった話

結構時間をかけて書いたのに,あっという間に記事が消えてしまってつらかったので,しばらくブログを更新していなかった.原因はWarframeをやっていてグラフィック・ドライバが落ちてFirefoxの描画周りも巻き添えになったことで,どうもWarframeはやたら落ちるからやりづらい.個人的には好きなんだけれども,グラフィック・ドライバが落ちないようになったらまたやりたいと思うわけだが.

 

さて,ここ最近は研究として,MMD for Unityのリファクタリングをやっている.というのも,Unity5がリリースされたので,実装をなるべく推奨関数周りにまとめたいと思ったことと,そろそろMecanimとかAnimator周りが安定してきたはずなので,作りなおしてそれに合わせた実装をするのが一番ベタなんじゃないかなと思った.

実装は,Format→Adapter→Builder→Converterの順番に処理を行うようになっていて,AdapterではUnityのフォーマットに整形する役割,BuilderではUnityの各コンポーネントを生成する役割,Converterは正直名前が気に入らなくて,UnityEditor上での処理を行う形になっている.古いMMD for Unityだと,これ全部が一つのクラスにぶちこまれてた気がするので,正直なところデバッグするだけの手間暇をかけられない状態になってた.つらい.

この実装にしたおかげで全体が見通しやすくなったのと,エクスポータを書けるようになったことがとても大きい.一時期ZIP読み込みを実装して,動的読み込みを促進しようかと思ったけれども,それ以上に,Unity上のオブジェクトをPMDなりPMXなりの形式で保存できたら,これ以上に面白いものはないんじゃないかと思う.UnityでMMD動画制作支援アプリなり,モデル制作支援アプリの開発ができるようになるので,そのところがとてつもなく大きい.

なので,今はリファクタリング先行でPMDのインポータを書いている.過去に躓いたところを覚えていたり忘れていたりするものの,1度実装しただけあってスラスラと書けて楽しい.

 

5月15日にDICOMOの論文投稿の締め切りがあって,その論文を書かなきゃならない.MMD for Unityと同時並行的にやるには,今からでもちょろちょろ論文を書かなくちゃならない.基本的にTAの時間はだいたい暇なので,そのタイミングで論文を書いていたりする.問題は朝が弱いので,ぜんぜん頭が働かず,果たして文章として成立しているのかどうか確認するのが不安だ.

DICOMOでは,ピッチ推定アルゴリズムの提案をしようと思う.ピッチ推定などは,PDA(Pitch Detection Algorithm)という分野に集約されているものの,Wikipediaで紹介されている論文をあさってみたところ,どう考えても重いアルゴリズムしか存在していないような気がする.

提案するアルゴリズムはO(1)の定数時間で完了し,ループ回数は144回(ループ内は足し算,掛け算,分岐程度,計算間違ってるかも?),精度はサビだらけのギターとノイズだらけのシールドで9割は担保できている.ノイズキャンセリングやクォンタイズを行えば,精度は95%は超えるんじゃないかと思う.既に9割超えているから,計算時間で選んでくれていいような気がする.

しかし,5音までは楽にピッチを推定できるものの,6音になるとどうやら難しい.スペクトルの平均が高くなると,どうしてもうまく推定することができなくなる.色々な奏法に対する耐性を調べたい.

 

最近は,査読に関する指導をビシバシ受けているので,色々なノウハウがたまって楽しい.論文テーマに応じて実験を準備するのは確かにその通りで,とりあえずテーマにとって妥当な適当な実験ばかりやっていたので目からウロコ.卒業までにジャーナルかトランザクション3本通さなくちゃならないため,3年で出るためにはしっかり勉強する必要がある.

MMD for Unity周りは比較対象が日本語で揃っているので大変助かるところではあるものの,ピッチ推定や和音認識周りになると,英語が本場なのでなかなか勉強が捗らない.翻訳するだけでなく,数式や手法について理解する必要もあるので,なかなかうまくいかない.かと言って,サーベイの本数を減らすわけにもいかないので,効率的に知識を付ける必要がある.

とにかく,ドクターに進学したので,ドクターで身につけられる知見は,どこかで自分で身につけなければと思う.たぶん,他の大学の人と比べるとスタートラインがだいぶ後ろの方にあるような気がするので,その辺りは実装の早さなりなんなりで巻き返したい.後は,投稿する論文を確実に通すように施策を練ることから始めないとと思う.