JP5922202B2 - 半導体装置、画像セグメンテーション方法、および画像処理装置 - Google Patents
半導体装置、画像セグメンテーション方法、および画像処理装置 Download PDFInfo
- Publication number
- JP5922202B2 JP5922202B2 JP2014176126A JP2014176126A JP5922202B2 JP 5922202 B2 JP5922202 B2 JP 5922202B2 JP 2014176126 A JP2014176126 A JP 2014176126A JP 2014176126 A JP2014176126 A JP 2014176126A JP 5922202 B2 JP5922202 B2 JP 5922202B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- spin
- value
- interaction
- pixel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/162—Segmentation; Edge detection involving graph-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/143—Segmentation; Edge detection involving probabilistic approaches, e.g. Markov random field [MRF] modelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N10/00—Quantum computing, i.e. information processing based on quantum-mechanical phenomena
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20076—Probabilistic image processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20112—Image segmentation details
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Software Systems (AREA)
- Computational Mathematics (AREA)
- Evolutionary Computation (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Image Processing (AREA)
- Image Analysis (AREA)
Description
本発明は、相互作用モデルの計算を行う装置に関するものである。
現在、コンピュータアーキテクチャの主流はノイマン型である。ノイマン型アーキテクチャの基本動作は命令列の逐次的な実行にある。これまで、コンピュータの性能向上は主としてクロック周波数の向上に依っていた。しかし、近年では頭打ちになったクロック周波数にかわって、マルチコア化による並列処理で性能向上を実現する方策が主流になっている。
マルチコア化による並列処理では、逐次的な命令列から並列実行可能な箇所を見出し(並列性の抽出)、並列実行することで性能向上を図る。しかし、逐次的なアルゴリズムを命令列として書き下したプログラムから並列性を抽出することは容易ではない。
このような状況を鑑みると、今後、コンピュータの性能向上を図っていくためには、従来のように逐次的な命令列の実行を基本とするのではなく、本質的に並列な情報処理に移行していく必要がある。そのためには、従来の逐次的な命令列による問題の記述方法に替わって、本質的に並列な情報処理を実現するために適した問題の記述方法が必要となる。
種々の物理現象や社会現象は相互作用モデルで表現することができる。相互作用モデルとは,モデルを構成する複数個の主体(entity)あるいはノード(node)と,ノード間の相互作用,さらに必要であればノード毎のバイアスで定義されるモデルである。物理学や社会科学では種々のモデルが提案されているが,いずれも相互作用モデルの一形態であると解釈できる。また,相互作用モデルの特徴として,ノード間の影響を2個のノード間の相互作用に限定している(2体間の相互作用)ことがあげられる。例えば,宇宙空間にある惑星の力学を考えてみると,惑星というノードの間に万有引力による相互作用がある点で相互作用モデルの一種とも解釈できるが,惑星間の影響は2個の惑星間にとどまらず,3個以上の惑星が互いに影響し合って複雑な挙動を示す(いわゆる3体問題や多体問題と言われる問題になる)。
また,生物学の世界では脳をモデル化したニューラルネットワークが相互作用モデルの一例である。ニューラルネットワークは神経細胞のニューロンを模した人工ニューロンをノードとして,人工ニューロン間はシナプス結合という相互作用を持つ。また,各ニューロン毎にバイアスを与える場合もある。社会科学の世界では,例えば人間のコミュニケーションを考えると,人間というノードと言語や通信で成される相互作用があることは容易に理解できよう。また,各人間には個別にバイアスがあることも想像できる。そのため,人間のコミュニケーションを,相互作用モデルという点で共通なイジングモデル等に模してその特性を明らかにしようという研究もなされている(例えば,特許文献2(特開2012−217518))。
相互作用モデルの一例であるイジングモデルは、磁性体の振舞いを説明するための統計力学のモデルであり、磁性体の研究に用いられている。イジングモデルはサイト(+1/−1の2値をとるスピン)間の相互作用として定義される。トポロジが非平面グラフになるイジングモデルの基底状態を求めることは、NP困難問題であることが知られている。イジングモデルは空間方向に広がった相互作用係数で問題を表現するため、本質的な並列性を利用した情報処理を実現できる可能性がある。
ところで、イジングモデルの基底状態を求めることは、前述した通りNP困難問題であるから、ノイマン型コンピュータで解くことは計算時間の面で困難を伴う。ヒューリスティックを導入して高速化を図るアルゴリズムも提案されているが、ノイマン型コンピュータではなく物理現象をより直接的に利用した計算、すなわちアナログコンピュータでイジングモデルの基底状態を高速に求める方法が提案されている。
このような装置として、例えば特許文献1に記載の装置がある。このような装置では、解くべき問題に対応した並列度が必要になってくる。イジングモデルの場合では、基底状態を探索すべきイジングモデルのスピン数に対応して、スピンや相互作用を実現する素子が必要となる。例えば特許文献1に記載の装置ではスピンとレーザーを対応させており、スピン数に比例した数のレーザーが必要となる。すなわち、多数の素子を実現できるスケーラビリティの高さが必要となる。そのため,イジングモデルの基底状態を高速に求める装置は半導体基板上に単位構成要素となる回路を多数個並べたものであることが好ましい。高いスケーラビリティを得るためにはこのような設計方針が有効であることは,現在広く用いられているDRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)のような半導体メモリの例からも明らかであろう。
さらに,このようなイジングモデルの基底状態を高速に探索できる装置を実現する上では,そのアプリケーションも合わせて考えなければならない。また,アプリケーションの特性に応じて,イジングモデルの基底状態探索を行う装置の設計に反映させるなど,アプリケーションと装置の協調設計が重要になってくる。
アプリケーションとしては,従来型のコンピュータでは計算量が多く困難もしくは多大なリソースを要するものが有望である。また,前述したような装置は従来型コンピュータより小型,低消費電力であることも期待できるため,各種機器に組み込んで用いる,いわゆる組み込みシステムへの応用が期待できる。
このような特性を持つアプリケーションとして画像処理がある。画像処理は一般的に計算量が大きい処理が多いため,従来,画像処理向け専用プロセッサを開発して用いるアプローチは多くあった。特に,近年需要が高まっているのが,医療向けの画像処理(これ以降,医用画像処理と述べる)である。例えば診断においては,CT(Computer Tomography)で患者の体内を撮影し,その画像から腫瘍などの患部を抽出するという画像セグメンテーションが必要となる。また,将来的には患者の体内をCTで見ながら放射線治療を行うような,医用画像処理をリアルタイムで行う必要性も出てくるであろう。このように,画像セグメンテーションに代表される画像処理を,リアルタイムかつ小型,低消費電力な装置で実現できることは産業上の有用性が高く,前述したようなイジングモデルの基底状態探索を高速に行う装置に期待されるものである。
半導体装置の技術を適用して作成した固体素子で、相互作用モデルの計算を行う構成を実現することを目的とする。
上記課題を解決するための、本発明の一側面は半導体装置として提供される。この半導体装置は、相互作用モデルの1つのノードの状態を示す値を記憶する第1のメモリセルと、1つのノードに接続された他のノードからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、第1のメモリセルの値を固定するためのフラグを記憶する第3のメモリセルと、他のノードの状態を示す値及び前記相互作用係数に基づいて、1つのノードの次状態を示す値を決定する第1の演算回路と、フラグの値に応じて前記次状態を示す値を前記第1のメモリセルに記録するか否かを決定する第2の演算回路と、を有するユニットを複数備える。
本発明の他の側面は、画像に含まれる複数の画素から、ユーザの指定したシード画素の特性(特徴)に類似する特性を有する画素を抽出する画像セグメンテーション方法である。この方法は、画像に含まれる複数の画素から、ユーザの指定したシード画素の特性に類似する特性を有する画素を抽出する画像セグメンテーション方法であって、相互作用モデルの1つのノードの値を記憶するメモリセルと、1つのノードに相互作用を及ぼす他のノードからの相互作用係数を記憶するメモリセルと、1つのノードのバイアス係数を記憶するメモリセルと、1つのノード及び他のノードからなる系の状態を示す関数に基づいて、1つのノードの次状態を決定し書き換える論理回路と、を有するユニットを複数有するアレイを用いる。そして、画像に含まれる複数の画素を、複数のユニットの1つのノードに対応付け、1つのノードの所定回数の書換えの後に1つのノードの値を読み出し、セグメンテーションの結果とする。
本発明の他の側面は、入力装置、出力装置、記憶装置、第1および第2の処理装置を有する画像処理装置である。第1の処理装置は、相互作用モデルの注目ノードの値を記憶するメモリセルと、ノードに相互作用を及ぼす隣接ノードからの相互作用係数を記憶するメモリセルと、注目ノード及び隣接ノードからなる系の状態を示す関数に基づいて、注目ノードの次状態を決定し書き換える論理回路と、を有する単位ユニットを複数有するアレイを備える。第2の処理装置は、記憶装置によって、入力装置から入力された画像を記憶させる機能と、出力装置によって、入力装置から入力された画像を表示させる機能と、入力装置によって、表示させた画像の所定の領域をシード領域としてユーザに指定させる機能と、画像に含まれる複数の画素を、複数の単位ユニットの注目ノードに対応付ける機能と、指定された画像の領域中の画素に対応する注目ノードを、第1の状態に設定する機能と、論理回路によって、注目ノードを所定回数書き換える機能と、注目ノードの所定回数の書換えの後に注目ノードの値を読み出し、第1の状態に設定された注目ノードに対応する画素を、ユーザが指定したシード領域に属するものとして出力装置に表示する機能を備える。
半導体装置の技術を適用して作成した固体素子で、相互作用モデルを表す関数において、所望の値をとる状態の解の探索を行う構成を実現することができる。
上記した以外の課題、構成、及び効果は、以下の実施形態の説明により明らかにされる。
物理学の世界で代表的な相互作用モデルの例として,イジングモデルをあげることができる。イジングモデルとは+1/−1(ないしは上,下など)の2状態を取るスピンをノードとして,2個のスピン間の相互作用を決める相互作用係数と,個々のスピンに対するバイアスである外部磁場係数でモデルが定義される。本実施例では、相互作用モデルの計算を行う手段として、イジングモデルを扱うことができる装置であるイジングチップを例に説明を行う。もっとも、本発明は、相互作用モデルにおいて、モデルを表現する関数の値を所望の値に収束させた際に、当該関数の変数がとる値を計算する技術一般に適用可能なものであり、応用がイジングモデルに限定されるものではない。また、実施例中の装置は便宜的にイジングチップと呼称しているが、イジングモデル以外の相互作用モデルに適用することを妨げるものではない。
本実施例の一例は半導体装置として提供される。この半導体装置は、イジングモデルの所定スピン(注目スピン)の値を記憶するメモリセルと、注目スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピンの値を記憶するメモリセルの値を固定するためのフラグを記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定する論理回路からなるスピンユニットを複数備えている。複数のスピンユニットはアレイ構造を形成している。
本実施例の他の例は、画像に含まれる複数の画素から、ユーザの指定したシード画素の特性(特徴)に類似する特性を有する画素を抽出する画像セグメンテーション方法である。
この方法は、イジングモデルの注目スピンの値を記憶するメモリセルと、スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定し書き換える論理回路と、を有するスピンユニットを複数有するスピンアレイを用いる。
そして、画像に含まれる複数の画素を、複数のスピンユニットの注目スピンに対応付け、注目スピンの所定回数の書換えの後に注目スピンの値を読み出し、セグメンテーションの結果とする。
本実施例の他の例は、入力装置、出力装置、記憶装置、第1および第2の処理装置を有する画像処理装置である。
第1の処理装置は、イジングモデルの注目スピンの値を記憶するメモリセルと、スピンに相互作用を及ぼす隣接スピンからの相互作用係数を記憶するメモリセルと、注目スピンの外部磁場係数を記憶するメモリセルと、注目スピン及び隣接スピンからなる系のエネルギー関数に基づいて、注目スピンの次状態を決定し書き換える論理回路と、を有するスピンユニットを複数有するスピンアレイを備える。
第2の処理装置は、記憶装置によって、入力装置から入力された画像を記憶させる機能と、出力装置によって、入力装置から入力された画像を表示させる機能と、入力装置によって、表示させた画像の所定の領域をシード領域としてユーザに指定させる機能と、画像に含まれる複数の画素を、複数のスピンユニットの注目スピンに対応付ける機能と、指定された画像の領域中の画素に対応する注目スピンを、第1の状態に設定する機能と、論理回路によって、注目スピンを所定回数書き換える機能と、注目スピンの所定回数の書換えの後に前記注目スピンの値を読み出し、第1の状態に設定された注目スピンに対応する画素を、ユーザが指定したシード領域に属するものとして出力装置に表示する機能を備える。
また、第2の処理装置は、入力された画像のデータとシード領域のデータから、セグメンテーションを実行するためのイジングモデルを作成し、イジングモデルを構成するサイト(スピン)と係数をスピンアレイにマッピングする機能を有してもよい。このとき、マップはイジングモデルのトポロジを維持するものとする。
以下、本発明の実施例を図面により説明する。前半で相互作用モデルの基底状態探索を行う、イジングチップの基本構成の実施例を説明する。後半でイジングチップの応用についての実施例を説明する。
以下、本発明の実施例を図面により説明する。前半で相互作用モデルの基底状態探索を行う、イジングチップの基本構成の実施例を説明する。後半でイジングチップの応用についての実施例を説明する。
ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略する。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
本明細書で引用した刊行物、特許および特許出願は、そのまま本明細書の説明の一部を構成する。
(1)イジングチップの基本構成
以下で、本発明の相互作用モデルの基底状態探索を行うデバイスの具体的な実施例であるイジングチップについて説明する。イジングチップは、第1〜第7の2値または多値(3値以上を多値と呼ぶ)のメモリセルを備えるユニットを複数備える。ある一つのユニット(注目ユニット)には、他の第1〜第5のユニットの第7のメモリセルのデータが入力され、当該他のユニットからの5つのデータと注目ユニットの第1〜第6のメモリセルのデータに基づいて演算を行い、演算結果に従って注目ユニットの第7のメモリセルのデータを書き換える。このとき、イジングチップは、当該ユニットの第7のメモリセルのデータと、他の第1〜第5のユニットの第7のメモリセルのデータが同時に書き換えられないように制御する。以上の構成のイジングチップに、イジングモデルのトポロジに従って、メモリセルのデータとユニットの接続関係を規定する。
以下で、本発明の相互作用モデルの基底状態探索を行うデバイスの具体的な実施例であるイジングチップについて説明する。イジングチップは、第1〜第7の2値または多値(3値以上を多値と呼ぶ)のメモリセルを備えるユニットを複数備える。ある一つのユニット(注目ユニット)には、他の第1〜第5のユニットの第7のメモリセルのデータが入力され、当該他のユニットからの5つのデータと注目ユニットの第1〜第6のメモリセルのデータに基づいて演算を行い、演算結果に従って注目ユニットの第7のメモリセルのデータを書き換える。このとき、イジングチップは、当該ユニットの第7のメモリセルのデータと、他の第1〜第5のユニットの第7のメモリセルのデータが同時に書き換えられないように制御する。以上の構成のイジングチップに、イジングモデルのトポロジに従って、メモリセルのデータとユニットの接続関係を規定する。
(1−1)解くべき問題のイジングモデルの基底状態探索問題への変換
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは典型的には、+1/−1(または0/1、または上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎に付随する外部磁場係数で定義される。
イジングモデルは磁性体の振舞いを説明するための統計力学のモデルである。イジングモデルは典型的には、+1/−1(または0/1、または上/下)の2値をとるスピンと、スピン間の相互作用を示す相互作用係数、および、スピン毎に付随する外部磁場係数で定義される。
イジングモデルは与えられたスピン配列、相互作用係数、および、外部磁場係数から、その時のエネルギーを計算することが出来る。イジングモデルのエネルギー関数E(σ)は一般的に次式(数1)で表わされる。なお、σi,σjはそれぞれi番目とj番目のスピンの値、Ji,jはi番目とj番目のスピンの間の相互作用係数、hiはi番目のスピンに対する外部磁場係数、<i,j>は隣接する2つのサイトの組合せ、σはスピンの配列を表わすものとする。
イジングモデルの基底状態を求めるというのは、イジングモデルのエネルギー関数を最小化するスピンの配列を求める最適化問題である。例えば、因数分解や巡回セールスマン問題など、一見すると磁性体と何ら関係の無い問題をイジングモデルに変換することができる。そして、変換して得られたイジングモデルの基底状態は、元の問題の解に対応している。このことから、イジングモデルの基底状態を探索することのできる装置は、汎用的な用途に利用可能なコンピュータであると言える。
本実施例において、解きたい問題からイジングチップの設定までを通して説明するために、例題としてグラフの最大カット問題を示す。
図1は、イジングチップが解くグラフ問題の一例を説明するグラフ図である。
まず、グラフの意味を説明する。図1のグラフG=(V,E)は頂点の集合V={A,B,C,D}と、辺の集合E={a,b,c,d,e,f}から構成される。各辺は重み係数を持っており、a,b,c,d,e,fと書いたときにその重み係数を表わすものとする。
図2に示すように、このグラフの頂点Vを2つの部分集合V’とV’\Vに分割することをカットと呼ぶ。V’\VはVからV’を除いた集合を示す。ここで、分割されたV’とV’\Vの間を跨っている辺(図2の例ではc,d,e,f)をカットを跨いでいるエッジ、もしくは、カットエッジと呼ぶ。重みが無いグラフの場合にはカットエッジの本数、図2のように重み付きのグラフの場合にはカットエッジの重みの総和を、カットの大きさと呼ぶ。図2の例では、カットの大きさはc+d+e+fである。なお、図1、及び、図2は無向グラフの例であるが、有向グラフに拡張することも出来る。
最大カット問題とは、グラフG=(V,E)を与えられた時、カットの大きさを最大化するカットを求めることである。換言すれば、カットの大きさを最大化するように、頂点の集合VをV’とV’\Vにグループ分けすることと言っても良い。
図3に最大カット問題の具体的な例を示す。この例では頂点VをV’={A,B}とV’\V={C,D}に分けるようにカットした時に、カットの大きさw(V’)=2となり、このグラフにおける最大カットとなる。
図2に戻ってグラフのカットとイジングモデルの関係について説明する。図2のグラフでは、カットの大きさw(V’)=c+d+e+fである。ここで、図2のグラフをイジングモデルと見なすと、辺E={a,b,c,d,e,f}の重みは、イジングモデルの相互作用係数となる。そして、頂点V={A,B,C,D}はイジングモデルではそれぞれ+1/−1の2値の状態を持つスピンとなる。ここで、カットした頂点V’に属する頂点は+1のスピン、V’\Vに属する頂点は−1のスピンとする。つまり、A=+1,B=+1,C=−1,D=−1とする。このときのイジングモデルのエネルギーは、(数1)に示したエネルギー関数に沿って計算すると、−(a+b−c−d−e−f)=−a−b+c+d+e+fとなる。ところで、カットの大きさw(V’)=c+d+e+fであることから、このエネルギー関数は(数2)のように書くことが出来る。
図2の例に沿って具体的に計算してみると、−((a+b+c+d+e+f)−2(c+d+e+f))=−(a+b−c−d−e−f)となることが確かめられよう。(数2)を見るとカットの大きさw(V’)を最大化すれば、エネルギーE(σ)も大きくなることが分かる。つまり、カットの大きさを最大化すると、イジングモデルのエネルギーは最大化される。逆に、カットの大きさを最小化すると、イジングモデルのエネルギーは最小化される。つまり、イジングモデルの基底状態探索は、最小カットを求めることに対応している。そこで、最小カットを求めるためには、最大カット問題の重みの符号を全て反転させることで、最小カットを求めることに変換する。
図4に図3に示した最大カット問題を、イジングモデルの基底状態探索問題に変換した例を示す。図4の各辺についている相互作用係数JAB、JAC、JAD、JBC、JBC、JCDを見ると、図3の重みの符号を反転したものになっている。これが前述した最大カット問題から最小カット問題への変換に対応する。
図5に、図4のイジングモデルの基底状態を探索し、エネルギーが最小となるようにスピンσA,σB,σC,σDを決定したものを示す。なお、図5の例ではσA=+1,σB=+1,σC=−1,σD=−1だが、イジングモデルでは全てのスピンの状態を反転させたものも同じエネルギーとなるので、σA=−1,σB=−1,σC=+1,σD=+1も基底状態となる。図5の例をみると、カットV’に属する頂点はスピンの値が+1となり、V’\Vに属する頂点はスピンの値が−1となっている。このように、イジングモデルの基底状態探索を行い、スピンの値で頂点をグループ分けすることで、最大カット、または、最小カットを実現することができるのである。
(1−2)イジングチップの構成
次に、図4に示したイジングモデルの基底状態探索を実現する装置であるイジングチップと、その制御方法を示す。ここでは、3次元格子のイジングモデルの基底状態探索を実現する装置の例を示す。しかし、本発明は3次元格子のイジングモデルに限られるものではなく、任意のトポロジ、任意のスピン数に対して適用可能である。
次に、図4に示したイジングモデルの基底状態探索を実現する装置であるイジングチップと、その制御方法を示す。ここでは、3次元格子のイジングモデルの基底状態探索を実現する装置の例を示す。しかし、本発明は3次元格子のイジングモデルに限られるものではなく、任意のトポロジ、任意のスピン数に対して適用可能である。
図6は、本実施例のイジングチップ100の構成図の例である。イジングチップ100はスピンアレイ110、I/Oドライバ120、I/Oアドレスデコーダ130、および、相互作用アドレスデコーダ140から構成される。
本実施例ではイジングチップ100は現在広く用いられているCMOS集積回路として実装されることを想定して説明するが、他の固体素子でも実現可能である。本実施例では、スピンアレイ110は半導体メモリアレイで構成されている。メモリの種類は問わないが、ここでは高速動作可能なSRAM(Static Random Access Memory)を用いた例で説明する。イジングチップ100は、スピンアレイ110にリード/ライトを行うための、SRAM互換インタフェースによって駆動可能である。SRAM互換インタフェースは、アドレスバス190、データバス191、R/W制御線193、および、I/Oクロック192を含む。
イジングチップ100では、イジングモデルのスピンσi、相互作用係数Ji,j、および、外部磁場係数hiを、全てスピンアレイ110内のメモリセルに記憶する情報で表現する。これらの値のスピンアレイのメモリセルへのリード/ライトは、SRAM互換インタフェースで行う。
基底状態を探索すべきイジングモデルをイジングチップ100に設定するために、メモリセルにはアドレスが付与されている。また、スピンアレイ110のスピンσi、相互作用係数Ji,j、および、外部磁場係数hiは、メモリセルのアドレスに対応付けられている。任意のアドレスのメモリセルに情報をリード/ライトする手法は、公知の半導体メモリの制御技術と同様である。
なお、SRAM互換インタフェースを構成するアドレスバス190、データバス191、および、R/W制御線193は、I/Oクロック192に入力されるクロックに同期して動作する。但し、本発明においてインタフェースが同期式である必要性は無く、非同期式のインタフェースでも良い。本実施例では、同期式のインタフェースであるという前提で説明を行う。
また、イジングチップ100は基底状態探索を行うために、スピンアレイ110の内部でスピン間の相互作用を実現する。ここで、相互作用とは、スピンアレイ110のメモリセルの値を読み出し、読み出した値からエネルギーを計算し、エネルギーが小さくなるようなスピンの値を決定し、決定したスピンの値をメモリセルに書き込む一連の処理をいう。
この相互作用を外部から制御するのが相互作用制御インタフェースであり、具体的には相互作用を行うスピン群を指定するアドレスを相互作用アドレス180で入力し、相互作用クロック181に入力されるクロックに同期して相互作用を行う。
なお、相互作用は必ずしもクロック同期回路で実現される必要はなく、非同期回路であっても構わない。この場合、相互作用クロック181の役割はクロックの入力ではなく、相互作用の実行を許可するイネーブル信号であるものとする。相互作用制御インタフェースについても必ずしも同期式である必要はなく非同期式のインタフェースでも良いが、本実施例では同期式のインタフェースを用い、相互作用が相互作用クロック181に同期して行われるという前提で説明を行う。
図6の乱数発生器150、ビット調整期151、乱数発生クロック160については後述する。また、相互作用アドレスデコーダ140についても詳細を後述する。
(1−3)イジングチップを備えた情報処理装置の構成
このイジングチップ100を1個、または、複数個用いて情報処理を実現するが、そのためには前述したSRAMインタフェースを制御しなければならない。
このイジングチップ100を1個、または、複数個用いて情報処理を実現するが、そのためには前述したSRAMインタフェースを制御しなければならない。
図7は図6のイジングチップを制御する情報処理装置の構成の一例を説明する図である。この例では、イジングチップ100は情報処理装置200の一部として利用される。
情報処理装置200の典型例としては、現在一般的に用いられているパーソナルコンピュータに、イジングチップ100で構成されたアクセラレータを装着したものである。情報処理装置200は、中央処理装置(CPU)210、一時メモリ(RAM)220、記憶装置(HDD)260、を有し、これらがシステムバス230で結合されている。
加えて、システムバス230にイジングチップコントローラ250が接続され、その先に1個ないしは複数個のイジングチップ(図7の例では、2個のイジングチップ100−1、及び、イジングチップ100−2を有する。これ以降、2個のイジングチップを特に区別する必要の無いときには、単にイジングチップ100と称する。)を持つ。このイジングチップコントローラ250とイジングチップ100がアクセラレータに相当するものであり、例えばPCI Express(登録商標)のようなペリフェラル拡張用インタフェースに挿入して使う拡張カードの形態を取ることができる。
イジングチップコントローラ250はシステムバス230(例えばPCI Express(登録商標)やQPI)のプロトコルを、イジングチップ100のインタフェースに合せて変換するものである。情報処理装置200のCPU210上で動作するソフトウェアは、一般的には特定のアドレスに対してリード/ライトを行うことで(いわゆるMMIO、Memory Mapped I/O)、イジングチップコントローラ250を経由して、イジングチップ100を制御することが出来る。
図7の情報処理装置200でイジングチップ100に問題を解かせようとする場合には、例えばHDD260に問題データを格納しておく。また、問題データをイジングモデルの基底状態探索問題に変換するためのプログラムやイジングチップ100を制御するためのプログラムが、RAM220に格納され、CPU210で実行される。
(1−4)イジングモデルの構造
イジングチップ100内のスピンアレイ110は、イジングモデルに対応し、これをシミュレートするものである。スピンアレイ110は、1個のスピン(注目スピン)とそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニットを基本構成単位としている。
イジングチップ100内のスピンアレイ110は、イジングモデルに対応し、これをシミュレートするものである。スピンアレイ110は、1個のスピン(注目スピン)とそれに付随する相互作用係数、及び、外部磁場係数の保持と、基底状態探索処理を実現するスピンユニットを基本構成単位としている。
図8はスピンユニット300を複数個並べることで、3次元格子状のトポロジを持つイジングモデルを構成する例を示している。図8の例は、3(X軸方向)×3(Y軸方向)×2(Z軸方向)の大きさの3次元格子である。
座標軸の定義は図示した通り、図面右方向をX軸、図面下方向をY軸、図面奥行き方向をZ軸としている(以下の図面でも同様)。この座標軸は実施例の説明上便宜的に必要なだけであり、発明とは関係しない。3次元格子以外のトポロジ、例えばツリー状のトポロジなどを利用する場合には、座標軸とは別にツリーの段数等で表現することになる。図8の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
図8に示す1個のスピンユニット300は隣接するスピン(例えば隣接するスピンが5個の場合)σj,σk,σl,σm,σnの値が入力される。また、スピンユニット300はスピンσiと外部磁場係数hiに加え、前記した隣接するスピンとの相互作用係数であるJj,i,Jk,i,Jl,i,Jm,i,Jn,i(隣接する5スピンとの相互作用係数)を保持するメモリセルを有している。
ところで、イジングモデルは一般的に無向グラフで表現される相互作用を有している。前記した(数1)では、相互作用を表わす項として、Ji,j×σi×σjがあるが、これはi番目スピンからj番目スピンへの相互作用を示している。この時、一般的なイジングモデルではi番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を区別することはない。つまり、Ji,jとJj,iは同一である。しかし、本発明のイジングチップ100では、このイジングモデルを有向グラフに拡張し、i番目スピンからj番目スピンへの相互作用と、j番目スピンからi番目スピンへの相互作用を非対称にすることを実現している。これにより、モデルの表現能力が高まり、多くの問題をより小規模のモデルで表現することが可能になる。
そのため、1個のスピンユニット300をi番目スピンσiを含むユニットと考えた時に、このスピンユニットが保持する相互作用係数であるJj,i,Jk,i,Jl,i,Jm,i,Jn,iは、隣接するj番目、k番目、l番目、m番目、n番目のスピンσj,σk,σl,σm,σnから、i番目スピンσiへの相互作用を決めるものである。
このことは、図8において、スピンユニット300に含まれている相互作用係数が対応する矢印(相互作用)が、図示されているスピンユニット300の外部のスピンから、スピンユニット300の内部のスピンに向かっていることに対応している。
(1−5)スピンユニットの回路構成
図8で示されたイジングモデルの基底状態を求めるため、スピンユニット300を固体素子で構成する。本実施例では、半導体メモリおよび論理回路で構成されたスピンユニット300を複数個並べて、スピンアレイ110を構成する。スピンユニット300の構成の一例を図9と図10を用いて説明する。
図8で示されたイジングモデルの基底状態を求めるため、スピンユニット300を固体素子で構成する。本実施例では、半導体メモリおよび論理回路で構成されたスピンユニット300を複数個並べて、スピンアレイ110を構成する。スピンユニット300の構成の一例を図9と図10を用いて説明する。
図9は、スピンユニットの回路構成例について説明する図である。図9には、スピンユニット間の相互作用を実現するための回路を図示している。
図10は、図9の構成において、スピンユニットが有するメモリセルにイジングチップ100外からアクセスするためのインタフェースである、ワード線とビット線に注目して図示したものである。
1個のスピンユニット300は、図9と図10の双方の構成を備えるが、配線の接続関係を理解しやすくするため、便宜上図9と図10に分けて説明している。
なお、図9の相互作用を実現するための回路において図示されているインタフェースであるEN,NU,NL,NR,ND,NF,Nを、複数のスピンユニット間でどのように結線するかについては、後に図15を参照して説明する。また、図10のワード線及びビット線を複数のスピンユニット間でどのように結線するかについては、後に図13を参照して説明する。
スピンユニット300は、イジングモデルのスピンσi、相互作用係数Jj,i、……Jn,iおよび、外部磁場係数hiを保持するために、1ビットのメモリセルを複数個備えている。この1ビットのメモリセルは図9、図10中に、N(701),IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1(以上702)として図示されているものである。なお、IS0とIS1、IU0とIU1、IL0とIL1、IR0とIR1、ID0とID1、および、IF0とIF1はそれぞれ2個1組で役割を果たすものであるため、それぞれまとめてISx,IUx,ILx,IRx,IDx,および、IFxと略記する。
スピンユニット300が有する各メモリセルの構造の一例としては、公知のSRAMメモリのセルを利用することができる。すなわち、メモリセルはCMOSインバータ2個で構成されるデータ保持部を有する。インバータと直列に接続されるパスゲートトランジスタのゲートをワード線で制御し、ソース・ドレイン経路をビット線に接続することで、データ保持部へのデータ読み書きを実現する。もっとも、メモリセル構造はこれに限られず、少なくとも2値を記憶できる構成であればよい。例えば、DRAMやフラッシュメモリのような他のメモリを用いることができる。
図9の例では、各メモリセルは1ビット格納できるSRAMメモリセルとしている。しかし、多値化したメモリセルを用いてもよい。多値化したメモリセルは、物理的に1つのメモリセルを用いてもよいし、複数の1ビットメモリセルを用いて複数ビットを格納できるように構成してもよい。メモリセルを多値化すると、使用できる係数の値の自由度が広がる。一方、回路規模や処理時間は拡大する。したがって、解くべき問題の種類や用途に応じて、適切なメモリを選択すればよい。
ここで、スピンユニット300はi番目のスピンを表現するものとして説明を行う。メモリセルNはスピンσiを表現するためのメモリセルでありスピンの値を保持する。スピンの値はイジングモデルでは+1/−1(+1を上、−1を下とも表現する)であるが、これをメモリセルの2値である1/0に対応させる。本明細書では、+1を1、−1を0に対応させることにするが、逆の対応でもかまわない。
図11を用いて、図9および図10のスピンユニット300が有するメモリセルと、図8に示したイジングモデルのトポロジとの対応関係を示す。ISxは外部磁場係数を表現する。また、IUx,ILx,IRx,IDx,IFxはそれぞれ相互作用係数を表現する。IUxは上側のスピン(Y軸方向で−1)、ILxは左側のスピン(X軸方向で−1)、IRxは右側のスピン(X軸方向で+1)、IDxは下側のスピン(Y軸方向で+1)、IFxは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)との相互作用係数を示している。また、イジングモデルを有向グラフとして捉えた場合に、あるスピンから見ると他のスピンが自スピンに及ぼす影響の係数を持つことになる。自スピンが他のスピンに与える影響の係数は、それぞれの他のスピンに属する。すなわち、このスピンユニット300は最大で5個のスピンと接続される。
本実施例のイジングチップ100では、外部磁場係数、及び、相互作用係数は、+1/0/−1の3値に対応する。そのため、外部磁場係数、および、相互作用係数を表わすためには、少なくともそれぞれ2ビットのメモリセルが必要となる。図9、図10で示すように、ISx,IUx,ILx,IRx,IDx,IFxは、末尾の数字が0と1の2つのメモリセル(例えばISxの場合にはIS0とIS1)の組合せで、+1/0/−1の3値を表現する。例えば、ISxの場合には、IS1で+1/−1を表現し、IS1が1の時は+1,0の時には−1を表現する。これに加えて、IS0が0の時には外部磁場係数を0と見なし、IS0が1の時にはIS1で決まる+1/−1のいずれかを外部磁場係数とする。外部磁場係数が0の時は外部磁場係数をディセーブルしていると考えれば、IS0は外部磁場係数のイネーブルビットであると言うことができる(IS0=1の時に、外部磁場係数がイネーブルされる)。相互作用係数を表現するIUx,ILx,IRx,IDx,IFxも同様に係数とビットの値を対応させている。
図10はスピンユニット300のメモリセルと、ワード線及びビット線の関係を示す図である。
スピンユニット300内のメモリセルN,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1は、それぞれイジングチップ100の外部からリード/ライト可能でなければならない。そのために、図10に示すように、スピンユニット300はビット線410とワード線420をそれぞれ有している。先に述べたように、図10では末尾の数字が0と1の2つのメモリセルのセットで、+1/0/−1の3値を表現しているが、4値以上の係数を表現したい場合には、セットを構成する1ビットメモリセルの数を増やし、ビット線方向に追加すればよい。
スピンユニット300は、半導体基板上にタイル状に並べてビット線410とワード線420を接続する。図6に示すI/Oアドレスデコーダ130とI/Oドライバ120で駆動、制御、読み出しすることで、一般的なSRAMと同様に、スピンユニット300内のメモリセルをイジングチップ100のSRAM互換インタフェースでリード/ライトすることが出来る。
以上の構成により、図8に示した3×3×2の3次元格子イジングモデルを、イジングチップ100上のメモリにマッピングすることができる。
図12にイジングチップ100のメモリマップ2000の例を示す。図8のイジングモデルに対応した、18個のサイトに対応する18個のブロックを示している。各ブロックは、図9に示した、N,IS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1に対応する13個のビットを含む。
(1−6)スピンアレイ内のスピンユニット配置
図13は、イジングチップ100上のスピンユニット300の配置の一例を説明する図である。スピンアレイ110の構成を、半導体装置としてのレイアウトの観点から説明している。
図13は、イジングチップ100上のスピンユニット300の配置の一例を説明する図である。スピンアレイ110の構成を、半導体装置としてのレイアウトの観点から説明している。
図14は図8のスピンアレイに、スピンユニット300を識別する符号「N000」等を表記したものである。NxyzというようにX軸、Y軸、Z軸上の位置によって符号を付与している。本実施例のスピンアレイは3次元格子のトポロジを持つため、2次元平面上に回路を構成する半導体装置として実現するためには、レイアウト上の工夫が必要となる。スピンユニットは、イジングモデルのトポロジを維持した状態で、半導体基板上の2次元平面に配置、接続する。
図12、図13では、図14中のスピンユニット300の符号「N000」等と対応する符号を表記してあり、図12、図13上で表現されているスピンユニット300が、図14の3次元格子のトポロジでどの頂点に対応するかが示されている。図13からわかるように、本実施例では、3×3×2の3次元格子頂点を2次元平面上に配置するために、X軸方向の格子頂点配列の間隔にZ軸方向の格子頂点配列の各格子頂点を挿入するように配置している。
すなわち、図13の2次元平面上でのY軸方向(図面下側がY軸正の方向)にはNx0z,Nx1z,Nx2zというように配置されるが、X軸方向(図面右側がX軸正の方向)にはN0y0,N0y1,N1y0,N1y1,N2y0,N2y1というように、Z軸方向座標が0と1のスピンユニットが交互に配置される。
イジングチップ100上には物理的にはスピンユニット300を図13に示すように配置し、その上に図13に示すワード線901−1,901−2,901−3と、ビット線902−1,902−2,902−3,902−4,902−5,902−6を配線する。これらのワード線、ビット線は図10に示したスピンユニット300のワード線420とビット線410に結線される。各スピンユニット300はワード線の配列方向に13個のメモリセルを有する(ワード線420は13ビット)ので、ワード線901−1,901−2,901−3はそれぞれ13ビットとなる。
(1−7)イジングモデルの基底状態探索処理の制御
イジングモデルの基底状態探索を実現するためには、イジングモデル全体のエネルギーがより低いスピン配列になるように遷移するように、スピン間の相互作用を実現しなければならない。このための相互作用は、与えられた相互作用係数と外部磁場係数に基づいて行われる。つまり、あるスピンの次の値を、そのスピンに接続されている他のスピンからの相互作用と、そのスピンが持つ外部磁場係数から決定する。このとき、スピンの次の値は、そのスピンが接続されている範囲内での局所的なエネルギーを最小化するような値になる。
イジングモデルの基底状態探索を実現するためには、イジングモデル全体のエネルギーがより低いスピン配列になるように遷移するように、スピン間の相互作用を実現しなければならない。このための相互作用は、与えられた相互作用係数と外部磁場係数に基づいて行われる。つまり、あるスピンの次の値を、そのスピンに接続されている他のスピンからの相互作用と、そのスピンが持つ外部磁場係数から決定する。このとき、スピンの次の値は、そのスピンが接続されている範囲内での局所的なエネルギーを最小化するような値になる。
このスピンの更新は、それぞれのスピンを1個ずつ逐次的に更新することがまず考えられるが、この方法ではスピン数に比例した時間がかかってしまい、並列性を利用することが出来ない。そこで、スピン間の相互作用を全てのスピンについて同時並行的に行うことが望ましい。
しかし、全てのスピンを同時に更新しようとすることは適当でない。あるスピンを更新するときに、隣接スピンの値に基づいて、隣接スピンとの間でエネルギーを最小化するようにスピンを更新するので、それと同時に隣接スピンの値を更新すると、両方の更新が重複してしまい、エネルギーを最小化できず振動してしまう。すなわち、あるスピンを更新するときに、そのスピンに接続されているスピン(あるスピンに相互作用係数を介して直接接続されているスピンをこれ以降隣接スピンと呼ぶ)を同時に更新することは避けるべきである。
そこで、本実施例では隣接スピンは同時に更新しないように、スピンアレイ110内のスピンユニット300をグループ分けして、一度に同時に更新するのは1つのグループだけにする。図8に示すようなトポロジであれば、2グループに分ければ良い。そして、この2グループを交互に更新していく。
図6を再度参照する。図6の構成では、あるタイミングで更新するグループを指示するために、イジングチップ100は相互作用アドレス180を入力インタフェースとして有する。相互作用アドレス180は前述したグループのうち、更新するグループを指定するためのインタフェースであり、相互作用クロック181の入力によって、相互作用アドレス180で指定されるグループに属するスピン(スピンユニット300)が同時に更新される。
この方法であれば、スピンユニット300内に追加のハードウェアは必要なく、イジングチップ100全体に対して一組の相互作用アドレスデコーダ140を設けるだけで良い。そのため、構成単位であるスピンユニット300を複雑化することなく、前記の問題が解決できる。
上記の例は、隣接スピンが同時に更新されないように2つのグループに分けたが、隣接スピンが同時に更新されない分け方であれば、3以上のグループに分けてもよい。
(1−8)次のスピンの状態を決定するための回路構成
図9を再度参照して説明する。
図9を再度参照して説明する。
スピンユニット300は複数並行して同時に更新を行うために、相互作用を計算して次のスピンの状態を決定するための回路を、スピンユニット300毎に独立して持っている。スピンの次状態を決定するための回路を図9に示す。図9ではスピンユニットは外部とのインタフェースとして、NU,NL,NR,ND,NF,Nを有する。Nは当該スピンユニットのスピンの値を他のスピンユニット(図8のトポロジで隣接するユニット)に出力するインタフェースである。NU,NL,NR,ND,NFはそれぞれ他のスピンユニットの有するスピンの値を入力するためのインタフェース830である。NUは上側のスピン(Y軸方向で−1)、NLは左側のスピン(X軸方向で−1)、NRは右側のスピン(X軸方向で+1)、NDは下側のスピン(Y軸方向で+1)、NFは奥行き方向に接続するスピン(Z軸方向で+1ないしは−1)からの入力である。なお、イジングモデルのトポロジを考える上で、端の処理を決める必要がある。
図8のトポロジのように単に端は打ち切るのであれば、NU,NL,NR,ND,NFのうち端に対するものは何も入力しなくて良い(回路上は0ないしは1の固定値に接続するなど、未使用入力端子として適切な処理をとる)。例えばN000のスピンユニットの場合には、NU及びNLの2端子は入力が無い。
スピンユニット300では隣接スピンとの間でエネルギーを最小化するようにスピンの次状態を決定するが、それは隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することと等価である。例えば、i番目スピンσiに、スピンσj,σk,σl,σm,σnが隣接しているとして、スピンσiの次状態は以下のように決まる。まず、隣接スピンの値はσj=+1,σk=−1,σl=+1,σm=−1,σn=+1とし、相互作用係数はJj,i=+1,Jk,i=+1,Jl,i=+1,Jm,i=−1,Jn,i=−1、外部磁場係数hi=+1とする。このとき、相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べると、σj×Jj,i=+1,σk×Jk,i=−1,σl×Jl,i=+1,σm×Jm,i=+1,σn×Jn,i=−1,hi=+1となる。外部磁場係数は、常に値が+1のスピンとの相互作用係数と読み替えて良い。
ここで、i番目のスピンと隣接スピンとの間での局所的なエネルギーは、前述した係数にそれぞれi番目スピンの値を乗じて、さらに符号を反転させたものになる。例えば、j番目スピンとの間での局所的なエネルギーは、i番目スピンを+1とした時には−1、i番目スピンを−1としたときには+1となるので、i番目スピンを+1にするほうが、ここでの局所的なエネルギーを小さくする方向に働く。
このような局所的なエネルギーを全ての隣接スピン間と外部磁場係数について考えた時に、i番目スピンを+1/−1のどちらにしたほうがエネルギーを小さくできるかを計算する。これは、先程示した相互作用係数と隣接スピンの積、及び、外部磁場係数をそれぞれ並べたものにおいて、+1と−1のどちらが多いか数えれば良い。先程の例では、+1が4個、−1が2個である。仮に、i番目スピンを+1とするとエネルギーの総和は−2、i番目スピンを−1とするとエネルギーの総和は+2になる。よって、+1の個数が多い時にはi番目スピンの次状態を+1とし、−1の個数が多い時にはi番目スピンの次状態を−1にするという多数決で、エネルギーを最小化するi番目スピンの次状態を決定することが出来る。
図9のスピンユニット300に図示する論理回路810は前記した相互作用を行うための回路である。まず、隣接スピンの状態と相互作用係数の+1/−1を示すメモリセルとの排他的論理和の否定(XNOR)で、その相互作用だけを見た時にエネルギーを最小化するスピンの次状態を計算することができる(+1は1、−1は0にエンコードされているものとする)。もし、相互作用係数が+1/−1だけであれば、この出力のうち+1/−1のどちらが多いか多数決論理で判定すればスピンの次状態を決定することができる。外部磁場係数に関しては、常に状態+1のスピンとの相互作用係数に相当するものと考えれば、単に外部磁場係数の値がスピンの次状態を決定する多数決論理に入力すべき値となる。
次に、係数0の実現方法について考える。n入力の多数決論理f(I1,I2,I3,...,In)があるとき、以下の命題は真であると言える。まず、入力I1,I2,I3,...,Inの複製I’1,I’2,I’3,...,I’nがあるとする(任意のkについて、Ik=I’kである)。このとき、f(I1,I2,I3,...,In)の出力は、複製もあわせて入力したf(I1,I2,I3,...,In,I’1,I’2,I’3,...,I’n)と等しい。つまり、各入力変数をそれぞれ2個ずつ入れても、出力は不変である。さらに、入力I1,I2,I3,...,Inの他に、もう一つの入力Ixと、その反転!Ixがあるとする。このとき、f(I1,I2,I3,...,In,Ix,!Ix)の出力は、f(I1,I2,I3,...,In)と等しい。つまり、入力変数とその反転を入力すると、多数決においてその入力変数の影響をキャンセルするように働く。多数決論理のこの性質を利用して係数0を実現する。
具体的には、図9に示すように、XORを利用して、係数のイネーブルを決めるビット(IS0など)の値により、多数決論理に、先に述べたスピン次状態の候補となる値の複製か、その反転を同時に入力する。例えば、IS0が0の場合、IS1の値と、IS1の反転の値が同時に多数決論理に入力されるので、外部磁場係数の影響は無い(外部磁場係数が0に相当する)ことになる。また、IS0が1の場合には、IS1の値と、その値と同じ値(複製)が同時に多数決論理に入力されることになる。
上記の説明では、スピン及び各係数は2〜3値の値をとるため、多数決論理回路を用いて回路を実現している。しかし、前述のように基底状態探索の本質は、隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することである。よって、スピンや各係数が多値の値をとる場合は、正と負の値それぞれの加算回路として実現することができる。
(1−9)イジングモデルの基底状態探索における局所最適解の回避
(1−9−1)乱数発生器を用いる方法
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。前述の論理回路810では基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するために、所定の確率でエネルギーを大きくする遷移を許容する処理を取り入れる。
(1−9−1)乱数発生器を用いる方法
前述したスピン間の相互作用によるエネルギー最小化で、適用されたイジングモデルの基底状態探索を実現することが出来るが、これだけでは局所最適解に陥ってしまう可能性がある。前述の論理回路810では基本的に、エネルギーを小さくする方向の動きしかないため、一旦局所最適解に陥るとそこから抜け出すことが出来ず、大域最適解に到達しない。そのため、局所最適解から脱出するために、所定の確率でエネルギーを大きくする遷移を許容する処理を取り入れる。
本実施例では、スピンの値を仮想的な温度Tで決まる確率で反転させることにした。ここで温度Tは基底状態探索の過程を物理的なアニーリングに例えたものである。基底状態探索の初期では高い温度とし、徐々に温度を下げながら局所的な探索を行い、最終的に温度がゼロとなる状態まで冷却していく。
図6を再度参照すると、本実施例では、スピンの値を所定確率で反転させるために、乱数発生器150と乱数発生クロック160を用いる。ビット調整器151は、基底状態探索の初期では高い確率でスピンの値を反転させ、終期では低い確率でスピンの値を反転させるように、乱数発生器150からの出力ビットを調整するものである。具体的には、乱数発生器150の出力から所定ビット数を取り出し、多入力のAND回路またはOR回路で演算することにより、基底状態探索の初期では1が多く、基底状態探索の終期では0が多く発生するように出力を調整する。
図9において、ビット調整器151からの出力がVARである。ビット調整器出力VARはアンプ821を通過し、反転論理回路820に入力される。論理回路810の出力は局所解であるスピンの値を出力するが、反転論理回路820でVARが1だった場合、スピンの値を反転させる。このようにして、スピンの値を格納するメモリセル701には、所定確率で反転された値が格納されることになる。
ライン822は、複数のスピンユニット300で単一の乱数発生器150とビット調整器151を共有するための構成であり、隣接するスピンユニットへビット調整器151出力を転送する。アンプ821は、ビット調整器151出力を分岐しても出力が落ちないようにするためのものである。
なお、図6に示すように、イジングチップ100内に乱数発生回路150を設けて各スピンユニットに乱数を配送して利用する他に、各スピンユニット300内に乱数発生回路を設けても良い。また、イジングチップ100の外に乱数発生回路を設けて、チップではチップ外からの乱数を配送するようにしても良い。
(1−9−2)電源電圧を制御する方法
図6の例では、乱数発生器を用いたが、所定の確率でエネルギーを大きくする遷移を発生させる他の手段として、スピンを表現するメモリセルに供給する電源電圧を下げることで、メモリセルのビットエラーを誘発し、スピン配列をランダムに変化させる方法がある。
図6の例では、乱数発生器を用いたが、所定の確率でエネルギーを大きくする遷移を発生させる他の手段として、スピンを表現するメモリセルに供給する電源電圧を下げることで、メモリセルのビットエラーを誘発し、スピン配列をランダムに変化させる方法がある。
そのための構成として、スピンユニット300が有するメモリセルのうち、係数を保持するメモリセルは通常電源線で供給する電圧で動作させ、スピンを表現するメモリセルNはスピン専用電源線で供給する電圧で動作させる。なお、メモリセル以外の構成要素、例えば相互作用を計算するための論理ゲート等は全て通常電源線で供給する電圧で動作する。
メモリセルのビットエラーレートはメモリセルへの供給電圧に比例している。一般的にはメモリセルにこの1V程度の電圧を供給し、記憶内容の保持に適したビットエラーレートで用いる。この電圧から、電圧を下げていくと、電圧の下げ幅に比例してビットエラーレートも悪化していく。例えば、0.6V程度まで電圧を下げることで、10の−1乗程度のビットエラーレートになり、このようなビットエラーが発生しやすい状態を、局所最適解からの脱出に用いる。
そのため、前述したスピンの値を格納するメモリセルNは、例えば基底状態探索の初期では解空間をより広く探索することで局所最適解に陥らないようにするため、0.6Vなどの低い電源電圧をスピン用電源線に供給して、ランダムなビットエラーが生じる状況で相互作用による基底状態探索を行う。この状況では、基本的には相互作用によってエネルギーが小さい状態に遷移していくが、それと並行してビットエラーにより、状態がランダムに遷移していくことで、相互作用だけでは遷移しえない状態への遷移も発生し、解空間を広く探索することができる。基底状態探索の進行と共に、状態を安定させていくために、ビットエラーレートが起こりにくい状態へと少しずつ電圧を変化させていく。
(1−10)スピンユニット間の配線
図15はスピンユニット間の相互作用を行う配線の一例を説明する図である。
図15はスピンユニット間の相互作用を行う配線の一例を説明する図である。
図15は、図9で示したスピンユニットのインタフェースである、NU,NL,NR,ND,NF,Nの配線の例について示す。図15は、ある1個のスピンユニットNxyzに注目した時に、図8に示すようなトポロジを図13のように配置したスピンユニットで実現するために適した配線を示している。このような配線をスピンユニット毎に行うことで、図8のトポロジを回路上に実現することが出来る。
(1−11)動作シーケンス
図16に、処理装置200において、イジングチップ100をCPU210が制御して基底状態探索を行う手順の概略を示す。
図16に、処理装置200において、イジングチップ100をCPU210が制御して基底状態探索を行う手順の概略を示す。
ステップS1600において、対象問題を表現するイジングモデルの相互作用係数と外部磁場係数を生成する。これは、最大カット問題の例で言えば、図3に示すような最大カット問題が与えられた時に、図4に示すイジングモデルを生成することである。
ステップS1601では、スピン割当てマップを生成する。スピン割当てマップとは、解きたいイジングモデルを解く際に、イジングチップ100にどのようにイジングモデルを割当てるか定義した情報である。例えば図4のイジングモデルを、図14のような3次元格子に当てはめ、これを図13のスピンアレイ上にマッピングし、図12のようなメモリマップを生成する。
ステップS1602で初期スピン配列を生成する。通常はスピンの初期値はランダムな値とする。
ステップS1603では、メモリマップに基づいて、係数と初期スピン配列をスピンアレイに書き込む。
ステップS1604では、相互作用アドレスを設定し、例えばスピンアレイの第1のグループと第2のグループを交互に指定する。
ステップS1605では、同じくスピンアレイの第1のグループと第2のグループのためのクロックを生成する。
ステップS1606では、相互作用アドレスと相互作用クロックに従って、スピンアレイの値を読み出し、次のスピンの状態を決定し、スピンを書き換える。このとき、前述のように局所解に陥らないように、所定確率でスピンをランダムに書き換える。
ステップS1607で所定の回数相互作用計算を行った場合、ステップS1608でスピン配列を読み出す。このスピン配列が解となる。
以上のような全体の制御は、図7に示した情報処理装置のCPU210が、RAM220に格納されたソフトウェアに基づいて行うことができる。
(1−12)イジングモデルを表現するデータ構造と書式
図17に、情報処理装置200上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義1700で定義され、相互作用係数を定義する相互作用定義部1710と、外部磁場係数を定義する外部磁場係数部1720とから構成される。
図17に、情報処理装置200上でイジングモデルを表現するデータ構造の例を示す。イジングモデルは、問題定義1700で定義され、相互作用係数を定義する相互作用定義部1710と、外部磁場係数を定義する外部磁場係数部1720とから構成される。
相互作用定義部1710は、相互作用の元となるスピンを指定する識別子(例えば、スピンに一意な番号を付与して、それを識別子とする)、相互作用の先となるスピンの識別子、及び、相互作用係数を一組として、この組を相互作用の数だけ並べる。これは、グラフをコンピュータ上で扱う時のデータ構造である隣接リストに近い。ここでは、表現されているイジングモデルは、有向グラフとなっている。
外部磁場係数定義部1720は、外部磁場を与えるスピンを指定する識別子と、外部磁場係数とを一組として、外部磁場係数の数だけ並べる。
なお、相互作用定義部1710で定義されていないスピン間の相互作用係数や、外部磁場係数1720で定義されていないスピンへの外部磁場係数は0とする。つまり、デフォルト値は、相互作用係数の場合には当該スピン間には相互作用が存在しないことを示す0であり、外部磁場係数の場合いは当該スピンには外部磁場が存在しないことを示す0となる。
図18は、図17のデータ構造のより具体的な表現形式、特にHDD260上でデータを保持する場合の書式(ファイルフォーマット)の一例を示す。図18のデータ構造は、HDD260上ではテキストファイルとして実現される。そのテキストファイルのフォーマットは、図18において問題データ1800として示すように、相互作用か外部磁場を識別するための識別子と、スピンの識別子及び係数とを並べたものである。
(1−13)解を表現するデータ構造と書式
図19は、図16のスピン配列読み出し(S1608)で読み出した、解または解候補となるスピン配列を示す解データを情報処理装置200上で表現するデータ構造の例1900と、そのHDD260上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解1900のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元に、スピンの識別子を省略して、解データ1920のようにスピンの値だけを列挙したテキストファイルとしてHDD260上に保持することが出来る。
図19は、図16のスピン配列読み出し(S1608)で読み出した、解または解候補となるスピン配列を示す解データを情報処理装置200上で表現するデータ構造の例1900と、そのHDD260上での書式の例とを示す。イジングモデルの解はスピン配列であることから、そのデータ構造は解1900のようにスピンの識別子と、そのスピンの値とを一組にして並べたものになる。そして、全てのスピンについて省略無く値を書き出すという前提の元に、スピンの識別子を省略して、解データ1920のようにスピンの値だけを列挙したテキストファイルとしてHDD260上に保持することが出来る。
(2)データ分類問題への応用
(2−1)画像データの領域抽出の問題への適用
相互作用モデルを用いた計算の応用例として、画像データのセグメンテーションを説明する。画像データのセグメンテーションとは、画像の中で所定の特性(特徴)を持つ領域を抽出したい場合、抽出したい領域の例(シード、あるいはターゲットと呼ぶ)をユーザが指示し、これに類似する部分を自動的に抽出するものである。
(2−1)画像データの領域抽出の問題への適用
相互作用モデルを用いた計算の応用例として、画像データのセグメンテーションを説明する。画像データのセグメンテーションとは、画像の中で所定の特性(特徴)を持つ領域を抽出したい場合、抽出したい領域の例(シード、あるいはターゲットと呼ぶ)をユーザが指示し、これに類似する部分を自動的に抽出するものである。
図20に画像データの領域抽出の例を示す。画像データは一般にx,y座標成分を有するピクセル(画素)によって構成されている。各画素は特性として、輝度、色相、彩度など情報を持っている。セグメンテーション対象画像1700から、ユーザが前景領域1710と背景領域1720を指定し、其々の領域を自動的に判別したいとする。この作業は、ユーザが指定した前景領域を構成する画素と類似する画素のグループと、ユーザが指定した背景領域を構成する画素と類似する画素のグループとに区別する作業である。
図21に画像データの領域抽出の問題をグラフ化した図を示す。たとえば、画素(0,0)〜画素(2,2)の9個の画素2100を、ユーザが指定した前景と背景に分類したい。このとき、画素(0,0)〜画素(2,2)をノード2110とし、ユーザが指定した前景画素sをソースノード2120、背景画素tをターゲットノード2130とするグラフを作成する。各ノードは辺で接続され、前述のように各辺はコストを持っている。コストの和が最小になるカットを見出すと、解が求まる。コストを辺の強度に対応させると、ソースとターゲットを逆向きに引っ張るときに、一番強度の弱い辺でカットされることになる。
図22に最小カットを解いた状態を示す。s−t最小カット(s−t Mincut)2200の部分で、コストの和が最小となり、画素(2,0)、(2,1)、(2,2)、(1,2)の4個の画素が背景に分類され、その他の画素が前景に分類されている。
図23に解に従って、ピクセルをセグメンテーションし、前景側(シード(s)側)と背景側(ターゲット(t)側)に分類した結果を示す。
図24は、結果の表示例である。前景1710として指定した画素と同じと推定された画素が、前景側(s側)として分類され、前景として抽出された領域はマスク2400として表示される。
(2−2)画像データの領域抽出の問題のイジングモデルの基底状態探索問題への変換
図3に示した最大カット問題は、グラフG=(V,E)を与えられた時、カットの大きさを最大化するように、頂点の集合VをV’とV’\Vにグループ分けすることであった。また、最大カット問題の重みの符号を逆転すると、最小カット問題となる(図4)。
図3に示した最大カット問題は、グラフG=(V,E)を与えられた時、カットの大きさを最大化するように、頂点の集合VをV’とV’\Vにグループ分けすることであった。また、最大カット問題の重みの符号を逆転すると、最小カット問題となる(図4)。
ところで、画像の領域抽出(画像セグメンテーション)では、グラフカット(Graph cat)と呼ばれる手法が知られている。グラフカット問題では、データ項と平滑化項からなるエネルギーを最小化する解を求める。ここでデータ項とは、シードあるいはターゲットと注目画素の類似度を示す項である。しかし、データ項のみに基づいて画像を領域分けすると、領域の境界が不自然になる場合がある。また、ノイズのような点在する領域が発生することがある。そこで、画像の滑らかさを維持するために、平滑化項を取り入れる。平滑化項は、隣接スピンと注目スピンの画素の持つ特性(輝度等)の差を示す項である。
図21のグラフにおいて、シードあるいはターゲットと画素間を接続する点線がデータ項に相当し、画素同士を接続する実線が平滑化項に相当することになる。
(2−2−1)画像データセグメンテーションのためのイジングモデル係数の決定方法(例1)
図25を参照して、画像データセグメンテーションのための係数(相互作用係数および外部磁場係数)の設定例を説明する。図25はスピンユニット300を複数個ならべ、セグメンテーションを行うための3次元格子状のトポロジを持つイジングモデルを構成する例を示す。単純化するために、画素の輝度値に基づいてセグメンテーションする例を説明する。
図25を参照して、画像データセグメンテーションのための係数(相互作用係数および外部磁場係数)の設定例を説明する。図25はスピンユニット300を複数個ならべ、セグメンテーションを行うための3次元格子状のトポロジを持つイジングモデルを構成する例を示す。単純化するために、画素の輝度値に基づいてセグメンテーションする例を説明する。
図25の例は、X,Y,Z軸方向の大きさが、3×3×2の3次元格子である。3次元格子以外のトポロジ、例えばツリー上のトポロジを利用する場合には、ツリーの段数等で表現することになる。図25の3次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数5のスピン(頂点)が必要となる。なお、外部磁場係数の接続も含めて考えると、最大で次数6が必要となる。
画像データセグメンテーションのための最小カット問題を、(数1)のイジングモデルに当てはめ、最小のエネルギー関数E(σ)を求めるための係数、Ji,jとhiを以下のように設定する。
入力画像はX−Y平面上のスピンユニットに対応するものとする。スピンの上向き(+1)と下向き(−1)で、前景画像(1)か背景画像(0)かを識別する。ここでは、前景をスピンの(+1)、背景をスピンの(−1)に対応させる。例えば、図21に示した縦3画素、横3画素の画像がある場合、各画素はX−Y平面上の9個のスピンユニットに対応することになる。ここで、各画素の輝度値はI(x,y)として参照できるものとし、輝度値の値域は |I(x,y)|≦Imax とする。輝度値のデータはあらかじめ、HDD260に画像データとして格納してあるものとする。
まず、ユーザは前景(レイヤーl=0),背景(レイヤーl=1)と考えられる領域をそれぞれ指定する。次にユーザが指定した領域において、画素がどのような特性を持っているかのヒストグラムを作成する。例えば、横軸に輝度値をとり、縦軸に当該レイヤーで輝度値が出現する頻度をとったヒストグラムである。画素の特性はグレイスケール画像の場合は、この例のように輝度値を用いればよい。カラー画像の場合は、輝度地に加え、様々な色空間で表現された3または4次元のベクトルで表すことができる。
前景,背景それぞれの領域のヒストグラムは、
θ(c, l) =レイヤーlにおける輝度cの発生頻度(0〜1に正規化)
として参照できるものとする。
θ(c, l) =レイヤーlにおける輝度cの発生頻度(0〜1に正規化)
として参照できるものとする。
相互作用係数(平滑化項)Jj,i、Jk,i、Jl,i、Jm,iは(数3)で示される。図25に示すように、第1層(Z=0すなわちX-Y平面上)のスピン間は,相互作用係数(平滑化項)2500を格子状に持つ。k,λhは係数(定数)である。
相互作用係数(背景データ項)Jn,iは(数4)で示される。図25に示すように、X,Yが同一な第1層(Z=0)と第2層(Z=1)のスピン間は,相互作用係数(背景データ項)2510を格子状に持つ。λgは係数(定数)である。
外部磁場係数(前景データ項)hiは(数5)で示される。図25に示すように、第1層のスピンは外部磁場係数(前景データ項)2520を持つ。λgは係数(定数)である。
図26に示すように、相互作用係数(平滑化項)Ji,j2500は、隣接画素間の輝度差が小さいとき1に近い値をとる。画像の特性として、隣同士の画素は同じセグメントに属することが多い。そこで、平滑化項は、注目画素のスピンの値を隣接画素で支配的なスピンの値と揃うように動かす。隣接画素間の輝度差が大きいときは、平滑化項はゼロの値をとり、データ項が支配的になる。
外部磁場係数2520では、前景データ項は、注目画素が前景に指定された画素と近いか否かを評価する。相互作用係数(背景データ項)2510では、背景データ項は、注目画素が背景に指定された画素と近いか否かを評価する。このために、データ項は例えばユーザが指定した前景・背景のヒストグラムを引用し、ヒストグラムをもとに注目画素がどちらに近いかを評価し、それに基づき注目画素のスピンを判断する。
(2−2−2)画像データセグメンテーションのためのイジングモデル係数の決定方法(例2)
図27Aを参照して、画像データセグメンテーションのための係数の設定例を説明する。図27Aはスピンユニット300を複数個ならべ、セグメンテーションを行うための2次元格子状のトポロジを持つイジングモデルを構成する例を示す。単純化するために、画素の輝度値に基づいてセグメンテーションする例を説明する。
図27Aを参照して、画像データセグメンテーションのための係数の設定例を説明する。図27Aはスピンユニット300を複数個ならべ、セグメンテーションを行うための2次元格子状のトポロジを持つイジングモデルを構成する例を示す。単純化するために、画素の輝度値に基づいてセグメンテーションする例を説明する。
図27Aの例は、X,Y軸方向の大きさが、3×3の2次元格子である。図27Aの2次元格子状のトポロジにおいて、スピン間の相互作用をグラフとしてとらえると、最大で次数4のスピン(頂点)が必要となる。なお、外部磁場手係数の接続も含めて考えると、最大で次数5が必要となる。
図25の例と同様に、入力画像はX−Y平面上のスピンユニットに対応させる。また、各画素の輝度値の定義、ユーザによる前景・背景の指定、前景・背景のヒストグラムの作成も(例1)と同様である。
相互作用係数(平滑化項)Jj,I、Jk,i、Jl,i、Jm,iは(数6)で示される。図27Aに示すように、第1層(Z=0すなわちX-Y平面上)のスピン間は,相互作用係数(平滑化項)2500を格子状に持つ。k,λhは係数(定数)である。
外部磁場係数(データ項)hiは(数7)で示される。図27Aに示すように、各スピンは外部磁場係数(データ項)2700を持つ。λgは係数(定数)である。
(例1)では、データ項は前景データ項と背景データ項に分かれていたが、(例2)では、外部磁場係数(データ項)は以下の形をとる。
データ項 = 前景データ項 − 背景データ項
この結果、注目画素が前景の特性に近いほどデータ項はプラスの値になり、背景の特性に近いほどマイナスの値をとる。よって、これに基づき注目画素のスピンを判断することができる。
データ項 = 前景データ項 − 背景データ項
この結果、注目画素が前景の特性に近いほどデータ項はプラスの値になり、背景の特性に近いほどマイナスの値をとる。よって、これに基づき注目画素のスピンを判断することができる。
相互作用係数(平滑化項)については、(例1)と同様である。
図27Bに、図27Aのモデルを使って求めた解と画像の対応関係例を示す。各スピンは画素に対応し、各スピンの値は画素が分類されるセグメントを示すことが分かる。
以上で説明した画像セグメンテーションのためのイジングモデルのトポロジでは、ある平面上のスピンユニットがそのまま画像の画素に対応している。図25、図27で示したトポロジは3×3の画素に対応しているが、画素が増えた場合には、そのまま同一平面上のスピンユニットを増やせばよい。
(2−2−3)画像データセグメンテーションのためのイジングモデル係数の決定方法(例3)
上記で説明した平滑化項は、いずれも(数3)((数6)に同じ))で示される式を用いた。
上記で説明した平滑化項は、いずれも(数3)((数6)に同じ))で示される式を用いた。
図26は、横軸に隣接画素間の輝度差、縦軸に(数3)で示される平滑化項出力を定義してグラフ化したものである。図26より明らかなように、隣接画素間の輝度差0のときにJi,j出力は最大となる。このJi,jを(数1)に当てはめれば、隣接スピンの符号が同じときにエネルギーは小さくなることがわかる。すなわち、注目画素のスピンは、周辺の画素のスピンと同じ方向に引っ張られる
(数3)の平滑化項は、画素の特性(例えば輝度)が滑らかに変化する場合には好適である。一方、画素の特性が離散的に変化する部分(例えば物と物の境界)を、適切に反映することが難しい。
(数3)の平滑化項は、画素の特性(例えば輝度)が滑らかに変化する場合には好適である。一方、画素の特性が離散的に変化する部分(例えば物と物の境界)を、適切に反映することが難しい。
(数8)は他の平滑化項の例である。
図28は、横軸に隣接画素間の輝度差、縦軸に(数8)で示される平滑化項出力を定義してグラフ化したものである。
図28より明らかなように、隣接画素間の輝度差0のときにJi,j出力は最大となる。逆に、隣接画素間の輝度差MAXのときにJi,j出力は負の最大値となる。そして、隣接画素間の輝度差が中間の値でJi,j出力はゼロになる。(数8)の平滑化項を用いると、隣接画素間の輝度差が小さい場合には、注目画素のスピンの値は、周辺の画素のスピンの値と同じ方向に引っ張られるが、逆に、隣接画素間の輝度差が大きい場合には、周辺の画素のスピンの値と逆方向に引っ張られる。また、隣接画素間の輝度差が中間の値の場合には、平滑化項はゼロに近づき、データ項の影響が支配的となる。
上記では、2通りの例でセグメンテーションを実行するための関数の例を示した。しかし、本発明はこの関数に限定されるものではなく、他の関数を用いて計算することも可能である。例えば、相互作用係数のみを用いたり、外部磁場係数のみを用いて、項の一部を省略することができる。また、他の係数を追加して導入することもでき、イジングモデルを一般化した相互作用モデルに適用することができる。
(2−3)イジングチップでの処理
図25、図27のように、イジングモデルの基底状態探索問題に変換された画像データの領域抽出の問題は、基本的に図8の構成と同じである。よって、「(1)イジングチップの基本構成」で説明した構成により処理が可能であり、当該構成を踏襲する。以下、画像データの領域抽出の問題特有の点について説明する。
図25、図27のように、イジングモデルの基底状態探索問題に変換された画像データの領域抽出の問題は、基本的に図8の構成と同じである。よって、「(1)イジングチップの基本構成」で説明した構成により処理が可能であり、当該構成を踏襲する。以下、画像データの領域抽出の問題特有の点について説明する。
(2−3−1)画像データセグメンテーションのためのシステム構成
図29に画像データセグメンテーションのためのシステム構成図を示す。図7と同じ構成は同じ符号を付して説明を省略し、異なる部分を主に説明する。
図29に画像データセグメンテーションのためのシステム構成図を示す。図7と同じ構成は同じ符号を付して説明を省略し、異なる部分を主に説明する。
図29のシステムは、ユーザが画像データの指定を行うための、入力装置2900と出力装置(表示装置)2910を備える。また、システムバス230にはネットワークインターフェース回路(NIC)240を介してネットワーク2920に接続可能となっている。このシステムは、ネットワーク2920を介して、他の情報処理装置と連携して動作することも可能である。
ユーザは、例えば図20に示す画像を表示装置2910に表示させながら、前景領域1710と背景領域1720を、入力装置2900で指定する。RAM220やHDD260には、各種のデータやプログラムが格納されている(後述)。
(2−3−2)画像データセグメンテーションのための処理フロー
図30に処理フローの概略を示す。
S2900で、画像からシードとなる部分を設定する。
S2910で、画像およびシードからイジングモデルを生成する。
S2920で、イジングモデルに対応したスピンと係数の初期配列を生成する。
S2930で、生成したスピンと係数を、スピンアレイに書き込む。
S2940で、基底状態を探索し、所定の回数相互作用を実行する。
S2950で、得られた解を読み出す。
S2960で、得られた解に基づいて、結果をユーザに表示する。
以下、図29のシステム構成と図30のフローを参照しながら各処理を説明する。
図30に処理フローの概略を示す。
S2900で、画像からシードとなる部分を設定する。
S2910で、画像およびシードからイジングモデルを生成する。
S2920で、イジングモデルに対応したスピンと係数の初期配列を生成する。
S2930で、生成したスピンと係数を、スピンアレイに書き込む。
S2940で、基底状態を探索し、所定の回数相互作用を実行する。
S2950で、得られた解を読み出す。
S2960で、得られた解に基づいて、結果をユーザに表示する。
以下、図29のシステム構成と図30のフローを参照しながら各処理を説明する。
(2−3−2−1)シードの設定
図30の、画像からシードとなる部分を設定する処理(S2900)説明する。
図30の、画像からシードとなる部分を設定する処理(S2900)説明する。
図31は、図29のシステムの出力装置2910に表示される画像であり、シードの設定や結果の表示に用いる。
この画面ではセグメンテーション対象画像3000を示すとともに、ポインター3001で対象画像3000の任意の個所を指定できるようになっている。画像3000はボタン3100により呼び出すことができる。ユーザが対象画像3000の任意の個所を閉じた円等で指定した後、ボタン3002または3003を選択することで、前景または背景のシードを設定できる。設定したシードはボタン3004によりキャンセルすることができる。また、ボタン3005でキャンセルを取り消すことができる。また、設定したシードはボタン3007により記録することができる。また、ボタン3006により記録したシードを読み出すことができる。
ユーザがシードに指定した画素は、X,Y座標で特定できる。例えば、対象画像3000の画素数が縦横800×600であれば、画素の位置は(1,1)から(800,600)までのいずれかの値をとる。対象画像3000の画像データ261はHDDに格納されており、画素の座標と当該画素の輝度、色相、彩度などの特性を示すデータが対応付けられている。ユーザがシードに指定した画素は、前景または背景のフラグを付け、画像データ261に格納する。図31の他の構成については、後に説明する。
(2−3−2−2)イジングモデルの生成
図30の、画像およびシードからイジングモデルを生成する処理(S2910)を説明する。
図30の、画像およびシードからイジングモデルを生成する処理(S2910)を説明する。
ここでは、セグメンテーション対象画像3000とユーザが指定したシードに基づいて、イジングモデルを生成する。イジングモデルとしては、図25や図27に示したものがあり、任意に選択できるが、本実施例ではRAM220中の問題変換プログラムであらかじめ定義しておくことにする。ここでは図25に示したイジングモデルを例に説明する。
図25のイジングモデルでは、XY平面上のスピンはそのまま対象画像3000の画素に対応させることができる。そして、一つの画素を表すスピンに、2〜4個の相互作用係数(平滑化項)と1つの外部磁場係数(前景データ項)と1つの相互作用係数(背景データ項)が付随してスピンユニット300を構成する。
(2−3−2−3)イジングモデルに対応したスピンと係数の初期配列の生成
図30の、各スピンユニット300のスピンと係数の初期配列を生成する処理(S2920)を説明する。
図30の、各スピンユニット300のスピンと係数の初期配列を生成する処理(S2920)を説明する。
スピンについては、対応する画素の値を設定することになる。「(1)イジングチップの基本構成」では、スピン初期値はランダムに設定した。これは、最初の段階では解が不明(すなわち画素が前景か背景か不明)なためである。ただし、画像セグメンテーションの問題では、ユーザが指定したシードの画素は、あらかじめ解が分かっている画素である。よって、ユーザが指定したシードの画素は、ユーザが指定した前景・背景の別にしたがってスピンの値を設定する。ユーザが指定したシードの画素は、HDD内の画像データ261を参照することで特定できる。ユーザが指定したシード以外の画素については、乱数発生器等を用いてランダムな値に設定する。
係数については、(数3)(数4)(数5)に基づいて計算する。
相互作用係数(平滑化項)Ji,jは(数3)により計算する。この計算には各画素の輝度値I(x,y)が必要である。輝度値I(x,y)を引用するため、輝度値I(x,y)は、HDD内の画像データ261を参照する。
相互作用係数(背景データ項)は、(数4)により計算する。この計算には背景の輝度ヒストグラムθ(c,l)が必要である。背景の輝度ヒストグラムは、HDD内の画像データ261でユーザが背景と指定した画素のデータをもとに、各輝度値の出現確立cを正規化して作成し、RAM220に記憶しておく。
相互作用係数(前景データ項)は、(数5)により計算する。作成方法は相互作用係数(背景データ項)と同様である。
以上の処理や計算は、RAM220内の問題変換プログラム221によって実行され、各スピンユニット300に設定するために作成されたデータは、問題データ262としてHDD260に格納される。これらのデータはメモリに書き込むため、基本的にはデジタル値であるが、何ビット幅のデータにするかは、画像の大きさや処理速度、イジングチップの回路規模を考慮して決めることになる。各係数の式の中で定数であるk、λh、λgなどは、問題変換プログラム221内であらかじめ設定しておくか、ユーザが入力装置2900で設定する。
(2−3−2−4)
図30の、生成したスピンと係数を、スピンアレイ110に書き込む処理(S2930)を説明する。データを書き込むスピンアレイ110の物理構成は、先に図9〜図15で説明したとおりであり、基本的な構成は同様である。
図30の、生成したスピンと係数を、スピンアレイ110に書き込む処理(S2930)を説明する。データを書き込むスピンアレイ110の物理構成は、先に図9〜図15で説明したとおりであり、基本的な構成は同様である。
ただし、画像セグメンテーションの問題のように、あらかじめ解が分かっているスピンが存在する場合、以下に述べる機能を追加する必要がある。
先に説明したように、局所解にトラップされることを避けるため、基底状態を探索している間、スピンは所定確率でランダムに遷移させることが望ましい。
ところで、画像データセグメンテーションの場合、ユーザは最初にリファレンスとなる画素の種類を指定している。すなわち、例えば図20でユーザが前景と指定した画素は、ユーザの入力を信頼すれば理論的に100%前景であるから、常に前景と扱うべきであり、背景と指定した画素は背景として扱うべきである。
しかし、局所最適解の回避のために、スピンの値をランダムに遷移させると、ユーザが指定した画素の種類(スピンの値)も変化してしまう。このため、正しい値が誤った値に変えられてしまうことになり、処理には無駄が生じる。
このため、本実施例では、ユーザが指定した画素に対応するスピンの値は、不変とする構成を採用する。
図32Aに画像データセグメンテーションのためのイジングチップのためのスピンユニットの構成を示す。図9と同じ構成は同じ符号を付して説明を省略し、異なる部分を主に説明する。図9と同様に、乱数VARを用いて、反転論理回路820の出力が生成される。反転論理回路820の出力は第1のマルチプレクサ3200に入力される。マルチプレクサ3200のもう一方の入力は、メモリセル701自身のデータである。
マルチプレクサ3200に入力されるイネーブル信号ENは、マルチプレクサ3200の出力を選択し、メモリセル701のデータの書き換えを行うかどうかを設定できる。イネーブル信号がHIGHだと、相互作用を無視して、元のスピン値を書き続けることになる。すなわち、スピンの値を最初の値のまま維持する。
イネーブル信号ENの意味を説明する。先に述べたように、相互作用においては、隣接するスピンの値が同時に変わらないように制御する必要がある。そこで、スピンユニットは例えばグループAとグループBの2グループにグループ分けされている。各スピンユニット300は、スピンの更新を許可する信号を入力するインタフェース(EN)を有する。相互作用アドレス180で指定されるアドレス(グループの識別子)を相互作用アドレスデコーダ140でデコードし、グループ毎の更新許可信号を生成する。そして、相互作用クロック181でその時に更新が許可されているグループに属するスピンユニットの更新が行われる。
マルチプレクサ3200の出力は、マルチプレクサ3210に入力される。マルチプレクサ3210のもう一方の入力は、メモリセル701自身のデータである。メモリセル3220の出力はマルチプレクサ3210に入力され、マルチプレクサ3210の出力を選択する。
先に述べたように、本実施例では、特定のスピンの値を固定する機能を有している。このため、メモリセル3220には、メモリセル701のデータを固定するか否かを決めるデータが格納されている。例えば、メモリセル3220のデータが1の場合は、メモリセル701自身のデータがマルチプレクサ3210の出力に選択され、メモリセル701のデータは変わらない。メモリセル3220のデータが0の場合は、マルチプレクサ3200の出力がメモリセル701のデータとなる。メモリセル3220のデータは、メモリセル701のデータが、ユーザの選択した前景または背景のデータである場合、1に設定される。本実施例では、値が固定されるスピン(ノードノード)として、ユーザの指定した画素に対応するスピンの値を例に説明している。しかし、このように任意のノードの値を固定する手法は、画像セグメンテーションに限らず、相互作用モデルを計算する際に所定の制約条件を取り入れて計算を実行することを可能とするため、相互作用モデル計算全般で汎用性の高い手法である。
イジングモデルの基底状態探索は、最初ランダムな状態から出発する。また、局所解に陥ることを防ぐため、基底状態探索の間、乱数を発生してランダムな状態に戻す処理を行う。一方、画像データのセグメンテーションのように、ユーザの指定したデータについてスピンの値を固定し、これを基準として探索を行いたい場合、当該スピンの値を固定する必要がある。そこで、FIXというメモリセル3220を準備しておき、その値が1だった場合には、Nの値は固定される。そして、FIXが0の場合には相互作用の結果Nの値が書き換えられる。
多数決論理回路3230は、エネルギーの値を計算し、これが小さくなるようにスピンの値を決定する論理回路である。
図32Aでは、メモリセル3220によって、メモリセル701のデータを書き換えないようにした。一方、メモリセル3220を追加せず、メモリセル701のデータを書き換えた後に、ユーザの指定したデータについては、元のデータを書き戻す処理を行っても結果は同じである。ただし、書き戻しの時間分、処理速度が低下する。
図32Bに、メモリセルを多値化した例を示す。先に述べたように、相互作用係数、平滑化係数はアナログ値をとるので、初期値設定の際にはデジタル値に変換する。図32Aでは、係数は1ビットのメモリセル2個を用いて格納されるので、正負の符号と2値の係数を使用できる。メモリセルの多値化あるいは複数メモリセルの使用によって、係数を格納するメモリをnビット幅の符号付数値とすることもできる。この場合は、正負の符号とn−1ビット分の係数を格納することができる。もしくは,2の補数表現などで正負の符号を持つ整数値を格納する。次状態決定回路3231は、隣接スピンの値と係数の値を入力とし、(数1)で計算されたエネルギーの値が小さくなるようにスピンの値を決定する論理回路である。論理の内容は、隣接スピンと相互作用係数の積、及び、外部磁場係数を評価した時に、正の値と負の値のどちらが支配的か判断することである。
図32Cに次状態決定回路3231の一例を示す。隣接スピンであるNU,NL,NR,ND,NFからはスピンの値を示す値が、符号反転器3232に入力される。スピンが+1のとき1が、−1のとき0が入力されるものとする。NIU,NIL,NIR,NID,NIFには係数が格納されており、例えば、上位1ビットが正負の符号を表し、下位ビットが数値(絶対値)を表すとする。符号反転器3232は、スピンが0のとき係数の上位1ビットを反転させる。各符号反転器3232の出力は、加算器3233で加算され、加算結果は符号判定器3234で正負の符号が判定される。符号が正であればスピンの次状態は+1となり、負であれば−1となる。加算結果が0のとき次状態は決定せず、メモリセル701のスピンは前の状態が維持されるか、またはランダムな値に設定される。
図33にスピンの初期値,及び,値の固定を定義するデータ構造と書式例を示す。スピン初期値定義3300は、スピンを特定するID、スピンの値、固定フラグを定義する。スピンを特定するIDであるViは、スピンの値がメモリ701に格納される場合、当該メモリのアドレスであってもよい。スピンの値σiは+1か−1の2値をとるが、これは、メモリ701に格納されるときには、例えば1と0の値となる。固定フラグはメモリ3220(図32)に格納され、メモリ701のデータを固定するか否かを決める。ここで、ユーザがシードに指定した画素に対応するメモリ701のデータは、固定フラグにより固定されることになる。
スピン初期値データ3310は、スピン初期値定義3300に従って、スピンの初期値をスピンアレイに書き込むためのデータであり、RAM220に格納される。このデータはスピン個数分のエントリを有しており、スピンIDの昇順(ここではv1〜v3)に並んでいる。データ3310の第2列は固定フラグを示し,1(True)はスピン値を固定とし0(False)は固定しない。
なお、このデータでスピンの個数は、図25のようなモデルだと画素数の2倍となり、図27のモデルだと画素数と同じになる。
図34に、図25のイジングモデルを示す初期スピン配列と係数を、図32Aのメモリにマッピングしたメモリマップを示す。図34の例では、図25のXY平面上の画素に相当するスピンがN000,N010,N020等のブロックに割り当てられる。また、図25の(−1)固定スピンが、N001,N011,N021等のブロックに割り当てられる。固定スピンが割り当てられたブロックでは、係数を格納するメモリセルは使用しない。イジングモデルとメモリマップの対応は、図8と図12の関係と同様と考えてよい。ただし、図34の例では、各ブロックの上から2番目にはスピンを固定するためのFIXセルが含まれている。
図35に、図34のマップに、係数と初期スピン配列を書き込んだ状態を示す。ここで、各係数はIS0,IS1,IU0,IU1,IL0,IL1,IR0,IR1,ID0,ID1,IF0,IF1として示している。図25に示す(−1)固定スピンが格納されている、N001,N011,N021等のブロックのメモリセル701には、0の値が格納されている。この値はデータ係数の計算に用いるため不変なので、以降の処理ではN001,N011,N021等のブロックは変化させず、(−1)固定スピンが格納されているメモリセル以外は、N/Aとして使用しない。
ブロックN000,N010のメモリセル3220には、スピンの値を固定するためのフラグを示す1が格納されている。これらのブロックのメモリセル701には、ユーザが前景のシードとして指定した画素のスピンである1が格納されている。メモリ3220の固定フラグ1により、スピンの値は固定される。また、その他のブロックのメモリセル701には、スピンの初期値としてランダムな値が書き込まれている。
以上の処理は、RAM220内のイジングチップ制御プログラム222によって実行され、イジングチップ内のメモリセルにデータがセットされる。
(2−3−2−5)
図30の、基底状態を探索し、エネルギー最小の解を求める処理(S2940)を説明する。
図30の、基底状態を探索し、エネルギー最小の解を求める処理(S2940)を説明する。
図36に処理S2940の詳細フローを示す。
S3600は、局所解から脱出するために、スピンの値をランダムに変更する確率を設定する処理である。先に図6で説明したように、乱数発生器150で発生した乱数をもとに、ビット調整器151で1と0の割合を調整する。図32で、調整された乱数VARは、反転論理回路820に入力され、次状態決定回路3230の出力を所定確率で反転させる。
S3610は相互作用の回数を設定する処理である。すなわち、何回相互作用を起こさせ、スピンの値を書き換えるかを設定する。
あるイジングモデルの基底状態探索を行うときに,どの程度の時間をかけるべきか(相互作用の回数が必要か)は,イジングモデルのサイズなどからある程度理論的に決めることができる。よって,まず,一回の基底状態探索に必要な時間(=相互作用回数)は、画像セグメンテーションの例では、与えられた画像の大きさ(解像度)によって決めることができる。この設定は、イジングチップ制御プログラム222で設定することができる。
ビットの反転確率は、基底状態探索の初期に大きく、終期に小さくなるように、ビット調整期151で制御する。このため、S3600とS3610の結果として、例えば(表1)のように反転確率ごとに、何回相互作用を実行させるかを設定しておく。ビットの反転確率や相互作用回数は、イジングチップ制御プログラム222によってあらかじめ設定されているか、ユーザにより入力装置2900から設定される。表1によると、例えば反転確率50%の相互作用を100回行った後、反転確率40%の相互作用を100回行う。このように反転確率を制御し、相互作用を460回行った時点で終了とする。
S3620で相互作用が実行される。すなわち、図35のメモリセルの内容が読み出され、次状態決定回路3230で次のスピンの値が決定される。次のスピンの値は、(表1)の設定に従って、反転論理回路820で調整された乱数VARに基づいた確率で反転する。このとき、図16で説明したように、相互作用アドレスデコーダ140(図6)を用いて、隣接するスピンユニットは同時に相互作用を行わないように制御する点は、図16と同様である。
ただし、本実施例では、メモリセル3220の値が1の場合は、メモリセル701の値がそのままスピンの値として書き戻される。すなわち、メモリセル701の値は固定される。なお、信号線ENは当該スピンユニット701のスピンの更新を許可する切替え信号を入力するインタフェースである。この切替え信号でマルチプレクサ3200を制御することで、メモリセル701に保持されたスピンの値を、次状態決定回路3230からの値に書き換えるかどうかをきめることが出来る。
S3630では、相互作用の回数をカウントする。(表1)の終了条件に規定する回数相互作用を行うと、探索の終了条件を満たす場合は、探索を終了する(S3640)。探索の終了条件は、相互作用の合計回数が所定回数に達したかどうかで判定できる。例えば、(表1)のプログラムでは、460回である。
所定回数が終了していない場合は、スピン反転確率を更新する(S3650)。(表1)の例では、S3630で合計200回の相互作用をカウントすると、反転確率は40%から30%に更新される。次に、相互作用回数をインクリメントし(S3660)、当該ビット確率で設定した回数に至るまで相互作用の実行を繰り返す。30%の反転確率は、相互作用を合計300回実行した後、20%に更新される。
図37で反転論理回路820によるスピン反転確率、およびメモリセル701によるスピン値固定の制御の他の具体例を説明する。図37は横軸に基底状態探索時間(相互作用回数)を示し、縦軸にスピン反転確率(温度T)を示したグラフである。S3610の処理で説明したように、ビットの反転確率は、基底状態探索の初期(高温期間TH)に大きく、終期(低温期間TL)に小さくなるように、ビット調整期151で制御される。このため、基底状態探索期間TH+TLの間、スピン反転確率は漸減している。なお、図37ではスピン反転確率を曲線的に低減しているが、(表1)で示したように階段状に低減させてもよい。
図37の例では、前述のように、基底状態探索の開始時である時間0点において、スピン初期値及び係数を設定する際に、シード画素に対応するメモリセル701のスピンの値を固定する。このために、メモリセル3220にはスピン固定フラグである1が格納される。本実施例では、高温期間THの間はスピンの値を固定し続ける。次に、低温期間TL開始時にはスピンの値の固定を解除する。このために、TL開始時にメモリセル3220のスピン固定フラグ1を0に書き換える。したがって、低温期間TLの間は、メモリセル701の値は、次状態決定回路3230の出力を所定確率で反転したデータに書き換えられる。その後、所定の基底状態探索時間(相互作用回数)が終了する時点TH+TLでスピンの値を読み出し、基底状態探索が完了する。
上記の処理では、途中でシード画素に対応するメモリセル701のスピンの値の固定を解除する。これは、たとえユーザが指定した画素であっても、実際はユーザが意図した領域をはみ出して指定していることがあり、ユーザの指定よりもイジングチップの結果を優先したほうがよい場合があるからである。このような制御は例えば(表2)のように、反転確率と連動してシードデータ固定のフラグを設けて制御することができる。また、反転確率と連動せず、所定タイミングでシードデータの固定をOFFにすることも可能である。
(2−3−2−6)解の読み出しと結果表示
基底状態探索(S2960)が終了すると、スピンが格納されているメモリセル701の値を読み出す。これが解となるので、RAM220またはHDD260に記憶する。記憶したスピンの値に応じて、各画素を前景と背景を分類し、表示装置2910に表示する。表示の態様としては、例えば図24に示したような、前景を示すマスク2400として表示することができる。
基底状態探索(S2960)が終了すると、スピンが格納されているメモリセル701の値を読み出す。これが解となるので、RAM220またはHDD260に記憶する。記憶したスピンの値に応じて、各画素を前景と背景を分類し、表示装置2910に表示する。表示の態様としては、例えば図24に示したような、前景を示すマスク2400として表示することができる。
(2−3−2−7)ユーザインターフェース
図31を再度参照して、ユーザが指示可能な処理の例を説明する。結果表示の際に、前景として表示されたマスク2400は、ボタン3008により記録することができる。また、前景と背景に分類された部分は、それぞれボタン3010と3020で保存することができる。
図31を再度参照して、ユーザが指示可能な処理の例を説明する。結果表示の際に、前景として表示されたマスク2400は、ボタン3008により記録することができる。また、前景と背景に分類された部分は、それぞれボタン3010と3020で保存することができる。
ボタン3100は実行ボタンであり、これにより画像セグメンテーション処理が開始する。開始前に、処理形態をボタン3110と3120で選択することができる。ボタン3110はワンショット実行の指定である。ワンショット実行では、一回だけ基底状態探索を行い、その結果をセグメンテーション結果とする処理である。一回の基底状態探索(S2940)は,例えばN回の相互作用(S3620)で行われる。また、ボタン3120は複数回実行を指定するボタンである。この場合は、ウインド3130で回数を設定する。複数回実行の場合は、イジングチップは設定された回数だけ基底状態探索を行い,その中から最良の結果をセグメンテーション結果とする。「最良の結果」の選定基準としては、イジングモデルのエネルギー関数の値をもっとも小さくするもの選択すればよい。
(2−4)データ構造
上記で説明した画像データ、イジングチップの問題データ、メモリセルに格納されるデータの関連を(表3)の例で説明する。
上記で説明した画像データ、イジングチップの問題データ、メモリセルに格納されるデータの関連を(表3)の例で説明する。
#1〜#3は画像データである。#1は画素の座標(x,y)であり、#2は当該座標の輝度値I(x,y)である。輝度値は例えば0〜100の値をとる。#3はユーザが指定したシード種類である。前景が(1)であり背景が(0)となる。
#4〜#6は問題データである。#4はスピン識別子viであり、例えば図25のモデル中のスピンを特定する。#5は当該スピンに関わる、外部磁場係数hiと相互作用係数Ji(相互作用係数は複数あるが、表3ではJiとして表記)である。#6はスピンの初期値であり、スピンの上向き(+1)と下向き(−1)を識別する。ここでは、前景をスピンの(+1)、背景をスピンの(−1)に対応させる。シード以外はランダムに設定される。以上より明らかなように、画像のひとつの画素はイジングモデルのひとつのスピンに対応する。
#7〜#10はスピンユニットのメモリに関するデータである。#7はスピンの値を格納するメモリ701をアクセスするためのアドレスである。#8はメモリ701に設定される初期値である。シードに指定されたスピンの初期値(+1/−1)に対応し、(1/0)のデータがセットされる。シードに指定されていないスピンは、1または0がランダムに格納される。#9はスピンの固定フラグを格納するメモリ3220をアクセスするためのアドレスである。#10はメモリセル3220に格納されるデータであり、シードデータが設定されたスピンユニットには固定フラグ1が格納される。
#8の初期値データは基底状態探索の実行中に変化していくので、複数回の相互作用を実行し基底状態探索を終了した後にスピンの値を読み出し、結果に応じて対応する座標の画素の種類を決定し、表示する。
以上のデータは、例えばHDD260に格納し、必要に応じてRAM220にコピーして処理に使用する。(表3)は一つのテーブルにまとめてあるが、相互に参照できる複数のテーブルでデータを構成してもよい。
以上の構成は、単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の任意の部分が、ネットワークで接続された他のコンピュータで構成されてもよい。発明の思想としては等価であり、変わるところがない。
本実施例中、ソフトウェアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)などのハードウェアでも実現できる。そのような態様も本願発明の範囲に含まれる。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
100,100−1,100−2 イジングチップ
110 スピンアレイ
120 I/Oドライバ
130 I/Oアドレスデコーダ
140 相互作用アドレスデコーダ
180 相互作用アドレス
181 相互作用クロック
190 アドレスバス(SRAM互換インタフェース)
191 データバス(SRAM互換インタフェース)
192 I/Oクロック(SRAM互換インタフェース)
193 R/W制御線(SRAM互換インタフェース)
200 情報処理装置
210 CPU
220 RAM
230 システムバス
240 NIC
250 イジングチップコントローラ
260 HDD
290 装置間ネットワーク
300 スピンユニット
410,902,1930 ビット線
420,901,1920 ワード線
N スピンを表現するメモリセル、及び、スピンの値を出力するインタフェース
IS0 外部磁場係数が0であるかどうかを示すメモリセル
IS1 外部磁場係数の+1/−1を示すメモリセル
IU0,IL0,IR0,ID0,IF0 相互作用係数が0であるかどうかを示すメモリセル
IU1,IL1,IR1,ID1,IF1 相互作用係数の+1/−1を示すメモリセル
110 スピンアレイ
120 I/Oドライバ
130 I/Oアドレスデコーダ
140 相互作用アドレスデコーダ
180 相互作用アドレス
181 相互作用クロック
190 アドレスバス(SRAM互換インタフェース)
191 データバス(SRAM互換インタフェース)
192 I/Oクロック(SRAM互換インタフェース)
193 R/W制御線(SRAM互換インタフェース)
200 情報処理装置
210 CPU
220 RAM
230 システムバス
240 NIC
250 イジングチップコントローラ
260 HDD
290 装置間ネットワーク
300 スピンユニット
410,902,1930 ビット線
420,901,1920 ワード線
N スピンを表現するメモリセル、及び、スピンの値を出力するインタフェース
IS0 外部磁場係数が0であるかどうかを示すメモリセル
IS1 外部磁場係数の+1/−1を示すメモリセル
IU0,IL0,IR0,ID0,IF0 相互作用係数が0であるかどうかを示すメモリセル
IU1,IL1,IR1,ID1,IF1 相互作用係数の+1/−1を示すメモリセル
Claims (12)
- 相互作用モデルの1つのノードの状態を示す値を記憶する第1のメモリセルと、
前記1つのノードに接続された他のノードからの相互作用を示す相互作用係数を記憶する第2のメモリセルと、
前記第1のメモリセルの値を固定するためのフラグを記憶する第3のメモリセルと、
前記他のノードの状態を示す値及び前記相互作用係数に基づいて、前記1つのノードの次状態を示す値を決定する第1の演算回路と、
前記フラグの値に応じて前記次状態を示す値を前記第1のメモリセルに記録するか否かを決定する第2の演算回路と、
を有するユニットを複数備える半導体装置。 - 画像に含まれる複数の画素から、ユーザの指定したシード画素の特性に類似する特性を有する画素を抽出する画像セグメンテーション方法であって、
相互作用モデルの1つのノードの値を記憶するメモリセルと、
該1つのノードに相互作用を及ぼす他のノードからの相互作用係数を記憶するメモリセルと、
前記1つのノードのバイアス係数を記憶するメモリセルと、
前記1つのノード及び他のノードからなる系の状態を示す関数に基づいて、前記1つのノードの次状態を決定し書き換える論理回路と、
を有する単位ユニットを複数有するアレイを用い、
前記画像に含まれる複数の画素を、前記複数の単位ユニットの1つのノードに対応付け、前記1つのノードの所定回数の書換えの後に前記1つのノードの値を読み出し、セグメンテーションの結果とする画像セグメンテーション方法。 - 前記1つのノードの所定回数の書換えに際して、前記ユーザの指定したシード画素に対応付けられた1つのノードの書き換えを行わないように制御する、
請求項2記載のセグメンテーション方法。 - 前記1つのノードの所定回数の書換えに際して、
前記所定回数のうち第1の期間において、前記ユーザの指定したシード画素に対応付けられた1つのノードの書き換えを行わないように制御し、
前記所定回数のうち前記第1の期間より後の第2の期間において、前記ユーザの指定したシード画素に対応付けられた1つのノードの書き換えを行うように制御する、
請求項3記載のセグメンテーション方法。 - 前記1つのノードの所定回数の書換えに際して、前記1つのノードの次状態を所定確率で反転させて書き換える、
請求項2記載のセグメンテーション方法。 - 前記1つのノードの所定回数の書換えに際して、
前記所定回数のうち第1の期間において、第1の確率で前記1つのノードの次状態を反転させ、
前記所定回数のうち前記第1の期間より後の第2の期間において、前記第1の確率より低い第2の確率で前記1つのノードの次状態を反転させる、
請求項5記載のセグメンテーション方法。 - 前記画像に含まれる複数の画素から、ユーザが第1のシード画素と第2のシード画素を指定し、
前記画像に含まれる複数の画素を、前記複数の単位ユニットの1つのノードに対応付ける際に、
前記第1のシード画素に対応づけられたノードは第1の状態に設定し、
前記第2のシード画素に対応づけられたノードは第2の状態に設定し、
前記1つのノードの所定回数の書換えの後に前記1つのノードの値を読み出し、セグメンテーションの結果とする際に、
前記第1の状態に書き換えられた1つのノードは前記第1のシード画素の属するセグメントに分類し、
前記第2の状態に書き換えられた1つのノードは前記第2のシード画素の属するセグメントに分類する、
請求項2記載の画像セグメンテーション方法。 - 前記他のノードからの相互作用係数として、前記他のノードに対応する画素と前記1つのノードに対応する画素の特性の差を示す平滑化項を用い、
前記第1の状態に設定されたノードからの相互作用係数として、前記1つのノードに対応する画素の特性と、前記第1シード画素に対応する特性との類似度を示す第1データ項を用い、
前記1つのノードのバイアス係数として、前記1つのノードに対応する画素の特性と、前記第2シード画素に対応する特性との類似度を示す第2データ項を用いる、
請求項7記載の画像セグメンテーション方法。 - 前記平滑化項のとる値は、
前記他のノードに対応する画素と前記1つのノードに対応する画素の特性の差が最小の場合、正の最大値をとり、
前記他のノードに対応する画素と前記1つのノードに対応する画素の特性の差が最大の場合、負の最大値をとり、
前記最大値と最小値の中間値で、ゼロの値をとる、
請求項8記載のセグメンテーション方法。 - 前記他のノードからの相互作用係数として、前記他のノードに対応する画素と前記1つのノードに対応する画素の特性の差を示す平滑化項を用い、
前記1つのノードのバイアス係数として、前記1つのノードに対応する画素の特性と、前記第1シード画素に対応する特性との類似度を示す第1データ項と、前記1つのノードに対応する画素の特性と、前記第2シード画素に対応する特性との類似度を示す第2データ項との差分を示すデータ項を用いる、
請求項7記載の画像セグメンテーション方法。 - 前記平滑化項のとる値は、
前記他のノードに対応する画素と前記1つのノードに対応する画素の特性の差が最小の場合、正の最大値をとり、
前記他のノードに対応する画素と前記1つのノードに対応する画素の特性の差が最大の場合、負の最大値をとり、
前記最大値と最小値の中間値で、ゼロの値をとる、
請求項10記載のセグメンテーション方法。 - 入力装置、出力装置、記憶装置、第1および第2の処理装置を有する画像処理装置において、
前記第1の処理装置は、
相互作用モデルの注目ノードの値を記憶するメモリセルと、
該ノードに相互作用を及ぼす隣接ノードからの相互作用係数を記憶するメモリセルと、
前記注目ノード及び隣接ノードからなる系の状態を示す関数に基づいて、前記注目ノードの次状態を決定し書き換える論理回路と、
を有する単位ユニットを複数有するアレイを備え、
前記第2の処理装置は、
前記記憶装置によって、前記入力装置から入力された画像を記憶させる機能と、
前記出力装置によって、前記入力装置から入力された画像を表示させる機能と、
前記入力装置によって、前記表示させた画像の所定の領域をシード領域としてユーザに指定させる機能と、
前記画像に含まれる複数の画素を、前記複数の単位ユニットの注目ノードに対応付ける機能と、
前記指定された画像の領域中の画素に対応する注目ノードを、第1の状態に設定する機能と、
前記論理回路によって、前記注目ノードを所定回数書き換える機能と、
前記注目ノードの所定回数の書換えの後に前記注目ノードの値を読み出し、前記第1の状態に設定された注目ノードに対応する画素を、前記ユーザが指定したシード領域に属するものとして前記出力装置に表示する機能を備える、画像処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014176126A JP5922202B2 (ja) | 2014-08-29 | 2014-08-29 | 半導体装置、画像セグメンテーション方法、および画像処理装置 |
US14/638,613 US9430845B2 (en) | 2014-08-29 | 2015-03-04 | Semiconductor device, image segmentation method, and image processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014176126A JP5922202B2 (ja) | 2014-08-29 | 2014-08-29 | 半導体装置、画像セグメンテーション方法、および画像処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016051313A JP2016051313A (ja) | 2016-04-11 |
JP5922202B2 true JP5922202B2 (ja) | 2016-05-24 |
Family
ID=55403083
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014176126A Expired - Fee Related JP5922202B2 (ja) | 2014-08-29 | 2014-08-29 | 半導体装置、画像セグメンテーション方法、および画像処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9430845B2 (ja) |
JP (1) | JP5922202B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016006071A1 (ja) * | 2014-07-09 | 2016-01-14 | 株式会社日立製作所 | 半導体装置及び情報処理システム |
JP6021864B2 (ja) * | 2014-08-29 | 2016-11-09 | 株式会社日立製作所 | 半導体装置および情報処理装置 |
JP5864684B1 (ja) * | 2014-08-29 | 2016-02-17 | 株式会社日立製作所 | 半導体装置 |
JP6841722B2 (ja) | 2017-06-06 | 2021-03-10 | 株式会社日立製作所 | 情報処理装置 |
JP6979331B2 (ja) * | 2017-10-30 | 2021-12-15 | 株式会社日立製作所 | 情報処理装置および情報処理方法 |
JP6935356B2 (ja) * | 2018-03-30 | 2021-09-15 | 株式会社日立製作所 | 半導体装置、情報処理システム、および情報処理方法 |
US11182157B2 (en) | 2018-05-08 | 2021-11-23 | Hitachi, Ltd. | Information processing device, arithmetic device, and information processing method |
JP6570698B1 (ja) * | 2018-05-18 | 2019-09-04 | 株式会社リクルートコミュニケーションズ | 設定装置、設定方法及び設定プログラム |
US20220343202A1 (en) * | 2019-10-29 | 2022-10-27 | Hitachi, Ltd. | Arithmetic circuit, arithmetic device, information processing apparatus, and method for searching for ground state of ising model |
WO2022009255A1 (ja) * | 2020-07-06 | 2022-01-13 | 日本電気株式会社 | エネルギー関数導出装置、方法、および、コンピュータ読取可能な記録媒体 |
WO2024121890A1 (ja) * | 2022-12-05 | 2024-06-13 | 日本電信電話株式会社 | 情報処理装置、情報処理方法、および、情報処理プログラム |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7979844B2 (en) * | 2008-10-14 | 2011-07-12 | Edss, Inc. | TICC-paradigm to build formally verified parallel software for multi-core chips |
US8213726B2 (en) * | 2009-06-19 | 2012-07-03 | Microsoft Corporation | Image labeling using multi-scale processing |
JP5354233B2 (ja) | 2011-03-01 | 2013-11-27 | 大学共同利用機関法人情報・システム研究機構 | イジングモデルの量子計算装置及びイジングモデルの量子計算方法 |
JP2012217518A (ja) | 2011-04-05 | 2012-11-12 | Hitachi Ltd | 人間行動分析システム及び方法 |
-
2014
- 2014-08-29 JP JP2014176126A patent/JP5922202B2/ja not_active Expired - Fee Related
-
2015
- 2015-03-04 US US14/638,613 patent/US9430845B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US9430845B2 (en) | 2016-08-30 |
JP2016051313A (ja) | 2016-04-11 |
US20160063725A1 (en) | 2016-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5922202B2 (ja) | 半導体装置、画像セグメンテーション方法、および画像処理装置 | |
JP5865456B1 (ja) | 半導体装置 | |
US11631239B2 (en) | Iterative spatio-temporal action detection in video | |
US11836610B2 (en) | Concurrent training of functional subnetworks of a neural network | |
WO2018171717A1 (zh) | 面向神经网络处理器的自动化设计方法和系统 | |
US11763168B2 (en) | Progressive modification of generative adversarial neural networks | |
US10984286B2 (en) | Domain stylization using a neural network model | |
US10872399B2 (en) | Photorealistic image stylization using a neural network model | |
US10776688B2 (en) | Multi-frame video interpolation using optical flow | |
JP5864684B1 (ja) | 半導体装置 | |
US20200151288A1 (en) | Deep Learning Testability Analysis with Graph Convolutional Networks | |
US20180247201A1 (en) | Systems and methods for image-to-image translation using variational autoencoders | |
JP6177993B2 (ja) | 半導体装置および情報処理装置 | |
US20190095791A1 (en) | Learning affinity via a spatial propagation neural network | |
CN110059793B (zh) | 生成式对抗神经网络的逐步修改 | |
JPWO2017033326A1 (ja) | 半導体装置および情報処理装置 | |
US20190188569A1 (en) | Parallel Forward and Backward Propagation | |
US9466346B2 (en) | Semiconductor device and information processing device | |
JP2015197702A (ja) | 情報処理装置、情報処理方法 | |
WO2016199220A1 (ja) | 情報処理装置及びその制御方法 | |
US11809989B2 (en) | Preventing glitch propagation | |
US20220006457A1 (en) | Glitch-free multiplexer | |
JP2016066378A (ja) | 半導体装置および情報処理方法 | |
Wang et al. | Real-time hierarchical supervoxel segmentation via a minimum spanning tree | |
JP5903471B2 (ja) | 半導体装置および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160106 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20160329 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160413 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5922202 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |