前回記事の続編です。日立のCMOS Annealingマシンを利用するためのチュートリアル「画像のノイズリダクション」の解説を読み、それに従って、自分でイジングモデルの設定を行い、実機での実行結果を(少しだけですが)検討しました。(その後、図1に関して若干変更してあります。)
■2値画像のノイズ低減をイジングモデルで解く
この問題をどのようにイジングモデルへ導くかは、参考資料[1]に丁寧に書かれており、すんなり納得できると思います。実は、これは、イジングモデルに取り組む初心者にとって絶好の例題なのです!
というのも、(詳細は[1]にありますが)導かれたエネルギー関数(コスト関数)の形が、そのままダイレクトにイジングモデルを表すことになるからです。他の問題では、そうは行かずに、苦労することになります。2値画像のノイズ低減のためのエネルギー関数は、図1の上部に示した通りです。
■スマホアプリから日立Annealing Cloud Webを使って解く
前回と同様、小生の作成したスマホアプリから、Annealing Clowd Webへイジングモデルの設定値(スピン結合関係、相互作用係数、外部磁場係数など)を送って、結果を得ることができました。図1にその一例を示します。
128x128の2値画像に対して、ここでは、ランダムに50個のノイズを載せました。多くのノイズが除去されていることがわかります。(特に黒電話受話器と持ち手周辺などです。)画像やノイズのタイプで除去性能はかなり変わるでしょう。また、エネルギー関数の第1項と第2項の効果のバランスを取るためのこのパラメータηの値にも敏感なようです。アニーリングは、ヒューリスティックなので、そういうものでしょう。難しい問題では、最適解でなくても、かなり良い解を欲しいというケースも多いです。
(補足)白黒の2値画像なのですが、ピクセルに対応するスピンの向き(南北)のイメージを鮮明にするため、ノイズ除去後の画像は、青(南向き)と赤(北向き)にしました。
■浮動小数点版GPU32bit Floatマシンも使ってみるこのノイズリダクションでは、一般にη=2 or 3が推奨されるようです。しかし、図1に示した通り、小生が採用した簡単な画像では、η=1が良い結果を出しました。そこで、さらに、η=0.75としたところ、結果が異常になりました。ここまで使ってきたマシンは整数版だったのですね。でも、ちゃんと浮動小数点版もありました!ケースバイケースなので、断定的には何とも言えませんが、小生の画像に限れば、η=0.75がさらに良い結果を出すようです。図2がそれです。
(注)画素(スピン)間の結合をどのように与えるかに関してはこちらの(その3)をご覧ください。
参考資料
[1] Hitachi Annealing Cloud Web
https://annealing-cloud.com/ja/index.html
0 件のコメント:
コメントを投稿