ならば

音とかで遊んでいたログ

日本の姉妹都市

日本の姉妹都市のリストを見ていたら大圏コースを描きたくなったので、matplotlib + cartopyで描いた。
地域にかなり偏りがある。

f:id:naraba:20200718133850p:plain
Jupyter Notebook


姉妹都市のリストはこのサイトの方が充実しているけど、ジオコーディングが面倒だったのでパス。
※冒頭のWikipediaのページは少数の例外を除いて各都市のリンク先に経緯度が載っているのでスクリプトですぐ抽出できた

マジンラーニング

タイトルオチ。
前回使ったSSDで今度は学習させた。漫画ドラゴンボールの魔人ブウの検出。

データ

ブウにはいくつかの形態がある。次の分類でやった。

  • 無邪気:太ってるやつ
  • 純粋悪:がりがりのやつ
  • 悪、純粋:マッチョのやつ

悪と純粋は形態が違うのだが、画像のアノテーションデータを作っているうちに後半面倒くさくなった画像数も少ないし、頭身はともかく体格は似通っているので一緒にした。
学習データ、テストデータともにLabelImgでアノテーションデータを作成。LabelImgはPascalVOCかYOLOのフォーマットで出力できる。今回は前者を選択。

すべての画像についてアノテーションが終わったらssd_kerasリポジトリにあるget_data_from_XML.pyを参考にして、pklファイルを作る。これで準備完了。

学習

同じくssd_kearsにあるSSD_training.ipynbを参考にして実装。コードはこちら。
画像の数が絶対的に足りていないので、前回使ったネットワークの重みをベースにfine tuningした。実写画像の学習済みデータに対してイラストのfine tuningがどこまで有用なのか知らないが他に選択肢がない。細かいチューニングも未実施。どういうハイパーパラメータが何に効くのか知らない。職人芸の世界という印象。

ノートPCのCPU Corei7-4800MQだけで60epoch、全部で約280枚の画像ファイル(8割を学習データ、残りをテストデータに利用)の学習に八時間くらいかかった。
損失関数のグラフ。過学習ですね。

結果

訓練/テストデータにない画像で検出させてみる。コード。
ラベルはMujaki、JunsuiAku、Akuの三つ。


やはり無邪気以外は学習データの数が圧倒的に足りていないので検出精度が悪い。他の画像でも、特に純粋悪はほとんど検出できなかった。

何もわかっていない中で適当に動かしてみるのはやめて、以下の本で少しお勉強することにした。

PythonとKerasによるディープラーニング

PythonとKerasによるディープラーニング

画像にクラウドを載せる

ドッグイヤーを超える速さで驀進するAI界隈では何百周遅れなのかわからないが、機械学習で遊び始めた。まずは学習結果の単なる利用者になる。

すやり霞という大和絵の表現技法がある。こんな感じで横にびよーっと伸びている雲のような何か。


画像に写っている物体を検出した結果に対して、その物体に重ならないようにすやり霞のようなものを描く。
機械学習のライブラリはTensorFlow+Keras、物体の検出はSSDの学習結果として公開されているサンプルを利用した。

Jupyter Notebookでいろいろ試してみた。ipynbファイルはこちら。下の元画像はすべてPixabayからCC0のものをダウンロードして使った。

ラスト二枚のイラストも人だと検出している。一番下は人または馬かもみたいなことになっているが。
SSDの論文を見ると公開サンプルの学習用データセットには以下を使っていると記載がある。

  • Microsoft COCO trainval35k
  • VOC 2007 trainval, test
  • VOC 2012 trainval

これらの中にはイラストはないようだが、手元でいくつか試すとタッチが比較的リアルに近い場合は割と検出してくれた。特徴量としても似ているのか(よくわかってない)。

付点音符の点を増やす

付点音符の点の数についてLilypondのメモ。
七個くらいなら問題なく重ねられた。MIDI出力もできた。


\version "2.16.2"

