第8回PeerCast忘年会ハッカソンでしたことのまとめ兼その発表資料です。
chainer-goghとは
https://github.com/mattya/chainer-gogh
機械学習によって二つの絵を合成するもの。
合成すると・・・

今更、何したの?
TensorFlowで再実装した
(TensorFlowは、去年、グーグルが公開した機械学習とかに強いライブラリ)
chainer-goghのソースをよく読んでそれを置き換えるだけ。
一応、部分的に同程度の性能を出すことができた。
とりあえず、期間中に食べていた賞味期限切れの焼きプリン

特徴量にNINを使って変換

ドヤ!
chainer-goghでは・・・

完全に一致!
仕組み
多くの機械学習では、損失関数という関数を作って、損失が少なくなるようにパラメータを変更することで、目的のパラメータを手に入れる。今回は、絵をRGBの値で表現したものをパラメータとして学習する。
損失関数は・・・
元画像と画風画像、それぞれからどれだけ特徴量が離れているかを表す関数を作り、その和を損失関数とした。
学習の設定は、最初は自分で適当にしていたけど、最終的に、諦めてchainer-goghの値を使った。
苦労したところ
- 最初、NINではなくVGGで作り始めたけど、学習時間がかかって困った。(ハッカソン以前の出来事)
- NINなどはcaffeのモデルを転用するが、それが正しく使えているか、確認が困難だった。
- 画像がRGBで扱うのか別の形式で扱うのか分かりづらかった。
試行錯誤中の画像
タイプミスで画風画像を使っていなかったときの画像
その他: VGGでも動きました。(25分くらい)

今後は・・・
- 次回きゃすけっとのネタにする
- 今回できたものの高速化を試みる
- NIN、VGG以外のモデルも気になる
- 関連した他アルゴリズムを試したい
こんなことができたらいいな
おしまい

おまけ
第8回PeerCast忘年会ハッカソンの風景(主催のシュールさんの配信画面)