IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ イントリンシック イノベーション リミテッド ライアビリティー カンパニーの特許一覧

<>
  • 特許-機械概念理解のための方法及びシステム 図1
  • 特許-機械概念理解のための方法及びシステム 図2A
  • 特許-機械概念理解のための方法及びシステム 図2B
  • 特許-機械概念理解のための方法及びシステム 図3
  • 特許-機械概念理解のための方法及びシステム 図4
  • 特許-機械概念理解のための方法及びシステム 図5A
  • 特許-機械概念理解のための方法及びシステム 図5B
  • 特許-機械概念理解のための方法及びシステム 図6
  • 特許-機械概念理解のための方法及びシステム 図7
  • 特許-機械概念理解のための方法及びシステム 図8
  • 特許-機械概念理解のための方法及びシステム 図9
  • 特許-機械概念理解のための方法及びシステム 図10
  • 特許-機械概念理解のための方法及びシステム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-09
(45)【発行日】2023-03-17
(54)【発明の名称】機械概念理解のための方法及びシステム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20230310BHJP
   B25J 13/08 20060101ALI20230310BHJP
   B25J 9/22 20060101ALI20230310BHJP
【FI】
G06T7/00 350C
B25J13/08 A
B25J9/22 A
【請求項の数】 22
(21)【出願番号】P 2021512442
(86)(22)【出願日】2019-09-05
(65)【公表番号】
(43)【公表日】2021-12-27
(86)【国際出願番号】 US2019049804
(87)【国際公開番号】W WO2020051367
(87)【国際公開日】2020-03-12
【審査請求日】2021-04-23
(31)【優先権主張番号】62/727,162
(32)【優先日】2018-09-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】522503506
【氏名又は名称】イントリンシック イノベーション リミテッド ライアビリティー カンパニー
【氏名又は名称原語表記】Intrinsic Innovation LLC
(74)【代理人】
【識別番号】110001302
【氏名又は名称】弁理士法人北青山インターナショナル
(72)【発明者】
【氏名】ラザロ-グレディッラ,ミゲル
(72)【発明者】
【氏名】リン,ディアンファン
(72)【発明者】
【氏名】ガントゥパリ,スワロープ
(72)【発明者】
【氏名】ジョージ,ディリープ
【審査官】▲広▼島 明芳
(56)【参考文献】
【文献】特開2015-071206(JP,A)
【文献】米国特許出願公開第2016/0267375(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
B25J 9/22
B25J 13/08
(57)【特許請求の範囲】
【請求項1】
視覚ベースのプログラム帰納のための方法であって、
少なくとも1つの訓練セットを受信するステップであって、前記訓練セットが入力シーン及びターゲットシーンから本質的に構成される、ステップと、
生成視覚モデルによって前記入力シーン及び前記ターゲットシーン内でオブジェクトを検出するステップと、
前記入力シーン及び前記ターゲットシーンに基づいて原始関数の候補セットから一連の原始関数を自動的に選択するステップであって、前記一連の原始関数が、ロボット原始関数と、前記生成視覚モデルのための視覚的階層原始関数と、を含む、ステップと、
ダイナミックスモデル及び前記生成視覚モデルによって、前記一連の原始関数及び引数値のセットに基づいて、シミュレーションされたシーン内で一連のオブジェクト位置をシミュレーションするステップと、
前記ターゲットシーン内の前記オブジェクトのターゲット位置に実質的に一致する最終的にシミュレーションされたオブジェクト位置に応答して、前記プログラムとして前記一連の原始関数及び前記引数値のセットを選択するステップと、を含む方法。
【請求項2】
前記一連の原始関数は、
トップダウンアテンションゲーティングを使用して、前記生成視覚モデルによって前記入力シーン及び前記ターゲットシーン内で識別されたオブジェクトに選択的にアテンドするように構成されたアテンションコントローラのためのアテンション制御原始関数と、
シミュレーションされた前記シーン内で固定点を制御するように構成された固定コントローラのための固定制御原始関数と、をさらに含む、請求項1に記載の方法。
【請求項3】
ロボット上で前記プログラムを実行するステップをさらに含み、当該ステップが、
前記プログラム内の前記ロボット原始関数をロボット特有関数に変換することによって前記ロボット特有プログラムを生成するステップと、
未確認の入力シーンをサンプリングするステップと、
前記未確認の入力シーンに基づいて、前記ダイナミックスモデル及び前記生成視覚モデルを使用して前記ロボット特有プログラムに従って前記ロボットを制御するステップと、を含む、請求項1に記載の方法。
【請求項4】
前記生成視覚モデルは、複数の階層的層に組織化されたサブネットワークの再帰的に構築されたネットワークを含み、
前記サブネットークは、少なくとも、親特徴ノード、プールノード、親特有子特徴(PSCF)ノード及び子特徴ノードを備え、
少なくとも1つのサブネットワークの前記親特徴ノードは、前記少なくとも1つのサブネットワークの前記親特徴ノードに接続された少なくとも2つのプールノード上で動作可能な選択関数を有するように構成され、
前記少なくとも1つのサブネットワークの前記プールノードは、前記少なくとも1つのサブネットワークの前記プールノードに接続された少なくとも2つのPSCFノード上で動作可能な選択関数を有するように構成され、
前記少なくとも1つのサブネットワークの前記PSCFノードは、接続された子特徴ノードを起動させるように構成される、請求項1に記載の方法。
【請求項5】
前記原始関数の候補セット、及び、前記原始関数に関連付けられた引数値の候補セットの各々が、木構造によって関連させられ、各エッジは、前記入力シーンに少なくとも部分的に基づいて確率的に決定された遷移に関連付けられ、原始関数の候補セットから一連の原始関数を自動的に選択することは、前記一連の原始関数及び前記引数値のセットを確率の高い順で検索することを含む、請求項1に記載の方法。
【請求項6】
原始関数のセットはサブルーチンに結合され、前記サブルーチンは、前記木構造のノードとして前記生成視覚モデルに組み込まれる、請求項5に記載の方法。
【請求項7】
前記一連の原始関数は、前記シミュレーションされたシーン内で固定点を制御するように構成された固定コントローラのための固定制御原始関数をさらに含み、前記方法は、ユーザから固定ガイダンスを受信することをさらに含み、前記固定ガイダンスは、前記一連の原始関数内で固定制御原始関数のための引数を決定するために識別モデルによって使用される、請求項5に記載の方法。
【請求項8】
前記木構造は一連のマルコフ連鎖を備える、請求項5に記載の方法。
【請求項9】
前記引数値の候補セットのための確率は、ニューラルネットワークを適用することによって、条件ランダムフィールドを適用することによって、又は、前記視覚的階層をクエリすることによって、決定される、請求項5に記載の方法。
【請求項10】
前記入力シーン及び前記ターゲットシーンに基づいて第2プログラムを生成することと、
更新された生成視覚モデルを生成するために前記プログラム及び前記第2プログラムに基づいて前記生成視覚モデルを更新することと、
更新された前記生成視覚モデルを用いて、前記入力シーン及び前記ターゲットシーンに基づいてプログラムを反復的に決定することと、をさらに含む、請求項5に記載の方法。
【請求項11】
更新された前記生成視覚モデルを用いてプログラムを反復的に決定することは、前記遷移確率を変化させることを含む、請求項10に記載の方法。
【請求項12】
選択された前記一連の原始関数のためのセット引数値を自動的に決定することをさらに含む、請求項1に記載の方法。
【請求項13】
第2の一連の原始関数と引数値の第2セットとを備える部分プログラムを決定することと、
前記部分プログラムを実行することであって、
前記部分プログラムを実行することによって部分シーンを生成することと、
前記部分シーン及び前記ターゲットシーンの間の距離値を決定することと、
前記距離値と前記部分プログラムに関連付けられた遷移確率のセットとに基づいてヒューリスティック値を決定することと、
前記部分プログラムに前記ヒューリスティック値を関連付けることと、を含む、前記部分プログラムを実行することと、をさらに含み、
前記プログラムを選択することは、前記ヒューリスティック値に基づいて前記プログラムを検索することを含む、請求項1に記載の方法。
【請求項14】
前記入力シーン及び前記ターゲットシーン内で、前記オブジェクトを備える複数のオブジェクトを検出することをさらに含み、
異なる一連のオブジェクト位置が、前記複数のオブジェクトの各々についてシミュレーションされ、
前記プログラムは、前記ターゲットシーン内の各オブジェクトについてのそれぞれのターゲット位置に実質的に一致する前記複数のオブジェクトの各々についての最終的にシミュレーションされたオブジェクト位置に応答して選択される、請求項1に記載の方法。
【請求項15】
入力シーン内でオブジェクトを検出し、かつ、入力シーンから各オブジェクトについての属性のセットを抽出する視覚的階層であって、視覚的階層原始関数のセットに応答する視覚的階層と、
前記入力シーン内で対象のフィールドの基準点を位置決めする固定コントローラであって、固定制御原始関数のセットに応答する固定コントローラと、
検出された前記オブジェクトから前記対象のフィールド内で、アテンドされたオブジェクトのセットを選択するアテンションコントローラであって、アテンション制御原始関数のセットに応答するアテンションコントローラと、
前記入力シーン内で選択された前記オブジェクトを操作するためのマニピュレータを制御するロボットコントローラであって、ロボット制御原始関数のセットに応答するロボットコントローラと、
一連の原始関数を備えるプログラムであって、前記一連の原始関数は、前記視覚的階層原始関数のセットからの視覚的階層原始関数と、前記固定制御原始関数のセットからの固定制御原始関数と、前記アテンション制御原始関数のセットからのアテンション制御原始関数と、前記ロボット制御原始関数のセットからのロボット制御原始関数と、を備える、プログラムと、を備える、ロボットプログラム実行のためのシステム。
【請求項16】
前記視覚的階層は、入力シーン内で各オブジェクトのための概略的表現の階層を抽出する生成視覚モデルを含む、請求項15に記載のシステム。
【請求項17】
前記アテンションコントローラは、トップダウンアテンションゲーティングを用いて、前記概略的表現のそれぞれの階層に基づいて、前記対象のフィールド内でオブジェクトに選択的にアテンドする、請求項16に記載の方法。
【請求項18】
前記生成視覚モデルは、
複数の階層の層に組織化されたサブネットワークの再帰的に構築されたネットワークと、
前記少なくとも1つのサブネットワークの前記親特徴ノードは、前記少なくとも1つのサブネットワークの前記親特徴ノードに接続された少なくとも2つのプールノード上で動作可能な選択関数を有するように構成され、
前記少なくとも1つのサブネットワークの前記プールノードは、前記少なくとも1つのサブネットワークの前記プールノードに接続された少なくとも2つのPSCFノード上で動作可能な選択関数を有するように構成され、
前記少なくとも1つのサブネットワークの前記PSCFノードは、接続された子特徴ノードを起動するように構成される、請求項16に記載の方法。
【請求項19】
前記プログラム内で今後のロボット制御原始関数に基づいて、視覚空間内で前記視覚的階層によって今後のアクションを集合的にシミュレーションするダイナミックスモデルをさらに備える、請求項15に記載のシステム。
【請求項20】
前記基準点に対するそれぞれの前記オブジェクトの近接性に基づいて、アテンドされた前記オブジェクトのセット内で、各オブジェクトをインデックスするオブジェクトインデクサをさらに備える、請求項15に記載のシステム。
【請求項21】
前記プログラムは、
入力シーン及びターゲットシーンから本質的に構成される訓練セットと、
前記視覚的階層原始関数のセットと、前記固定制御原始関数のセットと、前記アテンション制御原始関数のセットと、前記ロボット制御原始関数と、を備える原始関数の候補セットと、
前記原始関数の候補セットからの一連の原始関数を確率論的に決定する生成モデルと、
前記一連の原始関数内で原始関数のための引数を確率論的に決定する識別モデルと、を使用して生成される、請求項15に記載のシステム。
【請求項22】
前記識別モデルはニューラルネットワークを備える、請求項21に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本願は、2018年9月5日に出願された米国仮出願番号第62/727,162号の利益を主張し、この参照によって当該出願の全体が組み込まれる。
【0002】
[0002] 本願は、2013年5月15日に出願された米国特許出願第13/895,225号に関連しており、この参照によって当該出願の全体が組み込まれる。
【発明の概要】
【0003】
[0003] 本発明は、概してロボット分野に関し、より具体的には、ロボットによるプログラム帰納のための新規で有用なシステム及び方法に関する。
【図面の簡単な説明】
【0004】
図1】[0004] 本方法の概略図である。
図2A】[0005] 本システムのプログラム帰納及び実行の変形例の概略図である。
図2B】[0005] 本システムのプログラム帰納及び実行の変形例の概略図である。
図3】[0006] 本システムの概略図である。
図4】[0007] 命令セットの一変形例を示している。
図5A】[0008] 階層の変形例の概略図である。
図5B】[0008] 階層の変形例の概略図である。
図6】[0009] 訓練データの例を示している。
図7】[0010] プログラムの一例である。
図8】[0011] 本方法の一例である。
図9】[0012] プログラム帰納エンジンの一例である。
図10】[0013] プログラムの例を示している。
図11】[0014] 本方法の一例である。
【発明を実施するための形態】
【0005】
[0015] 本発明の好適な実施形態の以下の説明は、これらの好適な実施形態に本発明を限定することを意図するものではなく、むしろ当業者が本発明として規定されたものを製造して使用することができるようにすることを意図するものである。
【0006】
1.概要
[0016] 図1に示すように、本方法は、候補プログラムのセットを決定するステップS300と、本システム上でプログラムを実行するステップS500と、を含む。本方法は、追加又は代替として、訓練データから特徴を抽出するステップS100と、原始関数の引数を決定するステップS200と、各候補プログラムを評価するステップS400と、を含むことができるが、追加又は代替として任意の他の適切な要素を含むことができる。本方法は、システム上でプログラムを生成及び実行するように機能し、本プログラムは、原始関数を備える命令のセットから生成される。
【0007】
[0017] 一例では、本方法は、1以上の初期ターゲット画像の対を含む訓練データセットについて、確率論的命令間の遷移、及び任意選択的に、確率論的命令-引数値間の遷移を有する連鎖した命令(視覚認知コンピュータコンポーネントのセットの各々についての原始関数)から形成されるマルコフ連鎖を決定するステップと、確率の高い順に候補プログラム(例えば、一連の命令及び任意選択的に引数値)を検索するステップと、を含む。特定の例では、プログラム空間のための生成モデルは命令間の遷移確率を決定することができ、識別モデルは命令-引数値間の遷移確率を決定することができる。その後、候補プログラムは、評価されS400、かつ、S500での使用のために選択されることができる。
【0008】
[0018] 図2A及び図2Bに示すように、システム20は、命令セット、視覚認知コンピュータ(VCC)を含むことが好ましいが、追加又は代替として、プログラム帰納エンジン、訓練データ、及び/又は、他の任意の適切なコンポーネントを含むことができる。
【0009】
[0019] 例として、本システム及び/又は本方法は、Lazaro-Gredillaらによる「Beyond imitation: Zero-shot task transfer on robots by learning concepts as cognitive programs」、Sci. Robot. 4、eaav3150(2019)、2019年1月16日;及び/又は、Lazaro-Gredillaらによる「Supplementary Material: Beyond imitation: Zero-shot task transfer on robots by learning cencepts as cognitive program」、Sci. Robot. 4、eaav3150(2019)、2019年1月16日で説明された要素を利用する及び/又は説明された要素と同様であってもよく、この参照によって当該文献の両方の全体が本明細書に組み込まれる。しかしながら、本システム及び/又は本方法は、他の方法で構成されることができる。
【0010】
[0020] 本方法は、本システムによって実行されるように構成されることが好ましいが、追加又は代替として、他の方法で実行されることができる。
【0011】
2.効果
[0021] 第1に、デモンストレーションと同じ設定でロボットがデモンストレーションを模倣する従来の方法(例えば、模倣学習)とは対照的に、本出願人は、システムアーキテクチャ上に帰納された認知プログラムが基本的概念を学習し、明確なデモンストレーションなしに新しい設定に十分に一般化する、新規で有用な方法を開発した。
【0012】
[0022] 第2に、フォンノイマンアーキテクチャの包括的なレジスタを含む従来のシステムとは対照的に、本出願人は、プログラム帰納を容易にするために、システムコンポーネントにローカルであり、かつ、特定の原始関数を含むワーキングメモリを用いてシステムアーキテクチャに協調設計(codesign)した。変形例では、システムアーキテクチャの各コンポーネントは既定のプリミティブのセット(例えば、関数、命令)に関連付けられ、認知プログラム(帰納プログラム)は、入力シーン-ターゲットシーンの対のための既定の命令セットから選択された一連のプリミティブ(及び対応の引数)を含む。プログラムは、確率の高い順に候補プログラムを検索することによって反復的に決定されることができ、確率は、既に発見されたプログラム上で訓練された生成モデル(例えば、各々が確率に関連付けられる、命令間の遷移の連鎖)と、現在の入力に条件付けられた識別モデルと、に基づいて決定される。
【0013】
[0023] 第3に、フィードフォワード方式で一定の符号化に視覚入力をマッピングするオートエンコーダのようなアーキテクチャとは対照的に、本出願人は、VCCのシミュレーションメモリが、オブジェクトの詳細が表現されること(例えば、知覚要素の概略的表現として)、及び、オブジェクトの詳細が実世界からアクセスされることを可能にすることができることを発見した。これにより、視覚的階層が、下流タスクのための1つのフィードフォワードパスでシーンを表現するのではなく、プログラムの一部として世界のインタラクティブクエリの一部であることを可能にする。
【0014】
[0024] 第4に、訓練データ及び実行データは、異なる分布を有することができるが、依然として同じ性能を有している。例えば、訓練データは抽象画像を含むことができる一方で、実行データは実世界の製造画像(例えば、コンベアベルト上の容器の画像)であることができる。
【0015】
[0025] しかしながら、本システム及び本方法は、他の適切な効果のセットをもたらすことができる。
【0016】
3.システム
[0026] システム20は、1以上の命令セット235と、1以上の視覚認知コンピュータ(VCC)220と、を含むことが好ましい。システム20は、追加又は代替として、訓練データ225、実行データ230、1以上のプログラムセット205、1以上のプログラム帰納エンジン215を含む又は使用する、及び/又は、任意の他の適切なコンポーネントを含むことができる。本システムは、シーンを解釈してプログラムを実行するように機能し、及び任意選択的に、その後の実行のための認知プログラムを帰納することができる。
【0017】
[0027] システム20は、特にプログラム帰納(例えば、プログラム生成)中に、訓練データ225を使用することが好ましい。訓練データは、プログラムを決定するための入力及びターゲットを定義することが好ましい。訓練データは、1以上の初期ターゲット画像の対を含むことが好ましいが、追加又は代替として、任意の他の適切なデータのセットを含むことができる。所定の訓練データセット内の画像の対は、概念的に関連することが好ましいが、追加又は代替として、オブジェクト属性、背景を共有することができ、及び/又は、他の方法で関連させられることができる。初期ターゲット画像の対は、初期画像(初期シーン)及びターゲット画像(ターゲットシーン)を含むことが好ましいが、追加又は代替として、第1フレームが入力フレームであり、最後のフレームがターゲットフレームであるビデオ、3以上の画像フレーム、音声(例えば、命令)、移動データ(例えば、仮想移動)、(例えば、キーフレームの、命令のなどの)記載された記述、及び/又は、他の任意の適切なデータであり得る。一例では、訓練データはキーフレームのみを含むことができる(例えば、シーンを介さない初期シーン及びターゲットシーンのみ;操作ステップの開始又は終了を定義するフレームのみなど)。第2の例では、訓練データはキーフレーム及び介在フレームを含むことができる。しかしながら、訓練データは、任意の適切なデータのセットを含むことができる。
【0018】
[0028] 訓練データは、1以上の画像を含むことができるが、追加又は代替として、任意の他の適切なデータを含むことができる。画像は、初期画像(例えば、開始シーン)及びターゲット画像(例えば、終了シーン)の1以上の対を含むことが好ましいが、追加又は代替として、キーフレーム、キーフレーム間の中間フレーム、又は任意の他の適切なフレームを含むことができる。訓練データは、2次元であることが好ましいが、追加又は代替として、3次元であってもよく、又は、任意の適切な寸法のセットを有してもよい。
【0019】
[0029] 訓練データは、ターゲット画像内のオブジェクトに一致する(又は、既定の誤差の程度内で実質的に一致する)ように操作される(例えば、移動させられる、変換される、など)こととなる初期画像内のオブジェクトを表現することができ、及び/又は、任意の他の適切な情報を含むことができる。オブジェクトは、VCCによって制御されるエージェントによって操作されることが好ましいが、追加又は代替として、外部エージェントによって若しくは任意の他の適切な実体及び/又はロボットによって操作されることができる。
【0020】
[0030] 変形例では、訓練データは、実世界画像であること、最初の画像をシリーズの最後の画像に変換する動作を描く一連の画像/フレームであること、一連の抽象表現(例えば、形状)であること、及び/又は、任意の他の適切な表現を含むことができる。訓練データは、(例えば、VCCの)視覚センサによって捕捉され、手動で生成され、(例えば、例フレームのセットから、命令のセットなどから)シミュレーションされ、外部エージェントによって実行されてVCCエージェントにマッピングされた一連の移動から決定され、及び/又は、他の方法で決定されることができる。
【0021】
[0031] 訓練データは1以上の(仮想)オブジェクトを含むことが好ましい。オブジェクトは、形状、色、サイズ、ポーズを有することが好ましいが、追加又は代替として、シャドウ、テクスチャ及び/又は任意の他の適切な属性(例えば、外観属性、位置属性など)又は特徴を有することができる。オブジェクトは、物理的空間における物理的オブジェクトの仮想表現(例えば、物理的なワーキングボリューム)であることが好ましいが、追加又は代替として、任意の他の適切な表現を有することができる。
【0022】
[0032] 初期画像は1以上のオブジェクトを含むことが好ましい。ターゲット画像は、入力シーンからの1以上のオブジェクトのセットを含むことが好ましい。初期画像及びターゲット画像によって共有されるオブジェクトのセットは、初期画像とターゲット画像との間で同一のままであってもよく、修正されてもよく(例えば、形状の変更、色の変更、サイズの変更、若しくは、追加又は代替として外観の変更)、又は、他の方法で関連させられてもよい。初期画像及びターゲット画像は、任意選択的に、異なるオブジェクト、より少ないオブジェクト、より多くのオブジェクト、及び/又は、任意の他の適切なオブジェクトのセットを含むことができる。ターゲット画像は、入力シーンから修正されることができる(例えば、シーンの背景が、異なる色、テクスチャ、グラデーションなどであってもよい;追加オブジェクトなどのクラッタが、背景に追加されることができる、又は、背景から除去されることができる;照明条件が修正されることができる、又は、入力シーンとターゲットシーンとの間の任意の他の適切な修正)。ターゲットシーン内のオブジェクトは、入力シーン内に表される配列とは異なる配列(例えば、入力シーン内の異なる場所、異なるポーズなど)であることが好ましいが、追加又は代替として、同じ配列又は任意の他の適切な配列であることができる。
【0023】
[0033] 訓練データの例が図6に示されている(例えば、画像、記載された記述)。図6の例は、異なるプログラム(例えば、異なる意味表現、異なるプログラム識別子)、同じプログラム(例えば、同じ意味表現、同じプログラム識別子)のためのものであってもよく、及び/又は、他の方法で関連させられてもよい。
【0024】
[0034] しかしながら、訓練データは他の方法で決定されることができる。
【0025】
[0035] システム20は、追加又は代替として、特にプログラム実行中に実行データ230を使用することができる。実行データは、少なくとも1つの入力シーンを含むことが好ましいが、追加又は代替として、(例えば、現在のワークスペース状態の、現在のオブジェクト状態の、などの)中間シーン、ターゲットシーン、及び/又は、任意の他の適切なシーンのセットの1以上を含むことができる。実行データは、VCCの視覚センサによって、外部システムによって捕捉され、シミュレーションされ、ユーザから受信され、又は、他の方法で決定されることができる。実行データは、静止フレームのセット(例えば、シーン)、第1フレームが入力フレームであるビデオ、移動データ(例えば、実行状態決定のための、未来の状態推定のための、など。移動データは、仮想移動、マニピュレータ移動、マニピュレータ位置決めなどを含むことができる)を含むことができる。入力シーンは、2次元、3次元であってもよいが、追加又は代替として、任意の他の適切な次元を有することができる。しかしながら、実行データは別の方法で決定されることができる。訓練データ及び実行データは、異なる分布(例えば、異なるオブジェクト、異なる初期オブジェクト属性など)を有することが好ましいが、追加又は代替として、同じ分布を有することができる。例えば、ターゲット画像/ターゲットシーンは、スタックされた黄オブジェクトなどの概念を表すことができるが、異なるターゲット画像/ターゲットシーン内のオブジェクトは、異なる形状(例えば、円柱、四角形など)を有してもよい。実行データは、訓練データと同様のものでもよいが、追加又は代替として、異なる測定寸法(例えば、3次元画像、3次元モデル、点群など)、より多くのフレーム(例えば、中間フレーム)を含むことができ、及び/又は、そうでない場合、訓練データと異なってもよい。
【0026】
[0036] システム20は、追加又は代替として、ワーキングメモリを記憶し、プログラムセットを記憶し、及び、システムモジュールを実行する1以上のコンピュータ可読媒体を含むことができる。コンピュータ可読媒体は、データベースであってもよいが、追加又は代替として、RAM及び/又はROM、フラッシュメモリ、EEPROM、光学デバイス(CD又はDVD)、ハードディスクドライブ、フロッピードライブ、及び/又は、任意の適切な記憶デバイスを含むことができる。コンピュータ可読媒体は、不揮発性、揮発性であってもよく、及び/又は、任意の他の適切な特性を含むことができる。
【0027】
[0037] システム20は、1以上の命令セット235を含むことが好ましい。命令セットは、原始関数の1以上のセットを含むことが好ましい。各原始関数セットは、VCCの単一のシステムコンポーネントに関連付けられることが好ましいが、追加又は代替として、複数のVCCシステムコンポーネントに関連付けられることができる。原始関数は、それぞれのシステムコンポーネント(例えば、各々がマシンコード又はバイトコードのセットに関連付けられる)によって実行可能な関数であることが好ましいが、追加又は代替として、それぞれのシステムコンポーネントのクエリを特定し、それぞれのシステムコンポーネントを操作し、又は、他の方法でそれぞれのシステムコンポーネントと相互作用することができる。原始関数は、予め決定され、手動で決定され、ハードコードされ、プログラム検索時間に基づいて決定されることができるが、追加又は代替として、他の方法で決定されることができる。命令セットは、コンピュータ可読媒体に記憶されることが好ましいが、追加又は代替として、他の方法で記憶されてもよい。
【0028】
[0038] 原始関数は、追加又は代替として、引数値236のセット(例えば、変数値)と関連付けられることができる。原始関数に関連付けられた引数及び/又は引数値のセットは、予め決定され、手動で決定され、視覚的階層によって決定されることができ(視覚的階層;例えば、所定の階層レベルからなどの視覚的階層の出力属性値が、既定の原始関数に対する引数値として利用可能である場合)、及び/又は、他の方法で決定されることができる。
【0029】
[0039] 引数値は、原始関数の効果を決定するように機能することができる。引数は1以上の値をとることができる。引数値は、プログラムの帰納反復及び/又は実行セッションの間で共有されることができ、又は、これらに特有であり得る。所定のプログラムセットで使用される特定の引数は、外部ガイダンス又は手動ガイダンス(例えば、ポインタが固定コントローラ引数の固定場所を特定する、図7に示される例)によって、確率的に(例えば、ニューラルネットワーク、回帰、決定木など)、又は、他の方法で、決定されることができる。所定のプログラムセットで使用される特定の引数値は、(例えば、訓練データの、実行データの)入力シーン、中間シーン(例えば、実行中、オブジェクト操作中)、現在又は将来のオブジェクト又はワーキングエリア状態のシミュレーション、外部入力に基づいて、VCCによって決定される、及び/又は、他の方法で決定されることができる。
【0030】
[0040] 例えば、引数は、固定コントローラのための位置指定引数(例えば、中央、左、右、下、上など)を含むことができる。第2の例では、引数は、特定された色(例えば、赤、緑、青、黄など)のオブジェクトにアテンション(attention)を設定することと、特定された形状のオブジェクト(例えば、四角形、三角形、星形、円形、ダイヤモンドなど)にアテンションを設定することと、を含むことができる。第3の例では、引数は、現在アテンド(attend)されているオブジェクトを塗りつぶすための色(例えば、赤、緑、黄など)を設定することを含むことができる。第4の例では、引数は、入力シーン及びターゲットシーン内のオブジェクト(例えば、水平線、円、四角形、三角形など)とは異なる、想像された/シミュレーションされた新しいオブジェクト又はターゲットを決定することを含むことができる。
【0031】
[0041] しかしながら、命令セット、引数及び引数値は、追加又は代替として、別の方法で決定され及び/又は任意の他の適切なコンポーネントを含むことができる。
【0032】
[0042] プログラム帰納エンジンによって生成されたプログラムは、タスクを完了するためのVCCの動作を決定するように機能することが好ましく、タスクは、訓練データから決定される。タスクは、完全タスク(例えば、プログラム作成終了状態)、部分タスク(例えば、プログラム作成中間状態)及び/又は他の任意の適切なタスクであってもよい。終了状態、中間状態及び/又は任意の他の適切な状態は、シミュレーションメモリによって、外部エージェントによって、及び/又は、任意の他の適切なコンポーネントによって決定されることができる。プログラムは命令のセット(原始関数)であることが好ましく、セット内の命令は、直列、並列及び/又はそれらの組み合わせで実行されることができる。プログラムは、追加又は代替として引数値を含むことができ、及び/又は、実行中に(例えば、実行データに基づいて)決定される引数値を有することができる。しかしながら、プログラムは、任意の他の適切な情報を含むことができる。プログラムは、VCC上で実行可能であることが好ましいが、任意の他の適切なコンピュータアーキテクチャ上で実行可能であることも可能である。プログラムは、好ましくはコンピュータ可読媒体に、より好ましくは不揮発性メモリに記憶されるが、追加又は代替として、揮発性メモリに記憶され、遠隔的に記憶され(例えばリモートサーバ)、及び/又は、他の方法で記憶されることができる。プログラムは、1以上のプログラム識別子、追加情報(例えば、確率スコア、近接スコア、プログラム長、プログラム実行時間、訓練データ、実行データ及び/又は任意の他の適切なデータ)、初期ターゲットの対、初期ターゲットの対のセットについての識別子と共に記憶されることができるが、追加又は代替として、任意の他の適切なデータと共に記憶されることができる。プログラムは、プログラム帰納エンジンによって決定され、(例えば、外部エージェントによって)予め決定され、手動で決定され、ハードコードされることができるが、追加又は代替として、他の方法で決定されることができる。
【0033】
[0043] 本システムは、所定のタスク(例えば、初期ターゲットの対のセット);部分タスク(例えば、初期ターゲットの対のセット);複数のタスク(例えば、初期ターゲットの対の複数のセット)のための1以上のプログラム、単一プログラム、及び/又は、任意の適切な方法で訓練セットに関連する任意の他の適切な数のプログラムを生成することができる。
【0034】
[0044] システム20は、1以上のプログラム帰納エンジン215を含むことが好ましい。プログラム帰納エンジンは、訓練データ(例えば、初期ターゲット画像の対など)から1以上のプログラムを生成するように機能することが好ましく、及び任意選択的に、訓練データを処理し、命令セットから命令のセットを選択し、命令のための引数値を決定し、及び、プログラムセットを反復的に生成及び/又は使用することができる(例えば、調査中にプログラムセットを生成する、プログラムセットを使用して圧縮フェーズ中にプログラム帰納エンジンを更新する)。変形例では、プログラム帰納エンジンは、入力シーン及びターゲットシーンによって特定されたタスクを完了するためにVCCを共同して制御する原始関数のサブセットを選択することができ、及び任意選択的に、選択された原始関数のための引数及び/又は引数値を選択することができる。
【0035】
[0045] プログラム帰納エンジンは1以上の生成モデルを含むことが好ましい。生成モデルは、訓練データを与えられたプログラムを決定するように機能することが好ましい。生成モデルは、マルコフモデル(例えば、メモリ又はオーダを有する;固定マルコフ連鎖など)であるが、追加又は代替として、ツリー又はグラフ、ニューラルネットワーク、ベイジアン(Batesian)ネットワーク、確率(probabilistic)モデル、確率(stochastic)モデル及び/又は任意の他の適切なモデルであり得る。生成モデルは、学習され、手動で決定され又は他の方法で決定されることができる。システムは、単一の生成モデル、候補プログラム又はプログラム帰納インスタンスごとに異なる生成モデル、訓練データセットごとに異なる生成モデル(例えば、認知プログラムごと)、及び/又は、任意の他の適切な数の生成モデルを含むことができる。
【0036】
[0046] 生成モデルは、オーダ(例えば、オーダ0、オーダ1など)を含むことが好ましい。第1の例では、生成モデルは、オーダ0モデルであり、命令の相対周波数を学習する。第2の例では、生成モデルは、オーダ1モデルであり、プログラムにおける命令の遷移確率を学習する。しかしながら、遷移確率は、追加又は代替として他の方法で決定されることができる。
【0037】
[0047] 生成モデルは、命令間遷移を含むことが好ましく、各遷移は確率に関連付けられる。各遷移の確率は、静的であってもよく、VCCコンポーネント状態の関数として変化してもよく、以前に選択された命令の関数として変化してもよく、学習されてもよく(例えば、以前の状態に基づいて決定される、ニューラルネットワークによって決定される)、又は、他の方法で決定されることができる。
【0038】
[0048] 生成モデルは、命令の代わりにサブルーチン(例えば、命令からサブルーチンへの遷移、サブルーチン間の遷移、サブルーチンから命令への遷移など)を任意に含むことができる。サブルーチンは、命令のシーケンス(例えば、2以上の命令)であることが好ましいが、追加又は代替として、他の方法で決定されることができる。サブルーチンは、プログラムに繰り返し現れる命令シーケンス(例えば、実行のために選択されたもの、候補プログラムなど)であってもよく、手動で特定されたシーケンスであってもよく、及び/又は、他の方法で決定されてもよい。
【0039】
[0049] 生成モデルは、任意選択的に、命令からエンドポイントへの遷移及び/又はサブルーチンと終点(endpoint)との間(例えば、プログラム完了、VCC例外など)の遷移を含むことができ、及び/又は、任意の他の適切な遷移を含むことができる。
【0040】
[0050] 一例では、生成モデルはオーダ1のマルコフ連鎖を含み、命令セット、引数及び/又はサブルーチンからの原始関数がノードを形成し、各遷移が確率に関連付けられる。プログラム帰納の間、プログラム帰納エンジンは、マルコフ連鎖を横断して、タスクを満たす1以上のプログラム(例えば、入力シーン及び/又はターゲットシーンから抽出されたオブジェクト属性を付与されたそれぞれの確率に基づいて決定される原始関数の連鎖)を決定することができる。生成モデルは、任意選択的に、候補プログラム及び/又は1以上のプログラムメトリクス(例えば、長さ;ターゲットシーンとの類似性など)に基づく候補プログラム生成後に更新されることができる。
【0041】
[0051] しかしながら、生成モデルは、追加又は代替として、他の方法で構成及び/又は決定されることができる。
【0042】
[0052] プログラム帰納エンジン及び/又はVCCは1以上の特徴抽出器を含むことができる。特徴抽出器は、入力画像及び/又はターゲット画像から特徴を抽出するように機能することが好ましい。特徴帰納エンジンは、追加又は代替として、入力とターゲットとの間の差異特徴を決定するように機能することができるが(例えば、初期画像中の黄色円はターゲット画像中の緑色円である)、追加又は代替として、任意の他の適切な機能のセットを実行することができる。
【0043】
[0053] 特徴抽出器は、所定の画像に対するピクセルチャネルを決定するアルゴリズムであり得る。特徴抽出器は、追加又は代替として、入力シーンについての階層及びターゲットシーンについての階層と、比較可能な階層の層とを比較することによって決定される、視覚的階層の層(例えば、RCN層)又は出力(例えば、階層の層)であり得る。しかしながら、任意の他の適切な特徴抽出器が使用されることができる。特徴抽出器の出力は、特徴ベクトル、特徴値、特徴サマリ及び/又は任意の他の適切な特徴データを含むことができる。
【0044】
[0054] 特徴抽出器は、1以上の2次元特徴を抽出することができる。2次元特徴は、ピクセル、パッチ、記述子、キーポイント、エッジ、ラインセグメント、ブロブ、ピラミッド特徴、輪郭、接合線、オプティカルフロー場、勾配(例えば、カラー勾配)、ビット平面、色、形状(例えば、オブジェクトエッジが1以上の形状に分類され得る)、及び、追加又は代替として、任意の他の適切な特徴を含むことができる。2次元特徴は、抽出され(例えば、特徴固有抽出法を使用する)、読み出され(例えば、画像に関連付けられたメタデータから)、又は他の方法で決定されることができる。2次元特徴は、特徴検出器(例えば、エッジ検出器、キーポイント検出器、ライン検出器)、動き推定方法(例えば、ブロックマッチング、位相相関、周波数領域、ピクセル再帰的方法、オプティカルフローなどの直接的方法;間接的方法など)、ニューラルネットワーク(例えば、畳み込みニューラルネットワーク(CNN)、深部ニューラルネットワーク(DNN)、再帰ニューラルネットワーク、生成ニューラルネットワークなど)、セグメンテーション(例えば、セマンティックセグメンテーション、領域ベースセグメンテーション、エッジ検出セグメンテーション、クラスタベースセグメンテーションなど)、及び/又は、特徴を抽出するための他の任意の適切な方法のうちの1以上を用いて抽出されることができる。
【0045】
[0055] 特徴抽出器によって抽出された特徴は、引数予測のための識別モデルによって使用されることができ、視覚的階層によって使用されてオブジェクトとそれらのそれぞれの属性とを分離することができるが、他の方法で使用されることができる。
【0046】
[0056] しかしながら、特徴抽出器は、追加又は代替として、任意の他の適切なコンポーネントを含むことができる。
【0047】
[0057] プログラム帰納エンジンは1以上の識別モデルを含むことが好ましい。識別モデルは、生成モデルにおける命令及び/又はサブルーチンに対する引数及び/又は引数値を決定するように機能することが好ましい。プログラム帰納エンジンは1以上のプログラム帰納エンジンを含むことができる。識別モデルは、所定の命令に特有であってもよく、システムコンポーネントに特有であってもよく、すべての命令にわたって包括的であってもよく、又は、他の方法で構造化されてもよい。識別モデルは、CNNであることが好ましいが、追加又は代替として、任意の他の適切なタイプのニューラルネットワーク、回帰、クラスタリングアルゴリズム、監視されたアルゴリズム、監視されていないアルゴリズム、又は、任意の他の適切なアルゴリズムであってもよい。識別モデルは、追加又は代替として、条件付きランダムフィールド、マルコフランダムフィールド、及び/又は、任意の他の適切なランダムフィールドなどのランダムフィールドを含むことができる。識別モデルは、追加又は代替として、オブジェクト情報のために視覚的階層をクエリすること、オブジェクト情報のためにオブジェクトインデックスメモリをクエリすること、及び/又は、任意の他の適切なクエリを含むことができる。識別モデルは、入力特徴(例えば、入力シーンから、視覚的階層から、オブジェクトワーキングメモリから、カラーワーキングメモリからなど)を取ることが好ましいが、追加又は代替として、差異特徴(例えば、特徴抽出器から)、固定ガイダンス(例えば、固定コントローラから)、1以上の画像からの特徴、及び/又は、任意の他の適切な特徴を処理することができる。識別モデルは、命令のための候補引数値、既定の引数値のセット(例えば、指数検索空間又はツリー内で使用される)の各々に対する確率、又は、他の任意の適切な出力を出力することができる。識別モデルに関連付けられた出力値は、現在の原始関数(例えば、原始関数に関連付けられた可能な引数)に条件付けられることが好ましいが、条件付けられなくてもよく、及び/又は、他の方法で条件付けられてもよい。例えば、原始関数がカラーアテンションを設定している場合、可能な引数値は、赤、黄、緑、青などである。識別モデルは、カラー出力でない出力に対してゼロ確率を強制することによって(モデルに、オブジェクト、形状、値などの他の引数特徴クラスに低い確率を割り当てさせることとは対照的に)、原始関数に関連付けられた引数値に条件付けられることができる(例えば、カラーアテンションを設定する)。別の例では、異なる引数確率が、原始関数の複数の可能な引数の各々に関連付けられることができ、原始関数の引数は、それぞれの引数確率に基づいて選択される。
【0048】
[0058] しかしながら、識別モデルは、追加又は代替として、他の方法で決定されることができ、及び/又は、任意の他の適切なコンポーネントを含むことができる。
【0049】
[0059] プログラム帰納エンジンの一例を図9に示す。
【0050】
[0060] システム20は、訓練データ(例えば、プログラム帰納中)、実行データ(例えば、プログラム実行中)、命令セット、プログラムセット、及び/又は、任意の他の適切な情報を処理するように機能する1以上の視覚認知コンピュータ(VCC)220を含むことが好ましい。VCCは、1以上の視覚的階層221、1以上のワーキングメモリ(例えば、1以上のシミュレーションメモリ、1以上の固定メモリ、1以上のインデックスメモリなど)、1以上のダイナミックスモデル223、1以上の固定コントローラ224、1以上のアテンションコントローラ222、1以上のアテンションゲーティング機構226、1以上のエージェント227を含むことが好ましい。VCCの一例は図3に示されている。しかしながら、VCCは、追加又は代替として、任意の他の適切なコンポーネントを含むことができる。
【0051】
[0061] VCCは、初期ターゲットの対のためのプログラムを決定し、かつ、候補プログラムの出力をシミュレーションするために、初期ターゲットの対からの概念を理解するために、プログラム帰納中に使用されることができる。VCCは、追加又は代替として、入力を与えられた既定のプログラムを実行するためにプログラム実行中(例えば、ランタイム)に使用されることができる。VCCは、想像される移動の効果を予測し、かつ、それらの結果をシミュレーションメモリに書き込むように機能することができる(例えば、ダイナミックスモデル及び視覚的階層を使用する)。しかしながら、VCCは、追加又は代替として、任意の他の適切な機能のセットを実行することができる。
【0052】
[0062] VCCは、特定の命令セットに関連付けられたシステムコンポーネントを含むコンピュータアーキテクチャであることが好ましい。例えば、図4に示すように、特定のVCCコンポーネントは、特定の命令サブセットに関連付けられることができる。命令は、(VCCの)それぞれのシステムコンポーネント上の機能又はプログラムとして実行されることができる。VCCは、画像化可能な空間情報を用いてシミュレーションを実行することができる感覚運動系であり得る。VCCは、テーブルトップワールド(TW)と相互作用することができるが、追加又は代替として、レーヴン漸進的マトリックス(RPM)、VCCの概念的理解を評価するようなピクセル精度の高い画像再構成を測定するデータセットを含んでもよく、及び/又は、任意の他の適切なデータ構造を含む又はデータ構造とインターフェースするができる。
【0053】
[0063] 一変形例において、VCCは、任意の他の適切な出力又はマニピュレータ(例えば、ロボット、車などの車両、飛行機、スクータ、自転車など)を制御するように構成されたコンピュータであり得る。第2の変形例では、VCCは、初期状態及び最終状態を考慮すると、第三者の実行のためのプログラムを帰納するように構成されたコンピュータであってもよい。しかしながら、VCCは他の方法で使用されることができる。
【0054】
[0064] 各VCCコンポーネントは、専用の計算システム(例えば、個別の処理システム、任意選択的にローカルメモリを有する)上で実行されることが好ましいが、VCCコンポーネントは、共通の計算システム上で実行され、及び/又は、他の方法で実行されることができる。
【0055】
[0065] VCCは、画像又はシーンを解析するように機能する、1以上の視覚的階層221を含むことが好ましい。視覚的階層は、初期画像(例えば、訓練画像、実行中にサンプリングされた初期画像)、ターゲット画像、任意の中間画像(例えば、実行中にVCCに関連付けられたカメラによって捕捉される)、及び/又は、任意の他の適切な画像を解析(及び/又は表現)することができる。
【0056】
[0066] シーン(画像)は、1以上のオブジェクト、背景、及び/又は、任意の他の適切な視覚的特徴を含むことができる。背景は、表面(例えば、テーブル)であってもよく、クラッタリングされてもよく(例えば、対象ではないオブジェクト、初期画像とターゲット画像との間の位置を変化させないオブジェクトなどを含む)、クラッタリングされなくてもよく、パターン化されてもよく、パターン化されなくてもよく、及び/又は、任意の他の適切な視覚的特徴のセットを有することができる。背景は、物質界であってもよく、シミュレーションされた/仮想世界であってもよいが、追加又は代替として、任意の他の適切な背景であってもよい。
【0057】
[0067] 視覚的階層は、生成視覚モデルであることが好ましいが、追加又は代替として、任意の他の適切なニューラルネットワーク(例えば、CNN、RNN、GANなど)、機械学習モデル(例えば、k近傍法、SVMなど)、階層(例えば、シーン特徴、オブジェクト特徴などのクエリ可能な階層)、ツリー、及び/又は、任意の他の適切なデータ構造であってもよい。
【0058】
[0068] 視覚的階層は、オブジェクトの形状、サイズ、色、位置及び/又は方向などの構成オブジェクト属性としてシーンを解析及び/又は表現するが、追加又は代替として、背景及び前景にシーンを解析し、及び/又は、任意の他の適切なシーン特徴を抽出することができる。一例では、視覚的階層は、その外観属性(例えば、色、テクスチャなど)から因数分解されたオブジェクトの形状を表現している。
【0059】
[0069] 視覚的階層は、アテンションコントローラを含んでもよいし、アテンションコントローラとインターフェースしてもよく、アテンションコントローラは、プログラム帰納中及び/又はプログラム実行中に、階層から、どのオブジェクト及びどの属性を使用すべきかを選択する。視覚的階層は、オブジェクトワーキングメモリ及び/又はカラーワーキングメモリとインターフェースするが(例えば、オブジェクト属性を書き込む、及び/又は、オブジェクト属性を読み出す)、追加又は代替として、シミュレーションメモリ(例えば、仮想空間でオブジェクト属性をシミュレーションする)及び/又は他の任意の適切なワーキングメモリとインターフェースすることができる。
【0060】
[0070] 第1の変形例では、視覚的階層はトップ符号化(top encoding)を含むことができる。トップ符号化は、世界の抽象表現を含むことができる。トップ符号化は、非可逆的であってもよく(例えば、シーンのすべての情報を含まない)、追加又は代替として、詳細であってもよく、及び/又は、他の方法で決定されてもよい。トップ符号化データは、リアルタイムで、オンデマンドで又は任意の他の適切な時間にアクセスされることができる。
【0061】
[0071] この変形例では、視覚的階層は、任意選択的に、ボトム符号化(bottom encoding)を含むことができる。ボトム符号化は、世界の詳細な表現(例えば、ピクセルレベル表現)であってもよく、若しくは、追加又は代替として他の方法で決定されてもよい。
【0062】
[0072] この変形例では、視覚的階層は、任意選択的に、1以上の中間符号化(intermediate encoding)を含むことができる。中間符号化は、トップ符号化とボトム符号化との間に位置付けられることができる。中間符号化は、形状、線、ブロブ、エッジ及び/又は任意の他の適切な特徴(例えば、オブジェクト)を描くことができる。
【0063】
[0073] 視覚的階層は、訓練することによって、初期画像を処理することによって、出力画像を処理することによって、生成されることができ、及び/又は、他の方法で生成される。
【0064】
[0074] 視覚的階層はパラメータを含むことができる。パラメータは、予め決められる(例えば、予め訓練される)ことが好ましいが、追加又は代替として、ヒューリスティックに基づいて訓練され、シーンに基づいて決定され、及び/又は、他の方法で決定されることができる。パラメータ(及び/又は特徴値、階層レベル値、視覚的階層全体など)は、ワーキングメモリ(例えば、オブジェクトワーキングメモリ、カラーワーキングメモリなど)に記憶されることができるが、追加又は代替として、他の方法で記憶されることができる。
【0065】
[0075] 視覚的階層は、命令セットからの関連付けられた命令を有することができる(例えば、シーン解析、トップダウンアテンド、塗りつぶし色、想像オブジェクトなど)。
【0066】
[0076] 一例では、シーン解析がプログラムの開始であり得る。シーン解析は、入力シーンをオブジェクトに解析し、それらをシミュレーションメモリに配置するように機能することができる。シーン解析は、視覚的階層の最上位にオブジェクトインデックスメモリを取り込むように機能することができる。固定のデフォルト位置は初期画像の中心にあるので、オブジェクトインデックスメモリ内のオブジェクトは、画像中心からのそれらの距離に応じて順序付けられる。しかしながら、シーン解析は、他の任意の適切な機能のセットを提供することができる。
【0067】
[0077] 第2の例では、トップダウンアテンドは、オブジェクトインデックスメモリ及び/又はシミュレーションメモリ内の特定のオブジェクトにアテンションを設定するように機能することができる。これは、オブジェクトインデックスメモリ内のオブジェクトインデクサの現在の場所に対応するオブジェクトを、アテンドされているものとしてマークすることによって達成されることができる。それは、視覚的階層の最上部におけるインデックスとシミュレーションメモリにおけるそのオブジェクトマスクとの間の対応関係を確立することができる。
【0068】
[0078] 第3の例では、塗りつぶし色は、現在アテンドされているオブジェクトを、引数として特定された色で塗りつぶすように機能することができる。塗りつぶし色は、シミュレーションメモリ内のオブジェクトの表現を変更することができるが、追加又は代替として、任意の他の適切な機能のセットを提供することができる。
【0069】
[0079] 第4の例では、オブジェクトを想像/シミュレーションすることは、引数で特定された種類の新しいオブジェクトを想像するように機能することができる。想像/類似のオブジェクトは、そのオブジェクトをシミュレーションメモリに書き込むことができる。オブジェクトは、現在の固定場所及び/又は任意の他の適切な場所で想像されることができる。シミュレーションメモリは、想像されたオブジェクトが実際のオブジェクトと区別されることができるように、想像されたオブジェクトにフラグを付けてマークすることができる。想像されたオブジェクトは、インタラクション中に(例えば、ダイナミックスモデルからのシミュレートされた物理的インタラクションに基づいて)実際のオブジェクトのように振る舞うことができる。想像/シミュレーションすることは、追加又は代替として、任意の他の適切な機能のセットを提供することができる。
【0070】
[0080] 視覚的階層は、アテンションコントローラ、ダイナミックスモデル、シミュレーションメモリと相互作用するように構成されることができるが、追加又は代替として、任意の他の適切なコンポーネントと相互作用するように構成されることができる。
【0071】
[0081] 一例では、視覚的階層は、複数のオブジェクトを包含する入力シーンを解析することができ、かつ、シミュレーションメモリを使用してオブジェクトを想像することができる。
【0072】
[0082] 第1の変形例では、視覚的階層は再帰的皮質ネットワーク50(RCN)である。図5A及び図5Bに示すように、RCNは複数のサブネットワーク500を含む。サブネットワークは、少なくとも親特徴ノード(「PF」)510と、プールノード(「P」)520と、親特定子特徴ノード(「X」)530(又は、略してPDCFノード)と、少なくとも制約ノード(「C」)540と、を含むことが好ましいが、追加又は代替として、子特徴ノード(「CF」)及び/又は他の任意の適切なノードを含むことができる。PSCFノードは、子特徴ノード(CF1、CF2、CF3、CR4、CF5、CF6)に接続することが好ましいが、任意の他の適切なノードに接続されるか、接続されないか、及び/又は、他の方法で接続されることができる。ある意味でのネットワークは、その着信メッセージ/信号上に加算、乗算、冪乗又は他の機能を実装する分散処理要素のネットワークである。パターンは、ネットワークを通じてノード起動を伝播することによって推定及び/又は生成されることができる。ニューラルネットワーク又はベイジアンネットワークとしてモデル化されることができるネットワークは、様々な実装を通じてイネーブル化及び実装されることができる。第1の実装において、システムは、電子的に結合された機能的ノードコンポーネントのネットワークとして実装される。機能ノードコンポーネントは、特定された機能を実行するためにプロセッサ内に配置又は構成された論理ゲートであり得る。第2の実装では、システムは、プロセッサ上で動作するようにプログラム又は構成されたネットワークモデルとして実装される。ネットワークモデルは、ネットワークのノード間の動作及び通信を符号化する電子的に記憶されたソフトウェアであることが好ましい。さらに、ネットワーク50は、第1の動作モード:生成モード、及び第2のモード:推論モードを含む様々な動作モードに対して構成されることができる。ネットワーク50は、図5Aに示すように、種々の親子関係における相互接続されたサブネットワークの階層的に組織化されたネットワークであることが好ましいが、他の方法で構造化されることができる。代替的に、ネットワークは、図5Bに示すようなサブネットワークの集合の又は単一のサブネットワークの単一層であってもよい。例では、再帰的皮質ネットワーク(RCN)は、ニューラルネットワークの固有の形態、すなわち、皮質ネットワークを実装する際に使用される繰り返しサブネットワークパターンを有することができる。
【0073】
[0083] 特定の例では、RCNは、複数の階層の層に組織化されたサブネットワークの再帰的に設計されたネットワークを含む。サブネットワークは、少なくとも、親特徴ノード、プールノード、親特定子特徴(PSCF)ノード及び子特徴ノードを備える。少なくとも1つのサブネットワークの親特徴ノードは、少なくとも1つのサブネットワークの親特徴ノードに接続された少なくとも2つのプールノード上で実行可能な選択関数で構成される。少なくとも1つのサブネットワークのプールノードは、少なくとも1つのサブネットワークのプールノードに接続された少なくとも2つのPSCFノード上で実行可能な選択関数で構成される。少なくとも1つのサブネットワークのPSCFノードは、接続された子特徴ノードを起動するように構成される。
【0074】
[0084] 第2の特定の例において、視覚的階層は、米国特許出願第13/895,225号に記載されているようなRCNであってもよく、この参照によって当該出願の全体が本明細書に組み込まれる。
【0075】
[0085] 第3の特定の例において、視覚的階層は、D. George,W. Lehrach,K. Kansky,M. Lazaro-Gredilla,C. Laan,B. Marthi,X. Lou,Z. Meng,Y. Liu,H. Wang,A. Lavin,D. S. Phoenixによる「A genereative vision model that trains with high data efficiecncy and breaks text-based CAPTCHAs」Science 358,eaag2612(2017)に開示されたRCNであってもよく、この参照によってその全体が本明細書に組み込まれる。
【0076】
[0086] 第2の変形例では、視覚的階層は、深いニューラルネットワーク生成モデルである。
【0077】
[0087] しかしながら、視覚的階層は、追加又は代替として、任意の他の適切なコンポーネントを含むことができ、及び/又は、他の方法で構造化され得る。
【0078】
[0088] VCCは、1以上のワーキングメモリを含むことが好ましい。ワーキングメモリは、シミュレーションメモリ330、固定メモリ340、カラーインデックスメモリ310、オブジェクトインデックスメモリ320を含むことができるが、追加又は代替として、任意の他の適切なメモリを含むことができる。ワーキングメモリはコンピュータ可読媒体に記憶されることができる。ワーキングメモリは、VCCに対してローカルであることが好ましいが、追加又は代替として、リモート(例えば、サーバに、リモート処理システムなどに配置される)であってもよく、及び/又は、他の方法で位置決めされてもよい。ワーキングメモリは、短期(例えば、実行セッション、訓練セッション、特定の訓練データの実行及び/又は訓練などのセッションに特有)であることが好ましいが、追加又は代替として、長期(例えば、複数のプログラム帰納セッション、実行セッションなどにわたって延長する)であり得る。
【0079】
[0089] ワーキングメモリは構造化されていることが好ましいが、追加又は代替として、非構造化されることができる。構造は、コンテンツ(例えば、オブジェクト、オブジェクト属性、シーン特性など)、システムコンポーネントへのローカリティ(例えば、構造化されたアクセスを強制する)に基づいたものであってもよいが、ワーキングメモリは、追加又は代替として、他の方法で構造化されることができる。
【0080】
[0090] ワーキングメモリは、システムコンポーネント(例えば、個別の原始関数セット)によってアクセスされることができる。ワーキングメモリは、原始関数によって読み出されて書き込まれることができるが、ワーキングメモリは、追加又は代替として、他の方法でアクセスされることができる。原始関数は、予め特定されていることが好ましいが、追加又は代替として、別の方法で特定されることができる。
【0081】
[0091] 変形例では、各システムコンポーネント及び/又は1以上の原始関数は、特定のセットのワーキングメモリ(例えば、限られたセットのワーキングメモリ)と関連付けられることができる。しかしながら、所定のシステムコンポーネントに対する原始関数は、任意のワーキングメモリを参照及び/又は書き込むことができる。例では、固定コントローラ命令は、固定メモリのみを参照する(固定メモリから読み出す)ことができ、視覚的階層命令は、オブジェクトインデックスメモリ、カラーインデックスメモリ及び/又はシミュレーションメモリを参照及び/又はに書き込むことができ、オブジェクトインデクサ原始関数は、オブジェクトインデックスメモリ及び/又はカラーインデックスメモリのみを参照することができ、及び、ロボットコントローラ命令はシミュレーションメモリのみに書き込むことができる。しかしながら、異なるコンポーネントに対する原始関数は、他の方法でワーキングメモリに関連させられることができる。
【0082】
[0092] しかしながら、ワーキングメモリは、追加又は代替として、任意の他の適切なコンポーネントを含むことができ、及び/又は、他の方法で使用されることができる。
【0083】
[0093] VCCは、1以上のシミュレーションメモリ(例えば、想像黒板)を含むことが好ましい。シミュレーションメモリは、ワーキング領域の状態をシミュレーションするように機能することができる。例えば、シミュレーションメモリは、プログラムに基づくVCCコンポーネントによる操作(例えば、「想像された動作」)の前、中及び/又は後に、ワーキング領域内の1以上のオブジェクトの初期、中間及び/又は終了状態をシミュレーションすることができる。シミュレーションメモリは、追加又は代替として、インタラクティブクエリを介してオブジェクトの詳細にアクセスすることを可能にすることができる。シミュレーションメモリは、追加又は代替として、中間オブジェクト状態(例えば、プログラムシミュレーション及び/又は実行中)を記憶することができる。しかしながら、シミュレーションメモリは、任意の他の適切な機能のセットを実行することができる。
【0084】
[0094] シミュレーションメモリは、トポグラフィックに組織化されることが好ましいが、追加又は代替として、他の方法で組織化されることができる。シミュレーションメモリは、実体オブジェクトと仮想オブジェクトとを区別することが好ましい(例えば、バイナリフラグのようなフラグによって)。シミュレーションメモリは、2次元ジオメトリエンジンであることが好ましいが、3次元ジオメトリエンジン、データベース、及び/又は任意の他の適切なシミュレーション媒体であってもよい。シミュレーションメモリは、2次元、3次元、及び/又は、任意の他の適切な寸法のセットのオブジェクトを表すことができる。シミュレーションメモリは、不揮発性メモリであることが好ましいが、揮発性であってもよく、又は、任意の他の適切なメモリであってもよい。シミュレーションメモリは、各プログラム帰納セッション、プログラム帰納セッション内のプログラム帰納例、及び/又は各実行例に対してリセットされることが好ましいが、他の方法でリセットされることができる。
【0085】
[0095] シミュレーションメモリは、ダイナミックスモデル(例えば、エージェント操作によるオブジェクトダイナミックスは、ダイナミックスモデルに基づいてシミュレーションメモリ内でシミュレーションされる)と、視覚的階層(例えば、オブジェクトは、視覚的階層によってシミュレーションメモリ内に配置される及び/又は内で操作される)と、固定コントローラ(例えば、シミュレーションメモリは、固定コントローラによって特定されるワーキング領域内で、視野をシミュレーションする)と間接的又は直接的に、アテンションコントローラ(例えば、アテンションコントローラは、どのオブジェクトをシミュレーションするかを特定する)と間接的又は直接的にインターフェースすることが好ましいが、追加又は代替として、任意の他の適切なコンポーネントとインターフェースすることができる。
【0086】
[0096] VCCは、1以上の固定メモリを含むことができる。固定メモリはデータ構造であることが好ましい。固定メモリは、固定場所の履歴(例えば、次の固定状態、前の固定状態など)を含むことが好ましいが、追加又は代替として、高さ情報、位置決め情報などの場所におけるエージェントに関連する情報を含むことができ、及び/又は、任意の他の適切な情報を含むことができる。固定メモリは、固定コントローラで動作可能であることが好ましいが、追加又は代替として、任意の他の適切なコンポーネントで動作可能であり得る。固定メモリは、固定コントローラの場所を記憶することができる(例えば、固定コントローラの移動中に周期的に、固定コントローラが場所に到達した後(移動を停止)に、及び/又は、任意の他の適当な時間の場所を記憶する)。場所は、状態(例えば、次の状態、前の状態など)に、エージェント情報に、及び/又は、任意の他の適切な情報に関連付けられることができる。場所は、プログラムによって、シミュレーションメモリによって、及び/又は、他の方法で決定されることができる。
【0087】
[0097] 一変形例において、固定コントローラの現在の状態は、固定メモリ内のポインタに基づいて決定されることができる。固定コントローラに関連付けられた原始関数が実行されると、固定メモリは、関連する情報(例えば、場所情報)を固定コントローラに提供することができる。例えば、次の状態関数が実行される場合、固定メモリは、現在の状態のポインタにアクセスし、かつ、メモリ内の次の連続した場所を識別することによって、次の状態に関連付けられた場所を決定することができる。固定メモリは固定コントローラに場所を通信することができ、かつ、固定コントローラは原始関数を実行することができる。
【0088】
[0098] 第2の変形例では、固定メモリが固定コントローラに新しい場所(例えば、次の状態、前の状態)を送信する場合、エージェントが新しい場所に到達したとき(例えば、画像、座標などの場所情報をサンプリングすることによって)、現在の場所に関連付けられたポインタが更新されることができる。第3の変形例では、ユーザは、固定コントローラをガイドすることができ、ユーザのガイダンスに関連付けられた場所が固定メモリ内に記憶されることができる。
【0089】
[0099] VCCは、1以上のオブジェクトインデックスメモリを含むことが好ましい。オブジェクトインデックスメモリは、シーン内のオブジェクト(オブジェクトインデックス)の一部及び/又はすべてのオブジェクトのインデックスを記憶するように機能することができる。オブジェクトインデックスは、オブジェクト、色又は任意の他の適切な特徴をインデックスすることができる。
【0090】
[00100] オブジェクトインデックスメモリは、シーンのオブジェクト形状情報を記憶するデータ構造であることが好ましい。形状情報は、視覚的階層、特徴抽出器及び/又は任意の他の適切なコンポーネントによって決定されることができる。インデックス内のオブジェクトは、優先度を有しており、固定の中心からのそれらの距離に応じて順序付けされることができ(例えば、固定コントローラによって決定される)、追加又は代替として、ルールのセット(例えば、ラスター順序)に基づいて順序付けられることができ、及び/又は、その他の方法で順序付けられることができる。インデックス内のオブジェクトは、アテンドされたオブジェクトのみ(例えば、アテンションコントローラによって識別されるオブジェクト)、固定コントローラによって特定された視野内のオブジェクト、すべてのオブジェクト、及び/又は、任意の他の適切なオブジェクトのセットに限定されることができる。
【0091】
[00101] オブジェクトインデックスメモリは、オブジェクトインデックスメモリの動作及び/又は出力を制御する命令セット(例えば、ループ開始、ループ終了、次のオブジェクトなど)からの関連付けられた命令(例えば、オブジェクトインデックスを管理するための命令)を有することができる。
【0092】
[00102] 一例では、ループ開始は、現在アテンドされているオブジェクト上で反復するループの開始をマークするように機能することができる。無限ループを防止するために、ループ本体は、次のオブジェクト命令を包含する必要があり、リセットアテンション命令を有することを禁止されることができる。これらは、プログラム帰納中の構文チェックとして強制されることができる。
【0093】
[00103] 第2の例では、ループ端は、ループの端部をマークするように機能することができる。ループ本体内の命令は、オブジェクト反復子の端部に達するまで実行されることができるが、他の方法で実行されることができる。
【0094】
[00104] 第3の例では、次のオブジェクトは、オブジェクトインデックスメモリ内のオブジェクト反復子を前進させるように機能することができるが、追加又は代替として、任意の他の適切な機能のセットを提供することができる。
【0095】
[00105] オブジェクトインデックスメモリは、視覚的階層とインターフェースすることが好ましい(例えば、ローカル、リモート、又は他の方法で位置付けられる)。視覚的階層は、オブジェクト属性をオブジェクトインデックスメモリに書き込むことができ、任意選択的に、オブジェクトインデックスメモリから(例えば、シミュレーションのために)オブジェクト属性を読み出すことができる。一例では、オブジェクトは、関連付けられた属性(例えば、視覚的属性)のセットを有する点として表されることができる。第2の例では、オブジェクトはオブジェクト属性のセット(例えば、階層)として表されることができる。第3の例では、オブジェクトは、オブジェクト識別子によって表されることができ、オブジェクト識別子は、視覚的階層内に記憶された特定のオブジェクトの属性を参照する。しかしながら、オブジェクトは、他の方法で、オブジェクトインデックスメモリ内で表されることができる。オブジェクトインデックスメモリは、任意選択的に、アテンションコントローラとインターフェースすることができる。例えば、アテンションコントローラは、アテンドされたオブジェクト(例えば、オブジェクトインデックス内)を特定することができ、アテンドされたオブジェクトのみが、プログラムシミュレーション、評価及び/又は実行のために反復されることができる。オブジェクトインデックスメモリは、固定コントローラと任意選択的にインターフェースすることができ、オブジェクトインデックス内のオブジェクトは、固定コントローラによる基準点の変化に応答して、動的に再び順序付けられる(例えば、シミュレーションメモリから決定されるような現在のオブジェクト状態に基づいて;初期オブジェクト状態などに基づいて)。オブジェクトインデックスメモリは、任意選択的に、オブジェクトインデックス上で反復する(例えば、オブジェクトインデックス原始関数及び/又は引数値に基づく)オブジェクトインデックスとインターフェースし、及び/又は、オブジェクトインデクサを含むことができる。オブジェクトインデックスメモリは、追加又は代替として、任意の他の適切な方法で任意の他の適切なコンポーネントとインターフェースすることができる。
【0096】
[00106] VCCは、1以上のダイナミックスモデル223(例えば、物理シミュレータ)を含むことが好ましい。ダイナミックスモデルは、デカルト平面内でオブジェクトを操作し、シーンのジオメトリをシミュレーションし、及び/又は、オブジェクト物理をシミュレーションするように機能することが好ましいが、追加又は代替として、任意の他の適切な機能のセットを実行することができる。ダイナミックスモデルは、各オブジェクトの属性情報(例えば、オブジェクト属性情報は、位置、形状、色、サイズなどであり得る)を含むことが好ましいが、追加又は代替として、移動情報、閉塞情報、表面表現情報及び/又は任意の他の適切な情報を含むことができる。
【0097】
[00107] 一変形例において、ダイナミックスモデルは、K. Kansky,T. Silver,D. A. Mely,M. Eldawy,M. Lazaro-Gredilla,X. Lou,N. Dorfman,S. Sidor,S. Phoenix,D. Georgeによる、「Schema networks; Zero-shot transfer with a generative casual model of intuitive physics」、International Conference on Machine Learning (ICML, 2017),pp.1809-1818で論じられたダイナミックスモデルであり得る。
【0098】
[00108] 第2の変形例では、ダイナミックスモデルは、オブジェクト移動情報を予測するように構成されたニューラルネットワーク(例えば、全結合ネットワーク、GAN、RNN)であり得る。
【0099】
[00109] 第3の変形例では、ダイナミックスモデルは、オブジェクトの移動を予測するように構成された強化学習アルゴリズム(例えば、Q学習、ポリシー反復、SARSA、ディープQネットワーク(DQN)、及び/又は、他の任意の適切な強化学習アルゴリズム)であり得る。
【0100】
[00110] 第4の変形例では、ダイナミックスモデルは、オブジェクトの移動を予測するように構成された確率モデル(例えば、マルコフモデル、ベイジアンネットワーク、確率モデルなど)であり得る。
【0101】
[00111] しかしながら、ダイナミックスモデルは、方程式のセットであってもよく、又は、他の方法で構成されてもよい。
【0102】
[00112] ダイナミックスモデルは視覚的階層と共に使用されることができ、VCCは、シミュレーションされたオブジェクト移動の効果に関する予測を行うことができる。例えば、VCCは、エージェント命令のセット(例えば、プログラムによって決定される)及びオブジェクト属性(例えば、視覚的階層によって決定される)を与えられたオブジェクトのダイナミックス及び/又は相互作用をシミュレーションすることができる。しかしながら、オブジェクト移動の予測は他の方法で決定されることができる。予測は、シミュレーションメモリに記録されることができ、及び/又は、他の方法で記録/記憶されることができる。しかしながら、ダイナミックスモデルは、追加又は代替として、他の任意の適切なコンポーネントと共に使用されることができる。
【0103】
[00113] VCCは、1以上の固定コントローラ224を含むことが好ましい。固定コントローラは、固定移動(例えば、固定指令)を用いて、入力内に基準点(例えば、視野の中心、視野の隅、視野に対する動的に選択された点など)を位置決めするように機能することが好ましい。一例では、固定コントローラは、入力シーン内で視野の中心を位置決めする。第2の例では、固定コントローラは、固定メモリを使用して、以前に訪れた位置に「眼」の中心を駆動することができる。
【0104】
[00114] 固定コントローラは、アルゴリズム(例えば、決定論的、監視された、監視されていない、ニューラルネットワーク、回帰など)、外部エージェント、固定を制御するように構成された機械コンポーネントであってもよいが、追加又は代替として、別の方法で決定されることができる。固定コントローラは、固定コントローラの動作を制御する命令セット(例えば、次の状態を固定する、前の状態を固定する、など)から関連付けられた命令を有することができる。
【0105】
[00115] 一例では、次の状態を固定することは、固定メモリ内の次の固定場所に固定を移動させるように機能することができるが、追加又は代替として、任意の他の適切な機能を提供することができる。
【0106】
[00116] 第2の例では、前の状態を固定することは、固定メモリ内の前の固定位置に固定を移動させるように機能することができるが、追加又は代替として、任意の他の適切な機能を提供することができる。
【0107】
[00117] 第3の例では、アテンドされたオブジェクトを固定することは、現在アテンドされているオブジェクトに固定を移動させるように機能することができる。
【0108】
[00118] 第4の例では、ポインタを固定することは、入力シーンのポインタに固定を移動させるように機能することができる(例えば、ポインタはアテンションコントローラであり得る)。
【0109】
[00119] 第5の例では、場所を固定することは、引数として与えられた位置(例えば、上、下、右、左、中央など)の1つに固定を移動させるように機能することができる。固定の移動は、オブジェクトインデックスメモリ及び/又はカラーインデックスメモリ内のオブジェクトの再順序付けを強制することができるが、追加又は代替として、他のシステムコンポーネントに影響を与えることができる。
【0110】
[00120] 固定コントローラは、アテンションコントローラとインターフェースすることができ及び/又はアテンションコントローラを含むことができるが、追加又は代替として、任意の他の適切なコンポーネントを含むことができる。固定コントローラは、固定メモリと相互作用(例えば、読み出し及び/又は書き込み)することができ、プログラム帰納エンジンに結合されることができるが、追加又は代替として、任意の他の適切なコンポーネントと相互作用することができる。
【0111】
[00121] VCCは、1以上のアテンションコントローラ222を含むことが好ましい。アテンションコントローラは、オブジェクトの色及び/又は形状を用いてオブジェクトをフィルタリングし、並びに/若しくは、オブジェクト属性に基づいてオブジェクトの現在のアテンションを設定するように機能することが好ましいが、追加又は代替として、任意の他の適切な機能のセットを実行することができる。
【0112】
[00122] アテンションコントローラは、トップダウンアテンションマスク(例えば、バイナリ、強制ゼロなど)であることが好ましく、マスクは、単一のオブジェクト(例えば、オブジェクトのエッジに対応するピクセル、すべてのオブジェクトピクセルなど)を定義又は特定することができるが、追加又は代替として、ボトムアップアテンションマスク、ニューラルネットワーク(例えば、特徴マップからのアテンションLSTM、反復アテンションモデルなど)であってもよい。
【0113】
[00123] アテンションコントローラは、アテンションコントローラの動作及び/又は出力を制御する命令セット(例えば、形状アテンションの設定、カラーアテンションの設定、アテンションのリセットなど)から関連付けられた命令を有することができる。
【0114】
[00124] 一例では、形状アテンションを設定することは、引数に与えられる形状のタイプにアテンションを設定するように機能することができる。アテンションを設定することは、オブジェクトインデックスメモリを使用して反復されるオブジェクトに影響を与えることができる。シーン内のオブジェクトのセット(例えば、すべて、サブセット)は、シミュレーションメモリ内に存在するが、アテンドされているオブジェクトのみが反復されることができる。例えば、アテンションが「四角形」オブジェクトに設定されている場合、次のオブジェクトを呼び出すと、反復子がシーン内の次の四角形オブジェクトを指し示すように反復子を前進させ、他のオブジェクトを無視する。リセットアテンションを使用して、形状アテンションを設定することの影響を排除し、シーン内のオブジェクトのセットに反復子を復元することができる。
【0115】
[00125] 第2の例では、色を設定することは、引数に与えられた色のオブジェクトにアテンションを設定するように機能することができる。アテンションを設定すると、オブジェクトインデックスメモリを使用して反復されるオブジェクトに影響を与えることができる。シーン内のセットオブジェクト(例えば、すべて、サブセット)がシミュレーションバッファ内に存在するが、アテンドされているオブジェクトのみが反復されることができる。例えば、アテンションが「赤」オブジェクトに設定されている場合、次のオブジェクトを呼び出すと、反復子がシーン内の次の赤オブジェクトを指し示すように反復子を前進させ、他のオブジェクトを無視する。リセットアテンションを使用して、形状アテンションを設定することの影響を排除し、シーン内のオブジェクトのセットを反復子に復元することができる。カラーアテンションを設定すること及び形状アテンションを設定することは、特定の形状-色の組み合わせを反復するように連動して使用されることができるが、追加又は代替として、他の方法で使用されることもできる。
【0116】
[00126] 第3の例では、アテンションをリセットすることは、カラーアテンションを設定すること及び形状アテンションを設定することの影響を排除し、シーン内のすべてのオブジェクトに反復子を復元し、及び/又は、他の任意の適切な機能のセットを提供するように機能することができる。
【0117】
[00127] アテンションコントローラは、シミュレーションメモリ内に配置されたオブジェクトに影響を与え、どのオブジェクトが反復に使用可能であるかに影響を与えることができるが、追加又は代替として、他の方法でシステムに影響を与えることができる。
【0118】
[00128] 一例では、アテンションコントローラは、シミュレーションメモリ内の参照オブジェクトに対するポインティング機構である。
【0119】
[00129] 一変形例では、アテンションコントローラは、システムから外部にあり、かつ、ポインタ(例えば、トップダウンアテンションマスク)でシステムのアテンションを指示することによってシステムと相互作用することができる。
【0120】
[00130] VCCは、1以上のアテンションゲーティング機構226を含むことが好ましい。アテンションゲーティング機構は、オブジェクト属性(例えば、形状、色など)にオブジェクトを結合するように機能する;シミュレーションメモリ内の参照オブジェクトに対する内部ポインティング機構として機能する;背景からオブジェクトをセグメント化するように機能するが、追加又は代替として、任意の他の適切な機能のセットを実行することができる。
【0121】
[00131] 一例では、アテンションゲーティング機構はトップダウンアテンション(例えば、次の変換のための関連のオブジェクト属性を決定するため)を使用するが、追加又は代替として、ボトムアップアテンション、自己アテンション、アテンションニューラルネットワーク、及び/又は、他の任意の適切なアテンション機構を含むことができる。
【0122】
[00132] アテンションゲーティング機構は、トップダウンアテンションマスク(例えば、バイナリ、強制ゼロなど)であることが好ましく、マスクは、単一のオブジェクト(例えば、オブジェクトエッジに対応するピクセル、すべてのオブジェクトピクセルなど)を定義することができるが、追加又は代替として、ボトムアップアテンション、自己アテンション、ニューラルネットワークベースのアテンション(例えば、特徴マップからのアテンションLSTM、反復アテンションモデルなど)、及び/又は、任意の他の適切なアテンション機構及び/又はセグメンテーションアルゴリズム(k近傍法などのクラスタリングに基づくセグメンテーション;エッジ検出に基づくセグメンテーション;CNNなどの教師あり学習に基づくセグメンテーションなど)、又は、任意の他の適切なアルゴリズムを含むことができる。
【0123】
[00133] アテンションゲーティング機構は、アテンションコントローラ(例えば、アテンドするためのオブジェクトを規定する)、シミュレーションメモリ(例えば、アテンドされるオブジェクトの属性が読み出される及び/又は書き込まれる)、視覚的階層(例えば、アテンションゲーティング機構が適用されるデータソース)とインターフェースすることが好ましいが、追加又は代替として、任意の他の適切なコンポーネントとインターフェースすることができる。
【0124】
[00134] 一変形例では、アテンションゲーティング機構はトップダウンアテンションゲーティングである。第2の変形例では、アテンションゲーティング機構は、トップダウンアテンションゲーティング及びボトムアップアテンションゲーティングであるが、追加又は代替として、アテンション機構の任意の他の適切な組み合わせであり得る。
【0125】
[00135] VCCは、1以上のエージェント227を含むことが好ましい。エージェントは、関連付けられたマニピュレータ(例えば、物理的マニピュレータ)をオブジェクト及び視野に対して位置決めするように機能することが好ましいが、追加又は代替として、仮想的又は物理的マニピュレータポーズ(例えば、位置及び/又は場所)を出力することができる。マニピュレータは、オブジェクトを操作し、かつ、物質界、シミュレーションされた世界、仮想世界においてオブジェクトを保持する(例えば、把持する)、解放する、及び移動させる(例えば、左、右、上、下など)ことができることが好ましいが、別の方法でオブジェクトを操作することができる。エージェントは、複数のマニピュレータに対して包括的であることが好ましいが、追加又は代替として、単一のマニピュレータ又はそのセットに対して特有であってもよい。エージェント(及び関連付けられた命令)が包括的である場合、各命令は、任意選択的に、前記マニピュレータに特有の(例えば、マニピュレータ変換モジュールのセットによって)マニピュレータ機能(例えば、マニピュレータによって読み出し可能なマシンコード又はバイトコード)に変換されることができる。
【0126】
[00136] エージェントは、エージェントのマニピュレータを制御するように機能する、命令セットからの関連付けられた命令(例えば、オブジェクトを把持する、オブジェクトを解放する、固定にハンドを移動させる、ポインタにハンドを移動させる、左にハンドを移動させる、右にハンドを移動させる、上にハンドを移動させる、下にハンドを移動させる、アテンドされたオブジェクトにハンドを移動させるなど)を有することができる。
【0127】
[00137] 一例では、オブジェクトを把持することは、コントローラの下方にあるオブジェクトを把持するように機能する(例えば、ハンド)。命令は、ハンドがオブジェクト上にない場合、ハンドが既にオブジェクトを保持している場合、及び/又は、他の任意の適切な時間に例外を発生させることができる。
【0128】
[00138] 第2の例では、オブジェクトを解放することは、現在コントローラに保持されているオブジェクトを、ハンドが入っている場所で解放するように機能することができる。命令は、ハンドがオブジェクトを保持していない場合、及び/又は、任意の他の適切な時間に例外を発生させることができる。
【0129】
[00139] 第3の例では、ハンドを固定に移動させることは、現在の固定の場所までハンドを移動させるように機能することができる。ハンド内に保持されている任意のオブジェクトはそれと共に移動し、オブジェクトがルート内の任意の他のオブジェクトと衝突した場合、移動は停止することができる(例えば、視覚的階層に基づく)。
【0130】
[00140] 第4の例では、ポインタにハンドを移動させることは、ポインタによってマークされた場所にハンドを移動させるように機能することができる。ハンド内に保持されている任意のオブジェクトはそれと共に移動し、オブジェクトがルート内の任意の他のオブジェクトと衝突した場合、移動は停止することができる。命令は、ポインタが入力画像の一部でない場合、及び/又は、任意の他の適切な理由のために、例外を発生させることができる。
【0131】
[00141] 第5の例では、左/右/上/下にハンドを移動させることは、コントローラを移動させるように機能することができる(例えば、ハンドがワークスペースの境界に衝突するまで、左/右/上/下にハンドを直線で移動させる)。コントローラ内に保持されている任意のオブジェクトはそれと共に移動する。オブジェクトが任意の他のオブジェクト及び/又は要素(例えば、ワークスペースに構成されたフィクスチャ)と衝突した場合、オブジェクトがワークスペースの境界に衝突した場合、及び/又は、他の任意の適切な時間に、移動は停止することができる。
【0132】
[00142] 第6の例では、アテンドされたオブジェクトにハンドを移動させることは、コントローラ(例えば、手)を、コントローラの現在の位置から現在のアテンドされたオブジェクトの上部に直線で移動させるように機能することができる。コントローラがオブジェクトを保持していない場合、コントローラの位置がオブジェクトの中心に一致すると、コントローラは停止することができる。ハンド内に保持されている任意のオブジェクトはそれと共に移動する。移動は、オブジェクトがルート内の他の任意のオブジェクト又はアテンドされたオブジェクトに、及び/又は、他の任意の適切な時間に衝突した場合、停止することができる。命令は、ハンドが既にアテンドされたオブジェクトにいる場合、及び/又は、任意の他の適切な時間に例外を発生させることができる。
【0133】
[00143] エージェントは、ダイナミックスモデル(例えば、ダイナミックスモデルが、現在及び/又は次のエージェント命令のダイナミックス及び/又は効果を決定する)、シミュレーションメモリ(例えば、エージェント及び/又はオブジェクトに対するエージェントの効果がシミュレーションメモリに書き込まれる)、及び/又は、任意の他の適切なコンポーネントとインターフェースすることができる。
【0134】
[00144] しかしながら、VCCは、追加又は代替として、任意の他の適切なコンポーネントを含むことができる。
【0135】
4.方法
[00145] 方法は、エージェントによって実行されることができる原始関数を含むプログラムを決定するように機能する、初期ターゲットの対のためのプログラムを生成することを含むことができる。方法は、VCCとインターフェースすることによってプログラム帰納エンジンによって実行されることが好ましいが、追加又は代替として、任意の他の適切なシステムによって実行されることができる。方法は、任意選択的に、特定されていない入力に対してプログラムを実行することを含むことができる。方法は、アクティブセッション中(例えば、訓練中、実行中など)に実行されることが好ましいが、任意の他の適切な時間に実行されることができる。方法は、訓練中のプログラムを生成するために命令のセットを使用することが好ましく、その後、実行中に、(例えば、選択された概念に関連付けられた)プログラムがシステムによって実行されることが好ましい。
【0136】
[00146] 方法の一例が図8に示されている。緑オブジェクトを下縁に移動させるタスク(左から開始)及び右縁に沿って赤オブジェクトをスタックするタスク(下から開始)のための訓練データ(例)がプログラム帰納エンジンによって受信される。プログラム帰納エンジンは、候補プログラムのセットを反復的に決定し、スコア(例えば、確率、プログラム作成終了状態のターゲットシーンへの接近度、プログラム作成中間状態のターゲットシーンへの接近度など)を有するプログラム(例えば、完全プログラム、部分プログラムなど)を評価することによって、概念表現を抽出する。概念を実行することは、初期の画像/シーンを受信することと、プログラム帰納中に学習されたタスクを実行することと、を含む。タスクは、完全タスク(例えば、プログラム作成終了状態、部分タスク(例えば、プログラム作成中間状態)、及び/又は、任意の他の適切なタスクであり得る。タスクを実行することは、概念をシミュレーションすること、ロボット(例えば、ハンドコントローラ)によって概念を実行すること、及び/又は、他の方法で実行することを含むことができる。
【0137】
[00147] 特定の例において、プログラムは、小さな円を大きな円内に配列することができる(例えば、図6に示される例)。このようにして円を配列することは、存在しないオブジェクト(大きな円)を想像し、その後、想像されたオブジェクトがワーキングメモリ内(例えば、シミュレーションメモリ内)に維持されている間に、この想像されたオブジェクトに向かって他のオブジェクトを押す(例えば、エージェントを使用する)VCCを含むことができる。
【0138】
[00148] 方法は、追加又は代替として、入力画像から特徴を抽出することS100を含むことができる。S100は、各画像から特徴ベクトルを決定するように機能することが好ましいが、追加又は代替として、画像全体の、画像セット全体の及び/又は任意の他の適切なデータのセットの特徴ベクトルを決定することができる。S100は、初期ターゲットの対から特徴ベクトルを決定することが好ましく、特徴ベクトルは、帰納されたプログラムの引数として(又は引数を決定するために)使用されることができる。S100は、任意選択的に、プログラム実行中に使用される現在の画像の特徴ベクトルを決定することができる。特徴ベクトルは、オブジェクト属性及びカラー属性を含むことができるが、追加又は代替として、任意の適切な特徴を含むことができる。特徴ベクトルは、任意選択的に、入力画像とターゲット画像との間の差異特徴ベクトルを含むことができる。S100は、視覚的階層によって実行されることが好ましいが、追加又は代替として、特徴抽出器及び/又は任意の他の適切なコンポーネントによって実行されることができる。S100は、所定の原始関数に対する引数予測の前に実行されることが好ましいが、追加又は代替として、生成モデルの訓練中に又は他の任意の適切な時間に実行されることができる。
【0139】
[00149] S100は、一度に単一の画像を取り入れることが好ましいが、追加又は代替として、単一の初期ターゲットの対、複数の初期ターゲットの対、初期画像に関連付けられたピクセルチャネル、ターゲット画像、又は、任意の他の適切な画像を取り入れることができる。入力は、外部エージェントから受信されることが好ましいが、追加又は代替として、別の方法で決定されることができる。
【0140】
[00150] 例えば、入力は各画像のそれぞれのRGBチャネルに変換されることができる。各チャネルは特徴抽出器によって処理されることができる。
【0141】
[00151] 出力される特徴は、1以上の差分特徴ベクトル、入力特徴ベクトル、ターゲット特徴ベクトル、及び/又は、任意の他の適切な特徴ベクトル、入力の符号化、ターゲット及び/又は差分画像/チャネル/ベクトルであり得るが、追加又は代替として、任意の他の適切なデータ構造であり得る。
【0142】
[00152] 一例では、S100は、各訓練データの例について、入力(例えば、初期画像、ターゲット画像など)を3次元バイナリアレイに変換することを含むが、追加又は代替として、複数の2次元アレイ又は任意の他の適切なデータ表現であってもよい。3次元バイナリアレイの第1寸法は、チャネル数(例えば、10、20、21、30など)であり得る。アレイのチャネルの第1の既定のセット(例えば、チャネルの数のサブセット)は入力画像に基づいてもよい。各要素は、そのチャネルに関連付けられた特徴がその場所に存在するか否かに応じて、それぞれ1又は0に設定される。次の既定のチャネルのセットは、両方とも同じバイナリ符号化を用いて、入力画像とターゲット画像との間の差に基づいてもよく、その結果、これらのチャンネルの要素は、可能な値として-1、0及び1値を有することになる。
【0143】
[00153] しかしながら、S100は、追加又は代替として、任意の他の適切な要素を含むことができる。
【0144】
[00154] 方法は、追加又は代替として、原始関数引数を決定することS200を含むことができる。S200は、生成モデルにおける命令のための引数及び/又は引数値を決定するように機能することが好ましい。S200は、追加又は代替として、プログラム実行中に引数値を決定するように機能することができる。S200は、プログラム帰納エンジン、好ましくは識別モデルによって実行されることが好ましいが、追加又は代替として、任意の他の適切なコンポーネントであってもよい。S200は、プログラム帰納中、生成モデル訓練中、実行中(例えば、入力シーンに基づく)、又は、任意の他の適切な時間に実行されることができる。
【0145】
[00155] S200は、S100の出力(例えば、特徴ベクトル、画像チャネルなど)に基づいて引数値を決定することが好ましいが、追加又は代替として、固定ガイダンス情報(例えば、固定コントローラ、固定メモリなどから)に基づいて、入力画像(例えば、初期画像、ターゲット画像、現在の画像など)に基づいて、引数値を決定し、及び/又は、任意の他の適切な情報を含むことができる。
【0146】
[00156] 入力は、原始関数引数を決定するために使用されることが好ましい。原始関数引数は、検索方法(例えば、網羅的検索、原始関数に条件付けられた、オブジェクト情報に条件付けられたような選択的検索など;識別モデルなどの予測アルゴリズムなど)、予測(例えば、識別モデル又はニューラルネットワークを用いる)、及び/又は、他の方法で決定され得る。一例では、特定の引数値が、各命令に対して予測され、プログラムが帰納される特定の初期ターゲットの対に条件付けられる。原始関数引数は、引数値(例えば、原始関数のためのパラメータ値)であることが好ましいが、追加又は代替として、変数識別子及び/又は任意の他の適切なデータ構造であってもよい。引数値は、探究フェーズ中に生成モデルによって使用されることが好ましいが、追加又は代替として、圧縮フェーズ中、候補プログラムの決定中、候補プログラムの評価中、実行中又は任意の他の適切な時間に、使用されることができる。
【0147】
[00157] しかしながら、S200は、追加又は代替として、任意の他の適切な要素を含むことができる。
【0148】
[00158] 方法は、候補プログラム(プログラム帰納)のセットを決定することS300を含むことが好ましい。S300は、プログラム帰納エンジンによって実行されることが好ましく、識別モデル及びVCCとインターフェースする生成モデルによって実行されることがより好ましいが、追加又は代替として、任意の他の適切なシステムコンポーネント及び/又は任意の他の適切なシステムによって実行され得る。S300は、反復的に実行されることが好ましいが、追加又は代替として、一旦決定され、フィードバックなしで決定され、及び/又は、他の方法で決定され得る。S300は、プログラム実行前に実行されることが好ましいが、追加又は代替として、任意の他の適切な時間に実行されることができる。生成/決定されたプログラムの一例が図7に示されている。候補プログラムは、最大長さ(例えば、4、6、8など)、既定の命令のセットを有することができ、及び/又は、任意の他の適切な条件のセットを満たすことができる。
【0149】
[00159] 各訓練データセットに対して異なるプログラムが帰納されることが好ましいが、複数の訓練データセットに対して同じプログラムが帰納されることができる。候補プログラムは、各訓練データセット内の各初期ターゲットの対に対して個別に(例えば、直列に、並列に)帰納されることが好ましいが、追加又は代替として、バッチとして帰納され、反復的に帰納されることができ(例えば、第1の初期ターゲットの対に対して帰納された候補プログラムのセットが、第2の初期ターゲットの対に対して使用され、評価され及び/又は更新され得る)、又は、別の方法で帰納されることができる。
【0150】
[00160] S300は、引数を受け入れる又は必要とする命令が各々候補引数値のセットを含む、関連の命令のセットを決定することと、関連の命令のセットに基づいて候補プログラムのセットを決定することと、を含むことが好ましい。しかしながら、候補プログラムは別の方法で決定されることができる。
【0151】
[00161] 関連の命令のセットを決定することは、候補プログラム検索のための検索空間を生成するように機能する。セット内の命令、セット内命令順序、及び命令間の関係(例えば、命令間の確率及び/又は命令引数間の確率)は、1以上のニューラルネットワークを使用して、強化学習を使用して、探索-圧縮フレームワークを使用して、及び/又は、他の方法で決定されることができる。命令は、確率的に関連させられることが好ましいが(例えば、命令間の遷移は既定の確率と関連付けられる)、決定論的であってもよく、又は、別の方法で関連させられてもよい。変形例では、サブルーチン(例えば、原子命令のシーケンス)を、1以上の命令(例えば、サブルーチンが概念又は他の概念のためにプログラム内に繰り返し現れる場合)に置換されることができる。引数は、それぞれの命令に確率的に関連させられることが好ましいが(例えば、命令引数値間の遷移は既定の確率に関連付けられる)、決定論的であってもよく、又は、別の方法で関連させられてもよい。例えば、命令セット及び引数値は、ツリー構造又はマルコフ連鎖(例えば、図9に示されるように)に組織化されることができる。開始点(例えば、オブジェクト)は、アテンションコントローラ、外部エージェント及び/又は任意の他の適切な実体によって決定されることができる。
【0152】
[00162] 命令間の確率及び/又は命令引数間の確率は、入力画像の属性(例えば、特徴値)に基づいて決定されることができるが、追加又は代替として、任意の他の適切な入力に基づいて決定されることができる。
【0153】
[00163] 関連の命令(及び関係)のセットは、生成モデルによって決定されることが好ましいが、追加又は代替として、識別モデル又は任意の他の適切なモデルによって決定されることができる。一例では、命令間の遷移及び関連付けられた確率は、生成モデルによって決定され、命令-引数値間の関係は命令セットによって決定され、命令-引数値間の確率は、1以上の識別モデル(例えば、各命令に対して異なる識別モデル)によって決定される。特定の例では、命令間の確率は、既知のプログラム上で訓練された(以前の)生成モデルに基づいて決定され、命令-引数値間の確率は、現在の入力(例えば、現在の初期画像)に条件付けられた識別モデルによって決定される。しかしながら、S300への入力は、追加又は代替として、別の方法で決定されることができる。
【0154】
[00164] 候補プログラムを決定することは、初期画像で表されるワーキング領域の状態を、ターゲット画像で表されるワーキング領域の状態に変換するプログラムを決定するように機能する。候補プログラムは、関連の命令のセットを横断することによって決定されることが好ましいが、別の方法で決定されることができる。一例では、関連の命令のセットは、初期画像に関連付けられた又は初期画像に基づいて決定された初期開始位置に関連付けられた初期ノードから、終端ノード(例えば、成功ノード、失敗ノード、例外ノードなど)に到達するために、トラバースされ、終端ノードは、ターゲット画像又はターゲット画像に基づいて決定されたターゲット終端位置に関連付けられる。
【0155】
[00165] 一例では、S300は、確率の高い順に(例えば、プログラムの確率は、終端ノードに至るブランチの重みに依存する)プログラムのための関連の命令のセットを検索することを含むことができる。
【0156】
[00166] 第2の例では、S300は、1以上のパラメータ(例えば、長さ、ターゲット画像への終了状態の近接性など)に対する検索を最適化することを含むことができる。しかしながら、S300は、ビーム検索、BFS、DFS、反復深化検索、ニューラルネットワークベースの検索、網羅的検索、選択的サーチ、Aスター検索、任意の他の適切な検索、及び/又は、他の方法で決定されものを使用することを含むことができる。
【0157】
[00167] 特定の例では、検索は、部分プログラムの実行の結果によって追加的に案内される。プログラム生成中間状態(例えば、部分プログラムの実行後に得られたシーン)をターゲットシーンと比較して、プログラム生成終了状態までの距離を評価する。距離(距離値)は、オブジェクトごと、シーンからシーンで計算されることができ、又は、他の方法で決定されることができる。距離は、ユークリッドトポグラフィック及び/又は他の方法で決定されることができる。この距離は、ヒューリスティック値を得るためにマルコフ連鎖から得られる確率(例えば、ツリー構造のエッジ遷移確率)と組み合わせられることができる(例えば、ヒューリスティック値は、距離値及び部分プログラムに対する命令間の遷移及び/又は命令引数間の確率に基づいて計算されるか、又は、他の方法で決定され得る)。ヒューリスティック値は、部分プログラムがシーンの対の完全なプログラムにどの程度近いかの大まかな推定を提供する実数とすることができるが、他の方法で定義されることができる。プログラム帰納及び/又はプログラム評価中、より小さなヒューリスティックを有するプログラムは、検索アルゴリズムにおいて優先順位付けられることができる。検索アルゴリズムは、Aスター、最良の最初の検索、及び/又は、任意の他の適切な検索アルゴリズムであってもよい。
【0158】
[00168] プログラムは、初期画像の各オブジェクトに対して、直列、並列又は任意の他の適切な順序で帰納されることができる。直列オブジェクトプログラム帰納の一例では、アテンションコントローラが、最初のオブジェクト(例えば、アテンションコントローラによってオブジェクトインデックスメモリから選択された)を選択し、最も高い可能性のあるパスを選択することによって、決定木の命令をトラバースすることができる。ツリーの終点において、オブジェクトが正しい位置にある場合(例えば、視覚的階層によるシミュレーションメモリ内のオブジェクト操作シミュレーションに基づいて決定される際)、オブジェクトインデックスメモリは、最初のオブジェクトをフリーズすることができ、アテンションコントローラは次のオブジェクトを選択することができる。最初のオブジェクトに対して決定されたプログラムは、次のオブジェクトに適用され、最初のオブジェクトのプログラムがターゲット状態にならなかった場合には、次のオブジェクトに対して新しいプログラムが帰納される。オブジェクトインデックスメモリ及びアテンションコントローラは、すべてのオブジェクトがそれらのターゲットロケーションに移動させられるまでこのようにインターフェースすることができ、及び/又は、他の方法でインターフェースすることができる。
【0159】
[00169] S300は、任意選択的に、プログラム帰納のための生成モデルを改良するように機能する生成モデルを更新することを含むことができる。生成モデルは、包括的なもの(例えば、以前に学習した概念を前提とした将来のプログラムの空間に対する入力不可視的な事前処理)、テストデータセットに特有のもの、包括的なものであってもよく、又は、テストデータセット及び/又は概念に関連させられることができる。生成モデルは、探索-圧縮フレームワーク、強化学習を使用して更新される、及び/又は、他の方法で更新されることができる。一例では、探索-圧縮フレームワークを用いて生成モデルが更新され(例えば、修正された命令チェーン及び/又は命令間の確率を用いて)、帰納されたプログラム(例えば、探索フェーズにおける古い生成モデルによって導かれる)は、圧縮フェーズにおける生成モデルを更新するために使用される。
【0160】
[00170] S300の出力は、発見された候補プログラム(例えば、発見された命令のシーケンス)であることが好ましい。発見された候補プログラムは、モデルに示された例に基づいていることが好ましいが、追加又は代替として、ヒューリスティックに基づいてもよく、及び/又は、他の方法に基づいてもよい。候補プログラムは、プログラムデータセットに格納されることができるが、追加又は代替として、別の方法で格納されることができる。
【0161】
[00171] S300の例示的プログラム(及び、関連付けられたシミュレーションされた中間ワーキング領域及び/又はオブジェクト状態)が図10に示されている。
【0162】
[00172] ただし、S300は別の方法で実行されることができる。
【0163】
[00173] 方法は、追加又は代替として、各候補プログラムを評価することS400を含むことができる。S400は、S300で決定された候補プログラムから、所定の訓練データセットのためのプログラム(例えば、概念)を選択するように機能することが好ましい。S400は、VCCによって実行されることが好ましいが、追加又は代替として、任意の他の適切なコンポーネントであってもよく、遠隔で計算され、及び/又は、他の方法で決定されてもよい。S400は、(候補)プログラムが決定された後に実行されることが好ましいが、追加又は代替として、(候補)プログラムのセットが決定された後に実行され得るが、追加又は代替として、任意の他の適切な時間に実行され得る。
【0164】
[00174] S400への入力は、1以上の予め決定された(候補)プログラムであることが好ましいが、追加又は代替として、プログラム情報、例えば、近接スコア(例えば、ワーキング領域終了状態の近接、初期状態への、ターゲット状態へのプログラム適用後)、プログラム長さ、実行時間、ターゲット画像、初期画像及び/又は他の任意の適切な情報を含むことができる。終了状態/中間状態とターゲット状態との近接性は、要素ごと(ピクセルごと)の比較を用いて決定され、相互情報を決定し(初期ターゲットの対の結合ヒストグラムを決定する)、スケール不変特徴変換(SIFT)特徴を決定し、例えば、終了状態とターゲット状態(ターゲット画像)との間のオブジェクトパラメータ値(例えば、オブジェクト距離、オブジェクト姿勢など)を比較することによって(例えば、終了状態とターゲット状態との間のオブジェクトパラメータ差又は距離に基づいて近接スコアを計算することによって)、及び/又は、他の方法で差を測定することによって決定され得る。近接スコアは、オブジェクトごとに、シーンごとに決定されることができ、及び/又は、他の方法で決定されることができる。近接スコアは、距離が、ユークリッド、トポグラフィ及び/又は他の方法で決定され得る距離であり得る。終了状態/中間状態及びターゲット状態の近接は、終了状態/中間状態におけるオブジェクト位置のセットをターゲット状態におけるオブジェクト位置のセットと比較すること、及び/又は、多の方法で差を決定することに基づくことができる。オブジェクト位置は、シミュレーションされ、手動で生成され、及び/又は、他の方法で決定されることができる。
【0165】
[00175] 第1の変形例では、候補プログラムを評価することは、テストデータセット内で次の初期ターゲットの対上で候補プログラムを実行すること(例えば、次の初期ターゲットの対にS500を適用すること)と、第2の初期画像で表される初期状態を第2のターゲット画像で表されるターゲット状態に変換する候補プログラムを選択すること(例えば、初期状態に対するプログラムの効果をシミュレーションするためにVCCを使用すること)と、を含む。
【0166】
[0001] 初期状態をターゲット状態に変換する候補プログラムを選択することの一例は、ターゲットシーンにおけるオブジェクト位置に実質的に一致する最終的にシミュレーションされたオブジェクト位置のセット(例えば、シミュレーションされた終了状態内のオブジェクトのセットの位置)に応答して、プログラムとして一連の原始関数及び引数値のセットを選択することを含むことができる。
【0167】
[00176] 第2の変形例では、ターゲット状態に最も近接する平均(average)又は平均値(mean)を有するプログラム(ターゲットデータセットの各初期ターゲットの対について)が選択されることができる。しかしながら、プログラムは、手動で選択され、ルールのセットに基づいて選択され、長さに基づいて選択され(例えば、最長を選択し、最短を選択し)、コスト関数に基づいて選択され(例えば、距離にペナルティを課す、及び、ターゲット状態への近接性に報酬を付与する)、コストに基づいて選択され(例えば、性能の推定困難度、推定誤差率、推定エネルギ又はマニピュレータ稼働時間コスト)、及び/又は、任意の他の適切な測定基準に基づいて選択され得る。
【0168】
[00177] しかしながら、S400は、追加又は代替として、任意の他の適切な要素を含むことができる。
【0169】
[00178] 方法は、システム上でプログラムを実行することS500を含むことが好ましい。S500は、入力(例えば、初期ターゲットの対、初期画像など)に基づいてVCC上でプログラムを実行するように機能することが好ましい。S500は、VCCによって実行されることが好ましいが、追加又は代替として、任意の他の適切なシステムによって実行されることができる。S500は、候補プログラム評価中(例えば、初期ターゲットの対を使用する)、実行中又はランタイム中(例えば、カメラによってサンプリングされたワークスペースの画像を使用する)、及び/又は、任意の他の適切な時間に実行されることができる。
【0170】
[00179] プログラムは、入力データに基づいて実行されることが好ましく、及び、追加又は代替として、命令セット、プログラム(例えば、選択されたプログラム、候補プログラム)、S200における入力データから決定された特徴、S300における入力データから決定された引数値、及び/又は、任意の他の適切なデータを用いて実行されることができる。入力データは、初期画像、実行データ及び/又は他のデータであり得る。実行データは、入力シーンをサンプリングすることによって決定された現在の画像であることが好ましいが(例えば、視覚センサを使用する)、追加又は代替として、別の方法で決定されることができる。S500は、プログラム内のそれらのそれぞれの命令に従ってVCCコンポーネントを操作することを含むことが好ましい。しかしながら、S500は別の方法で実行されることができる。変形例において、S500は、任意選択的に、エージェント命令を、ロボットに又はマニピュレータに特有の命令に変換することを含むことができる。
【0171】
[00180] S500は、追加又は代替として、VCCワークスペース(例えば、TW、実世界など)からロボット基準フレームに場所をマッピングすることを含むことができる。マッピング場所は、ロボットに関してカメラの姿勢を較正すること;ロボットの動きを較正すること(例えば、アームの回転、アームの伸展、アームの後退、ハンドの回転など);把持の動きを較正すること(例えば、オブジェクトをハンドが把持すること);レベル1較正、レベル2較正、及び/又は、レベル3較正を含むことができ;ノンパラメトリックロボット較正、パラメトリックロボット較正を含むことができるが、追加又は代替として、任意の他の適切な要素を含むことができる。パラメータは、角度オフセット、関節長、関節変位を含むことができるが、追加又は代替として、任意の他の適切な要素を含むことができる。マッピング場所は、プログラム実行前に実行されることが好ましいが、追加又は代替として、プログラム実行中、プログラム実行後、及び/又は、任意の他の適切な時間に周期的に実行されることができる。
【0172】
[00181] しかしながら、S500は、追加又は代替として、任意の他の適切な要素を含むことができる。
【0173】
[00182] システム及び/又は方法の実施形態は、様々なシステムコンポーネント及び様々な方法プロセスのすべての組み合わせ及び置換を含むことができ、本明細書に記載される方法及び/又はプロセスの1以上の例は、非同期的に(例えば、連続的に)、同時的に(例えば、並行して)、又は、任意の他の適切な順序で、及び/又は、本明細書に記載されるシステム、要素及び/又は実体の1以上の例を使用することによって、実施されることができる。
【0174】
[00183] 当業者は、前の詳細な説明から、並びに、図面及び請求の範囲から理解するように、以下の請求の範囲で定義される本発明の範囲から逸脱することなく、本発明の好適な実施形態に修正及び変更を加えることができる。
図1
図2A
図2B
図3
図4
図5A
図5B
図6
図7
図8
図9
図10
図11