ゴッホ風の絵に変換するところを理解したい、といいつつ、その部分よりも前の方でつまずいているのだが、仕事でやっているわけでもないので、まあいいとしよう。
当面の目標は、畳み込みニューラルネットのフィルタはどうなっているのか調べる、だ。
[1508.06576] A Neural Algorithm of Artistic Style
こちらが元の論文らしい。
なんとなく眺めてみたが、なんとなくフィルタについては書いていないようだ。
となると、やはり元のVGGというニューラルネットがフィルタの情報を持っているんじゃなかろうか。
[1409.1556] Very Deep Convolutional Networks for Large-Scale Image Recognition
VGGは、Visual Geometry Groupの略だと思われる。
オックスフォード大学のマークが入っている。
PDFだと「Department of Engineering Science」と書いてあるので、理工学部みたいなものかな?
1ページ目にリンクが書いてある。
Modelsの16-layer modelが、使っているネットワークのモデルのようだ。
Caffe用だ。
64チャネルは最初のレイヤーだから、これの一番上にあるやつだろう。
bottomがinputで、topがoutput。つまり、"data"は画像で、このレイヤーで計算した結果が"conv1_1"になる。
レイヤーは畳み込みの"CONVOLUTION"で、出力は64枚、kernel_sizeが3なのでフィルタは3x3、出力がフィルタ後も同じサイズになるようにpadを1にしている。
フィルタ後も同じサイズにしたい場合、Cで言えば(int)(フィルタサイズ / 2.0)にするのだ(フィルタサイズは普通奇数なので)。
そういうのはわかるけど、ここにもフィルタについては情報がない。
これだけで動くのだったら、フィルタの情報は"CONVOLUTION"が持っていることになるのか。
Theanoによる畳み込みニューラルネットワークの実装 (1) - 人工知能に関する断創録
こちらを読むと、フィルタは学習して得られると書かれている。
なるほど、どこに学習する要素があるのかと思ったけど、ここだったのか。
そりゃ、話が出てこないわけだ。
畳み込みニューラル・ネットワークの使い方、わかりますか? | Altera - SDJ JP
ここの「トレーニング」にフィルタ係数のことが書かれている。
アルテラ社だからFPGAの話だけかと思ったけど、こういう記事もあるのですな。
この記事はわかりやすいと思う。
畳み込みニューラルネットが、どういう技術で構成されているか書かれているし、どここが学習する要素なのか書いてあった。
最後の方の「何か納得がいかない」には共感を得るだろう。
やはりここでも、フィルタというかカーネルは学習から得られるものとなっている。
ゴッホ風の絵でも「予め物体認識で訓練したニューラルネットを使用し」とあるが、カーネルの学習も行わないものなのだろうか?
それとも、そこは入力画像によって学習するのが当たり前のものなのだろうか。
アルテラ社の記事では、カーネルの部分と、最後のパターン解釈でニューラルネットを使うように書かれているので、「カーネルの部分は毎回学習させるけど、最後のパターン解釈は訓練済みを使う」みたいなこともできるのかもしれん。
なんとなくだけど、全部セットになって「学習」という気がするので、一部だけってのはないんじゃなかろうか。
フィルタの部分だけで誤差関数を決めるのって、できないと思うのだ。
よくわからないところも残っているが、気になったらまた考えることにしよう。
ここまでが、アルゴリズムの説明の「モデル」のVGG 16-layerの話だ。
ようやくここから、CNNで得られた中間層の結果をどう使っていくのかという話になる。
先が長い・・・。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。