2012/06/04

人工知能超解像プログラム NeuronDoubler

人工知能超解像プログラム NeuronDoubler 更新:2015/09/23

Artificial intelligence super-resolution Program : NeuronDoubler


スクリーンショット





開発背景

デジタル画像の普及と高精細化に伴い、画像や画面の解像度は大小様々な種類が存在しています。
個人用途のPC用ディスプレイだけでも640x480から2560x1600までの幅があります。
デジカメも30万画素から2400万画素まで進化を続けて来ました。
そんな中で以下のような場面に遭遇した方は多いかと思います。

・ガラケー用の待ち受け画像がスマートフォンでは綺麗に見えない
・昔のデジカメ写真や写メが小さい
・800x600等の古い壁紙をHDモニタで綺麗に表示したい
・モニタでは綺麗でも印刷すると荒さが目立つ
・昔のお宝GIF画像を拡大したい
・写真をトリミングやデジタルズームしたら荒くなってしまった
・カタログを作成していたら画像のサイズがまちまちで困った

上記のような問題の解決のためには小さい画像を綺麗に拡大する必要があります。
対応する技術としてはPS3やREGZAで有名となった一枚超解像(高品質アップコンバータ)があります。
しかし超解像と呼べるようなPCソフトは少なく、フリーウェアでは品質が不十分な物が多いです。また上述の家電製品は動画用のためリアルタイム処理できる程度の計算量です。だからといって仕事でもないのに難しくて高価な業務用ソフトの購入はハードルが高いのが現状です。


NeuronDoublerとは

NeuronDoublerは私(Wirewriggle)が独自に開発した人工知能を利用した超解像アルゴリズムで、元の画像の情報を最大限に生かして綺麗に画像を拡大するフリーウェアです。
元画像の情報を失わせるノイズ除去や見栄えさせるだけの安直な色調補正・アンシャープマスクは行わず、自然にディティールを保ったまま拡大します。

写真やイラスト等、オールジャンル対応かつパラメータを調整する必要はありません。その為色々な要素が混在した画像でも簡単に処理出来ます。

また拡大以外に画像の縮小も可能です。その場合は超解像により一度アップサンプリング処理した後に目的のサイズまでLanczos3アルゴリズムで縮小します。


学習型人工知能について

NeuronDoublerでは機械学習可能な人工知能の一種であるニューラルネットワークを搭載しています。既に最適なパフォーマンスが得られるように学習及び調整済ですので、そのまま使用可能です。学習用プログラム及び学習アルゴリズムは非公開となっています。

ニューラルネットワークについては静岡理工科大学 総合情報学部 菅沼研究室のサイトをご覧下さい。基本原理の他シグモイド関数の微分式やバックプロパゲーション法の誤差修正量の計算など参考にさせて頂きました。有り難う御座います。


開発歴

NeuronDoubler開発開始当初はPentium4系シングルコアの時代でメモリも256MB程度と少なく、アルゴリズムの必要とする演算量に対し十分な処理を行うことができませんでした。しかしクアッドコアでメモリも32GBの現在ではPCの性能が数十倍に向上し、数万規模の脳神経モデルをシミュレーション可能となりました。またアルゴリズムを工夫する事で目標である高品質な超解像画像を生成出来るようになったため、ついに公開できるものとなりました。

2006-2007年頃 v1.xx (想定した品質を達成できず没案となり非公開)
2009-2010年頃 v2.xx (想定した品質を達成できず没案となり非公開)
固定ロジックによるニューラルネットワークの補助を実装する

2012/06/04 v3.00 初公開
v2.xxの数々のバグを修正、加えてネットワーク構造を根本的に変更することで大幅に性能向上した為、公開決定

2012/06/07 v3.02 バグ修正(主にプレビュー機能周り)
2012/08/12 v3.03 メモリ管理の改善とマイナーバグ修正
2012/09/11 v3.05 画質とパフォーマンスの大幅向上
2012/12/20 v3.10 画質の向上等
2013/05/05 v3.11 バグ修正
2014/02/23 v3.20 複数ファイルの一括バッチ処理に対応
2014/03/01 v3.21 透過PNG/GIF対応、高速化

2014/xx/xx v4.xx 想定性能を達成できずキャンセル

2015/09/23 v5.00 画質の大幅な向上他、改良多数


対応ファイル形式・言語

読み込み:Jpeg/Bmp/Png/Gif
*透過PNG(インデックスカラー、フルカラー)に対応
*透過GIFに対応

書きだし:Bmp/Png/Gif/Jpeg
透過画像の出力はPNGのみサポートしています。

GUI:英語+日本語ポップアップヘルプ
コンソール出力:日本語

CLI対応(コマンドラインオプションはReadmeを参照して下さい)


マニュアル類

アルゴリズム(動作原理)

導入マニュアル

NeuronDoublerでBATコマンドからのJVM起動が上手くいかない場合の対処法について

JRE/JDK 1.6/1.7/1.8で発生するWin32ShellFolder2.javaの不具合について

MSE・PSNRによる画像拡大アルゴリズム10種・ソフト8種、計14パターンの画質評価結果 *v5.00での結果

PSNRによる画像拡大アルゴリズム7種の画質評価結果 *v3.10での結果(古いです)

NeuronDoubler v3.10の超解像サンプル画像とLanczos-3、Bicubic、100x100倍 超解像ソフトとの画質評価  *v3.10での結果(古いです)

サンプル画像(640->1920)  *v3.10での結果。(古いです)
[File]->[Download]で一括ダウンロード可能です。

サンプル画像(x4倍拡大) *v3.00-3.03での画質です(古いです)

サンプル画像(x2倍拡大)  *v3.00-3.03での画質です(古いです)

NeuronDoubler紹介映像を作成


動作環境

開発難易度を下げるためにJAVAでコーディングしているのでWindows以外にLinuxやMac OS Xでも動作すると思われます。
jarファイルを直接実行せずに、なるべく大きなヒープメモリをJVMに指定して起動して下さい。
*環境によっては直接実行しても使用できます。

最低動作環境
・Java SEの動作する環境(Windows他)
・512MB 以上の空き物理メモリ

*以下の条件でテスト済です(v5.00)
・500x500pixelから2000x2000pixelへの4倍拡大(25万画素→400万画素):
 使用メモリ 約500MB(ピーク値)
・640x640pixelから5120x5120pixelへの8倍拡大(41万画素→2621万画素):
 使用メモリ 約1.1GB(ピーク値)

*少なくとも以下の解像度までは正常に動作することは確認済です。(v5.00)
・1200x969pixelから19200x15504pixelへの16倍拡大(116万画素→29768万画素)


ダウンロード

現在の最新版はv5.00です。基本的に最新版をご利用下さい

Googleドライブ(旧Googleドキュメント)に置いておきます。
リンク先の上の方に出ているダウンロードボタン(アイコン)を選択してください。

NeuronDoubler_v500_release.zip (23.3MB)