\paper {
  #(set-paper-size "a7" 'landscape)
}

\header {
  title = "複付点"
  subtitle = " "
  tagline = ##f
}

\score {
  \relative c' { \tempo "Marcato" 4 = 120 \time 4/4  
                  c1.......( f'128) |
                  c,16 d16. e16.. f16... g16.... a16..... b16...... c16....... d |
                  c1
                  \bar "|." } 
  \layout { }
  \midi { }
}


実用上は三個までで充分。

落ち武者

チェスのナイトで落ち物ゲーム。タイトルは後付け無理矢理。


同色のナイトが四つ以上連なる場合に消えるというよくある派生だ。目が光っている駒が次に消える。


オレンジで囲んだ駒二つが落下したところ。二色の駒で、広い範囲で連なりができる。


どの駒がどこまで連なるか見極めるのは難しいが、八方に桂馬飛びするため、適当にやっていても駒が増えると割と簡単に*1消える。
八方に連なるパターンを意識して組むのは大変そうだけど、頭の中にパターン認識の回路が出来上がれば速く判断できるようになるのでは*2。でも連鎖となると相当難しそうだ。

ゲームとして面白くするにはもっとひねりがいりそう。

*1:気付いていないところで

*2:某ぷよでさえあまりやったことなくて実感がない

EyeProofで視線を可視化する

The Eye Tribe Trackerは今の時点では開発者向けパッケージしかなく、視線のデータを使って何かをするアプリケーションは自分で作る必要があった。しかし、つい最近、The Eye Tribe Trackerと連携して視線のデータを解析・可視化するウェブアプリEyeProofがスタートした。今はまだクローズドβだけれど、一般公開されれば、デバイスさえ買えばプログラムを一行も書かずにヒートマップやスキャンパスを作ることができる。

参加者に応募していたら当選して招待メールが届いたので、使ってみた*1。

操作はとても簡単。

  • まず、対象とする画像*2ã‚’EyeProofにアップロードして、呈示と切り替えのタイミングを設定する。
  • 次に、PCにThe Eye Tribe Trackerを繋いで、専用のクライアントソフトを起動して、呈示される画像を眺める。
  • 最後に、いくつか用意されている解析方法のどれを適用するかを選ぶ。これだけで視線を可視化できる。専門知識はいらない。

複数の被験者でデータを採って、その統計情報を取得することもできるようだ。
下の画像は、解析方法にスキャンパスを選んで可視化したところ。


結果

ヒートマップ:どこをどのくらい見ていたか






スキャンパス:視線の軌跡





昔、ITU Gaze Trackerというソフトと自作プログラムでスキャンパスのようなものを作ったことがあるが、それよりずっと簡単に綺麗な結果が得られるようになった。
視線追跡が身近になってきた。いろいろなデータが見たい。

*1:クローズドβの利用規約は公開されていないが、運営者にメールして、サービスや使った結果についてブログに書いていいと許可を得た

*2:これを書いている時点では対応しているデータは画像だけだが、今後はウェブサイトや動画にも対応する予定らしい

百人一首の形態素解析

Ubuntu 14.04 LTSがリリースされた。
少し前には中古和文UniDicも更新されていた。
何の関係性もないけど、新しい仮想環境を作って遊んだ。

前にやったときの記事:MeCabで古文の形態素解析。


さて、小倉百人一首 第85番を解析にかけたところ、いきなり、夜もすがら、とそのまま出てきた。
解析に失敗しているのではと疑って意味を検索した(無教養)。

