こんにちは,DSOC R&Dグループ インターン生の内田です. 前回の記事が割合好評とのことで,この度めでたく連載を持つことになりました. 記事を読んでいただいた方や記事のレビューをしていただいた方に感謝申し上げます. これからも読んでいただける記事を書けるように頑張っていきます!
さて,前回はPyTorchを用いてSRCNN[*1][*2]を実装してみました. SRCNNの発表は2014年であり,かなり古めのネットワークと言えます. 今回は,2016年に発表されたモデルを対象に,SRCNNをどのようなアプローチで改善していったかについてまとめたいと思います.
【再訪】SRCNN
SRCNNは3層の畳み込みニューラルネットワーク(CNN)であり,少ない計算量で超解像を行うことができます. 辞書ベースの手法が主流であった中で,CNNを導入したSRCNNは大きなインパクトを与えました. とはいえ,実はSRCNNもスパースコーディングから着想を得た手法であり,3層の畳み込みはそれぞれ ①パッチ抽出と低解像度空間におけるスパース表現,②獲得した表現の高解像度空間に対する非線形写像, ③高解像度画像の再構成 と見なせると論文中で述べられています.
従来手法を踏襲しつつ新しいアプローチを提案する素晴らしい研究ですが,ネットワークサイズや学習時間からは,安定した学習に対する知見が少なかったという背景も見て取れます. SRCNN発表後,深層学習を応用した研究は加速度的に広まっていき,多層化や学習の高速化などの知見も多く溜まっていきました. 2016年頃には,それらの知見が超解像の分野に還元され始め,研究をまた次のステージへと推し進めていくこととなりました.
*1:Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang. "Learning a Deep Convolutional Network for Image Super-Resolution", Proc. of European Conference on Computer Vision (ECCV), 2014
*2:Chao Dong, Chen Change Loy, Kaiming He, Xiaoou Tang. Image Super-Resolution Using Deep Convolutional Networks, IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI), 2015