2012/09/11

人工知能超解像プログラム NeuronDoubler v3.05公開

v3.10を公開したのでそちらをご利用下さい。

人工知能超解像プログラム NeuronDoublerのv3.05を公開しました。
バージョンはマイナーチェンジですが、画質とパフォーマンスがかなり向上しました。

NeuronDoubler v3.05

主な変更点(v3.03->3.05)

・学習エンジンの改良等により超解像処理の画質を向上
・各種最適化により最大で40%の処理速度向上
・メモリ管理を改善し使用メモリ量を最大数百MB削減

・ニューラルネットワークのデータサイズを若干削減
・32bit環境での動作性向上
・空きメモリの動作環境を1GB->512MBに変更
・平坦部の拡大アルゴリズムをバイキュービック法からLanczos3に変更
・縮小処理アルゴリズムを平均画素法からLanczos3に変更
・PSNRだけ稼ぐ機能を追加
・その他内部的な細かい最適化と改良

画質の向上について

学習エンジンを改良した効果でニューラルネットワークモデルの出来が良くなり、画質が良くなりました。
 v3.05での超解像処理結果(写真)
 v3.03での超解像処理結果(写真) 
v3.05での超解像処理結果(ロゴ)
v3.03での超解像処理結果(ロゴ)
メモリ使用率について

メモリ消費が減ったので32bit環境でも十分に動作するようになったと思います。以下がJVMのメモリ使用量の検証結果です。
・500x500pixelから2000x2000pixelへ拡大:約400MB(ピーク値)
・1280x809pixelから5120x3236pixelへ4倍拡大:約1.4GB(ピーク値)

Lanczos3の実装と効果について

Java APIのアフィン変換で選べる画像の補間方法はニアレストネイバー/バイリニア/バイキュービックの3種だけなので、やむなく自前でLanczos3での拡大縮小処理を実装しました。
面倒だと思い今まで後回しにしていたのですが、実装するだけなら手間は少なかったです。

これにより固定ロジック部分での拡大縮小処理がバイキュービック/平均画素法からLanczos3になりました。
拡大に関しては元々平坦部のみ処理していたのでLanczos3の効果は殆どありませんでした。(無視できる程度)
縮小処理は平均画素法よりハードな描写になって解像感が向上しました。

入手先&ダウンロード

Google ドキュメントに置いておきます。

リンク先の[ダウンロード]ボタン又は左上のボタンのFile->Downloadを選択してください。

ファイルサイズが大きいのでウイルススキャンの上限サイズ関係の下記メッセージが出ますが、
>Sorry, we are unable to scan this file for viruses.
>The file exceeds the maximum size that we scan.

"Download anyway"をクリックしてダウンロードして下さい。

NeuronDoubler_v305_full.zip (77.5MB)

v3.10を公開したのでそちらをご利用下さい。