echo "夜もすがら 物思ふころは 明けやらで 閨のひまさへ つれなかりけり"  | mecab -d ./unidic-mecab/
夜もすがら	副詞,*,*,*,*,*,ヨモスガラ,夜もすがら,夜もすがら,ヨモスガラ,ヨモスガラ,和,夜もすがら,ヨモスガラ,ヨモスガラ,ヨモスガラ,*,*,*,*,*,*,"0,3",*,*
物	名詞,普通名詞,サ変可能,*,*,*,モノ,物,物,モノ,モノ,和,物,モノ,モノ,モノ,*,*,*,*,*,*,"2,0",C4,*
思ふ	動詞,一般,*,*,文語四段-ハ行,連体形-一般,オモウ,思う,思ふ,オモウ,オモフ,和,思ふ,オモウ,オモフ,オモウ,*,*,*,*,*,*,2,C1,*
ころ	名詞,普通名詞,副詞可能,*,*,*,コロ,頃,ころ,コロ,コロ,和,ころ,コロ,コロ,コロ,コ濁,基本形,*,*,*,*,1,C3,*
は	助詞,係助詞,*,*,*,*,ハ,は,は,ワ,ハ,和,は,ワ,ハ,ハ,*,*,*,*,*,*,*,"動詞%F2@0,名詞%F1,形容詞%F2@-1",*
明け	動詞,一般,*,*,文語下二段-カ行,連用形-一般,アケル,明ける,明け,アケ,アケ,和,明く,アク,アク,アク,*,*,*,*,*,*,0,C2,*
やら	動詞,非自立可能,*,*,文語四段-ラ行,未然形-一般,ヤル,遣る,やら,ヤラ,ヤラ,和,やる,ヤル,ヤル,ヤル,*,*,*,*,*,*,0,C4,*
で	助詞,接続助詞,*,*,*,*,デ,で,で,デ,デ,和,で,デ,デ,デ,*,*,*,*,*,*,*,動詞%F2@0,*
閨	名詞,普通名詞,一般,*,*,*,ネヤ,閨,閨,ネヤ,ネヤ,和,閨,ネヤ,ネヤ,ネヤ,*,*,*,*,*,*,"1,2",C3,*
の	助詞,格助詞,*,*,*,*,ノ,の,の,ノ,ノ,和,の,ノ,ノ,ノ,*,*,*,*,*,*,*,名詞%F1,*
ひま	名詞,普通名詞,形状詞可能,*,*,*,ヒマ,暇,ひま,ヒマ,ヒマ,和,ひま,ヒマ,ヒマ,ヒマ,*,*,*,*,*,*,0,C3,*
さへ	助詞,副助詞,*,*,*,*,サエ,さえ,さへ,サエ,サヘ,和,さへ,サエ,サヘ,サエ,*,*,*,*,*,*,*,"名詞%F2@1,動詞%F2@0,形容詞%F2@-1",*
つれなかり	形容詞,一般,*,*,文語形容詞-ク,連用形-補助,ツレナイ,つれない,つれなかり,ツレナカリ,ツレナカリ,和,つれなし,ツレナシ,ツレナシ,ツレナシ,*,*,*,*,*,*,3,C1,*
けり	助動詞,*,*,*,文語助動詞-ケリ,終止形-一般,ケリ,けり,けり,ケリ,ケリ,和,けり,ケリ,ケリ,ケリ,ケ濁,基本形,*,*,*,*,*,*,*
EOS


百首すべて解析して、品詞と単語の出現頻度をmatplotlibで円グラフにした。

品詞の出現頻度。n=550。


単語の出現頻度。
上位11位以下を「その他」にすると助詞と助動詞しか上位に来ない。


自立語と付属語で分けた場合。
自立語はまだ「その他」が圧倒的に多い。


品詞ごとに分けた場合。
名詞が一番豊か。
形状詞って何だろう。


ところで、今回の結果では接続詞として唯一「さて」が出ているが、さすがに和歌に接続詞はないだろうと思って原文を検索してみたら、

思ひわび さてもいのちは あるものを 憂きにたへぬは 涙なりけり

の副詞「さても」を誤って解析していることが分かった。
この単語しか確認していないけど、他にも誤りはあると思った方がいい。高校生が古文の宿題を解くのに全面的に信頼して使ってはいけない。