(57)【要約】【課題】精細な及び／又は複雑な画像を効率よく正確に処理するための新規な装置と方法を創作する。【解決手段】畳み込みニューラルネットワークシステムを使用して画像のセマンティックセグメンテーションを行うためのコンピュータを使用する方法であって、プロセッサが、複数のフィルタで入力画像を畳み込み、第１の出力ボリュームを出力してプーリングし、第１の活性化マップを生成し、セマンティックセグメンテーションへの第１の活性化マップの影響のレベルを判定し、第１の活性化マップをアッププーリングして入力画像と同じ画素数を持つ出力画像を形成し、確率的セグメンテーションの結果を出力し、各画素に対し特定のラベルが貼られる確率をラベリングするよう構成され、セマンティックセグメンテーションに対する第１の活性化画像の影響のレベルについての判定はプーリング層とアッププーリング層の間に位置するゲート層を用いて行われる、方法。【選択図】図４
2019082978.tif 000002
【特許請求の範囲】
【請求項１】
畳み込みニューラルネットワークシステムを使用して画像のセマンティックセグメンテーションを行うためのコンピュータを使用する方法であって、
プロセッサが、
第１の複数フィルタで入力画像を畳み込み、第１の畳み込み層により第１の出力ボリュームを出力し、
前記第１の出力ボリュームをプーリングし、第１のプーリング層により第１の活性化マップを生成し、
前記第１の出力ボリュームを第２の複数フィルタで畳み込み、第２の畳み込み層により第２の出力ボリュームを出力し、
前記第２の出力ボリュームをプーリングし、第２のプーリング層により第２の活性化マップを生成し、
前記第１の活性化マップを使用して重み係数を生成し、
前記第２の活性化マップを使用して重み係数を生成し、
前記第２の活性化マップをアッププーリングし、
前記第１の活性化マップをアッププーリングし、前記重み係数を適用して出力画像を形成し、
確率的セグメンテーションの結果を出力し、各画素に対し特定のラベルが貼られる確率をラベリングし、及び
前記セマンティックセグメンテーションに対する前記重み係数の影響のレベルを判定し、
前記セマンティックセグメンテーションに対する前記重み係数の前記影響のレベルについての前記判定は、プーリング層とアッププーリング層の間に位置するゲート層を用いて行われる、方法。
【請求項２】
前記ゲート層は、前記重み係数が前記セマンティックセグメンテーションに対して閾値よりも大きい影響を持つかを判定する閾値化回路を含む、
請求項１に記載の方法。
【請求項３】
前記重み係数が前記セマンティックセグメンテーションに対して前記閾値よりも小さい影響を持つと判定されると、前記ゲート層は、前記重み係数が計算され対応する前記アッププーリング層に入力されることを許可せず、前記第１のプーリング層と前記第１のアッププーリング層の間の接続を除去する、
請求項２に記載の方法。
【請求項４】
前記重み係数が前記セマンティックセグメンテーションに対して前記閾値よりも大きい影響を持つと判定されると、前記ゲート層は、前記重み係数が計算され対応する前記アッププーリング層に入力されることを許可する、
請求項２に記載の方法。
【請求項５】
前記重み係数の前記影響のレベルが、λ値を計算することで判定され、前記λ値は訓練プロセスの際に決定された学習パラメータである、
請求項１に記載の方法。
【請求項６】
各プーリング層は、対応するゲート層を有し、各ゲート層は、固有のλ値を有する、
請求項５に記載の方法。
【請求項７】
前記出力画像は、前記入力画像の画素数と同じ画素数を持つ、
請求項１に記載の方法。
【請求項８】
前記重み係数は、より精細な出力画像をもたらす、
請求項７に記載の方法。
【請求項９】
前記重み係数は、各活性化マップについて生成される、
請求項８に記載の方法。
【請求項１０】
前記λ値の各々は、誤差逆伝播法を用いて決定される、
請求項５に記載の方法。
【請求項１１】
プロセッサと、
メモリと、を含む、
セマンティック画像セグメント化システムであって、
前記プロセッサは、
第１の複数フィルタで入力画像を畳み込み、第１の畳み込み層により第１の出力ボリュームを出力し、
前記第１の出力ボリュームをプーリングし、第１のプーリング層により第１の活性化マップを生成し、
前記第１の出力ボリュームを第２の複数フィルタで畳み込み、第２の畳み込み層により第２の出力ボリュームを出力し、
前記第２の出力ボリュームをプーリングし、第２のプーリング層により第２の活性化マップを生成し、
前記第１の活性化マップを使用して重み係数を生成し、
前記第２の活性化マップを使用して重み係数を生成し、
前記第２の活性化マップをアッププーリングし、
前記第１の活性化マップをアッププーリングし、前記重み係数を適用して出力画像を形成し、
確率的セグメンテーションの結果を出力し、各画素に対し特定のラベルが貼られる確率をラベリングし、及び
前記セマンティックセグメンテーションに対する前記重み係数の影響のレベルを判定するよう、構成され、
前記セマンティックセグメンテーションに対する前記重み係数の前記影響のレベルについての前記判定は、プーリング層とアッププーリング層の間に位置するゲート層を用いて行われる、
システム。
【請求項１２】
前記ゲート層は、前記重み係数が前記セマンティックセグメンテーションに対して閾値よりも大きい影響を持つかを判定するよう構成された閾値化回路を含む、
請求項１１に記載のシステム。
【請求項１３】
前記プロセッサは、前記重み係数が前記セマンティックセグメンテーションに対して前記閾値よりも小さい影響を持つと判定された場合に、前記ゲート層が前記重み係数を計算し対応する前記アッププーリング層に入力することを許可せず、前記第１のプーリング層と前記第１のアッププーリング層の間の接続を除去するよう構成されている、
請求項１２に記載のシステム。
【請求項１４】
前記プロセッサは、前記重み係数が前記セマンティックセグメンテーションに対して前記閾値よりも大きい影響を持つと判定された場合に、前記ゲート層に対し、前記重み係数が計算され対応する前記アッププーリング層に入力されることを許可させるよう構成されている、
請求項１２に記載のシステム。
【請求項１５】
前記重み係数の前記影響のレベルが、λ値を計算することで判定され、前記λ値は訓練プロセスの際に決定され、学習されたパラメータである、
請求項１１に記載のシステム。
【請求項１６】
各プーリング層は、対応するゲート層を有し、各ゲート層は固有のλ値を有する、
請求項１５に記載のシステム。
【請求項１７】
前記出力画像は、前記入力画像の画素数と同じ画素数を持つ、
請求項１１に記載のシステム。
【請求項１８】
前記重み係数は、より精細な出力画像をもたらす、
請求項１７に記載のシステム。
【請求項１９】
前記重み係数は、各活性化マップについて生成される、
請求項１８に記載のシステム。
【請求項２０】
各λ値は誤差逆伝播法を用いて決定される、
請求項１５に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
画像認識とコンピュータビジョンは、大学が人工知能の開発を開始した１９６０年代には既に存在していた。従前、画像認識を行おうとする際には、視点の変化、スケーリング、方向、変形、オクルージョン、照明条件、背景のノイズ、クラス内変動、オブジェクトの検出及び認識等に係る困難があった。これらの画像認識についての困難に鑑み過去５０年に渡って改良と発達がなされてきたが、現在の方法でも、効率的で正確な画像の特定には依然困難が存在する。
【０００２】
図１は、コンピュータビジョンによる認識が非常に困難な画像の例である。図１は、典型的な間取図画像２を示す。図からわかるように、様々な大きさの部屋空間が種々示されている。回転式ドアとスライド式クローゼットドアの両方が描かれており、器具や備品を表す典型的な記号が示されている。実際にありうることであるが、本例においても面積の大きさが様々な測定単位で示される。エリア１０は、従来の日本式測定単位である「ｊ」又は「畳」で記述される一方、区域１２は、「ｍ２」又は「平方メートル」の測定単位で記述される。また、間取図画像２は、内外壁８とドア６を示している。更に、間取図画像２は、寝室１０、バルコニー１２、及び居室１４をも示している。図１が示す間取図画像の付加的な要素のそれぞれが、コンピュータが画像と画像内のオブジェクトを認識するのをより困難にしている。これは、オブジェクトの数が大きくなるほど、画像に対して必要な画像処理が増えるからである。例えば、画像オブジェクトのそれぞれから、線、エッジ、コーナー、形状等、画像データから抽出される必要のある特徴が生み出される。これら抽出された特徴のそれぞれについて、セグメンテーション（画素のラベリング）及びオブジェクト検出（画素グループをカテゴリに分類すること）を決定するための処理決定が行われなければならない。画像認識及びコンピュータビジョンの処理が、多大なコンピュータ処理資源を必要とすることは理解される。
【０００３】
図２Ａは、間取図画像２００の低質な画像認識を示す。画像２２０内のボックス２２２及び２２４が示すように、コンピュータ処理は、これらが特定する区域を検出することができなかった。入力画像２２０の対応区域を見ると、区域２０２及び２１０は、他の画像２０６、２０４及び２０８よりも精細度の高い特徴を有している。このことが、コンピュータがこれらの区域をより精細に認識することを妨げている。
【０００４】
図２Ｂは、他の低質なコンピュータビジョンの例を示す。本例では、入力画像における垂直線２８０が、コンピュータが間取図画像２７０を認識しようとするに当たり問題となった。出力画像２７５に示されるように、この垂直線は、ボックス区域２９０において示されているように、間取図画像２７５の特徴と解釈されてしまっている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したコンピュータビジョンの技術的な問題に鑑み、発明者は、込み入った、精細な及び／又は複雑な画像を、効率よく正確に処理するための新規な装置と方法を作り上げた。発明者は畳み込みニューラルネットワークシステム（以下、「ＣＮＮシステム」又は「ＣＮＮ」）と、端から端まで画素ごとに訓練されており、入力画像を取得し、画像に対し効率よく正確にセマンティックセグメンテーションを実施することの出来る全層畳み込みニューラルネットワークアーキテクチャを選択する方法と、を発明した。例えば、新たな層がプーリング層においてネットワークに導入され、ネットワークは、処理の際に、プーリング層が処理下にある対象画像に何らかの影響を持つか否か、もしそうならどの程度までかを学習する。プーリング層が閾値レベルの影響を及ぼしていなければ、当該プーリング層はスキップされてよい。このことによってこの新たなネットワーク層は、処理層の自己編集、及びより重要なこととして高処理効率のためのアーキテクチャの最適化をネットワークに可能にさせる、自己適応型ＣＮＮアーキテクチャを生成する。
【０００６】
更に、ＣＮＮの出力するセグメント化画像は原入力画像と同じ画素サイズを持ち、ＣＮＮは画像の各画素にセマンティックにラベリングをする。ここで開示する畳み込みニューラルネットワークシステムとそのアーキテクチャの自己選択方法が、正確な画素予想を可能にし、これにより、局所区域の分類のみならず、画像全体としての分類も同様に改善される。このことが、上述したような多種の処理困難な画像を、適切に処理して分類するＣＮＮの能力を、大いに高めることができる。ここで記載されるシステムにより、画素ごとの分類が画像内の全ての画素に対して行なわれることが可能になる。これにより、分類対象の入力画像の詳細につき、細かな粒状化が可能となる。
【０００７】
畳み込みニューラルネットワークは、ネットワークの深さ、フィルタの数、及びフィルタのサイズ等の要素によっては、高い計算コストを有する可能性がある。また、複数のフィルタによる画像の畳み込みは、途方もない量のデータの生成につながる可能性がある。更に、畳み込みニューラルネットワークに追加された各追加層の計算コストも、同様に増加する。画像は、数百から数百万もの画素を含むことがあり、またＣＮＮでは、複数の算術的演算が画素ごとに行われる。詳細は後述するが、ここで記載するＣＮＮシステム及びアーキテクチャは、不要な処理ステップを除いて効率的に画像のセグメント化をすることで、効率的な画像セグメンテーションにつながる。
【課題を解決するための手段】
【０００８】
典型的なＣＮＮシステムアーキテクチャは、一連の畳み込み層、修正層、及びプーリング層より構成される。これらの層のセットは直列に配列され、入力画像の処理とセグメント化を行う。
【０００９】
一実施形態に係るＣＮＮシステムでは、各プーリング層の出力は、次の畳み込み層に送られるだけではなく、プーリングのスコアリングをする層、例えばスコアリング層へと送ることもできる。このスコアリング層は、プーリング層から対応するアッププーリング層にチャネルをマッピングし、最終的なセグメント化画像に対し、更なる詳細を付け加えるのを助けることができる。
【００１０】
しかし、全てのプーリング層がセグメント化画像に対し多大な影響を持っているわけではない。発明者は、計算コストを削減するために、指定されたプーリング層のためのスコアリング層を除去すること、又は、当該スコアリング層のスキップの決定を行うことができるＣＮＮシステムアーキテクチャを選択する方法を創作した。ここで議論されるタイプの画像処理は、携帯デバイスやパソコン等の計算能力が限られたデバイスを通じ行うことが望ましいことを勘案すれば、計算コストの削減は重要である。例えばセマンティックセグメンテーションは、携帯デバイスにおいて当該デバイスのウェブブラウザを使用して、又は、例えばデバイス上で実行される専用のアプリケーションにおいて、実行することができる。この改善された処理能力は、実質的に無限の応用可能性をもたらす。
【００１１】
例えば、間取図画像等の画像のセグメンテーションを、リアルタイムで行うことができる。このため、処理時間の短縮はいかなる形であれ望ましいものである。間取図画像は、建築物のレイアウトについて一般的な空間的理解を提供するために、不動産やその他の分野においてよく使用される。間取図画像データから特徴や大きさについての情報を信頼できる形で抽出する能力には、様々な用途がある。例えば、間取図画像は、分析されて、寸法データが当該画像のメタデータに加えられることがある。これによって、処理された間取図画像が、所望の部屋のサイズや範囲で検索又は分類されることができる。あるいは、アパートや家の潜在的な購買者（又は賃借者）が、家具が部屋や廊下に合うか否か知りたいかもしれない。このような疑問に対しては、ここでの開示に係る間取図画像処理によって答えを得ることが可能となる。
【００１２】
今日に至るまで、間取図画像の特徴の特定／分析に係る分野では、間取図画像の高解像度スキャン画像を処理することが重要とされてきた。一般に、これらの種類の画像の分析のための従来の試みは、画像２値化に依存されてきた。画像２値化とは、間取図画像の壁その他の特徴を１か０で特定することを試みる技術である。通常、１は通常、壁等の物質的な特徴を表し、０は通常、部屋の内部等のオープンスペースを表す。
【００１３】
この画像２値化によるアプローチは、標準的な間取の特徴及びデザインを有する間取図の超高解像度画像に対しては、ある程度の成功を収めていた。しかし、実社会では、間取図特徴の表記法と間取図画像の画質の大きなバラつきのゆえに、全体として満足のいく結果は得られていなかった。間取図特徴の表記法の上記バラつきに加え、多くの場合、画像が古くて低解像度なために、画像２値化の従来の方法は、間取図画像の様々な特徴の正確な分類に失敗してきた。
【００１４】
更に、間取図の２次元・３次元間の双方向の変換が試みられてきた。こういった画像変換のための技術には、画像２値化技術、構造とテキストの分離技術、及びシンボルの認識／ベクトル化技術が採用されている。しかし、上記画像２値化技術における困難性により、これらの変換技術は、正確な間取図検出結果をもたらすことに失敗してきた。
【００１５】
そのため、低解像度間取図画像の正確な解析の提供が可能な間取図画像認識／間取図特徴検出の技術の提供が望まれることが分かる。更に、間取図特徴を正確に特定する、間取図画像認識／特徴検出の技術の提供が望ましい。ここで開示される技術で、間取図画像認識／間取図特徴検出、より具体的に言えば間取図画像セグメンテーションが、低解像度入力画像を含むいかなる種類の入力画像を用いたときでも、正確にセグメント化された間取図画像を出力するデバイスと方法を開発されたことにより、改良される。
【００１６】
開示の実施形態によって、低解像度画像の画像解析を用いる間取図画像認識／間取図特徴検出を提供するデバイスと方法が開示される。
【００１７】
更に、開示の実施形態によって、間取図画像認識、及び間取図特徴を正確に特定する間取図特徴検出を提供するデバイスと方法が開示される。
【００１８】
更に、開示の実施形態によって、画像認識を提供するデバイスと方法が改良され、より素早くセグメント化された画像をユーザが取得することを可能にするデバイスと方法が開発されることが開示される。
【００１９】
更に、開示の実施形態によって、改良された自己適応型画像認識アーキテクチャを提供するデバイスと方法が開示される。このシステムと方法は、画像のセグメント化に際し計算コストを減少させる。
【図面の簡単な説明】
【００２０】
以下の図は、本明細書で開示の発明の様々な構成要素の例を示すものであり、例示を目的とする。
【００２１】
【図１】間取図画像の例である。
【図２Ａ】間取図画像の低質なセグメンテーションの一例である。
【図２Ｂ】間取図画像の低質な検出の第２の例である。
【図３】訓練前の、本発明の第１の実施形態である。
【図４】訓練後の、本発明の第１の実施形態である。
【図５】畳み込みの一例である。
【図６】最大プーリングの一例である。
【図７】アッププーリングの一例である。
【図８】フラクショナル畳み込みの一例である。
【図９】どのようにλを決定するかのフローチャートである。
【図１０】学習率の決定の実施形態である。
【図１１】ＣＮＮシステムアーキテクチャの決定のフローチャートである。
【図１２】第１の実施形態に係る訓練されたＣＮＮシステムである。
【図１３Ａ】第１の実施形態の訓練されたＣＮＮシステムに係るセグメンテーション結果である。
【図１３Ｂ】第１の実施形態の訓練されたＣＮＮシステムに係るセグメンテーション結果である。
【図１３Ｃ】第１の実施形態の訓練されたＣＮＮシステムに係るセグメンテーション結果である。
【図１４】本発明の実施形態に係る３次元間取図である。
【図１５】ＣＮＮシステムを走らせるために使用され得るハードウェアの一例である。
【発明を実施するための形態】
【００２２】
ニューラルネットワークとＣＮＮについての分野は、コンピュータサイエンス分野において、新規かつ迅速に進歩している。そのため、本明細書で使用する用語の幾つかは、スタンダードな専門用語として定着しておらず、多くの場合、いくつかの類義語がある。例えば、この開示において、特徴マップ／アクティベーションマップといいった用語は、相互に交換可能なものとして使用される。その他に、デコンボリューションやフラクショナルコンボリューションといった用語は、コンピュータビジョン関連のコミュニティでは、一般的な認知を得るためにまだ競い合っている。この文書の時点では、発明者は、最も一般的に受け入れられている用語を使用している。しかしながら、当業者は、専門用語は時とともに変化し得るものの、本発明は、専門用語の如何にかかわらず本明細書で開示の概念と方法に関するものであることを理解するであろう。
【００２３】
本開示では、セグメント化画像に対する学習ベースのアプローチを実現し、全層畳み込みニューラルネットワークス（ＦＣＮＮｓ：以降、ＣＮＮと省略して記載）を用いてオブジェクトを検出する。本開示は、間取図画像のセグメント化に関する実施形態を記載するが、それに限定されない。当業者は、間取図画像に限らずいかなる画像も、本明細書で記載の発明に使用することができることを理解するだろう。例えば、一実施形態においては、開示のシステムは、自律走行車両、建築図面（architectural drawings）、写真、類似検索、ＣＡＤモデル生成、及びレンダリングのための３Ｄモデル生成における画像セグメンテーション及び検出に適用してもよいし、インタラクティブな３次元ウォークスルー、家具のフィッティング、及び施工計画等に適用してもよい。更に、本明細書で開示のＣＮＮシステムのアーキテクチャ選択は、音声認識及び制御システム等にも利用することもできる。本明細書で開示のシステムは、ＣＮＮシステムの実行に係る計算コストを減少させる。このため当該システムは、ＣＮＮシステムが使用されるいかなるアプリケーションに対しても利用可能である。
【００２４】
大まかに言えば、ＣＮＮシステムは、畳み込み層やプーリング層を含む多層ネットワークを使用して動作する。畳み込み層では、処理対象の画像は、畳み込み演算において複数のフィルタの１つを用いて数学的に畳み込まれる。プーリング層は、畳み込み層の出力を次の層に統合する。例えば、最大プーリングでは、次の畳み込み層における画素グループを表すために、画素グループの最大値が選択される。同様に、平均プーリングでは、次の畳み込み層における画素グループを表すために、平均画素値が選択される。ＣＮＮシステムにおいては、フィルタの重み又は係数は、訓練プロセスで学習される。訓練は、セグメンテーションの前提を得るために、訓練画像のセットがＣＮＮシステムによって処理されるプロセスである。訓練画像は、画像に対する正しいセグメンテーションが既知であるとして使用される。正しいセグメンテーション画像は、教師データとしてとして理解される。ひとたび教師画像が理解されると、処理されるべき画像がＣＮＮシステムに入力される。この画像についてのＣＮＮシステムの出力は、正しいデータ教師画像と比較され、ＣＮＮシステムが画像の特徴に対してどれだけ正確にラベリングをしたか、又は、セグメント化及び特定をしたかを判定することができる。
【００２５】
図１３Ａ，１３Ｂ及び１３Ｃは、上記の例を示す図であり、３つの間取図画像１２１０、１２１６、及び１２２２がそれぞれ示されている。ＣＮＮシステムは、これらの画像を入力画像として受け取り、間取図画像がそれぞれどのような特徴を含むかを判定する。即ち、ＣＮＮシステムは、例えば、間取図画像の壁がどこにあるかを判定する。ＣＮＮシステムは、間取図画像の壁がどこにあるかを画素ごとに判定し、特定の画素のラベルを決定する。間取図の一般的なラベルとしては、例えば部屋、壁、窓、ドア、風呂場、居室、寝室、バルコニー等である。
【００２６】
訓練で使用される教師画像は、一般に手作業で作成される。即ち、人間が間取図画像を解析し、間取図内の各画素に対する正しいラベルを決定する。教師画像は、ある入力画像に対するＣＮＮシステムの理想的な出力であり、「正しい答え」である。例えば、図１３Ａ，１３Ｂ及び１３Ｃに示されているように、画像１２１４、１２２０、及び１２２６は、画像１２１０、１２１６、及び１２２２それぞれに対する教師画像を表したものである。
【００２７】
処理の後、本実施形態のＣＮＮシステムは、入力画像に基づくセグメント化画像、例えば、符号１２１２、１２１８、及び１２２４によって示されるものを出力する。
【００２８】
ＣＮＮシステムにおいて使用されるフィルタは、誤差逆伝播法と呼ばれる処理で作成／学習される。教師画像をＣＮＮシステムの理想的な出力として使用し、ＣＮＮシステムの出力は教師画像と比較される。ＣＮＮシステムが、正確で教師画像に近いセグメント化画像を出力する場合、ＣＮＮシステムが教師画像からかけ離れたセグメント化画像を出力する場合と比べ、畳み込みフィルタは殆ど（或いは全く）改変を受けない。出力画像の精度を決定する方法は、後述する。ＣＮＮシステムの出力におけるエラーが教師データに比べて大きい場合、畳み込みフィルタと投票の重み付けは、より大きく変更される。このようにして、ＣＮＮシステムは「訓練され」、「学習する」。
【００２９】
より具体的には、ＣＮＮシステムの畳み込みフィルタは、勾配降下法を用いて改変することができる。勾配降下法は、エラーがどのように変化するか判定するために、投票の重み付けを少量増減したり、各フィルタ調整したりするために使用可能である。大きなエラーは、大きな調整となり、小さなエラーは、小さな調整となる。エラーがなければ、調整されない。
【００３０】
図３に戻り、本開示のＣＮＮシステムアーキテクチャの概要を説明する。同図に示すように、一般的には、その後に数字を伴う略語である「Ｃｏｎ」又は「Ｃｏｎｖ」は、畳み込み処理層を表し、数字は、各畳み込み層の番号を表す。その後に数字の伴う略語である「Ｐｏｏｌ」は、プーリング処理層を表し、数字は各プーリング層の番号を表す。同様に、その後に数字が伴う用語「ＵｐＰｏｏｌ」は、アッププーリング処理層を表し、数字は各アッププーリング層の番号を表す。先述したように、プーリング層は、畳み込み層の出力を結合して次の層とする。この処理より、画像が畳み込み層及びプーリング層の各々を移動するときに、画像サイズ又は画像量が減少する。アッププーリングは、逆の作用をする。即ち、後述する図７に示すように、アッププーリングにおいては、画素数の増加に従って画像サイズの総量が増加する。同様に、後述するように、ＳｃｏｒｅＰｏｏｌを含むスコアリング層と、Ｇａｔｅよりなるゲート層と、が完全に定義及び記述される。
【００３１】
図３は、入力画像をセグメント化するためのＣＮＮシステムアーキテクチャの実施態様を示す。例えば、入力画像は、図１に示す間取図画像であってもよい。図３のＣＮＮシステムは、Ｃｏｎｖ１、Ｃｏｎｖ２、Ｃｏｎｖ３、Ｃｏｎｖ４、Ｃｏｎｖ５、及びＣｏｎｖ６の６つの異なる畳み込み層を有する。代替的な実施形態においては、ＣＮＮシステムアーキテクチャの畳み込み層の数は、６つに限定されない。ＣＮＮシステムにおいては、これよりも多くてもよいし少なくてもよい又は。これより多くの層が使用された場合、追加された層は、ＣＮＮシステムの出力における精度の向上につながる傾向があり、ＣＮＮシステムがセグメンテーション結果をより速く取得する可能性がある。しかし、通常の場合通常、層数の増加は、ＣＮＮシステムの計算コストの増加を意味する。更に、より多い層を使用すると、精度が向上するものの、ある一定のレベルまでしか向上しない。ＣＮＮシステムがひとたびセグメンテーション結果を取得できるようになると、追加された層は、必ずしも出力精度に寄与するわけではなく、単に計算コストが高くなるだけである。
【００３２】
本開示において計算コストとは、ＣＰＵ又はＧＰＵによる演算ステップ、揮発性及び不揮発性のメモリを含むメモリの使用量、電力消費、及び使用時間のうちの何れか又は全てを意味する。
【００３３】
畳み込み層についての詳細な議論については、後述する「畳み込み」という名のセクションを参照されたい。
【００３４】
一般的に、ＲｅＬｕと略称される修正線形ユニットも、畳み込み層とプーリング層との間で使用可能である。図３のＣＮＮシステムを理解しやすくするために、ＲｅＬｕは図示していない。ＲｅＬｕとは、その名が示唆するように、いかなる負値をもゼロに変えるよう、特徴マップの出力を修正する。ＲｅＬｕ層の詳細については、後述する「修正線形ユニット」のセクションの詳細を参照してほしい。
【００３５】
図３のＣＮＮシステムは、５つのプーリング層、即ちＰｏｏｌ１、Ｐｏｏｌ２、Ｐｏｏｌ３、Ｐｏｏｌ４、及びＰｏｏｌ５を含む。しかし、ＣＮＮシステムアーキテクチャのプーリング層の数は、５つに限定されない。ネットワークに含まれるプーリング層は、これよりも多くてもよいし、少なくてもよい。図３のＣＮＮシステムは、畳み込み層の出力がプーリング層に入力される構造を有する。例えば、Ｃｏｎｖ１の出力はＰｏｏｌ１に入力される。ただし、Ｐｏｏｌ１は、２つの出力を有する。Ｐｏｏｌ１の第１の出力は、第２の畳み込み層であるＣｏｎｖ２に入力され、Ｐｏｏｌ１の第２の出力は、Ｇａｔｅ１に入力される。開示のＣＮＮシステムにおいては、ゲートは、プーリング層の出力データのスケーリングを（スケーリング因子λで）行い、閾値化機能を実行する。この閾値化機能は、プーリング層のアクティビティと影響の評価に役立つ閾値化因子θにより、実現される。例えば、Ｇａｔｅ１は、スコアプーリング層がアクティブであるか否か、又は、スコアプーリング層がＣＮＮシステムの出力に何らかの意義ある影響を与えるに十分なほどアクティブであるか否かを判定する。プーリング層の影響又はアクティビティの水準は、後述するハイパーパラメータθによって判定される。一般に、セグメンテーション出力へのスコアプーリング層の影響が小さければ、プーリング層及びそれに対応するアッププーリング層の間の接続は切断され、当該層は「スキップ」されたと言うことができる。この接続除去プロセスは、図４に関連し、詳細を後述する。
【００３６】
同様の畳み込み−プーリング−畳み込み構造とゲート構造は、Ｐｏｏｌ４層まで繰り返される。Ｐｏｏｌ４層の出力の１つは、Ｃｏｎｖ５層に入力される。Ｃｏｎｖ５層の出力は、Ｐｏｏｌ５層に入力される。しかし、Ｐｏｏｌ５層は、Ｃｏｎｖ６層に対してのただ一つの出力を行うのみである。これは、図３のＣＮＮシステムは、畳み込みブロック６つ有しているからである。従って、最後の畳み込み層であるＣｏｎｖ６層の出力は、実際には常に対応するアッププーリング層に入力される。いずれの実施形態でも、Ｃｏｎｖ６層の出力がＵｐＰｏｏｌ５層に必ずしも入力されねばならないわけではないが、Ｃｏｎｖ６層がいかなる画素のラベル指定にも影響を及ぼさない場合、Ｃｏｎｖ６層は、画像のセグメント化のために、いかなるパフォーマンスの向上も生み出さない余剰の計算コストであるとして、削除されてもよい。
【００３７】
プーリング層に戻り、Ｐｏｏｌ１、Ｐｏｏｌ２、Ｐｏｏｌ３、及びＰｏｏｌ４の第２の出力は、それぞれＧａｔｅ１、Ｇａｔｅ２、Ｇａｔｅ３、及びＧａｔｅ４の入力に接続される。ゲートは、画像画素ラベルの指定に対する各プーリング層の影響量を判定する閾値化機能をもたらす。ゲートは、閾値化の結果に基づいて、データをブロック又は通過させる。ゲート及びその閾値化機能については、後述する「ゲート」という名のセクションで記載される。
【００３８】
ひとたびゲートの閾値化が行われると、プーリング層の出力は、図３に示すように、対応するスコアプーリング層又はスコアプール番号の入力へと廻される。この層は、対応するアッププーリング層の規模と適用させるために、チャネルマッピング又はプーリング層出力の規模を変更する。プーリング層の出力は、対応するアッププーリング層の特徴マップに対して影響し、その結果、最終的なラベルの指定に影響する。チャネルマッピング機能の詳細については、下記の「スコアプーリング」という名のセクションを参照されたい。
【００３９】
［畳み込み］
ＣＮＮシステムに対する畳み込みでは、入力空間の全ボリューム（行列）に対し、２次元フィルタ（行列）の使用と、ドット積（スカラー積としても知られる）の取得と、が行われる。これが入力空間の全画素に対して繰り返され、この演算の結果が特徴マップと呼ばれる。
【００４０】
図５は、例えば図３のＣＮＮシステムに描かれたＣｏｎｖ１層のいずれか１つで起こりうる畳み込み層の処理の一例を示す。畳み込み層は、畳み込みネットワークの中核となる構成要素である。畳み込み層は、通常、入力画像を示すデータのボリュームである入力ボリュームを受け取ることによって動作する。一実施形態においては、入力ボリュームは、深さとして３色の画素を有する３２画素×３２画素の画像を適用可能である。これは、３２×３２×３のボリュームということもできるし、３２×３２×３のアレイと考えることもできる。この場合、３は、画像の深さを示す。この深度は、ネットワークが有する畳み込み層やプーリング層等の層の数を示すＣＮＮシステムの深さとは異なる。例えば、図３に記載のＣＮＮシステムは、６ブロックの深さを示す。しかし、各畳み込みブロックは、２〜３個の畳み込み層により構成されてもよい。更に、本発明のブロックの数は、図３の例に限定されるものではなく、より多い又は少ないブロックが使用されてもよい。これとは異なり、図５の入力画像のボリュームは、３の深さを有する。「深さ」と「チャネルの数」とは、相互に置き換えることができ、混乱を回避するために、以降では「チャネル」と記載する。従って、３の深さを有する画像は、３つのチャネルを有するということもできる。なお、画像入力ボリュームは、通常、ここで記載されるものよりも大きな値になりうることも重要である。例えば、入力画像ボリュームは、２２４×２２４×５６又はそれ以上になりうる。
【００４１】
ＣＮＮにおいては、入力画像ボリュームは、フィルタで畳み込まれる。畳み込みステップの目的は、画像から特徴を抽出することであり、この点は、画像の画素を一連の異なるフィルタで畳み込むことによって達成される。各フィルタは、画像ボリュームに含まれる異なる側面又は特徴を強調するために機能する。例えば、あるフィルタは、入力画像に含まれるはっきりとした垂線を検出し、他のフィルタは、オブジェクトの間のエッジを検出する。
【００４２】
フィルタは、対象画像よりも小さな画素エリアサイズを有する。通常のフィルタは、比較的小さい。例えば、フィルタは、３×３又は５×５の画素エリアを覆うことができる。通常、畳み込みフィルタは、奇数の行列画素サイズであるが、２×２又は４×４といった画素エリア等の偶数のサイズであってもよい。フィルタは、深さ／チャネルの要素も有する。３チャネルを有する上記の入力画像例が用いられる場合、対応するフィルタは、２×２×３フィルタ、３×３×３フィルタ、又は５×５×３フィルタとなりうる。フィルタは、通常、入力画像の全ての深さ（又はチャネル数）にわたって畳み込む。
【００４３】
フィルタは、入力画像ボリューム上の始点となる角に配置される。ひとたびこのように配置されると、画素ごとの畳み込みが、入力画像の画素とフィルタにおける対応する画素との間で実行される。この処理の後、フィルタは、所定の画素分だけ移動され、入力画像ボリューム上に再配置される。畳み込み処理は、この新たな位置におけるデータに対し、再び実行される。この移動は、「ストライド」と呼ばれ、移動する画素数を「ストライド」ということもある。例えば、フィルタが、移動前の位置から２画素分離れた位置に再配置される場合、「ストライド２」と呼ばれる。
【００４４】
上記畳み込みとストライドの処理は、フィルタが全ての入力ボリュームに渡って移動又はストライドされるまで、繰り返し実行される。当該移動又はストライドのプロセスは、活性化マップを作成する。このプロセスは、畳み込みとも呼ばれる。
【００４５】
図５に示すように、３２×３２×３の入力ボリューム５１０を、５×５×３のフィルタ５２０によって、ストライド１で畳み込むと、２８×２８×１のサイズを持つ活性化マップ５３０が作成される。なお、活性化マップは、入力ボリュームの大きさよりも小さい。入力画像と同じサイズの出力画像とするために、次の畳み込み層に送られる前（そして異なるフィルタに適用される前）に活性化マップに対して「０」で外縁を付与するプロセスであるパディングが実行されてもよい。パディングは、通常、画像サイズが畳み込み層により縮まないようにするために、ＣＮＮにおいて実行される。
【００４６】
本実施形態で使用される「畳み込む」又は「畳み込み」といった用語は、画像ベクトルとフィルタベクトルとのドット積又は内積を計算することを意味する。数学では、「ドット積」は、２つの同じ長さの数の並び（例えばベクトル）を用いて、単一の数値を返す代数演算である。このため、作成された活性化マップは、入力画像ベクトルと畳み込み層で使用される特定のフィルタのドット積を一意に表すデータポイントのセットを表す。適用されるフィルタを変更すると、活性化マップが変化する。このようにして、複数のフィルタは、畳み込みプロセスを通じて、入力画像から異なる情報を抽出する。
【００４７】
通常の畳み込み層は、多数のフィルタを含んでいる。また、これら複数のフィルタは、フィルタバンクとも呼ばれる。計算の簡略化のために、フィルタバンクの複数のフィルタのボリュームは、一般的にサイズが同一である。上記の例であれば、第１のフィルタは、５×５×３のボリュームの青フィルタであり、第２のフィルタは、５×５×３のボリュームの赤フィルタであり、第３のフィルタは、５×５×３のボリュームの緑フィルタであってよい。青フィルタの出力は、入力ボリュームにおける青画素の位置を示す活性化マップになる。赤フィルタの出力は、入力ボリュームにおける赤画素の位置を示す活性化マップになる。緑フィルタの出力は、入力ボリュームにおける緑画素の位置を示す活性化マップになる。畳み込みに使用されるフィルタは、互いから独立したものである。即ち、あるフィルタは、他のフィルタに対し、何の影響も与えない。３つのフィルタは、３つの活性化マップのセットを出力し、このセットが全体で２８×２８×３の大きさを有する活性化マップのセットを生み出す。フィルタのセットは、元の入力画像の再表現ということができる。
【００４８】
［ハイパーパラメータ］
ハイパーパラメータとは、解析される特定のデータに応じて設定されるＣＮＮシステムの変数である。これらの変数については、許容される最善の設定方法が常に存在するわけではない。ハイパーパラメータの一例として、ＣＮＮシステムにおいて使用されるフィルタの数がある。フィルタの数は、ＣＮＮシステムに処理されるパラメータの数に直接的に関連することがある。ＣＮＮシステムは、何百万ものパラメータを含むことができるので、畳み込み層の数の設定は、ＣＮＮシステムアーキテクチャを実行させているコンピュータのメモリの制約が考慮されることがある。
【００４９】
同様に、選択されたフィルタ領域のサイズは、ハイパーパラメータであって、ＣＮＮシステムアーキテクチャを実行するコンピュータ又は処理システムの利用可能なメモリ量に基づいて選択されることがある。
【００５０】
プーリング層のフィルタストライドは、ハイパーパラメータの他の例である。通常、フィルタストライドは、パラメータボリュームにおける詳細な特徴を特定するために、小さく設定される。しかしながら、詳細な特徴を特定しなくてもよいアプリケーションにおいては、大きなストライド数であっても、十分に効果がある。
【００５１】
全結合層の数もまたハイパーパラメータであり、ＣＮＮシステムを実行させているコンピュータのメモリ量に基づいて決定されることがある。
【００５２】
畳み込み層とプーリング層の数もハイパーパラメータである。
【００５３】
なお、ＣＮＮシステムにおける層の数を決定するために重要な要因は、訓練データセットのサイズ及びＣＮＮシステムを訓練するのに必要な時間量である。これらのハイパーパラメータは、後述するの「訓練」のセクションにおいて、より詳しく説明する。
【００５４】
［修正線形ユニット］
一般的に、ＲｅＬＵと略称される修正線形ユニットは、負の値を０にするように、特徴マップの出力を修正する。フィルタは負の値を含むことがあるので、活性化マップもまた負のデータ値を含むことがある。具体的には、ＲｅＬＵ層は、要素に対し、値に対して閾値を０にする要素活性化関数を適用する。このため、いかなる負の値も０に設定される。他の値に対しては１を乗算し、単に元の数字を戻す。例えば、−６は０に修正され、６は６のままである。そして、０は０のままである。
【００５５】
［プーリング］
図６は、プーリングの一例を示す。プーリング層は、データ（例えば、活性化マップ）のサイズを減らすが、最も重要な情報は保持する。プーリング技術としては、種々の技術が知られている。プーリング技術の１つとしては、最大フィルタリング又は最大プーリングと呼ばれるものがある。この技術は、プーリングフィルタの中の最大値を出力する。例えば、よくあるプーリングフィルタは、２×２のサイズでありストライド２であり、そのウィンドウ内の修正特徴マップから最大の要素を選択する。別の言い方をすれば、２×２フィルタが活性化マップ（フィルタリングされた画像）上にある場合、２×２フィルタ内の４つの画素のうち、最大値のみがプーリング後の画像に示される。フィルタリングを受けるデータの実際の位置は、プーリングに影響しない。フィルタリングされた画像のプーリングにより、重大なデータ損失をすることなく、画像のサイズを効果的に減らすことができる。
【００５６】
図６に示すように、４×４の入力画像６１０は、２画素のストライド又は２のストライドを有する２×２フィルタ６２０が使用される最大プーリング処理の対象となる。その処理結果であるフィルタリングされた出力６３０は、最大プーリング値を含む２×２画像である。原画像６１０は１６画素のサイズであったが、フィルタリングされた画像６３０は、４画素のサイズとなる。フィルタ６２０は、４画素中の１画素が有する最大値を使用するので、２画素のストライドの２×２フィルタのプーリング層については、全画素のうちの７５％が破棄される。更に、画像のサイズは、１／２に減少する。即ち、２のストライドの２×２フィルタを使用するプーリングの対象となる２２４×２２４の画像については、１１２×１１２の画素エリアサイズの画像になる。同様に、２のストライドの２×２フィルタを使用するプーリングの対象となる８×８の画像については、画素エリアサイズが４×４の画像になる。
【００５７】
［スコアプーリング］
スコアプーリング層は、プーリング層から対応するアッププーリング層に対するチャネルマッピング機能を提供する。スコアプーリング層は、ネットワークにおいて互いに異なる大きさのプーリング層からの各プーリング層の出力ボリュームを使用する。より下の層（例えば、最後の畳み込み層より下にある全ての層）における出力ボリュームは、スケーリングされ対応するアッププーリング層に入力された際、画像内のフィンガーグレイン構造を特定するのに役立つ。これは、より下の層の出力ボリュームが、より小さなレセプティブフィールドを有するためである。このため、スコアプーリング層は、画像の詳細、とりわけ画像内のオブジェクトの境界の改善に役立つ。このため、セマンティックセグメンテーションのラベルに対する出力ボリュームの影響を判定することは、出力画像のフィンガー構造を認識することの影響力を判定することである。つまり、出力ボリュームの影響は、各プーリング層の出力ボリュームから導かれる追加的な重み付けによる、セマンティックセグメンテーションの改善と相関関係がある。
【００５８】
訓練の間、セマンティックセグメンテーションの結果を教師画像と対比して評価することができ、出力ボリュームの影響を確認することができる。
【００５９】
先述したように、チャネルの数は、プーリング層の出力ボリュームの深さにも等しい。図１２の例であれば、Ｐｏｏｌ２層の出力は、５６×５６×１２８のボリュームを有する。このため、当該ボリュームには、１２８のチャネルがある。しかしながら、対応するアッププーリング層であるＵｐＰｏｏｌ２層によると、この層には、たった２つのチャネルしかない。この例では、当該層における当該２つのチャネルは、壁であるか壁でないかの可能性を示す。なお、より多数のチャネルを使用してオブジェクトを検出することもでき、この点は本発明の範囲に含まれる。ここでは説明の簡略化のために、２チャネルの出力に対するマッピングについて説明する。
【００６０】
チャネルの数を１２８から２まで適切に変更するには、プーリングボリュームの出力の大きさを変更し、対応するアッププーリング層にマッピングする必要がある。これを実現する例としては、それぞれが１×１のサイズを有する２つのフィルタを使用することが挙げられる。１×１のフィルタサイズを使用する畳み込みは、その結果が単純に元の入力画素を生み出すもののように思われるため、最初は直感に反すると感じるかもしれない。しかし、先述したように、畳み込みは、入力ボリュームのチャネルの深さ／数の全体に対して実行される。このため、この例では、入力ボリュームは、１２８チャネルを有する。
【００６１】
これらの１×１フィルタは、１の畳み込みストライドを利用して、プーリングされた特徴マップに対して畳み込まれる。その結果となる出力は、５６×５６×２のサイズを有する２つの特徴マップである。このため、プーリングされた特徴マップのチャネルは、上記技術を用いて２つのチャネルへと減らすことができる。下記に説明するように、スコアプーリング層からの結果は、アッププーリング層に重みを付けるのに使用される。
【００６２】
［フィルタ重みを用いるアッププーリング］
先述したように、一般的に、アッププーリング層は、処理された画像のサイズを、オリジナルの入力ボリュームサイズへと増加させる。図７は、アップサンプリング、デコンボリューション、又はフラクショナルサンプリングとも呼ばれるアッププーリングの一例を示す。図７は、スコアプーリング層からの影響が全くない単純な例を示す。図７に示すように、２×２の入力７３０が、２のストライドの２×２のフィルタ７２０によって、４×４の出力７１０へとスケーリングされる。ここに示されているように、入力ボリュームの左上の値である６が伝播し、４×４の出力ボリュームのうち、左上の２×２のボリュームに格納される。残りの入力値も同様に拡大される。実際の応用では、アッププーリングは、実質的にプーリングの逆演算ということができる。例として、３×３のフィルタが代わりに使われた場合、出力空間における重複した領域となる。この場合、重複した領域の値は、互いに加算される。
【００６３】
アッププーリングの例に関し、図４に示すように、Ｃｏｎｖ６層の出力は、７×７×４０９６のボリュームを有する活性化マップである。上記スコアプーリングのセクションに記載したように、ＳｃｏｒｅＰｏｏｌ５層は、出力を２チャネル（壁であるか壁でないか）にマッピングする。このため、ＳｃｏｒｅＰｏｏｌ５層のマッピングの後は、ＳｃｏｒｅＰｏｏｌ５層の出力は７×７×２となる。７×７のエリアは、Ｃｏｎｖ６層の出力に対応し、２の深さは、最終画像の形成及びセマンティックセグメンテーションラベリングに必要な壁であるか壁でないかの２チャネルに対応する。このように、ＵｐＰｏｏｌ５層への入力は、７×７×２である。ＵｐＰｏｏｌ５層は、アッププーリングを実行する。このケースでは、２倍アッププーリングを実行し、１４×１４×２のボリュームを出力する。
【００６４】
一実施形態においては、アッププーリングは、対応するプーリング層から、重み付け要因の影響も更に受ける。図１２は、この例を示す。図１２では、Ｐｏｏｌ２層の出力とＰｏｏｌ３層の出力は、それぞれＵｐＰｏｏｌ２層とＵｐＰｏｏｌ３層に入力される。
【００６５】
もし仮に、Ｃｏｎｖ６層からの出力だけが、画像のアップスケーリングに使用されたとすると、画像における細かな特徴が失われる可能性がある。即ち、Ｃｏｎｖ６層の７×７（×４０９６）の出力は、入力画像の入力寸法である２２４×２２４に合うように、再度スケーリングされてもよい。しかしながら、中間のプーリング層がアップサンプリングで使用される場合には、より多くの画像の詳細を特定することができる。つまり、画像内の特徴の位置に関するより多くのグレイン情報を確認することができる。セグメント化画像は、これにより画像の境界線がよりはっきりとシャープなものになる。このため、この方法により、画像のアップスケーリングは有用である。
【００６６】
図８は、アップスケーリングの特徴がどのように中間プーリング情報を考慮するかの一例を示す。図８の例は、アッププーリングは、２×２の入力８２０から始まり、４×４の出力８３０に至ることを示している。３×３のフィルタウィンドウ８１０は、２のストレイドが利用される。２×２の入力８２０は、４×４の出力８３０に付与される値を有している。フィルタ８１０は、２×２の入力８２０により付与されるスカラー又は重みを有している。このため、図８に示すように、３×３のフィルタウィンドウ８１０が、オリジナルの入力エリアのコピーを作成し、２×２の入力８２０に基づく重みを付与する。スカラーウエイトは、単純に、オリジナルの入力エリアのコピー値の倍数である。このため、２×２の入力８２０の各値は、デコンボリューション処理におけるフィルタの重みを与える。
【００６７】
図４の例に戻り、ＳｃｏｒｅＰｏｏｌ２層の５６×５６×２の出力は、以下のようにＵｐＰｏｏｌ２層に影響を与えるよう、重み付けされる。図４の例では、２のストライドを使用し、それぞれ４×４×１のサイズを持つ２つの畳み込みフィルタを使うことができる。
【００６８】
［訓練］
訓練は、ニューラルネットワークの生成において重要な部分である。本開示においては、フィルタマップを訓練するためのスタンダードな訓練も適用される。しかし、フィルタマップの調整によるＣＮＮシステムの訓練に加えて、ＣＮＮシステムは、訓練プロセスを通して更なる変数λを発見する。変数λは、プーリング層に接続されたゲートの一部である。変数λの訓練については後述する。
【００６９】
本実施形態における訓練の実現には、図３に示すベースＣＮＮシステムアーキテクチャが使用される。即ち、各プーリング層は、アッププーリング層に接続されるゲートとスコアプーリング層とを含む。訓練が進行すると、ＣＮＮシステムのアーキテクチャは、自動的に形成され、例えば図４に示すように、Ｇａｔｅ１層及びＧａｔｅ４層がそれぞれのスコアプーリング層を除去し、例えば、これらの層はスキップされる。このアーキテクチャの効果は、後述する。
【００７０】
図４に示すＣＮＮシステムを訓練するために、教師画像のセットは、３つのグループ（検査グループ、訓練グループ、及びテストグループ）に分けることができる。訓練グループは、フィルタマップと変数λの訓練に使用される。検査グループは、ＣＮＮシステムが訓練されている際の検査エラーを発見するために使用される。テストグループは、訓練されたＣＮＮシステムをテストして、ＣＮＮシステムの精度を判定するために使用される。
【００７１】
例えば、ＣＮＮシステムは、検査エラーが所定量に達するまで、訓練することができる。他にも例えば、ＣＮＮシステムは、一定の時間訓練してもよく、その時点での検査エラーを測定してもよい。ひとたびエラー量又は時間が所定値に達すると、ＣＮＮシステムは、精度についてのテストをすることができる。これにより、ＣＮＮシステムは、より簡単に比較されることができる。
【００７２】
［学習率］
学習率は、訓練プロセスにおいて、フィルタの重みに対し、どれだけ速くの変化が与えられたかにより決定される。一般的な技術としては、誤差逆伝播法／勾配降下法を利用したり、損失関数を最小化するためにフィルタの重みを変化させたりすることがある。学習率が高すぎると、フィルタの重み値は、多くのステップを要することがあり、最小コストが得られる重みがスキップすされることがある。しかし、学習率が低すぎる場合は、ＣＮＮは素早く訓練されない。ＣＮＮシステムの学習率は、ハイパーパラメータによって決まる。
【００７３】
［ゲート］
ゲート層の役割は、訓練中において、ネットワーク構造を自動的に最適化することである。これは、特徴を追加することは、より良い性能を保証するとは限らないからである。後述するコスト関数に基づいて、訓練プロセスは、他のスコアプーリング層を加えることがより良い結果に結びつくか否かを決定する。
【００７４】
図３においては、Ｇａｔｅ１層〜４層は、主に３つの要素を有する。即ち、スケールパラメータとしても知られ、学習されるパラメータであるスケールパラメータλ、閾値レベルに達したか決定するθ、及びハイパーパラメータであって閾値化処理において使用されるｐ（不図示）、である。
【００７５】
初期のＣＮＮシステムアーキテクチャにおける全てのゲートは、対応するλ値を有し、この値は、画像ラベリング全体に対する各々のプーリング層の影響を表すパラメータである。θは、スコアプーリング層におけるチャネルマッピングの計算コストと、アッププーリング層におけるフィルタの重み付けと、を保証するために、各々のプーリング層が画像のラベリングにおいて大きく十分な影響を有するか否かを判定するための閾値を提供する閾値化ハイパーパラメータである。ハイパーパラメータｐは、それを基準にλが評価される値である。λ、θ、及びｐは以下の関係にある。
【００７６】
【数１】
2019082978.tif 000003
【００７７】
プーリング層が最終的なセグメンテーションラベルに対して小さな影響しか及ぼさなかったり全く影響を及ぼさなかったりする場合、アッププーリング層におけるスコアプーリング処理及びフィルタの重みづけは省略されてもよい。スコアプーリング層と、対応するアッププーリング層での重みづけと、を省略すると、時間、メモリ、及び処理電力といった計算コストを減少させることができる。この点は、ＣＮＮシステムの訓練プロセスにおいて特に当てはまるが、訓練後のＣＮＮシステムにも当てはまる。例えば、本実施形態では、訓練時間の５〜２０％の削減と、これに対応する計算コストの削減と、が達成された。
【００７８】
【表１】
2019082978.tif 000004
【００７９】
表１は、３つのＣＮＮシステムの比較例を示す。平均精度、平均ＩＯＵ（Ｉｎｔｅｒｓｅｃｔｉｏｎ  ｏｖｅｒ  Ｕｎｉｏｎ）、及びＪａｃｃａｒｄ係数は、全てＣＮＮシステムの精度の測定方法である。精度の測定方法の詳細は、本願では省略するが、それぞれの評価方法は、互いに異なる方法で精度を測定する。
【００８０】
表１のＣＮＮスタンダードの例は、本実施形態のスキップアーキテクチャを実行しないＣＮＮシステムからのデータを示す。表１のＣＮＮスキップ１の例は、ゲート層が実行を停止したためにＳｃｏｒｅＰｏｏｌ１層及び４層が実行されなかった場合の本実施形態のＣＮＮシステムからのデータを示す。例えば、このＣＮＮシステムアーキテクチャは、図４にも示されている。表１のＣＮＮスキップ２の例は、ゲート層が実行を停止したためにＳｃｏｒｅＰｏｏｌ１層、３層、及び４層が実行されなかった場合の本実施形態のＣＮＮシステムからのデータを示している。
【００８１】
表１に示すように、ＣＮＮスタンダードシステムは、訓練に２０時間を費やしており、本発明の実施形態を評価するためのベースラインを提供する。ＣＮＮスキップ１のデータは、訓練に１８時間しかかかっていないこと、及び、精度がＣＮＮスタンダードシステムとほぼ同一であることを示している。即ち、ＣＮＮシステムの訓練において、効率に関して１０％分の利得に等しい２時間分の改善が得られたことになる。しかしセグメンテーションの精度は、ＣＮＮシステムの訓練後も維持されている。
【００８２】
計算量を抑えることができた原因の１つは、ＣＮＮシステムによって処理される必要のあるパラメータが減少したことにある。
【００８３】
ＣＮＮスキップ２のデータは、ＣＮＮスキップ１のシステムよりも、更に積極的なゲート設定を有するＣＮＮシステムを示している。つまり、ＣＮＮスキップ２のアーキテクチャでは、Ｐｏｏｌ１層、３層、及び４層のゲートが実現されていない。これにより訓練時間が１７時間にまで短縮しているが、表１が示すように精度が多少犠牲になっている。
【００８４】
【表２】
2019082978.tif 000005
【００８５】
表２は、表１に示す各ＣＮＮシステムがセグメント化画像を出力するのに要した時間を示す。表２に示すように、スキップアーキテクチャを実装するＣＮＮシステムの両方において、セグメンテーション時間の改善が得られた。ＣＮＮスキップ１アーキテクチャは、短い計算時間が得られ、スキップアーキテクチャを有さないＣＮＮシステムの場合より、１３％短い時間に相当する０．０２秒の短縮がなされている。ＣＮＮスキップ２アーキテクチャも、短い計算時間が得られており、スキップアーキテクチャを有さないＣＮＮシステムの場合より２０％短い時間に相当する０．０３秒の計算時間の短縮がなされている。
【００８６】
先述したように、λｉは、訓練フェーズにおいて決定される。λｉは、逆伝播がなされる間、繰り返し工程のたびに更新される。各訓練イテレーションλｉは、下記のように更新される。
【００８７】
【数２】
2019082978.tif 000006
【００８８】
ここで、ｄ／ｄλｉは、連鎖率による最上層からの勾配降下法を用いて計算される。このため、λ勾配は、学習率と掛け合わされ、λｉの新たな値が得られる。ＣＮＮの訓練フェーズにおいて、λｉは、繰り返しのたびにごとに続けて更新される。λｉは、訓練の過程で増減する。例えば、λｉは、１の値となるよう初期化され、訓練が実行される間、誤差逆伝播法における変数λｉは、各ゲート／プーリング層において最終的なセグメンテーションラベルに対するプーリング層の関連性に応じて増減する。訓練フェーズにおける正しいセグメンテーション結果は既知であり、λｉは、全ての繰り返しでよりよいλ値を得られるように、逆伝播されることが可能である。逆伝播により各ゲートのλを決定するプロセスは、各畳み込み層において適用されるフィルタを発見するプロセスに似ている。
【００８９】
図９は、所定のゲートに対するλの決定法の例を示す。まず、ステップ９１０において、λは１に初期化される。そして、λを１に設定した状態のＣＮＮシステムの出力は、ステップ９２０においてチェックされる。ＣＮＮシステムの精度は、ステップ９２０において判定され、教師画像に対する既知の方法（例えば、先述した方法の１つ）を利用して解析される。次にステップ９３０においては、ＣＮＮシステムが訓練を反復するか否かが判定される。つまり、ステップ９５０では、ＣＮＮシステムの繰り返しが完了したか判定される。判定結果が肯定であれば、プロセスは終了し、現状のλ値が所定のゲートに対して設定される。判定結果が否定であれば、ステップ９４０において、λが上記の式に従いインクリメントされ、プロセスが再度ステップ９２０から始まる。図９は、１つのゲートに対し１つのλを設定するプロセスを示したものであるが、各ゲートはそれぞれ対応するλを有するので、このプロセスは全てのゲートに対して繰り返される。
【００９０】
図１０は、ゲート層で使用される方程式の一例を示す。入力画像が与えられると、まず、ＣＮＮシステムは、入力画像を複数の畳み込み層で解析し、各層は、関数として、ｈｔ＋１（ｘ）＝ｍａｘ（ｗｔ＋１ｈｔ（ｘ）＋ｂｔ＋１）を計算する。ここでは、ｔは層のインデックスであり、ｂはバイアスであり、ｈ１（ｘ）＝Ｘである。
【００９１】
チャネルのサイズｃを有し、１つ前の畳み込み層の出力である特徴ベクトルｈ（ｘ）が取得されると、ゲート接続は、入力としてｈ（ｘ）を受け取り、このベクトルをスケーリング層ｆ（ｘ）に与える。当該スケーリング層ｆ（ｘ）は、ｆ（ｘ）＝λｈ（ｘ）で定義されるただ１つのスカラーλを含む。これは、チャネルの数を出力チャネル（例えば、２チャネル）に等しいサイズでマッピングするためである。そして、ゲート接続は、ｆ（ｘ）を他のスコアプーリング層ｇ（ｘ）に解析させる。ここで、ｇ（ｘ）＝ｗｆ（ｘ）である。なお、この層ではバイアスは導入されず、カーネルサイズは１である。
【００９２】
［ＣＮＮアーキテクチャの選択］
図１１は、ＣＮＮシステムの訓練が完了した後に、ＣＮＮシステムアーキテクチャがどのように選択されるかの例を示す。ステップ１０１０において、ＣＮＮシステムの訓練が完了し、ステップ１０１２において、特定のゲートのλ値が取得される。ステップ１０１４においては、λ値は、閾値θと比較され、ゲートのλ値がこの閾値より大きいかを判定する。ゲートのλ値が閾値θより大きくなければ、ステップ１０１６で特定のプーリング層及びそれに対応するアッププーリング層の間の接続が除去される。ゲートのλ値が閾値θより大きければ、ステップ１０１８で各プーリング層及びそれらに対応するアッププーリング層の間の接続が維持される。この工程が全てのゲートに対して繰り返される。ステップ１０２０において、全てのゲートについてチェックが実行されたか否かが判定される。全てのゲートがチェック済みであれば、ＣＮＮシステムアーキテクチャについての判定がなされ、プロセスがストップする。全てのゲートについてチェックされたわけではない場合、ステップ１０２２において、ゲートが１つインクリメントされ、次のゲートが確認される。プロセスは、全てのゲートがチェックされるまで繰り返される。
【００９３】
［例示］
図１２は、本発明の実施形態の例を示す。図１２において、図４のＣＮＮシステムの構成要素と同一のものについては説明を省略する。この例においては、２２４×２２４の画素サイズを有するサンプル画像が入力となる。また、入力画像は、３の深さ（又は３チャネル）を有し、３つの性質を表現し、それぞれの性質は赤、青、又は緑の原色である。入力画像の深さは、ネットワークの深さとは異なる。ＣＮＮシステムの目標は、入力画像を取得し、当該画像のセマンティックセグメンテーションを行うことである。この場合、ラベルの数は、壁であるか壁ではないかを示すために、２に設定される。
【００９４】
図１１に示すように、まず、入力画像は、畳み込み層であるＣｏｎｖ１層に入力される。Ｃｏｎｖ１層は、６４のフィルタセットを使用する。各フィルタは、３×３のエリアを有し、３の深さ（又は３チャネル）を有する。このため、各フィルタのボリュームは、３×３×３である。ストライドは、２に設定される。このため、３×３のフィルタの各々が、一回あたり２画素分移動することで、入力画像上を移動する。処理結果である活性化マップは、特定のフィルタに対して２２４×２２４×１のサイズを有する。この結果は、先述したパディング画素の使用への追加も含む。合計で６４のフィルタが用いられ、２２４×２２４×６４の大きさを有する活性化マップのセットが生成される。
【００９５】
次のステップでは、プーリング演算がＰｏｏｌ１層で行われる。ここでは、最大プーリングには、２のストライドの２×２のフィルタが適用される。先述したように、処理結果である出力では、ｘ次元、ｙ次元でサイズが５０％削減されており（即ち、２２４×２２４から１１２×１１２）、パラメータでは７５％の削減を達成している（即ち、５０１７６から１２５４４）。なお、チャネルの深さ／数は、プーリング層が動作している間は、個々の活性化マップで同一値に留まる。このため、活性化マップの数は、活性化マップのプーリング演算の前後を通じて同一である。このため、プーリング層であるＰｏｏｌ１層の出力は、６４チャネルを有し、Ｐｏｏｌ１層の出力の全次元は、１１２×１１２×６４なので、合計で８０２８１６のパラメータに等しくなる。
【００９６】
先述したように、ゲート層は、プーリング層とそのスケーリング因子の影響が各々のアッププーリング層に適用されるか否かを制御できる。本実施例においては、ＣＮＮシステムの訓練により、Ｐｏｏｌ１層は、セグメンテーション結果に十分な影響を有しておらず、ＳｃｏｒｅＰｏｏｌ１層は除去される。先述したように、ＳｃｏｒｅＰｏｏｌ１層が除去されることにより、セマンティック出力の質を大きく犠牲にすることなく、セマンティックセグメンテーションを決定するための計算コストを減らすことができる。
【００９７】
Ｐｏｏｌ１層の出力は、Ｃｏｎｖ２層へと入力される。Ｃｏｎｖ２層とＣｏｎｖ１層の畳み込みプロセスは、同じように作用する。Ｃｏｎｖ２層は、１２８個のフィルタのセットを使用する。各フィルタは、３×３のエリアと、６４のチャネルを有する。先述したように、フィルタの深さは、入力ボリュームの深さと一致する。ここでは、入力ボリュームの深さは、６４である。このため、Ｃｏｎｖ２層におけるフィルタの深さもまた６４でなければならない。このため、各フィルタのボリュームは３×３×６４となる。ストライドは２に設定される。このため、３×３のフィルタの各々は、一回あたり２画素分移動し、入力画像上を移動する。処理結果として特定のフィルタに対して取得される活性化マップは、２２４×２２４×１である。この結果は、先述したパディング画素の使用への追加も含む。合計で６４のフィルタにより、２２４×２２４×６４の次元を有する活性化マップのセットが生成され、パラメータの数は、合計で３２１１２６４となる。
【００９８】
Ｃｏｎｖ２層の出力は、プーリング層であるＰｏｏｌ２層に入力される。Ｐｏｏｌ２層は、Ｐｏｏｌ１層と同じように動作する。ここでは、最大プーリングには、２のストライドの２×２のフィルタが適用される。先述したように、処理結果の出力は、ｘ次元とｙ次元において５０％のサイズ削減となり（即ち、１１２×１１２から５６×５６になり）、パラメータにおいては７５％の削減を達成する（即ち、１２５４４から３１３６になる）。なお、深さは、プーリング層が個々の活性化マップ上で動作しているときと同様にして保持されるので、活性化マップの数は、プーリング動作の前後を通じて同一である。このため、プーリング層であるＰｏｏｌ２層の出力は、１２８の深さ／チャネル数を有し、Ｐｏｏｌ２層の出力の次元は、合計で５６×５６×１２８であり、それは合計で４０１４０８のパラメータに等しい。
【００９９】
Ｐｏｏｌ２層の出力は、ＳｃｏｒｅＰｏｏｌ２層に入力される。ここで、Ｐｏｏｌ２層とＳｃｏｒｅＰｏｏｌ２層の間には、いかなるゲートも存在しない。これは、訓練プロセスの際に、ゲートは、既に最も効率的なＣＮＮシステムアーキテクチャを決定しているからである。即ち、ゲートは、どのプーリング層がセグメンテーション出力に十分大きな影響を持ち、計算コストを適正なものにするかについて判定しているということである。本実施形態の例では、先述したように、Ｐｏｏｌ１層は、スコアプーリング層を計算して対応するアッププーリング層に入力するための追加計算コストを正当化できるほどには、セグメンテーションラベルに対する影響を十分には有していない。
【０１００】
しかし、Ｐｏｏｌ２層は、セマンティックセグメンテーションラベルに対し、追加計算コストを正当化できるほど十分な影響をもっているので、Ｐｏｏｌ２層の出力は、ＳｃｏｒｅＰｏｏｌ２層にも入力される。スコアプーリング層については、アッププーリング層の説明のときに説明する。
【０１０１】
残りの畳み込み層であるＣｏｎｖ３層、Ｃｏｎｖ４層、Ｃｏｎｖ５層、及びＣｏｎｖ６層は、先述したＣｏｎｖ１層とＣｏｎｖ２層と同様に動作する。更に、残りのプーリング層であるＰｏｏｌ３層、Ｐｏｏｌ４層、及びＰｏｏｌ５層も、先述したＰｏｏｌ１層とＰｏｏｌ２層と同様に動作する。
【０１０２】
畳み込み層であるＣｏｎｖ３層は、５６×５６×２５６のボリュームを有し、プーリング層であるＰｏｏｌ３層は、２８×２８×２５６のボリュームを有する。Ｃｏｎｖ４層は、２８×２８×５１２のボリュームを有し、Ｐｏｏｌ４層は、１４×１４×５１２のボリュームを有する。Ｃｏｎｖ５層は、１４×１４×５１２のボリュームを有し、Ｐｏｏｌ５層は、７×７×５１２のボリュームを有する。Ｃｏｎｖ６層は、７×７×４０９６のボリュームを有する。
【０１０３】
Ｃｏｎｖ６層の出力は、スコアプーリング層であるＳｃｏｒｅＰｏｏｌ５層に入力される。スコアプーリング層は、アッププーリング層（又は、アップサンプリング層）に対する重み因子をもたらす。アッププーリング層は、学習可能な層であり、学習可能な入力がスコアプーリング層からもたらされる。アッププーリング層の目的の１つは、画像をｘ方向及びｙ方向にアップサンプリングして、究極的には、当該画像が入力画像のサイズとｘ方向及びｙ方向でマッチするようにすることである。図１２の例においては、画像サイズは、７×７にまで減少し、チャネルの深さ／数は、４０９６である。一方で原画像は、２２４×２２４であり、チャネルの深さ／数は、３である。
【０１０４】
図１２に戻り、スコアプーリングのセクションで説明したように、ＳｃｏｒｅＰｏｏｌ５層の出力は、チャネルの深さ／数として２（即ち、２チャネル：壁であるか壁でないか）を有する。このため、ＳｃｏｒｅＰｏｏｌ５層によるマッピングの後は、ＳｃｏｒｅＰｏｏｌ５層の出力は、７×７×２となる。７×７のエリアは、Ｃｏｎｖ６層の出力に対応し、チャネルの深さ／数が２なのは、最終画像の構成とセマンティックセグメンテーションラベルに必要な２つのチャネル（壁であるか壁でないか）に対応しているためである。ＳｃｏｒｅＰｏｏｌ５層は、７×７×４０９６のボリュームを有するＣｏｎｖ６層の活性化マップを取得し、ボリュームを７×７×２に減少させる。このため、ＵｐＰｏｏｌ５層への入力は、７×７×２である。ＵｐＰｏｏｌ５層は、アッププーリング（この場合では上述した２倍にするアッププーリング）を行い、１４×１４×２のボリュームを出力する。
【０１０５】
ＵｐＰｏｏｌ４層では、２倍アッププーリングが別途実行される。要するに、これは、ＵｐＰｏｏｌ５層における４倍にするアッププーリングということもできる。ＵｐＰｏｏｌ４層の出力は、２８×２８×２のボリュームである。ここでも、チャネルの深さ／数は２に維持され、２つのチャネル、壁であるか壁でないか、を表している。１４×１４の入力サイズは、倍にされて２８×２８となる。ＳｃｏｒｅＰｏｏｌ４層は、ＵｐＰｏｏｌ４層に入力され、１４×１４×２のボリュームを有する。
【０１０６】
アッププーリング層に影響を与えるスコアリング層が無い理由は、訓練フェーズにおいて、ＣＮＮシステムのアーキテクチャが設定されるためであることと、Ｇａｔｅ４層により、最終セマンティックセグメンテーションラベルに対するＰｏｏｌ４層の影響が、計算コストに見合わないと判定されるためである。このため、ＳｃｏｒｅＰｏｏｌ４層は、削除されて計算コストが減らされる。
【０１０７】
ＵｐＰｏｏｌ４層の出力は、ＵｐＰｏｏｌ３層に入力される。ＵｐＰｏｏｌ３層は、ＳｃｏｒｅＰｏｏｌ３層から入力された重み付けの使用を含むアッププーリングを行い、出力ボリュームを入力サイズの２倍のサイズとする。ＳｃｏｒｅＰｏｏｌ３層は、２８×２８×２のボリュームを有する。プーリング層及びデコンボリューション層といった２つのストリームがネットワークに結合される。これを実現するためには、結合される層のサイズと出力に整合性が取られていなければならない。これをどのように実現するかについては、スコアプーリングに関する記載と、アッププーリングに関する記載と、を参照されたい。ＵｐＰｏｏｌ３層の出力ボリュームは、５６×５６×２である。
【０１０８】
ＵｐＰｏｏｌ２層とＵｐＰｏｏｌ１層において、アッププーリングプロセスは更に２回繰り返される。
【０１０９】
これら２つのアッププーリング層は、先述した前のアッププーリング層と同様にして動作する。アッププーリング層であるＵｐＰｏｏｌ２層は、１１２×１１２のエリアを持ち、同じくアッププーリング層であるＵｐＰｏｏｌ１層は２２４×２２４のエリアを持つ。これらのアッププーリング層の各々は、チャネルの深さ／数が２であり、これは壁であるか壁でないかのチャネルに対応している。
【０１１０】
更に、ＳｃｏｒｅＰｏｏｌ２層は、５６×５６×２の出力ボリュームを有し、ＳｃｏｒｅＰｏｏｌ１層は、１１２×１１２×２の出力ボリュームを有する。
【０１１１】
最後に、全結合層は、ＵｐＰｏｏｌ１層の後に、出力画像の全画素のラベル（壁であるか壁でないか）を決定するために使用される。出力は、ＣＮＮシステムの重み付けに基づく、所定チャネルが正しいかどうかの確からしさの確率的表現である。例えば、所定の画素が壁であることは９０％確からしく、壁でないことは１０％確からしいことがあり得る。ＣＮＮシステムの１つの出力は、単純に、最も確からしい画素ラベルであるが、ＣＮＮシステムのより完全な出力は、全ての画素と全てのラベルの確率的セグメンテーション結果の提供であってもよい。
【０１１２】
なお、理解を容易にするため、本実施形態の例では、壁であるか壁でないかの２つのチャネルのみについて説明している。実際には、多数のチャネルを使用可能であり、間取図画像においては壁、部屋、ドア、窓、屋外、部屋のドア、引き戸、クローゼット扉等のチャネルが使用されてもよい。このようなＣＮＮシステムの出力は、壁６０％、部屋３０％、屋外５％、部屋のドア１％、引き戸１％、クローゼット扉３％といったものであってもよい。
【０１１３】
図１２の例は、モメンタム（値０．９、重み減衰５−４）とバッチサイズ１による確率的勾配降下法によって訓練されたものである。
【０１１４】
最適なストライド値を見出すには、ＣＮＮシステムアーキテクチャが異なる最終ストライド層に対して比較される。３２画素ストライドのＦＣＮ−３２ｓから開始し、ＶＦＦ−１６パラメータで初期化され、各モデルは、その前のモデルのパラメータで初期化される。学習率は１０−１１に設定される。この値は、異なる学習率を持つ２つの訓練プロセスを走らせ、より速くエラーを減らす学習率を選択することにより、選択される。
【０１１５】
［ＣＮＮの例の評価］
本開示のＣＮＮシステムの評価のために、５００の間取図画像のデータセットが、不動産業者が公開するウェブサイトから集められた。この画像訓練データセットは、辺の長さが１５６画素〜１４２７画素の範囲にあり、異なるサイズの画像を含む。画像は、不動産業者のツールであって、色彩や濃淡についての異なるスキームや装飾要素の使用といった、間取図作成にあたってのある程度の美術的自由さを許容する形で描かれたものである。他の公開画像データセットと比較すると、この画像データセットは、著しい差異を示す。図１３Ａ，１３Ｂ，及び１３Ｃには、本発明の訓練されたＣＮＮシステムに入力される例示画像が、ＣＮＮシステムによって出力された対応するセグメント化画像及び作成された教師画像に並べて表示されている。図が示すように、本ＣＮＮシステムのセグメント化画像は教師画像と良く合っている。
【０１１６】
図１３Ａは、当該例における訓練されたＣＮＮシステムを使用してテストされた間取図画像を示す。間取図画像１２１０は、訓練されたＣＮＮシステムに入力され、セグメント化画像１２１２が出力された。間取図画像は、不動産業者で使用されていた実際の画像であり、このような種類の間取図画像の典型的なものである。図で見られるように、セグメント化画像は教師画像１２１４に非常に良く似ており、結果としては理想的なものである。
【０１１７】
図１３Ｂは、当該例における訓練されたＣＮＮシステムを使用してテストされた間取図画像を示す。間取図画像１２１６は、訓練されたＣＮＮシステムに入力され、セグメント化画像１２１８が出力された。間取図画像は、不動産業者で使用されていた実際の画像であり、このような種類の間取図画像の典型的なものである。図で見られるように、セグメント化画像は、教師画像１２２０に非常に良く似ており、結果としては理想的なものである。
【０１１８】
図１３Ｃは、当該例における訓練されたＣＮＮシステムを使用してテストされた間取図画像を示す。間取図画像１２２２は、訓練されたＣＮＮシステムに入力され、セグメント化画像１２２４が出力された。間取図画像は、不動産業者で使用されていた実際の画像であり、このような種類の間取図画像の典型的なものである。図で見られるように、セグメント化画像は、教師画像１２２６に非常に良く似ており、結果としては理想的なものである。
【０１１９】
図１４は、本発明の実施形態であって、上で論じたＣＮＮシステムアーキテクチャの選択方法を用いて出力されたセグメント間取図画像を、３次元間取図画像へとレンダリングするものを示している。この２次元画像から３次元画像へのレンダリングは、３次元レンダリングソフトウェアを用いて行うことができる。簡潔に言えば、ひとたび間取図画像が処理されて壁のセグメンテーションが信頼できる程度に分かってくると、壁の高さ値が選択される。３Ｄモデルレンダリングを作成するために、壁のセグメンテーション結果は、図１４に示すように壁の全てが共通の高さでレンダリングされた高度マップ（elevation map）として扱われている。図からわかるように、セグメント化された壁であってＣＮＮシステムにおいてラベリングされたものは、３次元間取図へと変換される。
【０１２０】
本開示においては、ＣＮＮシステムが実装された計算デバイス、例えばスマートフォン、パソコン、サーバコンピュータ、及び画像処理コンピュータ等は、画像セグメンテーションを改善するための機能を実施してもよい。
【０１２１】
［ハードウェア］
図１５は、本発明のＣＮＮシステムを実行することができるデバイスの例を示している。ＣＮＮシステムは、コンピュータ、携帯デバイス、又はあらゆる処理プラットフォームに実装が可能である。ＣＮＮは、ウェブブラウザ、携帯電話アプリケーション、大型スケーラブルネットワークにおいて動作することが可能である。高い処理負荷が生じることもあるが、訓練前のＣＮＮシステムが、家庭用計算システムや携帯デバイスにおいてもセグメンテーション出力の計算が可能なこともある。勿論、ＣＮＮシステムの訓練は、ネットワークの深さ、フィルタのサイズ、入力画像のサイズ等の多数の要素によっては時として数日や数週間かかることもあり得る。
【０１２２】
図１５は、本明細書に記載された、画像を解析するためのネットワークシステムの様々な計算デバイスの実装に使用される計算デバイス１５１０の要素の例を示す図である。
【０１２３】
クライアントのデバイス又は１以上のサーバとして、様々な計算デバイスを、本明細書に記載したシステムの実装や方法の実行に使用することができる。「計算デバイス」という語は、ラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、及びその他の適当なコンピュータなど、様々な形態のデジタルコンピュータを表現するために使われる。他の計算デバイスとしては、携帯情報端末、携帯電話、スマートフォン、及び他の類似の計算デバイスなどの、様々な形態の携帯デバイスが含まれ得る。ここに示される複数の要素、それらの接続と相互関係、及びそれらの機能は、例示することを目的とするものであり、本明細書等によって記載され及び／又は権利主張される発明の実施形態を限定することを意図したものではない。
【０１２４】
計算デバイス１５１０の要素のそれぞれは、様々なバスを使用して相互に接続され、共通の基板又は他の適切な手段によって搭載されてもよい。プロセッサは、計算デバイス内での実行のための指示（メモリ内又は記憶デバイス内に記憶された、画像情報をディスプレイに表示するための指示を含む）を処理することができる。ＣＮＮシステムの計算デバイス１５１０への出力については、ディスプレイ上での表示、他の計算デバイスへの送信、３次元レンダリングに使用、他の装置での使用、といったことがなされてよい。他の実施形態においては、複数のプロセッサ及び／又は複数のバスが、複数のメモリや複数種類のメモリとともに適宜使用されてもよい。また、複数の計算デバイスが、それらの各々が必要な演算の一部を担う状態で、相互接続されてもよい（例：サーババンク、ブレードサーバのグループ、又はマルチプロセッサシステム）。
【０１２５】
プロセッサは、複数の独立したアナログ／デジタルのプロセッサを含む複数のチップよりなるチップセットとして実装されてもよい。加えて、プロセッサは複数のアーキテクチャのうちいずれを用いて実装されてもよい。例えばプロセッサは、ｘ８６プロセッサやＲＩＳＣ（Reduced Instruction Set Computer：縮小命令セットコンピュータ）プロセッサとしてよい。プロセッサはデバイスの他の構成要素、例えばユーザインターフェイスの制御部（control of user interfaces）、デバイスによって実行されるアプリケーション、及びワイヤレス通信部等と協調してもよい。複数のプロセッサや複数コアを備えたプロセッサが使用されてもよい。
【０１２６】
プロセッサは、制御インターフェイスやディスプレイに結合されたディスプレイインターフェイスを通じて、ユーザと通信しても良い。ディスプレイは、例えばＬＥＤ（Light Emitting Diode）ディスプレイ又は他の適切なディスプレイ技術に係るものであってもよい。ディスプレイインターフェイスは、画像情報や他の情報をユーザに表示するディスプレイを駆動するための適切な回路構成を含んでよい。制御インターフェイスはユーザからの命令を受け取り、プロセッサに引き渡すための変換を当該命令に行っても良い。加えて、プロセッサと通信する外部インターフェイスを設け、他のデバイスとの近距離通信を可能にしてもよい。外部インターフェイスは、例えば無線及び／又は有線通信を提供してもよい。また、複数のインターフェイスが使われてもよい。
【０１２７】
一般的に、より多くのパラメータを有する深いＣＮＮの方が、高い処理能力と大きなキャッシュメモリを有することによって、コンピュータシステム上でより良いパフォーマンスを発揮する。大きな並列処理能力を有するコンピュータシステム、例えばＧＰＵは、単一のプロセッサよりももっと速く動く傾向がある。ＧＰＵは以下でより詳細に論ずる。
【０１２８】
とりわけ画像処理アプリケーションにおいては、ＣＰＵより高い計算能力を持つＧＰＵ（Graphic Processing Unit）が使用されてもよい。実際上、大量の情報をより迅速に計算するために、何十、何百、或いは何千ものＧＰＵのセットが使用される。ＧＰＵは通常、プロセッサと共有メモリを含む。各々のプロセッサは共有メモリから十分に情報を取得し、共通プログラムを実行することで算術処理を実施する。使用可能なＧＰＵの例に、ＧｅＦｏｒｃｅ１０８０ＧＰＵがある。
【０１２９】
複数の計算ユニット１５１０Ａ，１５１０Ｂ，１５１０Ｃ，及び１５１０Ｄが示されている。改良されたセグメンテーションデバイスは、この具体構成に限定されず、単一コンピュータ、或いは多数のコンピュータでもよい。同様に、改良されたセグメンテーションデバイスは複数の並列的なＣＰＵ，ＧＰＵ，又はこれらの組み合わせを含んでもよい。改良されたセグメンテーションデバイス１５００はＣＰＵ１５２０、メモリ１５５０、通信ユニット１５３０、並列計算デバイス１５６０、及びバス１５４０を含んでいる。改良されたセグメンテーションデバイス１５００は、ＣＰＵ１５２０、メモリ１５５０、通信ユニット１５３０、並列計算デバイス１５６０及びバス１５４０を含んでいる。改良されたセグメンテーションデバイス１５００は、セグメンテーション結果を出力するディスプレイ（不図示）も有していてよく、当該セグメンテーション結果は画像形式又は画素ごとのセマンティックな決定の形式のものとすることができる。
【０１３０】
セグメンテーションデバイス１５００への入力は、パソコン、サーバ、又は他の計算デバイス１５９０によってなされてもよい。
【０１３１】
ＣＰＵ１５２０は、メモリ１５５０に記憶されたプログラムに従って動作する。ＣＰＵ１５２０は通信ユニット１５３０及び並列計算デバイス１５６０を制御する。プログラムは、インターネット等のネットワーク１５８０を通して供給されてよいし、ＤＶＤ−ＲＯＭやＵＳＢメモリ等のコンピュータ読み取り可能な情報記憶媒体に記憶されたものが供給されてもよい。
【０１３２】
メモリ１５５０は、例えば、ＲＡＭ／ＲＯＭ、及びハードディスクドライブ等のメモリデバイスを含む。メモリ１５５０はプログラムを記憶する。メモリ１５５０は各ユニットから入力された計算結果又は情報も記憶する。
【０１３３】
通信ユニット１５３０は、ウェブサーバや他のコンピュータ等の他のデバイスと通信するように構成されたネットワークカードとすることができる。通信ユニット１５３０は、他のデバイスから受信した情報を、ＣＰＵ１５２０の制御に基づきＣＰＵ１５２０又はメモリ１５５０に入力し、情報を他のデバイスに送信する。
【０１３４】
バス１５４０は、ＣＰＵ１５２０、メモリ１５５０、通信ユニット１５３０、及び並列計算デバイス１５６０におけるデータの送受信を担うよう構成されている。例えば、ＣＰＵ１５２０又はメモリ１５５０は、バス１５４０内の拡張バスを通じて並列計算デバイス１５６０に接続される。
【０１３５】
並列計算デバイス１５６０は、大量の同種計算を並列計算により行うことが得意なハードウェアである。並列計算デバイス１５６０は、例えばＧＰＵである。並列計算デバイス１５６０は、並列プロセッサユニットとデバイス内メモリ（in-device memory）を含む。各並列実行ユニットは、例えば、複数のプロセッサ、指示ユニット、高速メモリを含む。
【０１３６】
各並列プロセッサは、デバイス内メモリと高速メモリを用い、浮動小数点計算とデータの読み書きを実施する。指示ユニットは、当該指示ユニットを含んだ並列実行ユニットに含まれる並列プロセッサに、デバイス内メモリ等に記憶されたプログラムに基づく処理を実施させる。並列実行ユニットのうちの１つに含まれる並列プロセッサは、そのような並列実行ユニットに含まれる指示ユニットからの指示に則った同一の指示を処理する。この方法によると、複数の並列プロセッサは１つの指示ユニットにより制御されることが可能となり、そのことによって指示ユニットの回路サイズの増大を抑えることができる。よって、ＣＰＵ１５２０の場合と比べると、並列計算デバイス１５６０に含まれる並列プロセッサを増やすことができる。
【０１３７】
デバイス内メモリはＤＲＡＭで構成することができる。デバイス内メモリはバス１５４０を通じ、ＣＰＵ１５２０とメモリ１５５０とに接続される。並列計算デバイス１５６０は、ＤＭＡ転送によるデバイス内メモリとメモリ１５５０の間のデータ転送のための回路も含んでいる。高速メモリは、例えば、デバイス内メモリよりも高速にアクセスできるＳＲＡＭより構成される。デバイス内メモリと高速メモリの各々は、ＧＰＵ１５６０の並列プロセッサからアクセス可能な共有メモリである。
【０１３８】
例示したブロック図やフローチャートは、プロセスのステップ又はブロック（プロセスにおいて特定の論理関数又はステップを実行させるための１以上の実行可能な指示を含む、コードの部分、セグメント、又はモジュールを表すことが可能なもの）を描写している。特定の例は特定の（プロセスの）ステップ又は手続を表しているが、これに替わる多くの実施も可能である。あるプロセスのステップは、例えば、機能や目的、或いは規格、従来から受け継がれてきた構造、及びユーザインターフェイス設計等への準拠に対する考慮に基づき、本明細書における具体的な記載とは異なる順序で実行されてよい。
【０１３９】
以上、本発明につき多くの実施形態を記載した。本発明の要旨から逸脱しない範囲で種々の改変が許容されることが理解されるべきである。例えば、上で示したフローは、ステップの並べ替え、追加、又は削除により、様々な形式で使用されてよい。また、リモート端末又は携帯デバイスを認容する複数の実施形態が記載されているが、他の多くの応用が想定されていると認識されるべきである。従って、他の実施形態も以下の請求項の範囲内である。
【図１】
2019082978.tif 000007
【図２Ａ】
2019082978.tif 000008
【図２Ｂ】
2019082978.tif 000009
【図３】
2019082978.tif 000010
【図４】
2019082978.tif 000011
【図５】
2019082978.tif 000012
【図６】
2019082978.tif 000013
【図７】
2019082978.tif 000014
【図８】
2019082978.tif 000015
【図９】
2019082978.tif 000016
【図１０】
2019082978.tif 000017
【図１１】
2019082978.tif 000018
【図１２】
2019082978.tif 000019
【図１３Ａ】
2019082978.tif 000020
【図１３Ｂ】
2019082978.tif 000021
【図１３Ｃ】
2019082978.tif 000022
【図１４】
2019082978.tif 000023
【図１５】
2019082978.tif 000024
【外国語明細書】
2019082978000001.pdf