EDSR : 画像の超解像処理を行う機械学習モデル

Kazuki Kyakuno
axinc
Published in
6 min readMay 17, 2021

ailia SDKで使用できる機械学習モデルである「EDSR」のご紹介です。エッジ向け推論フレームワークであるailia SDKailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。

EDSRの概要

EDSR(Enhanced Deep Residual Networks for Single Image Super-Resolution)は2017年7月に公開された機械学習モデルです。EDSRを使用することで、画像の解像度を上げることができます。

出典:https://arxiv.org/pdf/1707.02921

EDSRのアーキテクチャ

EDSRはSRResNetの後に提案された超解像モデルです。SRResNetは処理時間とメモリ消費量の問題をうまく解決しましたが、SRResNetで使用しているResNetは画像分類のためのモデルアーキテクチャであり、超解像には最適ではありません。

そこで、EDSRでは、ResNetから不要なモジュールを削除することで、より超解像に最適なモデルを構築します。例えば、BatchNormalizationはDeep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurringの研究に基づき、range flexibilityを失ってしまうため、削除しています。

出典:https://arxiv.org/pdf/1707.02921

また、ResNetにはFeature Mapの数を増加させた場合、学習が不安定になるという問題があります。この問題に対して、Inception-v4で提案されたfactor = 0.1のResidual Scalingを導入します。

3.3. Scaling of the Residuals

また、フィルターの数が1000を超えると、残差が不安定になり、学習の初期段階でネットワークが「死んで」しまうことがわかりました。つまり、平均プーリングの前の最後の層が、数万回の反復後にゼロだけを生成し始めるのです。これは、学習率を下げても、この層に追加のバッチ正規化を加えても、防ぐことができませんでした。そこで、残差をスケールダウンしてから前の層の活性化に加えると、学習が安定することがわかりました。一般的には、0.1から0.3の間のいくつかのスケーリングファクターを選んで、蓄積された層の活性化に追加される前に残差をスケーリングしました(図20参照)。

EDSRでは、Redisual blockに対して、最後のConvolution layerの出力に0.1のconstant scaling layerを導入します。これにより、学習を安定化します。

シングルスケール向けモデルであるEDSRの構成は次のようになります。

出典:https://arxiv.org/pdf/1707.02921

また、従来の超解像向けの機械学習モデルは学習がセンシティブであり、少しのアーキテクチャの変更が画質に大きな影響を与えるという問題がありました。そのため、同じモデルを使っても重みの初期値や学習時のテクニックによって大きな画質差が生まれます。EDSRでは、x2で学習した後、x2の重みでx3とx4を学習することで、安定した学習を実現しています。

学習にはDIV2Kデータセットを使用しています。

EDSRの使用方法

下記のコマンドで動画に対して超解像処理を行うことができます。scaleには拡大率を2〜4で指定します。

$ python3 edsr.py -v input.mp4 -s output.mp4 --scale 3

実行例は下記です。

EDSRはその特性上、画像にノイズが含まれる場合に、ノイズを強調する傾向があります。そのため、評価用に画像を縮小する場合は平均縮小などの高品質な方法を使用してください。

ax株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。ax株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。

--

--

Kazuki Kyakuno
axinc
Editor for

CTO — ax Inc. , Managing Director — AXELL