2012/06/07

人工知能超解像プログラム NeuronDoubler のアルゴリズム(動作原理)

私(Wirewriggle)が独自に開発した人工知能超解像プログラム NeuronDoubler の拡大アルゴリズムを公開します。
基本的には2012/06/04に公開したv3.00の配布パッケージに同梱の解説と同じ物です。


NeuronDoubler Super-resolution algorithm



超解像とニューラルネットワーク

画像をきれいに拡大するには、縮小により失われた情報を補間する必要があります。しかし縮小された時点でサンプリング定理により高周波成分は失われています。(折り返した高周波成分が含まれる事もありますが、画質低下の原因となるので、まともな縮小アルゴリズムでは低域通過フィルタにより除去されています)
この為、低解像度の画像一枚から高精細画像を得るためには何らかの方法で失われたピクセルを推定する必要があります。一般的な一枚超解像では失われたピクセルを数式等により求め、再度縮小しても同じになるようにパラメータを制御しています。

一方、NeuronDoublerでは生物の脳神経を模した人工知能の一種であるニューラルネットワークを使用して、縮小された画像から元の高精細画像を類推しています。(画像縮小関数の逆関数のようなものを構成しています)

ニューラルネットワークは機械学習を行うことで様々な機能を実現可能で、特に古典的なプログラムが苦手とするパターン認識や類推、連想等の曖昧な判断を必要とする用途で優れた性能を発揮します。 一枚超解像のような解答が複数存在する上に曖昧な処理には人工知能が適している訳です。

NeuronDoublerに搭載されているニューロンの数は昆虫程度で少なく感じますが、昆虫が生命活動や社会生活においての多岐にわたる思考をこなしているのに対し、NeuronDoublerではその全てを超解像処理を行う為だけに使用しているので素子数としては十分です。

ニューラルネットワーク内の区画分け

単体のニューラルネットワークで全知全能の人工知能を実現するのは現実的ではありません。 生物の脳のように学習過程で処理の種類毎に担当する部位が発現すると理想的ですが、技術的に困難です。そこでNeuronDoublerでは用途が超解像処理である事を前提に、斜めエッジを司る部位、垂直エッジを司る部位など、予め64区画にニューラルネットワークを分割した設計になっています。

ハードコーディングロジックとニューラルネットワークの併用

ニューラルネットワーク自体は多目的な用途に使用可能ですが、画像処理を行う上での基本的な動作を行わせるにはハードコーディングされた定形処理が最適な部分もあります。NeuronDoublerでは私が独自に開発したニューラルネットワークとハードコーディングロジックの組み合わせで超解像処理を行います。ニューラルネットワークが大脳、ハードコーディングロジックが小脳のような関係となっています。

ハードコーディングロジックの働き

・補間するピクセル周辺の切り出し
・信号レベルの正規化と復元
・画像の向きと階調の正規化と復元


ニューラルネットワークで処理を行う為にデータを準備します。 また各種の正規化を行うことで、一見異なるようでも数学的に等価なパターンをまとめてニューラルネットワークの学習と判断の難易度を軽減します。ニューラルネットワークでの処理が終わったデータは逆正規化してもとに戻します。

・画像のタイプの分類
・平坦部・グラデーションの処理
・画像の縮小処理


  一般の超解像には画像を平坦部、エッジ、ディティールの3種に分類し別アルゴリズムで処理するものがありますが、NeuronDoublerでは[平坦部以外は全てエッジである]との考え方に基づき超解像処理を行います。またエッジの特徴(向き、傾斜具合、平坦さ)を分析、分類してニューラルネットワークの各区間に渡す事で動作を補助しています。

平坦な部分は超解像処理の必要がないので固定ロジックにより滑らかに拡大処理します。またネットワークの構造上ネイティブの倍率は固定ですが、一度大きく拡大後に固定ロジックで縮小処理する事で自由な倍率で出力できるようにしています。

・ニューラルネットワークの出力エラー補正

稀にニューラルネットワークが明らかに間違った解答を出すことがありますが、その対策も実装されています。NeuronDoublerのニューラルネットワーク出力は元のピクセル一つ分ではなく多少広い範囲をカバーして、一つのサブピクセルに対しオーバーラップさせて複数の結果を得る設計になっています。最低4つの結果の最大最小値を除いた平均値を出力として利用することで、より精度の高い超解像を行います。
ヒューマンエラーを機械が防止するような仕組みに近いものとなっています。


画像版(配布パッケージ同梱版)

上述のアルゴリズム解説の画像版です。(Google ドキュメントに置いてあります)

neurondoubler_Algorithm_20120604.png

上のリンクの画像版 NeuronDoubler アルゴリズム解説は、下記の2条件を満たしていれば転載して頂いて問題御座いません。
・内容を改変せず丸ごと利用する
・公序良俗に反しない用途