ならば

2018-06-17 魔人を学習

[]マジンラーニング

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

データ

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

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

悪と純粋は形態が違うのだが、画像のアノテーションデータを作っているうちに後半面倒くさくなった画像数も少ないし、頭身はともかく体格は似通っているので一緒にした。

学習データ、テストデータともにamazon:DRAGON BALL カラー版 魔人ブウ編から取った。このために買って、ブウの描かれているページのスクリーンショットを撮って、LabelImgでアノテーションデータを作成。LabelImgはPascalVOCかYOLOのフォーマットで出力できる。今回は前者を選択。

f:id:naraba:20180617194318p:image

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

学習

同じくssd_kearsにあるSSD_training.ipynbを参考にして実装。コードはこちら

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

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

損失関数のグラフ。過学習ですね。

f:id:naraba:20180617194502p:image

結果

訓練/テストデータにない画像で検出させてみる。コード

ラベルはMujaki、JunsuiAku、Akuの三つ。

f:id:naraba:20180617194807p:image


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

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

2018-05-19 クラウドサービス

[]画像にクラウドを載せる

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

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

f:id:naraba:20180519225857p:image


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

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

f:id:naraba:20180519225847p:image

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

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

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

2015-10-17 収束する音価

[]付点音符の点を増やす

付点音符の点の数についてLilypondのメモ。

七個くらいなら問題なく重ねられた。MIDI出力もできた。

f:id:naraba:20151017075844p:image

\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 { }
}

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

usumaruusumaru 2016/09/19 15:28 面識や紹介もなく、突然このようなご連絡を差し上げるのはたいへん失礼であることは重々承知しておりますが、掲載記事に関する子書籍の執筆についてご相談させていただけると幸いです。

narabanaraba 2016/09/21 12:08 narabanow(at)gmail.com までメールいただけますか。

2015-04-05 空から降る一億の騎士

[]落ち武者

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

D


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

f:id:naraba:20150405171608p:image:w600


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

f:id:naraba:20150405171736p:image:w600


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

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

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

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

2014-06-25 モナリザ、江戸兵衛、見知らぬ女

[]EyeProofで視線を可視化する

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

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

操作はとても簡単。

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

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

f:id:naraba:20140625221038p:image:w500


結果

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

f:id:naraba:20140625220541p:image:w500

f:id:naraba:20140625220918p:image:w500

f:id:naraba:20140625220950p:image:w500



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

f:id:naraba:20140625220542p:image:w500

f:id:naraba:20140625220919p:image:w500

f:id:naraba:20140625220951p:image:w500



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

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

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