2016/5/2~5/8
SRCNN実装
勉強だけでは実力は身につかないので、実践して見ようという事で、waifu2xで資料があることからSRCNNをTheanoを用いて自分で実装してみることに。
*このプロジェクトはtheanonSRとしてgithubで公開済み。
Padding問題の根本原因を見つけた。→TheanoのConv2dにPadding任せちゃうとダメ。0パディングされちゃう。代わりにnumpy使って自分でPaddingするよう実装変更した。
32x3x3_32x3x3_32x3x3_1x3x3にてチェック中。→なんかただパラメータ値によって誤差関数がランダムにFluctuateしてるだけな感じで、モデルの表現に限界がある気がする。うーむ、どうやったらパフォーマンスもっとよくなるのかなぁ。。。
最近読んでる論文集
SRCNNを良くするためのアイデアソースとするため。
1.OSD
・http://ee.caltech.edu/Babak/pubs/conferences/00298572.pdf
・https://papers.nips.cc/paper/647-second-order-derivatives-for-network-pruning-optimal-brain-surgeon.pdf
・https://papers.nips.cc/paper/749-optimal-brain-surgeon-extensions-and-performance-comparisons.pdf
結局OBDはCNNには必要ない気がしてきた。
CNNにおけるUnitとは、Feature mapのことで、この場合Feature map数はあまり多くないから、それぞれ実際に”Pruning = そのチャンネルにおけるWすべての要素を0にする”して試してみればいいんじゃないかって気がしてきた。計算量的にわざわざHessianを計算する必要はないと思う。
2.ディープネットワークを用いた大域特徴と局所特徴の学習による白黒写真の自動色付け
→ここで紹介されていたLayerのFusion はSRCNNでも是非試してみたい!!!
- http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/ja/
- http://hi.cs.waseda.ac.jp/~iizuka/projects/colorization/data/colorization_sig2016.pdf
Tesla GPUで3週間トレーニングしたらしい、、、ここまでDeepなネットワークは自分の環境ではできそうにもない。。。Batch Normalizationの論文読み始めた。SRCNNに実装・有効活用できるかな? - (参考のみ)http://arxiv.org/pdf/1603.08511.pdf
3.Batch Normalization
ニューラルネットがディープになっていったときに、Gradient descentが機能し続けるように入力データを平均からのずれで整形する方法。
・http://jmlr.org/proceedings/papers/v37/ioffe15.pdf