(57)【要約】【課題】ＣＮＮを構築するためのハイパーパラメータを容易に設定するための技術を提供する。【解決手段】少なくとも一つのノードを含む複数の層から構成され、画像処理を実行するためのニューラルネットワークを構築する計算機であって、ニューラルネットワークは、画像からオブジェクトを検出するための処理を実現する検出層を含み、計算機は、検出層のハイパーパラメータを算出するため値であって、オブジェクトの境界および形状の特性に関する設定値を含む、ニューラルネットワークを構築するための設定情報を取得する第１の処理と、設定情報に基づいて、ニューラルネットワークを構築する第２の処理と、を実行し、第２の処理は、設定値に基づいて検出層のハイパーパラメータを算出する処理を含む。【選択図】  図１
2020086479.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのノードを含む複数の層から構成され、画像処理を実行するためのニューラルネットワークを構築する計算機であって、
前記ニューラルネットワークは、画像からオブジェクトを検出するための処理を実現する検出層を含み、
前記計算機は、演算装置および前記演算装置に接続される記憶装置を備え、
前記演算装置は、
前記検出層のハイパーパラメータを算出するため値であって、前記オブジェクトの境界および前記オブジェクトの形状の特性に関する設定値を含む、前記ニューラルネットワークを構築するための設定情報を取得する第１の処理と、
前記設定情報に基づいて、前記ニューラルネットワークを構築する第２の処理と、
前記構築されたニューラルネットワークの構造を管理するモデル情報を生成する第３の処理と、を実行し、
前記第２の処理は、前記設定値に基づいて、前記検出層のハイパーパラメータを算出する処理を含むことを特徴とする計算機。
【請求項２】
請求項１に記載の計算機であって、
前記ニューラルネットワークは、前記オブジェクトの境界を検出する第１の検出層および任意の形状の前記オブジェクトを検出する第２の検出層を含み、
前記設定値は、前記第１の検出層の設定値および前記第２の検出層の設定値を含み、
前記第２の処理は、
前記演算装置が、前記第１の検出層の設定値に基づいて、前記第１の検出層の前記ノードの数および前記ノードに設定する重み係数を算出する第４の処理と、
前記演算装置が、前記第２の検出層の設定値に基づいて、前記第２の検出層の前記ノードの数および前記ノードに設定する重み係数を算出する第５の処理と、を含むことを特徴とする計算機。
【請求項３】
請求項２に記載の計算機であって、
前記第２の検出層は、前記第１の検出層によって検出された前記オブジェクトの境界を任意の移動に移動させることによって前記任意の形状のオブジェクトを検出し、
前記第１の検出層の設定値は、前記画像の周波数特性に基づいて設定された第１のフィルタおよび前記オブジェクトの境界の種類を規定する第１の角度を含み、
前記第１の検出層の設定値は、前記オブジェクトの境界の任意の移動方向を規定する第２のフィルタおよび前記移動方向を規定する第２の角度を含み、
前記第４の処理では、
前記演算装置が、前記第１の角度に基づいて前記第１の検出層の前記ノードの数を算出し、
前記演算装置が、前記第１の角度および前記第１のフィルタを用いて、前記第１のフィルタの次元に対応する回転操作を実行することによって、前記第１の検出層のノードに設定する重み係数を算出し、
前記第５の処理では、
前記演算装置が、前記第２の角度に基づいて前記第２の検出層の前記ノードの数を算出し、
前記演算装置が、前記第２の角度および前記第２のフィルタを用いて、前記第２のフィルタの次元に対応する回転操作を実行することによって、前記第２の検出層のノードに設定する重み係数を算出することを特徴とする計算機。
【請求項４】
請求項２に記載の計算機であって、
前記構築されたニューラルネットワークおよび学習データを用いた学習処理を実行し、前記学習処理の結果に基づいてモデル情報を更新する第６の処理を実行することを特徴とする計算機。
【請求項５】
請求項２に記載の計算機であって、
前記演算装置は、前記モデル情報に基づいて、入力された画像から前記オブジェクトを検出するための処理を実行することを特徴とする計算機。
【請求項６】
演算装置および前記演算装置に接続される記憶装置を有する計算機が実行するニューラルネットワークの構築方法であって、
前記ニューラルネットワークは、
少なくとも一つのノードを含む複数の層から構成され、画像処理を実行するためのニューラルネットワークであり、
画像からオブジェクトを検出するための処理を実現する検出層を含み、
前記ニューラルネットワークの構築方法は、
前記演算装置が、前記検出層のハイパーパラメータを算出するため値であって、前記オブジェクトの境界および前記オブジェクトの形状の特性に関する設定値を含む、前記ニューラルネットワークを構築するための設定情報を取得する第１のステップと、
前記演算装置が、前記設定情報に基づいて、前記ニューラルネットワークを構築する第２のステップと、
前記演算装置が、前記構築されたニューラルネットワークの構造を管理するモデル情報を生成する第３のステップと、を含み、
前記第２のステップは、前記演算装置が、前記設定値に基づいて、前記検出層のハイパーパラメータを算出するステップを含むことを特徴とするニューラルネットワークの構築方法。
【請求項７】
請求項６に記載のニューラルネットワークの構築方法であって、
前記ニューラルネットワークは、前記オブジェクトの境界を検出する第１の検出層および任意の形状の前記オブジェクトを検出する第２の検出層を含み、
前記設定値は、前記第１の検出層の設定値および前記第２の検出層の設定値を含み、
前記第２のステップは、
前記演算装置が、前記第１の検出層の設定値に基づいて、前記第１の検出層の前記ノードの数および前記ノードに設定する重み係数を算出する第４のステップと、
前記演算装置が、前記第２の検出層の設定値に基づいて、前記第２の検出層の前記ノードの数および前記ノードに設定する重み係数を算出する第５のステップと、を含むことを特徴とするニューラルネットワークの構築方法。
【請求項８】
請求項７に記載のニューラルネットワークの構築方法であって、
前記第２の検出層は、前記第１の検出層によって検出された前記オブジェクトの境界を任意の移動に移動させることによって前記任意の形状のオブジェクトを検出し、
前記第１の検出層の設定値は、前記画像の周波数特性に基づいて設定された第１のフィルタおよび前記オブジェクトの境界の種類を規定する第１の角度を含み、
前記第１の検出層の設定値は、前記オブジェクトの境界の任意の移動方向を規定する第２のフィルタおよび前記移動方向を規定する第２の角度を含み、
前記第４のステップは、
前記演算装置が、前記第１の角度に基づいて前記第１の検出層の前記ノードの数を算出するステップと、
前記演算装置が、前記第１の角度および前記第１のフィルタを用いて、前記第１のフィルタの次元に対応する回転操作を実行することによって、前記第１の検出層のノードに設定する重み係数を算出するステップと、を含み、
前記第５のステップは、
前記演算装置が、前記第２の角度に基づいて前記第２の検出層の前記ノードの数を算出するステップと、
前記演算装置が、前記第２の角度および前記第２のフィルタを用いて、前記第２のフィルタの次元に対応する回転操作を実行することによって、前記第２の検出層のノードに設定する重み係数を算出するステップと、を含むことを特徴とするニューラルネットワークの構築方法。
【請求項９】
請求項７に記載のニューラルネットワークの構築方法であって、
前記演算装置が、前記構築されたニューラルネットワークおよび学習データを用いた学習処理を実行するステップと、
前記演算装置が、前記学習処理の結果に基づいてモデル情報を更新するステップを、を含むことを特徴とするニューラルネットワークの構築方法。
【請求項１０】
複数の計算機を備える計算機システムであって、
画像処理を実行するためのニューラルネットワークを構築する設定部と、前記ニューラルネットワークの学習処理を実行する学習部と、前記ニューラルネットワークを用いて前記画像処理を実行する画像処理部と、を備え、
前記ニューラルネットワークは、
少なくとも一つのノードを含む複数の層から構成され、
画像からオブジェクトを検出するための処理を実現する検出層を含み、
前記設定部は、
前記検出層のハイパーパラメータを算出するため値であって、前記オブジェクトの境界および前記オブジェクトの形状の特性に関する設定値を含む、前記ニューラルネットワークを構築するための設定情報を取得する第１の処理と、
前記設定情報に基づいて、前記ニューラルネットワークを構築する第２の処理と、
前記構築されたニューラルネットワークの構造を管理するモデル情報を生成する第３の処理と、を実行し、
前記第２の処理は、前記設定値に基づいて、前記検出層のハイパーパラメータを算出する処理を含むことを特徴とする計算機システム。
【請求項１１】
請求項１０に記載の計算機システムであって、
前記複数の層は、前記オブジェクトの境界を検出する第１の検出層および任意の形状の前記オブジェクトを検出する第２の検出層を含み、
前記設定値は、前記第１の検出層の設定値および前記第２の検出層の設定値を含み、
前記第２の処理は、
前記設定部が、前記第１の検出層の設定値に基づいて、前記第１の検出層の前記ノードの数および前記ノードに設定する重み係数を算出する第４の処理と、
前記設定部が、前記第２の検出層の設定値に基づいて、前記第２の検出層の前記ノードの数および前記ノードに設定する重み係数を算出する第５の処理と、を含むことを特徴とする計算機システム。
【請求項１２】
請求項１１に記載の計算機システムであって、
前記第２の検出層は、前記第１の検出層によって検出された前記オブジェクトの境界を任意の移動に移動させることによって前記任意の形状のオブジェクトを検出し、
前記第１の検出層の設定値は、前記画像の周波数特性に基づいて設定された第１のフィルタおよび前記オブジェクトの境界の種類を規定する第１の角度を含み、
前記第１の検出層の設定値は、前記オブジェクトの境界の任意の移動方向を規定する第２のフィルタおよび前記移動方向を規定する第２の角度を含み、
前記第４の処理では、
前記設定部が、前記第１の角度に基づいて前記第１の検出層の前記ノードの数を算出し、
前記設定部が、前記第１の角度および前記第１のフィルタを用いて、前記第１のフィルタの次元に対応する回転操作を実行することによって、前記第１の検出層のノードに設定する重み係数を算出し、
前記第５の処理では、
前記設定部が、前記第２の角度に基づいて前記第２の検出層の前記ノードの数を算出し、
前記設定部が、前記第２の角度および前記第２のフィルタを用いて、前記第２のフィルタの次元に対応する回転操作を実行することによって、前記第２の検出層のノードに設定する重み係数を算出することを特徴とする計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習対象のニューラルネットワークのハイパーパラメータの設定に関する。
【背景技術】
【０００２】
近年、ディープラーニングの中核技術の一つである畳み込みニューラルネットワーク（以下、ＣＮＮと記載する）が様々な分野で用いられている。ＣＮＮは、一つ以上のノードから構成される層を含み、各層のノードの接続がネットワークを形成する構造である。なお、ＣＮＮに含まれる層には、畳み込み演算が実行される層を少なくとも一つ含む。
【０００３】
例えば、医用分野では、ＣＴ（Ｃｏｍｐｕｔｅｒ  Ｔｏｍｏｇｒａｐｈｙ）画像、ＭＲＩ（Ｍａｇｎｅｔｉｃ  Ｒｅｓｏｎａｎｃｅ  Ｉｍａｇｉｎｇ）画像、Ｘ線画像、超音波画像等を処理するＣＮＮを利用して、精度の高い病変の検出、病変の自動計測、病変のレポート生成等を実現してきている。また、監視カメラ、家庭用ビデオカメラ、および携帯電話端末等の画像を処理するＣＮＮを利用して、画像の中から人物等の被写体を検出し、画像から文書、文字、グラフ、図形等を認識することが行われている。
【０００４】
ＣＮＮ等のニューラルネットワークの処理性能を大きく左右する要因のひとつに、ハイパーパラメータがある。ハイパーパラメータは、ニューラルネットワークを構築するためのパラメータであり、学習処理の開始前に設計者が設定する必要がある。ハイパーパラメータは多数の種類がある。例えば、ＣＮＮを構成する層数、各層のノード数、畳み込みの重み係数等のパラメータの初期値、オプティマイザ（パラメータの更新アルゴリズム）の選択、学習率（１回の学習におけるパラメータ更新率）等である。
【０００５】
ハイパーパラメータが学習されたＣＮＮの処理性能にどのように関与しているかは明確に体系化されていないため、ＣＮＮの処理性能は、設計者のノウハウ等に大きく依存する。
【０００６】
従来技術のＣＮＮの構築時では、学習器が、ハイパーパラメータを設計者のノウハウ等に基づいた試行錯誤または乱数で設定し、全体最適解を得るための学習処理を実行する。しかし、ハイパーパラメータの設定が不適切である場合、学習処理において局所最適解に陥って、学習がそれ以上進まない事態となり、高い処理性能のＣＮＮを得ることができない。
【０００７】
そのため、現状のＣＮＮの開発では、高い処理性能を実現するためにハイパーパラメータの調整に多くの時間が充てられている。したがって、設計初心者が、処理性能が高いＣＮＮを構築することは難しく、また習熟者にとってもハイパーパラメータの調整に多大な試行錯誤を必要としている。
【０００８】
ハイパーパラメータの設計法として、特許文献１および非特許文献１のような手法が知られている。
【０００９】
特許文献１では、フィッシャー重みマップが一般化固有値問題として解析的に解けることを利用し、中間層として取り出したいニューロンと同数の上位固有ベクトルを用いてフィッシャー重みマップを求めることで、簡便に畳み込み層を構築できることが示されている。
【００１０】
また、非特許文献１では、多層ネットワーク構造における部分的な層ごとに教師なし学習を実行し、これを層の数だけ繰り返す「プレトレーニング」を行えば、多層であってもうまく学習できることが示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１５−５２８３２号公報
【非特許文献】
【００１２】
【非特許文献１】G. E. Hinton et al. “A fast learning algorithm for deep belief nets, Neural Computation,” Vol. 18, pp. 1527-1544 (2006).
【発明の概要】
【発明が解決しようとする課題】
【００１３】
特許文献１および非特許文献１に記載された手法では、本来開発したいＣＮＮのハイパーパラメータの他に、フィッシャー重みマップ、プレトレーニング、等の技術を同時に開発する必要があり、工数が余計にかかり、また、設計初心者には難度が高い。したがって、簡易にハイパーパラメータを設定する技術の開発が望まれている。
【００１４】
本発明は、前述の課題に鑑みてなされたものである。すなわち、本発明は、画像を処理するＣＮＮ、特に、画像からオブジェクトを検出する処理を含むＣＮＮのハイパーパラメータを容易に設定する技術を提供する。また、ＣＮＮのハイパーパラメータの値を簡易に設定するための技術（装置、方法）を提供するとともに、その技術を用いて構成したシステムを提供するものである。
【課題を解決するための手段】
【００１５】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。すなわち、少なくとも一つのノードを含む複数の層から構成され、画像処理を実行するためのニューラルネットワークを構築する計算機であって、前記ニューラルネットワークは、画像からオブジェクトを検出するための処理を実現する検出層を含み、前記計算機は、演算装置および前記演算装置に接続される記憶装置を備え、前記演算装置は、前記検出層のハイパーパラメータを算出するため値であって、前記オブジェクトの境界および前記オブジェクトの形状の特性に関する設定値を含む、前記ニューラルネットワークを構築するための設定情報を取得する第１の処理と、前記設定情報に基づいて、前記ニューラルネットワークを構築する第２の処理と、前記構築されたニューラルネットワークの構造を管理するモデル情報を生成する第３の処理と、を実行し、前記第２の処理は、前記設定値に基づいて、前記検出層のハイパーパラメータを算出する処理を含む。
【発明の効果】
【００１６】
本発明によれば、ニューラルネットワーク（ＣＮＮ）のハイパーパラメータを容易に設定できる。上記した以外の課題、構成および効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１７】
【図１】実施例１の計算機の構成例を示す図である。
【図２Ａ】実施例１におけるＣＮＮの構造の一例を示す図である。
【図２Ｂ】実施例１におけるＣＮＮの構造の一例を示す図である。
【図３】実施例１の入力画像に含まれる結節と出力画像に含まれるＲＯＩの一例を示す図である。
【図４】実施例１の入力画像に含まれる結節の輪郭を検出する線分の一例を示す図である。
【図５】実施例１の移動層において実行される処理の概念を示す図である。
【図６】実施例１の計算機が実行する処理を説明するフローチャートである。
【図７】実施例１の計算機が提示する設定画面の一例を示す図である。
【図８】実施例１の境界検出層のハイパーパラメータの設定例を示す図である。
【図９】実施例１の移動層のハイパーパラメータの設定例を示す図である。
【図１０】実施例１の移動層のハイパーパラメータの設定例を示す図である。
【図１１】実施例１の学習処理の流れを示す図である。
【図１２】実施例１のロス値の一例を示す図である。
【図１３Ａ】実施例２におけるＣＮＮの構造の一例を示す図である。
【図１３Ｂ】実施例２におけるＣＮＮの構造の一例を示す図である。
【図１４】実施例２のＣＮＮが検出する結節のモデルの一例を示す図である。
【図１５】実施例２の結節の境界面を検出するために設定される重み係数の一例を示す図である。
【図１６】実施例２のＣＮＮが検出する血管のモデルの一例を示す図である。
【図１７】実施例２の血管の境界面を検出するために設定される重み係数の一例を示す図である。
【図１８】実施例２の計算機が実行する処理を説明するフローチャートである。
【図１９】実施例２の計算機が提示する設定画面の一例を示す図である。
【図２０】実施例２の計算機が提示する性能評価画面の一例を示す図である。
【図２１】実施例３のシステムの構成例を示す図である。
【発明を実施するための形態】
【００１８】
本発明は、画像からオブジェクトを検出する処理を含む画像処理を実行するためのＣＮＮのハイパーパラメータを容易に設定する技術を提供する。特に、ＣＮＮを構成する層のノード数およびノードの重み係数を容易に設定するための技術を提供する。
【００１９】
ここで、ＣＮＮは、後述のように、複数のノードから構成される複数の層をネットワーク状に接続する。ノードとは、人工ニューロン単体のことであり、ユニットとも呼ばれる。
【００２０】
本発明では、乱数によってハイパーパラメータを設定するのではなく、実用的な局所最適解（実用解）を想定し、実用解に基づく初期値を設定することによって構築されたＣＮＮの学習を行うことによって、所望の実用解に収束させるという新たな原理に基づいてハイパーパラメータを設定するものである。
【００２１】
以下、添付図面を参照して本発明の実施例について説明する。なお、添付図面は本発明の原理に則った具体的な実装例を示しているが、これらは本発明の理解のためのものであり、決して本発明を限定的に解釈するために用いられるものではない。
【００２２】
本実施例では、当業者が本発明を実施するのに十分詳細にその説明がなされているが、他の実装および形態も可能で、本発明の技術的思想の範囲と精神を逸脱することなく構成および構造の変更および多様な要素の置き換えが可能であることを理解する必要がある。したがって、以降の記述をこれに限定して解釈してはならない。
【００２３】
実施例を説明するための図において、同一の構成には原則として同一の符号を付し、その繰り返しの説明は省略する。
【実施例１】
【００２４】
＜ＣＮＮのハイパーパラメータを設定する計算機の構成例＞
図１は、実施例１の計算機の構成例を示す図である。
【００２５】
計算機１００は、演算装置１０１、メモリ１０２、ストレージ装置１０３、通信インタフェース１０４、出力インタフェース１０５、および入力インタフェース１０６を備える。前述の各ハードウェアはバス１０７を介して互いに接続される。
【００２６】
演算装置１０１は、計算機１００全体を制御する装置であって、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。演算装置１０１は、メモリ１０２に格納されるプログラムを実行する。演算装置１０１がプログラムにしたがって処理を実行することによって、特定の機能を実現する機能部として動作する。以下の説明では、機能部を主語に処理を説明する場合、演算装置１０１が当該機能部を実現するプログラムを実行していることを示す。
【００２７】
メモリ１０２は、演算装置１０１が実行するプログラムおよびプログラムが使用する情報を格納する。また、メモリ１０２はプログラムが一時的に使用するワークエリアを含む。メモリ１０２は、設定部１１０、学習部１１１、および画像処理部１１２を実現するプログラムを格納する。
【００２８】
設定部１１０は、ＣＮＮ２００（図２参照）を構築する。学習部１１１は、ＣＮＮ２００の学習処理を実行する。学習部１１１は、学習結果をモデル情報１２１として生成する。画像処理部１１２は、モデル情報１２１を用いて、入力された画像に対して任意の画像処理を実行する。
【００２９】
ストレージ装置１０３は、データを永続的に格納する記憶装置であり、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）およびＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）である。ストレージ装置１０３は、学習データ管理情報１２０およびモデル情報１２１を格納する。
【００３０】
学習データ管理情報１２０は、入力画像および正解を示す出力結果を対応づけた学習データを管理するための情報である。モデル情報１２１は、ＣＮＮ２００の構造を管理するための情報である。モデル情報１２１は、ハイパーパラメータ、ネットワーク構造、およびその他パラメータ等が格納される。
【００３１】
なお、メモリ１０２に格納されるプログラムおよび情報は、ストレージ装置１０３に格納されてもよい。この場合、演算装置１０１がストレージ装置１０３からプログラムおよび情報を読み出し、メモリ１０２にロードし、さらに、メモリ１０２にロードされたプログラムを実行する。
【００３２】
通信インタフェース１０４は、ネットワーク１５０を介して、画像取得装置等の外部装置と通信するためのインタフェースである。計算機１００は、通信インタフェース１０４を介して、各種画像、ＣＮＮ２００の構造に関する情報、外部装置を制御するためのコマンド等を送受信する。
【００３３】
ネットワーク１５０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、イントラネットワーク、インターネット、携帯電話網、固定電話網等である。接続方式は有線および無線のいずれでもよい。なお、計算機１００は、通信インタフェース１０４を介して、外部装置と直接接続してもよい。
【００３４】
出力インタフェース１０５は、ディスプレイ１６０等の出力装置と接続するためのインタフェースである。ディスプレイ１６０には、各種画像、ＣＮＮ２００の構造に関する情報、学習処理および画像処理の進捗状況等が表示される。
【００３５】
入力インタフェース１０６は、キーボード１７０およびマウス１８０等の入力装置に接続するためのインタフェースである。ＣＮＮ２００の設計者（以下、ユーザと記載する。）は、入力装置を用いて各種値を設定し、また、各種コマンドを入力する。
【００３６】
＜ＣＮＮの構造例＞
図２Ａおよび図２Ｂは、実施例１におけるＣＮＮ２００の構造の一例を示す図である。
【００３７】
実施例１では、ＣＮＮ２００による画像処理を利用した肺がんＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｔｅｃｔｉｏｎ／Ｄｉａｇｎｏｓｉｓ）システムを一例として説明する。
【００３８】
ＣＡＤシステムは、画像処理を実行することによって、病変の検出、病変の正常／異常の識別、サイズ計測、病変種類の区別等を、自動または半自動で行うシステムである。当該システムは、複数の医師がボリュームデータを読影するのと並行して、ＣＡＤがボリュームデータを解析し、解析結果を医師に提示する。これによって、病変見落としを防止できる。
【００３９】
画像処理部１１２には、ＣＴ装置等によって撮影された胸部断層画像（ボリュームデータ）を構成する複数のスライス画像が入力画像２５０として入力される。画像処理部１１２は、スライス画像に映っている病変部位である結節を検出するための画像処理を実行し、処理結果として出力画像２６０を出力する。
【００４０】
結節が映っている入力画像２５０が画像処理部１１２に入力された場合、結節に対応する位置にＲＯＩ（Ｒｅｇｉｏｎ  Ｏｆ  Ｉｎｔｅｒｅｓｔ）２８０を含む出力画像２６０が出力される。図２Ａでは、画像処理部１１２は、入力画像２５０−ｍに対して画像処理を実行した結果、矩形領域２７０にＲＯＩ２８０を含む出力画像２６０−ｍを出力する。なお、矩形領域２７０は説明のために追加したものであり、実際の画像には表示されない。
【００４１】
実施例１の出力画像２６０は二値化された画像として出力されるものとする。具体的には、ＲＯＩ２８０は白（輝度値＝１）、その他の部分は黒（輝度値＝０）となる画像とする。なお、出力画像２６０は二値化された画像でなくてもよい。例えば、結節である確率に応じて輝度値を連続的に変化させた画像でもよい。この場合、結節である確率が高い場合、輝度を大きくし、結節である確率が低い場合、輝度値を小さくする表示方法が考えられる。
【００４２】
前述のような画像処理を実現するＣＮＮ２００の構造について説明する。
【００４３】
実施例１のＣＮＮ２００は、三つの層から構成される。第１層は境界検出層２１０であり、第２層は移動層２１１であり、また、第３層は結合層２１２である。各層２１０、２１１、２１２は少なくとも一つのノード２２０から構成される。ここで、図２Ｂを用いてノード２２０の構造について説明する。
【００４４】
ノード２２０は、畳み込み演算２２１、加算演算２２２、および活性化関数２２３から構成される。
【００４５】
畳み込み演算２２１では、水平方向がｉ画素、垂直方向がｊ画素であるｎ個の２次元ブロックから構成される入力画素群ｘ＿ａに対して２次元畳み込み演算が実行される。なお、ｎは整数であり、添字ａは０から（ｎ−１）までの整数である。２次元畳み込み演算は、２次元ブロックと同じサイズであるｎ個の重み係数群を用意し、ブロック中の各画素に対して対応する係数を乗算し、その値の総和を算出する演算である。
【００４６】
加算演算２２２では、畳み込み演算２２１の結果にバイアスを加算する。
【００４７】
活性化関数２２３は、加算演算２２２から入力された値に基づいて、１画素の出力ｙを算出する。活性化関数２２３は、例えば、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）、Ｃｌｉｐｐｅｄ  ＲｅＬＵ、Ｌｅａｋｙ  ＲｅＬＵ、シグモイド関数、ステップ関数、ハイパボリックタンジェント（ｔａｎｈ）関数等を用いる。
【００４８】
入力された画像の全ての画素に対して、前述の２次元ブロック処理を実行することによって２次元の画像を得ることができる。
【００４９】
なお、水平方向、垂直方向のそれぞれの端でパディングを行って、出力される画像のサイズを入力された画像と一致させる処理が行われてもよい。
【００５０】
なお、人物、動物、自動車、二輪車、放置物、危険物等を検出するＣＮＮ２００も同様の構造で実現できる。また、入力される画像は静止画でもよし、動画でもよい。
【００５１】
次に、ＣＮＮ２００に含まれる境界検出層２１０、移動層２１１、および結合層２１２の構造について説明する。
【００５２】
＜境界検出層の構造例＞
境界検出層２１０は、オブジェクトの輪郭に対応する境界を検出する。図３は、実施例１の入力画像２５０に含まれる結節と出力画像２６０に含まれるＲＯＩ２８０の一例を示す図である。図４は、実施例１の入力画像２５０に含まれる結節の輪郭を検出する線分の一例を示す図である。
【００５３】
入力画像２５０に図３の（ａ）に示す結節が含まれている場合、図３の（ｂ）に示すＲＯＩ２８０が含まれる出力画像２６０が出力される。なお、入力画像２５０に含まれる結節は、本来連続的な輝度値で表される画像であるが、説明のために二値画像として表示している。
【００５４】
図４に示すような４５度刻みで回転させた８種類の線分を用いて結節を検出する場合、図３の（ａ）に示す結節の輪郭は、図３の（ｂ）に示すような線分の組合せとして検出される。図４の（ａ）は、輪郭の右側に結節が存在する場合の線分を表す。（ｂ）、（ｃ）、（ｄ）、（ｅ）、（ｆ）、（ｇ）、（ｈ）は、図４の（ａ）の線分を反時計回りに４５度回転させることによって得られる線分である。以下の説明では、オブジェクト（結節）の輪郭に対応する線分を境界線分とも記載する。
【００５５】
以上で説明から分かるように、境界検出層２１０は、入力画像２５０に含まれるオブジェクトの境界を、任意の種類の境界線分の組合せとして検出する。すなわち、境界検出層２１０は、境界線分の種類と同数のノード２２０から構成される。
【００５６】
＜移動層の構造例＞
移動層２１１は、境界検出層２１０によって検出されたオブジェクトの境界に基づいて、任意の形状のオブジェクトを検出する。
【００５７】
図５は、実施例１の移動層２１１において実行される処理の概念を示す図である。
【００５８】
移動層２１１のノード２２０では、基準点５０１を設定し、境界線分５０２を基準点５０１に移動させ、境界線分５０２に対応する境界検出層２１０の値を加算する畳み込み演算が行われる。なお、基準点５０１は任意に設定された点であり、ここでは「おおむね結節の中心あたりの点」とする。
【００５９】
図５の（ａ）は、図４の（ａ）に対応する境界線分５０２−１を移動方向５０３−１に沿って基準点５０１に移動させ、図４の（ａ）に対応する境界線分５０２−２を移動方向５０３−２に沿って基準点５０１に移動させた状態を示す。図５の（ｂ）、（ｃ）、（ｄ）、（ｅ）、（ｆ）、（ｇ）、（ｈ）も同様の操作を示している。
【００６０】
実施例１では、境界線分の移動方向が指定される。例えば、４５度刻みで移動方向を設定する場合、移動層２１１は８個のノード２２０から構成される。
【００６１】
以上で説明から分かるように、移動層２１１は、境界線分の移動方向の数と同数のノード２２０から構成される。
【００６２】
＜結合層の構造例＞
結合層２１２は、基準点に移動させた境界線分の値の合計値を算出し、ＲＯＩ２８０の検出結果を出力する。具体的には、結合層２１２のノード２２０では、移動層２１１の出力に重み係数を乗算した値の総和を算出する演算が行われる。すなわち、移動層２１１の各ノードの出力を受け付け、１（＝１×１）画素の畳み込み演算を行う一つのノード２２０から構成される。
【００６３】
＜ＣＮＮの特性＞
実施例１のＣＮＮ２００は以下のような特性を有する。境界検出層２１０において、結節の境界上からは正値が出力され、境界以外の部分ではゼロが出力される。そのため、境界線分５０２を基準点５０１に移動させ、境界の値を加算した結果、基準点５０１では極めて大きな正値が出力され、基準点５０１以外の点では、ゼロまたは小さい値が出力される。
【００６４】
したがって、境界検出層２１０がＭ種類の境界線分を検出し、移動層２１１がＮ個の方向に境界線分を移動する畳み込み演算を実行する場合、ＣＮＮ２００は（Ｍ×Ｎ）個の境界の組合せによって定まる形状の結節を検出できる。すなわち、ＣＮＮ２００は任意の形状のオブジェクトを検出する検出器として機能する。
【００６５】
＜学習処理＞
次に、実施例１のＣＮＮ２００を構築するための学習処理について説明する。
【００６６】
図６は、実施例１の計算機１００が実行する処理を説明するフローチャートである。図７は、実施例１の計算機１００が提示する設定画面の一例を示す図である。図８は、実施例１の境界検出層２１０のハイパーパラメータの設定例を示す図である。図９および図１０は、実施例１の移動層２１１のハイパーパラメータの設定例を示す図である。図１１は、実施例１の学習処理の流れを示す図である。図１２は、実施例１のロス値の一例を示す図である。
【００６７】
計算機１００は、ユーザからＣＮＮ２００の学習を実行するための操作を受け付けた場合、設定部１１０を呼び出す。設定部１１０は、図７に示す設定画面７００をユーザに提示し、情報の入力を受け付ける（ステップＳ６０１）。ここで、設定画面７００について説明する。
【００６８】
設定画面７００は、設定部１１０によってディスプレイ１６０に表示される画面であり、境界検出層設定欄７１０、移動層設定欄７２０、結合層設定欄７３０、ＣＮＮ構造表示欄７４０、設定ボタン７０１、データ読み込みボタン７０２、および学習開始ボタン７０３を含む。
【００６９】
境界検出層設定欄７１０は、境界検出層２１０のハイパーパラメータの生成に必要な情報を設定するための欄である。境界検出層設定欄７１０は、ベースフィルタ設定欄７１１および回転角設定欄７１２を含む。
【００７０】
ベースフィルタ設定欄７１１は、図４に示すような境界線分を検出するための重み係数を算出するためのデータを設定するための欄である。図７では、一例として水平方向に３画素、垂直方向に３画素である重み係数を示す。図７のベースフィルタ設定欄７１１に設定される重み係数を図４の（ａ）の画像に畳み込むことによって、境界線分上でのみ正値が出力され、境界線分以外はゼロが出力される。
【００７１】
このように、境界検出層２１０の重み係数は、一種のフィルタとして作用することから、以下の説明では、ベースフィルタ設定欄７１１に設定される重み係数を境界検出用ベースフィルタと記載する。
【００７２】
回転角設定欄７１２は、複数種類の境界線分を検出する重み係数を算出するために、境界検出用ベースフィルタを回転させる角度の刻み幅を設定するための欄である。
【００７３】
ユーザが刻み幅をΔθ（Δθは３６０の約数）と設定した場合、境界検出層２１０は、（３６０／Δθ）種類の境界線分を検出するように構成される。すなわち、刻み幅は境界線分の種類を規定する値であり、境界検出層２１０には（３６０／Δθ）個のノード２２０が設定される。また、ユーザが設定した境界検出用ベースフィルタをΔθ回転させる操作を（３６０／Δθ）回実行することによって、各ノード２２０に含まれる畳み込み演算２２１の重み係数が算出される。
【００７４】
図７の設定値からは、最近傍補間法（ニアレストネイバ補間法）によって回転後の小数画素位置の重み係数から画素格子上（整数画素位置）の重み係数を補間して算出すれば、図８の（ｂ）、（ｃ）、（ｄ）、（ｅ）、（ｆ）、（ｇ）、（ｈ）の重み係数が算出される。このとき、図８の（ａ）から（ｈ）の各重み係数は、図４の（ａ）から（ｈ）の各境界線分を検出できる。なお、最近傍補間法（ニアレストネイバー法）の代わりに、双一次補間法（リニア補間法）や双三次補間法（キュービック補間法）等の補間法を用いて回転後の小数画素位置の重み係数から画素格子上（整数画素位置）の重み係数を補間して算出してもよい。また、刻み幅を６０度または９０度に設定した場合、ノード２２０の数は８個より少なくなり、刻み幅を３０度に設定した場合、ノード２２０の数は８個より多くなる。
【００７５】
このように、ノード２２０の数は境界の分解能に対応し、画像処理部１１２の性能を調整する指標の一つになる。実施例１では、ＣＮＮ２００の性能に関連する境界の幾何学的な特性に基づく値を入力することによって、ＣＮＮ２００に含まれる一部の層のハイパーパラメータが自動的に算出される。
【００７６】
なお、図８（ａ）から（ｈ）に示した重み係数の縦横のタップ数は、水平方向に３画素、垂直方向に３画素であるが、これに限定されない。
【００７７】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、境界検出層設定欄７１０にバイアスを設定する欄を設けてもよい。
【００７８】
移動層設定欄７２０は、移動層２１１のハイパーパラメータの生成に必要な情報を設定するための欄である。移動層設定欄７２０は、ベースフィルタ設定欄７２１および回転角設定欄７２２を含む。
【００７９】
ベースフィルタ設定欄７２１は、図５に示すような、境界線分を基準点に移動させるための重み係数を算出するためのデータを設定するための欄である。図７では、一例として水平方向に７画素、垂直方向に７画素である重み係数を示す。重み係数は、重み係数の中心を移動の原点として、ゼロ以外の値が設定された方向に、値の大きさだけ境界線分を移動させる演算に対応する。例えば、図７の重み係数は、境界線分の画像を右方向に３画素、上方向に１画素の方向に１だけ移動させる演算に対応する。
【００８０】
このように、移動層２１１の重み係数は、一種のフィルタとして作用することから、以下の説明では、ベースフィルタ設定欄７２１に設定される重み係数を移動用ベースフィルタと記載する。
【００８１】
回転角設定欄７２２は、複数種類の方向の移動を実現する重み係数を算出するために、移動用ベースフィルタを回転させる角度の刻み幅を設定するための欄である。
【００８２】
ユーザが回転角の刻み幅をΔθ’（Δθ’は３６０の約数）と設定した場合、移動層２１１は、（３６０／Δθ’）種類の移動方向への境界線分の移動を行うように構成される。すなわち、刻み幅は移動方向の種類を規定する値であり、移動層２１１には（３６０／Δθ’）個のノード２２０が設定される。また、ユーザが設定した移動用ベースフィルタをΔθ’回転させる操作を（３６０／Δθ’）回実行することによって、各ノード２２０に含まれる畳み込み演算２２１の重み係数が算出される。
【００８３】
図７の設定値からは、図９の（ｂ）、（ｃ）、（ｄ）、（ｅ）、（ｆ）、（ｇ）、（ｈ）の重み係数は、移動用ベースフィルタを刻み角度だけ回転させることによって生成することができる。なお、刻み幅を６０度または９０度に設定した場合、ノード２２０の数は８個より少なくなり、刻み幅を３０度に設定した場合、ノード２２０の数は８個より多くなる。
【００８４】
このように、ノード２２０の数は、画像処理部１１２の性能を調整する指標の一つになる。実施例１では、ＣＮＮ２００の性能に関連するオブジェクトの形状の幾何学的な特性に基づく値を入力することによって、ＣＮＮ２００に含まれる一部の層のハイパーパラメータが自動的に算出される。
【００８５】
なお、図９（ａ）から（ｈ）に示した重み係数の縦横のタップ数は、水平方向に７画素、垂直方向に７画素であるが、これに限定されない。
【００８６】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、移動層設定欄７２０にバイアスを設定する欄を設けてもよい。
【００８７】
なお、図１０に示すような重み係数を設定してもよい。図１０の（ａ）は、右方向に２画素、下方向に３画素の方向に１だけ移動させる演算に対応する。図１０の（ｂ）は、右方向に３画素、上方向に１画素の方向に、右方向の距離が０．３、上方向の距離が０．７だけ移動させる演算に対応する。図１０の（ｃ）は、移動しない演算に対応する。図１０の（ｄ）は、「１」および「−１」の間に境界線分が存在する場合に出力が得られる検出器として機能する。この重み係数を用いることによって、太い境界線分を除去することができる。すなわち、オブジェクトの大きさを制限する検出器として機能する。これによって、胸壁（肋骨および横隔膜等を含む、肺の外側の構造全体）等のような、大きく、不要な陰影の検出を防ぐことができる。
【００８８】
結合層設定欄７３０は、結合層２１２のハイパーパラメータの生成に必要な情報を設定するための欄である。結合層設定欄７３０は、ノード数設定欄７３１およびベースフィルタ設定欄７３２を含む。
【００８９】
ノード数設定欄７３１は、結合層２１２のノード２２０の数を設定する欄である。ベースフィルタ設定欄７３２は、結合層２１２の重み係数を算出するためのデータを設定するための欄である。本実施例では、ベースフィルタ設定欄７３２に設定された値を、移動層２１１の出力数（ノード２２０の数）で除算した値が重み係数として算出される。
【００９０】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、結合層設定欄７３０にバイアスを設定する欄を設けてもよい。
【００９１】
なお、畳み込み演算のタップ数または結合層２１２のノード２２０の数は、任意に設定できる。例えば、結合層２１２のノード２２０を「２」に設定してもよい。一つのノード２２０は、明暗（輝度値）が反転していない画像を出力し、もう一つのノード２２０は、明暗（輝度値）が反転させた画像を出力する。この場合、結合層２１２からは、二つの画像の差が最終的な出力画像２６０として出力される。このように結合層２１２を構成することによって、後述するＴＰ−ＲＯＩ２８１だけを検出できる。
【００９２】
設定ボタン７０１は、境界検出層設定欄７１０、移動層設定欄７２０、および結合層設定欄７３０に設定した値に基づくハイパーパラメータの生成を指示するための操作ボタンである。
【００９３】
ＣＮＮ構造表示欄７４０は、ＣＮＮ２００におけるハイパーパラメータに関する情報を表示する欄である。ＣＮＮ構造表示欄７４０には、ノード数表示欄７４１およびタップ数表示欄７４２が含まれる。
【００９４】
ノード数表示欄７４１は、各階層に含まれるノード２２０の数を表示する欄である。図７は、境界検出層２１０のノード２２０の数が「８」、移動層２１１のノード２２０の数が「８」、結合層２１２のノード２２０の数が「１」であることを表す。
【００９５】
タップ数表示欄７４２は、各階層の重み係数の数、すなわち、２次元空間の水平方向および垂直方向のタップ数の組合せを表示する欄である。図７は、境界検出層２１０の重み係数は水平方向に「３」、垂直方向に「３」であり、移動層２１１の重み係数は水平方向に「７」、垂直方向に「７」であり、結合層２１２の重み係数は水平方向に「１」、垂直方向に「１」であることを表す。
【００９６】
データ読み込みボタン７０２は、学習データ管理情報１２０からの学習データの読出を指示するための操作ボタンである。
【００９７】
学習開始ボタン７０３は、学習処理の実行を指示するための操作ボタンである。
【００９８】
以上が設定画面７００の説明である。図６の説明に戻る。
【００９９】
設定部１１０は、設定ボタン７０１の操作を受け付けた場合、境界検出層設定欄７１０に設定された情報に基づいて境界検出層２１０を設定する（ステップＳ６０２）。
【０１００】
具体的には、設定部１１０は、３６０度を回転角設定欄７１２の値で除算することによってノード２２０の数を決定する。ここで、ノード２２０の数をｎとする。また、設定部１１０は、ベースフィルタ設定欄７１１に設定された境界検出用ベースフィルタをΔθ回転させる操作を（ｎ−１）回実行する。これによって、境界検出用ベースフィルタを含む重み係数がｎ個生成される。また、設定部１１０はバイアスを「０」に設定する。
【０１０１】
次に、設定部１１０は、移動層設定欄７２０に設定された情報に基づいて、移動層２１１を設定する（ステップＳ６０３）。
【０１０２】
具体的には、設定部１１０は、３６０度を回転角設定欄７２２の値で除算することによってノード２２０の数を決定する。ここで、ノード２２０の数をｎ’とする。また、設定部１１０は、ベースフィルタ設定欄７２１に設定された移動用ベースフィルタをΔθ’回転させる操作を（ｎ’−１）回実行する。これによって、移動用ベースフィルタを含む重み係数がｎ’個生成される。また、設定部１１０はバイアスを「０」に設定する。
【０１０３】
次に、設定部１１０は、結合層設定欄７３０に設定された情報に基づいて、結合層２１２を設定する（ステップＳ６０４）。
【０１０４】
具体的には、設定部１１０は、ノード数設定欄７３１の値に基づいてノード２２０の数を決定する。また、設定部１１０は、ベースフィルタ設定欄７３２に設定された値を、移動層２１１の出力数で除算することによって重み係数を算出する。また、設定部１１０はバイアスを「０」に設定する。
【０１０５】
次に、設定部１１０は、ステップＳ６０２からステップＳ６０４の処理結果に基づいて、学習対象のＣＮＮ２００の構造を定義するモデル情報１２１を生成する（ステップＳ６０５）。
【０１０６】
次に、設定部１１０は、データ読み込みボタン７０２の操作を受け付けた場合、学習部１１１を呼び出す。学習部１１１は、学習データ管理情報１２０から学習データを読み出す（ステップＳ６０６）。なお、読み出される学習データの数および種類は任意に設定できる。
【０１０７】
次に、学習部１１１は、学習開始ボタン７０３の操作を受け付けた場合、順伝播処理を実行する（ステップＳ６０７）。順伝播処理とは、入力されたデータがＣＮＮ等のネットワークを伝播し、出力結果を得る処理をいう。具体的には、以下のような処理が実行される。
【０１０８】
まず、実施例１の学習データについて説明する。学習データは、学習用画像１１００および正解画像１１１０の組から構成される。少なくとも一つの正解画像１１１０には、結節に対応するマスク１１１１が含まれる。なお、マスク１１１１は、医師等の専門家の所見および経験等に基づいて設定される。
【０１０９】
図１１では、正解画像１１１０は二値画像であり、マスク１１１１は白く（輝度値が１）、その他の部分は黒い（輝度値が０）ものとする。なお、マスク１１１１は、結節の悪性度を百分率で表し、連続的な輝度値の変化で表してもよい。例えば、悪性度が高いほど輝度値を大きくし、悪性度が低いほど輝度値を小さくする表示する方法が考えられる。
【０１１０】
順伝播処理では、前述の学習データを用いて以下のような処理が実行される。
【０１１１】
（処理１）学習部１１１は、読み出された学習データの中から一つの学習データを選択し、選択された学習データに含まれる学習用画像１１００を画像処理部１１２に入力する。
【０１１２】
（処理２）画像処理部１１２は、モデル情報１２１に基づいて定義されたＣＮＮ２００に基づいて、学習用画像１１００から出力画像２６０を生成する。結節が映っている学習用画像１１００が入力された場合、ＲＯＩ２８０を含む出力画像２６０が生成されることが期待される。
【０１１３】
なお、（処理１）および（処理２）を所定回数実行してもよい。以上が順伝播処理の説明である。
【０１１４】
次に、学習部１１１は逆伝播処理を実行する（ステップＳ６０８）。逆伝播処理とは、出力側から入力側に向けて、各層のパラメータの更新結果が伝播し、全ての層のパラメータを更新する処理をいう。具体的には、以下のような処理が実行される。
【０１１５】
学習部１１１は、出力画像２６０および選択された学習データに含まれる正解画像１１１０の誤差の程度を評価するロス値を算出する。学習部１１１は、ロス値に基づいて、ＣＮＮ２００の出力側から入力側に向けて、各層の重み係数およびバイアス等のパラメータを更新する。
【０１１６】
パラメータの総数を次元数とする多次元空間において、パラメータを更新するアルゴリズム（オプティマイザ）としては、最急降下法、ＳＧＤ（Ｓｔｏｃｈａｓｔｉｃ  Ｇｒａｄｉｅｎｔ  Ｄｅｓｃｅｎｔ：確率的勾配降下法）、Ｍｏｍｅｎｔｕｍ  ＳＤＧ、Ａｄａｍ、ＡｄａＧｒａｄ、ＡｄａＤｅｌｔａ、ＲＭＳＰｒｏｐ、ＳＭＯＲＭＳ３等がある。実施例１では、オプティマイザに限定されない。最急降下法を採用した場合、学習部１１１は、１回学習する度に、誤差が小さくなる方向および度合いを示す勾配を算出し、当該勾配に基づいてパラメータを更新する。
【０１１７】
図１２は、差分値に基づいて算出されるロス値を表す。実施例１では、各画素の関数値の総和が逆伝播処理に使用するロス値となる。横軸が出力画像２６０を正解画像１１１０で減算して得られる画像の各画素の値（差分値）を表し、縦軸は各画素のロス値を表す。図１２に示す関数では、差分値の正負に応じてロス値の変化率が異なる。
【０１１８】
各画素の差分値が正値の場合、出力画像２６０の画素値が正解画像１１１０の画素値より大きく、出力画像２６０に含まれるＲＯＩ２８０は、正解画像１１１０に含まれるマスク１１１１よりも多い状態、すなわち、過検出状態（ＦＰ：Ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ）であることを示す。各画素の差分値が負値の場合、出力画像２６０の画素値が正解画像１１１０の画素値より小さく、出力画像２６０に含まれるＲＯＩ２８０は、正解画像１１１０に含まれるマスク１１１１よりも少ない状態、すなわち、検出漏れ状態（ＦＮ：Ｆａｌｓｅ  ｎｅｇａｔｉｖｅ）であることを示す。
【０１１９】
結節の検出を目的とした画像処理では、検出漏れの発生を抑制することが望ましい。したがって、図１２に示すように、各画素の差分値が正値の領域の直線の傾きは、負値の領域の直線の傾きより大きく設定している。すなわち、ＦＮの発生によるペナルティがＦＰの発生によるペナルティより大きく設定されている。これによって、ＦＮが抑制される方向に学習を誘導することができる。
【０１２０】
なお、図１２に示す特性は式（１）に示すＬｅａｋｙ  Ｒｅｌｕ関数を用いて実現できる。但し、係数ａは式（２）を満たす。
【０１２１】
【数１】
2020086479.tif 000003
【０１２２】
【数２】
2020086479.tif 000004
【０１２３】
以上が逆伝播処理の説明である。
【０１２４】
次に、学習部１１１は、逆伝播処理の結果に基づいて、モデル情報１２１を更新する（ステップＳ６０９）。
【０１２５】
次に、学習部１１１は、終了条件を満たすか否かを判定する（ステップＳ６１０）。
【０１２６】
例えば、学習部１１１は、モデル情報１２１の更新回数（世代数）が所定の閾値より大きい場合、終了条件を満たすと判定する。また、学習部１１１は、ロス値が所定の閾値以下である場合、終了条件を満たすと判定する。
【０１２７】
ステップＳ６０７からステップＳ６１０までの処理が学習処理となる。学習処理の途中では、出力画像２６０には、マスク１１１１と一致する箇所に出現するＲＯＩ２８０であるＴＰ−ＲＯＩ（Ｔｒｕｅ  ｐｏｓｉｔｉｖｅ  ｒｅｓｉｏｎ  ｏｆ  ｉｎｔｅｒｅｓｔ）２８１およびマスク１１１１と一致しない箇所に出現するＦＰ−ＲＯＩ２８２が含まれる。順伝播処理および逆伝播処理が繰り返し実行されることによって、ＴＰ−ＲＯＩ２８１の検出精度が向上し、また、ＦＰ−ＲＯＩ２８２の検出頻度が減少する。
【０１２８】
終了条件を満たさないと判定された場合、学習部１１１はステップＳ６０７に戻り、同様の処理を実行する。終了条件を満たすと判定された場合、学習部１１１は、処理を終了する。
【０１２９】
なお、図７に示す設定画面の代わりに、ＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）等が有するコマンドウィンドウを提示してもよい。この場合、設定部１１０は、コマンド引数から各層の情報を取得する。
【０１３０】
画像処理部１１２は、図６の処理によって学習されたモデル情報１２１を用いることによって、新たな入力画像２５０が入力された場合、学習した結節の大きさおよび形状に一致または類似するＲＯＩ２８０を高い精度で検出できる。
【０１３１】
＜実施例１の応用例＞
図１から図１１では、オブジェクト（結節）を検出するＣＮＮ２００について説明したが、本発明は、他の画像処理を行うＣＮＮ２００を構築する場合にも適用することができる。例えば、画像に含まれるノイズを低減する画像処理、および低解像度の画像を高解像度の画像に変換する画像処理を実行するＣＮＮ２００を構築する場合に、本発明を適用できる。
【０１３２】
前者の画像処理では、ノイズをオブジェクトとして検出する層を含むＣＮＮ２００を構築すればよい。また、後者の画像処理では、輪郭をオブジェクトとして検出する層を含むＣＮＮ２００を構築すればよい。
【０１３３】
このような層のハイパーパラメータを決定する方法は、境界検出層２１０および移動層２１１等と同様である。すなわち、ベースフィルタおよび回転角の刻み幅を設定すればよい。
【０１３４】
＜実施例１のまとめ＞
実施例１のＲＯＩ２８０を抽出するための層を含むＣＮＮを構築する場合、検出精度およびＲＯＩ２８０の特徴等に基づく情報を入力することによって、当該層のハイパーパラメータを自動的に算出できる。したがって、経験および知識がないユーザでもＣＮＮの構築を容易に行うことができる。
【実施例２】
【０１３５】
実施例２では、ＣＮＮ２００が３次元画像から３次元のＲＯＩを検出する点が異なる。以下、実施例１との差異を中心に実施例２について説明する。
【０１３６】
実施例２の計算機１００の構成は、実施例１の計算機１００の構成と同一である。実施例２ではＣＮＮ２００の構造が異なる。
【０１３７】
＜ＣＮＮの構造例＞
図１３Ａおよび図１３Ｂは、実施例２におけるＣＮＮ２００の構造の一例を示す図である。
【０１３８】
実施例２のＣＮＮ２００は、四つの層から構成される。第１層は、境界検出層であり、第２層は移動層１３１２であり、第３層は結合層１３１３、第４層は誤検出削減層１３１４である。実施例２の境界検出層は、第１境界検出層１３１０および第２境界検出層１３１１から構成される。
【０１３９】
各層１３１０、１３１１、１３１２、１３１３、１３１４は少なくとも一つのノード１３２０を含む。ここで、図１３Ｂを用いてノード１３２０の構造について説明する。
【０１４０】
ノード１３２０は、畳み込み演算１３２１、加算演算１３２２、および活性化関数１３２３から構成される。
【０１４１】
畳み込み演算１３２１では、水平方向がｉ画素、垂直方向がｊ画素であるｋ枚のスライス画像から構成されるｎ個の３次元ブロックから構成される入力画素群ｘ＿ａに対して３次元畳み込み演算が実行される。なお、ｎは整数であり、添字ａは０から（ｎ−１）までの整数である。３次元畳み込み演算は、３次元ブロックと同じサイズであるｎ個の重み係数群を用意し、ブロック中の各画素に対して対応する係数を乗算し、その値の総和を算出する演算である。
【０１４２】
加算演算１３２２では、畳み込み演算１３２１の結果にバイアスを加算する。
【０１４３】
活性化関数１３２３は、加算演算１３２２から入力された値に基づいて、１画素の出力ｙを算出する。活性化関数１３２３は、例えば、ＲｅＬＵ（Ｒｅｃｔｉｆｉｅｄ  Ｌｉｎｅａｒ  Ｕｎｉｔ）、Ｃｌｉｐｐｅｄ  ＲｅＬＵ、Ｌｅａｋｙ  ＲｅＬＵ、シグモイド関数、ステップ関数、ハイパボリックタンジェント（ｔａｎｈ）関数等を用いる。
【０１４４】
入力画像２５０の全ての画素に対して、前述の３次元ブロック処理を実行することによって３次元の画像を得ることができる。
【０１４５】
なお、水平方向、垂直方向、スライス方向のそれぞれの端でパディングを行って、出力画像のサイズを入力画像２５０と一致させる処理が行われてもよい。
【０１４６】
次に、ＣＮＮ２００に含まれる境界検出層（第１境界検出層１３１０および第２境界検出層１３１１）、移動層１３１２、結合層１３１３、および誤検出削減層１３１４の構造について説明する。
【０１４７】
＜境界検出層（第１境界検出層および第２境界検出層）の構造＞
第１境界検出層１３１０は、真のオブジェクトの輪郭に対応する境界を検出する。第２境界検出層１３１１は、ノイズとなるオブジェクトの輪郭に対応する境界を検出する。
【０１４８】
胸部断層画像から結節を検出する場合、当該画像には結節、胸壁、気管支、食道、および血管等が映っている。この中で、血管の断面の陰影は結節の陰影と類似しており、結節として誤検出されやすいことが知られている。そこで、実施例２のＣＮＮ２００は、誤検出されやすい血管の輪郭を検出する第２境界検出層１３１１を含む。
【０１４９】
まず、第１境界検出層１３１０について説明する。図１４は、実施例２のＣＮＮ２００が検出する結節のモデルの一例を示す図である。図１５は、実施例２の結節の境界面を検出するために設定される重み係数の一例を示す図である。
【０１５０】
入力画像２５０に結節が含まれている場合、図１４に示す立体（２６面体）のＲＯＩ１４００が含まれる出力画像２６０が出力される。ＲＯＩ１４００は、ｚ軸を中心として４５度の整数倍の回転に対して対称な立体である。出力画像２６０では、ＲＯＩ１４００の内部の画素（ボクセル）は輝度値が高く（明るく）、外側は輝度値が低い（暗い）ものとする。
【０１５１】
ＲＯＩ１４００の斜線をした境界面１４０１を検出する方法を例に、ＲＯＩ１４００の境界を検出する方法について説明する。
【０１５２】
境界面１４０１のｘ方向およびｙ方向の輝度値の変化は小さいため、低周波成分が多く、境界面１４０１のｚ方向（スライス方向）は輝度値の変化が大きいため、高周波成分が多い。前述の特性から、ｘ方向のローパスフィルタ、ｙ方向のローパスフィルタ、およびｚ方向のハイパスフィルタを乗算した（畳み込み演算を実行した）３次元フィルタを用いることによって、境界面１４０１を検出できる。
【０１５３】
例えば、ｘ方向およびｙ方向のローパスフィルタは式（３）の重み係数を持った３タップフィルタを用い、ｚ方向のハイパスフィルタは式（４）の重み係数を持った３タップフィルタを用いることが考えられる。なお、タップ数および重み係数の値は任意に設定できる。
【０１５４】
【数３】
2020086479.tif 000005
【０１５５】
【数４】
2020086479.tif 000006
【０１５６】
この場合、図１５に示すような重み係数が算出される。なお、各重み係数には１／３２が乗算されるが省略している。
【０１５７】
一つの境界面を検出するための重み係数が定まった場合、実施例１と同様の原理にしたがって各方向の境界面を検出するための重み係数を求めることができる。
【０１５８】
以上の説明から分かるように、第１境界検出層１３１０は、入力画像２５０に含まれるオブジェクトの境界を、任意の種類の境界面の組合せとして検出する。すなわち、第１境界検出層１３１０は、境界面の種類と同数のノード１３２０から構成される。
【０１５９】
次に、第２境界検出層１３１１について説明する。図１６は、実施例２のＣＮＮ２００が検出する血管のモデルの一例を示す図である。図１７は、実施例２の血管の境界面を検出するために設定される重み係数の一例を示す図である。
【０１６０】
入力画像２５０に血管が含まれている場合、図１６に示す円筒１６００が含まれる出力画像２６０が出力される。出力画像２６０では、円筒１６００の内部の画素（ボクセル）は輝度値が高く（明るく）、外側は輝度値が低い（暗い）ものとする。
【０１６１】
円筒１６００のｘｙ平面と平行な断面は円となり、円の内側の輝度値と外側の輝度値の変化が大きいため、円筒１６００のｘｙ平面は高周波成分が多い。円筒１６００はｚ方向に一様に広がっているため、円筒１６００のｚ軸方向は低周波成分が多い。前述の特性から、ｘ方向のローパスフィルタおよびｙ方向のローパスフィルタの積（畳み込み演算の結果）を全帯域通過フィルタから減じた２次元フィルタ（２次元ハイパスフィルタ）と、ｚ方向のローパスフィルタを乗算した（畳み込み演算した）３次元フィルタを用いることによって、円筒１６００の境界面を検出できる。
【０１６２】
ｘｙ平面の全帯域通過フィルタは、中心の値が１、他の位置の値が０であるフィルタである。ｘ方向、ｙ方向、ｚ方向のローパスフィルタは、例えば、式（３）の重み係数を持った３タップフィルタを用いる。なお、なお、タップ数および重み係数の値は任意に設定できる。
【０１６３】
この場合、図１７に示すような重み係数が算出される。なお、各重み係数には１／６４が乗算されるが省略している。
【０１６４】
一つの境界面を検出するための重み係数が定まった場合、実施例１と同様の原理にしたがって各方向の境界面を検出するための重み係数を求めることができる。
【０１６５】
以上で説明から分かるように、第２境界検出層１３１１は、入力画像２５０に含まれるオブジェクトの境界を、任意の種類の境界面の組合せとして検出する。すなわち、第２境界検出層１３１１は、境界面の種類と同数のノード１３２０から構成される。
【０１６６】
なお、第１層は３種類以上の境界を検出するように構成されてもよい。
【０１６７】
＜移動層の構造例＞
移動層１３１２は、境界検出層２１０によって検出されたオブジェクトの境界に基づいて、任意の形状のオブジェクト（結節および血管）を検出する。
【０１６８】
移動層１３１２の構造は、実施例１の移動層２１１を３次元に拡張したものである。したがって、例えば、移動方向を、ｙ軸中心の回転およびｚ軸中心の回転を４５度刻みで設定した場合、移動層１３１２は２６個のノード２２０から構成される。なお、ｙ軸中心の回転の角度は０度より大きく、かつ、１８０度以下の範囲であり、ｚ軸中心の回転の角度は０度以上、かつ、３６０度以下の範囲である。
【０１６９】
＜結合層の構造例＞
結合層１３１３は、実施例１の結合層２１２を３次元に拡張したものである。
【０１７０】
＜誤検出削減層の構造例＞
ＣＮＮ２００が境界検出層、移動層１３１２、および結合層１３１３の３層構造である場合、孤立点状の誤検出陰影（ＦＰ−ＲＯＩ）が検出される場合がある。誤検出削減層１３１４は、ＦＰ−ＲＯＩを削減する。
【０１７１】
具体的には、誤検出削減層１３１４は、ＦＰ−ＲＯＩを削減する３次元ローパスフィルタを含むノード２２０から構成される。
【０１７２】
設定するローパスフィルタの特性が不明である場合、適当なタップ数（例えば、ｘ方向に５、ｙ方向に５、ｚ方向に５）の３次元全帯域通過フィルタを初期値として設定すればよい。
＜学習処理＞
次に、実施例２のＣＮＮ２００を構築するための学習処理について説明する。
【０１７３】
図１８は、実施例１の計算機１００が実行する処理を説明するフローチャートである。図１９は、実施例１の計算機１００が提示する設定画面の一例を示す図である。
【０１７４】
計算機１００は、ユーザからＣＮＮ２００の学習を実行するための操作を受け付けた場合、設定部１１０を呼び出す。設定部１１０は、図１９に示す設定画面１９００をユーザに対して提示し、情報の入力を受け付ける（ステップＳ１８０１）。ここで、設定画面１９００について説明する。
【０１７５】
設定画面１９００は、設定部１１０によってディスプレイ１６０に表示される画面であり、層数設定欄１９１０、境界検出層設定欄１９２０、移動層設定欄１９３０、結合層設定欄１９４０、誤検出削減層設定欄１９５０、ＣＮＮ構造表示欄１９６０、設定ボタン１９０１、データ読み込みボタン１９０２、および学習開始ボタン１９０３を含む。
【０１７６】
設定ボタン１９０１、データ読み込みボタン１９０２、および学習開始ボタン１９０３は、設定ボタン７０１、データ読み込みボタン７０２、および学習開始ボタン７０３と同一の操作ボタンである。
【０１７７】
層数設定欄１９１０は、ＣＮＮ２００の層の数を設定する欄である。層数設定欄１９１０は、誤検出削減層１３１４を含まない３層構造のＣＮＮ２００および誤検出削減層１３１４を含む４層構造のＣＮＮのいずれかを選択するラジオボタンを含む。設定部１１０は、４層構造のＣＮＮ２００が選択された場合、誤検出削減層設定欄１９５０への入力を受け付けるように制御する。
【０１７８】
境界検出層設定欄１９２０は、境界検出層２１０のハイパーパラメータの生成に必要な情報を設定する欄である。境界検出層設定欄１９２０は、境界種類設定欄１９２１および境界設定欄１９２２を含む。
【０１７９】
境界種類設定欄１９２１は、境界を検出するオブジェクトの数（種類）を設定する欄である。
【０１８０】
境界設定欄１９２２は、各オブジェクトの境界を検出する層のハイパーパラメータの生成に必要な情報を設定する欄である。境界設定欄１９２２は、オブジェクトの数（種類）だけタブが表示される。タブはベースフィルタ設定欄１９２３、ｙ軸回転角設定欄１９２４、ｚ軸回転角設定欄１９２５を含む。
【０１８１】
ベースフィルタ設定欄１９２３は、図１４または図１６に示すような境界面を検出するための重み係数を算出するためのデータを設定するための欄である。
【０１８２】
ｙ軸回転角設定欄１９２４は、複数種類の境界面を検出する重み係数を算出するために、ｙ軸を中心に境界検出用ベースフィルタを回転させる角度の刻み幅を設定するための欄である。ｚ軸回転角設定欄１９２５は、複数種類の境界面を検出する重み係数を算出するために、ｚ軸を中心に境界検出用ベースフィルタを回転させる角度の刻み幅を設定するための欄である。
【０１８３】
ユーザがｙ軸の回転角をφ、刻み幅をΔφ（Δφは１８０の約数）、ｚ軸の回転角をθ、刻み幅をΔθ（Δθは３６０の約数）と設定した場合、第１境界検出層１３１０には式（５）から算出されるｍ個のノード２２０が設定される。式（５）の第１項は回転角の組合せであり、第２項は上側の境界面（φ＝０、θ＝０）および下側の境界面（φ＝１８０、θ＝０）を表す。
【０１８４】
【数５】
2020086479.tif 000007
【０１８５】
例えば、図１４に示すＲＯＩ１４００の境界面を検出する場合、φは４５度、９０度、１３５度となり、θは０度、４５度、９０度、１３５度、１８０度、２２５度、２７０度、３１５度となる。この場合、組合せは式（５）の第１項に示すように２４通りである。これに、境界面１４０１と、境界面１４０１のｚ軸座標を反転させると下側の境界面とを合わせると、２６個の境界面を検出することができる。すなわち、刻み幅Δφおよび刻み幅Δθは境界面の種類を規定する値である。
【０１８６】
また、ユーザが設定した境界検出用ベースフィルタに、ｍ通りの３次元回転を行うことによって重み係数が算出される。
【０１８７】
具体的には、設定部１１０は、重み係数の３次元座標（ｘ，ｙ，ｚ）を、ｙ軸を中心にφ回転させ、ｚ軸を中心にθ回転させる式（６）に示す３次元空間の回転操作を行う。さらに、設定部１１０は、境界検出用ベースフィルタを回転後の３次元座標（ｘ’，ｙ’，ｚ’）に移動する。このとき、回転後の重み係数の位置が一般的に小数画素位置になるため、３次元の最近傍補間法（ニアレストネイバー法）、双一次補間法（リニア補間法）、および双三次補間法（キュービック補間法）等の補間法を用いて画素格子上（整数画素位置）の値を求め、回転後の重み係数を算出する。
【０１８８】
【数６】
2020086479.tif 000008
【０１８９】
また、ユーザがｙ軸の回転角をφ’、刻み幅をΔφ’（Δφ’は１８０の約数）、ｚ軸の回転角をθ’、刻み幅をΔθ’（Δθ’は１８０の約数）と設定した場合、第２境界検出層１３１１には式（７）から算出されるｍ’個のノード２２０が設定される。
【０１９０】
【数７】
2020086479.tif 000009
【０１９１】
円筒１６００の境界面を検出する場合、上側の境界面および下側の境界面を区別する必要がない。したがって、式（７）の第２項は「１」となっている。
【０１９２】
また、ユーザが設定した境界検出用ベースフィルタに、ｍ’通りの３次元回転を行うことによって重み係数が算出される。重み係数の算出方法は、第１境界検出層１３１０の重み係数の算出方法と同様である。
【０１９３】
このように、ノード２２０の数は境界の分解能に対応し、画像処理部１１２の性能を調整する指標の一つになる。実施例２では、ＣＮＮ２００の性能に関連する境界の幾何学的な特性に基づく値を入力することによって、ＣＮＮ２００に含まれる一部の層のハイパーパラメータが自動的に算出される。
【０１９４】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、境界設定欄１９２２にバイアスを設定する欄を設けてもよい。
【０１９５】
移動層設定欄１９３０は、移動層１３１２のハイパーパラメータの生成に必要な情報を設定するための欄である。移動層設定欄１９３０は、ベースフィルタ設定欄１９３１、ｙ軸回転角設定欄１９３２、およびｚ軸回転角設定欄１９３３を含む。
【０１９６】
ベースフィルタ設定欄１９３１は、境界面を基準点に移動させるための重み係数を生成するために使用するデータを設定するための欄である。
【０１９７】
ｙ軸回転角設定欄１９２４は、複数種類の移動を実現する重み係数を算出するために、ｙ軸を中心に移動用ベースフィルタを回転させる角度の刻み幅を設定するための欄である。ｚ軸回転角設定欄１９２５は、複数種類の移動を実現する重み係数を算出するために、ｚ軸を中心に移動用ベースフィルタを回転させる角度の刻み幅を設定するための欄である。
【０１９８】
ユーザがｙ軸の回転角をφ、刻み幅Δφ（Δφは１８０の約数）、ｚ軸の回転角をθ、刻み幅をΔθ（Δθは３６０の約数）と設定した場合、ノード２２０の数は式（５）より算出される。すなわち、刻み幅Δφおよび刻み幅Δθは移動方向の種類を規定する値である。
【０１９９】
また、ユーザが設定した移動用ベースフィルタに、ｍ通りの３次元回転を行うことによって重み係数が算出される。重み係数の算出方法は、第１境界検出層１３１０の重み係数の算出方法と同様である。
【０２００】
このように、ノード２２０の数は、画像処理部１１２の性能を調整する指標の一つになる。実施例２では、ＣＮＮ２００の性能に関連するオブジェクトの形状の幾何学的な特性に基づく値を入力することによって、ＣＮＮ２００に含まれる一部の層のハイパーパラメータが自動的に算出される。
【０２０１】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、移動層設定欄１９３０にバイアスを設定する欄を設けてもよい。
【０２０２】
結合層設定欄１９４０は、結合層１３１３のハイパーパラメータの生成に必要な情報を設定するための欄である。結合層設定欄１９４０は、ノード数設定欄１９４１およびベースフィルタ設定欄１９４２を含む。
【０２０３】
ノード数設定欄１９４１は、結合層１３１３のノード２２０の数を設定する欄である。ベースフィルタ設定欄１９４２は、結合層１３１３の重み係数を生成するために使用するデータを設定するための欄である。本実施例では、ベースフィルタ設定欄１９４２に設定された値を、移動層１３１２の出力数（ノード２２０の数）で除算した値が重み係数として算出される。
【０２０４】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、結合層設定欄１９４０にバイアスを設定する欄を設けてもよい。
【０２０５】
誤検出削減層設定欄１９５０は、誤検出削減層１３１４のハイパーパラメータの生成に必要な情報を設定するための欄である。誤検出削減層設定欄１９５０は、ベースフィルタ設定欄１９５１を含む。誤検出削減層１３１４のノード２２０の数は１であるため、ノード２２０の数を設定する欄は含まれない。
【０２０６】
ベースフィルタ設定欄１９５１は、誤検出削減層１３１４の重み係数を生成するために使用するデータを設定するための欄である。本実施例では、ベースフィルタ設定欄１９５１には、任意の３次元全帯域通過フィルタの重み係数が設定される。
【０２０７】
ＣＮＮ構造表示欄１９６０は、ＣＮＮ２００におけるハイパーパラメータ等に関する情報を表示する欄である。ＣＮＮ構造表示欄１９６０には、ノード数表示欄１９６１およびタップ数表示欄１９６２が含まれる。
【０２０８】
なお、バイアスの値は初期値として「０」が設定されているものとする。ただし、誤検出削減層設定欄１９５０にバイアスを設定する欄を設けてもよい。
【０２０９】
以上が設定画面１９００の説明である。図１８の説明に戻る。
【０２１０】
設定部１１０は、設定ボタン１９０１の操作を受け付けた場合、境界検出層設定欄１９２０に設定された情報に基づいて第１境界検出層１３１０および第２境界検出層１３１１を設定する（ステップＳ１８０２）。具体的には、以下のような処理が実行される。
【０２１１】
第１境界検出層１３１０を設定する場合、設定部１１０は、ｙ軸回転角設定欄１９２４およびｚ軸回転角設定欄１９２５の値を式（５）に代入することによってノード２２０の数を決定する。また、設定部１１０は、ベースフィルタ設定欄１９２３に設定されたベースフィルタをｍ通り回転させる操作を実行する。これによって各ノード２２０の重み係数が算出される。設定部１１０はバイアスを「０」に設定する。
【０２１２】
第２境界検出層１３１１を設定する場合、設定部１１０は、ｙ軸回転角設定欄１９２４およびｚ軸回転角設定欄１９２５の値を式（７）に代入することによってノード２２０の数を決定する。また、設定部１１０は、ベースフィルタ設定欄１９２３に設定されたベースフィルタをｍ’通り回転させる操作を実行する。これによって各ノード２２０の重み係数が算出される。設定部１１０はバイアスを「０」に設定する。以上がステップＳ１８０２の処理の説明である。
【０２１３】
次に、設定部１１０は、移動層設定欄１９３０に設定された情報に基づいて、移動層１３１２を設定する（ステップＳ１８０３）。
【０２１４】
具体的には、設定部１１０は、ｙ軸回転角設定欄１９３２およびｚ軸回転角設定欄１９３３の値を式（５）に代入することによってノード２２０の数を決定する。また、設定部１１０は、ベースフィルタ設定欄１９３１に設定されたベースフィルタをｍ通り回転させる操作を実行する。これによって各ノード２２０の重み係数が算出される。設定部１１０はバイアスを「０」に設定する。
【０２１５】
次に、設定部１１０は、結合層設定欄１９４０に設定された情報に基づいて、結合層１３１３を設定する（ステップＳ１８０４）。
【０２１６】
具体的には、設定部１１０は、ノード数設定欄１９４１の値に基づいてノード２２０の数を決定する。また、設定部１１０は、ベースフィルタ設定欄１９３１に設定された値を、移動層１３１２の出力数で除算することによって重み係数を算出する。設定部１１０はバイアスを「０」に設定する。
【０２１７】
次に、設定部１１０は、誤検出削減層設定欄１９５０に設定された情報に基づいて、誤検出削減層１３１４を設定する（ステップＳ１８０５）。
【０２１８】
具体的には、設定部１１０は、ベースフィルタ設定欄１９５１に設定された重み係数を設定する。なお、層数設定欄１９１０において３層構造のＣＮＮ２００が選択されている場合、設定部１１０は、ステップＳ１８０５の処理を実行せずに、ステップＳ１８０６に進む。
【０２１９】
次に、設定部１１０は、ステップＳ１８０２からステップＳ１８０５の処理結果に基づいて、学習対象のＣＮＮ２００の構造を定義するモデル情報１２１を生成する（ステップＳ１８０６）。
【０２２０】
次に、設定部１１０は、データ読み込みボタン１９０２の操作を受け付けた場合、学習部１１１を呼び出す。学習部１１１は、学習データ管理情報１２０から学習データを読み出す（ステップＳ１８０７）。
【０２２１】
次に、学習部１１１は、学習開始ボタン１９０３の操作を受け付けた場合、順伝播処理および逆伝播処理を実行し（ステップＳ１８０８、ステップＳ１８０９）、更新結果に基づいて、モデル情報１２１を更新する（ステップＳ１８１０）。
【０２２２】
順伝播処理、逆伝播処理、およびモデル情報１２１の更新処理は実施例１と同様の処理であるため詳細な説明は省略する。
【０２２３】
なお、実施例２では、ｘｙ平面の２次元のスライス画像がｚ方向に連続した画像が３次元の入力画像２５０として入力される。そこで、画像処理部１１２は、スライス画像の画素間隔とスライス画像間の画素間隔を一致させるスライス補間等の処理を実行し、ＣＮＮ２００に処理された入力画像２５０を入力してもよい。
【０２２４】
次に、学習部１１１は、終了条件を満たすか否かを判定する（ステップＳ１８１１）。
【０２２５】
終了条件を満たさないと判定された場合、学習部１１１はステップＳ１８０８に戻り、同様の処理を実行する。終了条件を満たすと判定された場合、学習部１１１は、処理を終了する。
【０２２６】
画像処理部１１２は、図１８の処理によって学習されたモデル情報１２１を用いることによって、新たな入力画像２５０が入力された場合、学習した結節の大きさおよび形状に類似するＲＯＩ１４００を高い精度で検出できる。
【０２２７】
ユーザは、図１８の処理が終了した後、評価用の入力画像２５０を用いて画像処理部１１２の性能を確認してもよい。図２０は、実施例２の計算機１００が提示する性能評価画面の一例を示す図である。
【０２２８】
性能評価画面２０００は、検出されたＲＯＩ２８０が重畳された入力画像２５０を表示する画面であり、例えば、学習部１１１によってディスプレイ１６０に表示される。図１９の性能評価画面２０００では、白点線の円で表されたＲＯＩ２８０を含む六つの入力画像２５０が提示されている。
【０２２９】
ＲＯＩ２８０の表示方法としては、図３または図１４に示すような境界を提示してもよい。また、ＲＯＩ２８０の重心を中心とし、かつ、ＲＯＩ２８０を包含する円または矩形を提示してもよい。
【０２３０】
ユーザは、性能評価画面２０００を参照することによって、画像処理部１１２（ＣＮＮ２００）が所望の処理性能を有しているか否かを確認できる。所望の処理性能を有していない場合、ユーザは、再度、設定画面１９００に情報を入力し、計算機１００に学習処理を実行させる。
【０２３１】
（ケース１）血管が結節として検出されている画像が多く表示されている場合、血管がうまく検出されていない可能性がある。この場合、第２境界検出層１３１１のベースフィルタを調整すればよい。
【０２３２】
（ケース２）小さい結節が検出され、大きい結節が検出されていない画像が表示されている場合、移動層１３１２の設定が不適切である可能性が高い。この場合、ユーザは、前回よりタップ数を増やしたベースフィルタ等を設定する。
【０２３３】
（ケース３）ＴＰ−ＲＯＩ２８１の検出率が低い場合、または、ＦＰ−ＲＯＩ２８２の検出率が高い場合、各層のノード２２０の数が不足している可能性が高い。この場合、ユーザは、回転角の刻み幅を前回より小さく設定する。例えば、前回の刻み幅が４５度の場合、３０度または２２．５度に設定することが考えられる。
【０２３４】
（ケース４）学習処理に用いた入力画像２５０の結節のみを高い精度で検出する場合、すなわち、過学習（オーバーフィッテイング）が発生している場合、各層のノード２２０の数が多い可能性が高い。この場合、ユーザは、回転角の刻み幅を前回より大きく設定する。例えば、前回の刻み幅が４５度の場合、６０度または９０度に設定することが考えられる。
【０２３５】
このように、ユーザは、ＣＮＮ２００の性能に関連する境界の幾何学的な特性およびオブジェクトの形状の幾何学的な特性に基づいて入力した値が、画像処理部１１２の処理性能にどのように寄与しているかを把握できる。したがって、設計初心者であってもＣＮＮ２００の調整を容易に行うことができる。また、熟練者は、ＣＮＮ２００の調整に要する時間を削減できる。
【０２３６】
＜実施例２のまとめ＞
実施例２のＲＯＩ１４００を抽出するための層を含むＣＮＮを構築する場合、検出精度およびＲＯＩ１４００の特徴等に基づく情報を入力することによって、ＣＮＮのハイパーパラメータを自動的に算出できる。したがって、ＣＮＮの構築を容易に行うことができる。また、ハイパーパラメータを容易に調整することができる。
【実施例３】
【０２３７】
実施例３では、実施例１および実施例２で説明したＣＮＮ２００の構築および学習を実現するシステムを説明する。以下、実施例１との差異を中心に、実施例３について説明する。
【０２３８】
＜ＣＮＮのハイパーパラメータを設定するシステムの構成例＞
図２１は、実施例３のシステムの構成例を示す図である。
【０２３９】
システムは、画像取得装置２１００、設定装置２１１０、学習装置２１２０、画像処理装置２１３０、およびデータ管理装置２１４０から構成される。各装置はネットワーク２１５０を介して接続される。
【０２４０】
画像取得装置２１００は画像を取得する装置である。画像取得装置２１００が取得した画像は、入力画像２５０として扱われる。画像取得装置２１００は、例えば、ＣＴ装置、Ｘ線透視撮像装置、ＭＲＩ装置、および超音波プローブ（探触子）等の医療用装置、監視カメラ、ビデオカメラ、デジタルカメラ、並びに、スマートフォン等である。
【０２４１】
設定装置２１１０は、設定部１１０に対応する機能を有し、学習対象のＣＮＮ２００のハイパーパラメータを算出することによってＣＮＮ２００を構築する。学習装置２１２０は、学習部１１１に対応する機能を有し、ＣＮＮ２００の学習処理を実行する。画像処理装置２１３０は、画像処理部１１２に対応する機能を有し、入力された画像を用いて画像処理を実行する。
【０２４２】
設定装置２１１０、学習装置２１２０、および画像処理装置２１３０は、汎用計算機を用いて実現できる。
【０２４３】
データ管理装置２１４０は、画像取得装置２１００が取得した入力画像２５０、画像処理装置２１３０が出力した出力画像２６０、学習データ、およびモデル情報１２１等を管理する。データ管理装置２１４０は、例えば、複数の記憶媒体を有するストレージシステムを用いて実現できる。データ管理装置２１４０は、外部から入力された指示にしたがって、データの読み出し、およびデータの格納等を行う。
【０２４４】
設定装置２１１０、学習装置２１２０、および画像処理装置２１３０には、特定のユーザのみが操作できるように制御するためのログイン機能を設けてもよい。例えば、設定装置２１１０および学習装置２１２０は、ＣＮＮ２００の設計者からの操作のみを受け付け、画像処理装置２１３０は、ＣＮＮ２００の設計者および医師等からの操作を受け付けるように設定する。このようなログイン機能を設けることによって、クラウドサービス等を実現できる。
【０２４５】
なお、学習装置２１２０および画像処理装置２１３０は、一つの装置にまとめてもよい。
【０２４６】
なお、各装置が実行する処理は実施例１および実施例２で説明した処理と同一であるため説明を省略する。
【０２４７】
＜実施例３のまとめ＞
様々なシステム形態またはサービス形態で、実施例１および実施例２で説明したＣＮＮの構築方法を利用できる。
【０２４８】
＜全体のまとめ＞
（ｉ）本発明によれは、ユーザが検出精度およびＲＯＩの特徴等に基づく情報を入力することによって、自動的にＣＮＮのハイパーパラメータが算出される。したがって、ＣＮＮの構築を容易に行うことができる。また、ハイパーパラメータを容易に調整することができる。
【０２４９】
（ｉｉ）なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０２５０】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、およびそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０２５１】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｐｙｔｈｏｎ、Ｊａｖａ（登録商標）等の広範囲のプログラムまたはスクリプト言語で実装できる。
【０２５２】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段またはＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０２５３】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０２５４】
１００  計算機
１０１  演算装置
１０２  メモリ
１０３  ストレージ装置
１０４  通信インタフェース
１０５  出力インタフェース
１０６  入力インタフェース
１０７  バス
１１０  設定部
１１１  学習部
１１２  画像処理部
１２０  学習データ管理情報
１２１  モデル情報
１５０  ネットワーク
１６０  ディスプレイ
１７０  キーボード
１８０  マウス
２００  ＣＮＮ
２５０  入力画像
２６０  出力画像
７００  設定画面
２０００  性能評価画面
２１００  画像取得装置
２１１０  設定装置
２１２０  学習装置
２１３０  画像処理装置
２１４０  データ管理装置
２１５０  ネットワーク
【図１】
2020086479.tif 000010
【図２Ａ】
2020086479.tif 000011
【図２Ｂ】
2020086479.tif 000012
【図３】
2020086479.tif 000013
【図４】
2020086479.tif 000014
【図５】
2020086479.tif 000015
【図６】
2020086479.tif 000016
【図７】
2020086479.tif 000017
【図８】
2020086479.tif 000018
【図９】
2020086479.tif 000019
【図１０】
2020086479.tif 000020
【図１１】
2020086479.tif 000021
【図１２】
2020086479.tif 000022
【図１３Ａ】
2020086479.tif 000023
【図１３Ｂ】
2020086479.tif 000024
【図１４】
2020086479.tif 000025
【図１５】
2020086479.tif 000026
【図１６】
2020086479.tif 000027
【図１７】
2020086479.tif 000028
【図１８】
2020086479.tif 000029
【図１９】
2020086479.tif 000030
【図２０】
2020086479.tif 000031
【図２１】
2020086479.tif 000032