(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023164584
(43)【公開日】2023-11-10
(54)【発明の名称】情報処理装置及び情報処理方法、並びに情報処理システム
(51)【国際特許分類】
G06F 8/30 20180101AFI20231102BHJP
G06F 9/445 20180101ALI20231102BHJP
【FI】
G06F8/30
G06F9/445 130
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023150726
(22)【出願日】2023-09-19
(62)【分割の表示】P 2020534062の分割
【原出願日】2019-05-07
(31)【優先権主張番号】P 2018146249
(32)【優先日】2018-08-02
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】100093241
【弁理士】
【氏名又は名称】宮田 正昭
(74)【代理人】
【識別番号】100101801
【弁理士】
【氏名又は名称】山田 英治
(74)【代理人】
【識別番号】100095496
【弁理士】
【氏名又は名称】佐々木 榮二
(74)【代理人】
【識別番号】100086531
【弁理士】
【氏名又は名称】澤田 俊夫
(74)【代理人】
【識別番号】110000763
【氏名又は名称】弁理士法人大同特許事務所
(72)【発明者】
【氏名】矢島 匠
(57)【要約】
【課題】アプリケーション開発を支援する情報処理システムを提供する。
【解決手段】情報処理システムは、モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果を含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、ユーザのモジュールの購入に関する処理を行う購入装置で構成される。前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送する。前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、前記製品からの出力と共通する入力変数を有し又は前記製品への入力と共通する出力変数を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置。
【請求項2】
前記登録部は、モジュールの販売者の第1の端末から受信した前記登録情報を前記データベースに登録する、
請求項1に記載の情報処理装置。
【請求項3】
前記検索部は、モジュールの購入者の第2の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第2の端末に返送する、
請求項1に記載の情報処理装置。
【請求項4】
前記検索部は、前記第2の端末で選択されたモジュールの出力変数と共通する入力変数を持ち、又は、前記第2の端末で選択されたモジュールの入力変数と共通する出力変数を持つ、前記第2の端末で選択されたモジュールに接続できるモジュール候補を検索して、前記第2の端末に提示する、
請求項3に記載の情報処理装置。
【請求項5】
前記検索部は、前記第2の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第2の端末に提示する、
請求項4に記載の情報処理装置。
【請求項6】
前記検索部は、前記第2の端末上で、スライド式にパラメータ調整された類似度の検索範囲に従って、モジュールを検索する、
請求項5に記載の情報処理装置。
【請求項7】
前記検索部の検索結果に基づいて前記第2の端末で選択された複数のモジュールからアプリケーションをビルドして前記第2の端末に提供する提供部をさらに備える、
請求項3に記載の情報処理装置。
【請求項8】
第1のモジュールの出力変数と共通する入力変数を持つ第2のモジュールとを、前後の入出力の状態を確認して接続する、
請求項7に記載の情報処理装置。
【請求項9】
前記登録部は、モジュールの入力変数又は出力変数のうち少なくとも一方のalias情報をさらに前記データベースに登録する、
請求項1に記載の情報処理装置。
【請求項10】
前記第2の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部をさらに備える、
請求項3に記載の情報処理装置。
【請求項11】
前記試験部は、前記第2の端末からアップロードされたテストデータを使用して前記アプリケーションの動作をテストし、前記テストの結果を前記第2の端末に返送する、
請求項10に記載の情報処理装置。
【請求項12】
前記試験部は、前記アプリケーションに対する入力データを前記第2の端末から受信して、前記アプリケーションを動作させ、前記アプリケーションの出力データを前記第2の端末に返送する、
請求項10に記載の情報処理装置。
【請求項13】
前記第2の端末で選択されたモジュールを最適化する最適化部をさらに備える、
請求項3に記載の情報処理装置。
【請求項14】
前記最適化部は、前記第2の端末から指定されたプロセッサの構成情報に基づいて、前記モジュールを最適化する、
請求項13に記載の情報処理装置。
【請求項15】
前記モジュールはニューラルネットワークモジュールであり、
前記最適化部は、前記第2の端末において設定された前記ニューラルネットワークモジュールのパラメータのモデル圧縮のデータタイプの設定値の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも1つとのトレードオフを前記第2の端末に提示する、
請求項13に記載の情報処理装置。
【請求項16】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、前記製品からの出力と共通する入力変数を有し又は前記製品への入力と共通する出力変数を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法。
【請求項17】
ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、前記製品からの出力と共通する入力変数を有し又は前記製品への入力と共通する出力変数を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置。
【請求項18】
前記入力部に、モジュールの機能をさらに入力可能であり、
前記提示部は、前記入力部に入力されたモジュールの機能に類似する機能を有するモジュール候補をさらに提示する、
請求項17に記載の情報処理装置。
【請求項19】
ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、前記製品からの出力と共通する入力変数を有し又は前記製品への入力と共通する出力変数を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法。
【請求項20】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、前記製品からの出力と共通する入力変数を有し又は前記製品への入力と共通する出力変数を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書で開示する技術は、アプリケーションの開発に関連する処理を実行する情報処理装置及び情報処理方法、並びに情報処理システムに関する。
【背景技術】
【0002】
最近、アプリケーションの販売は、オンラインマーケットを通じて行われるのが一般的になってきている。例えば、販売者端末からアプリケーション販売サイトにアプリケーションがアップロードされ、購入者端末はアプリケーション販売サイトから所望のアプリケーションをダウンロードする。また、アプリケーションの販売者は、アプリケーション販売サイトを介して売り上げを受け取ることができる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平9-114651号公報
【特許文献2】特開2004-185103号公報
【特許文献3】特開2008-242613号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
本明細書で開示する技術の目的は、アプリケーションの開発に関連する処理を実行する情報処理装置及び情報処理方法、並びに情報処理システムを提供することにある。
【課題を解決するための手段】
【0005】
本明細書で開示する技術の第1の側面は、
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置である。
【0006】
第1の側面に係る情報処理装置において、前記登録部は、モジュールの販売者の第1の端末から受信した前記登録情報を前記データベースに登録する。また、前記検索部は、モジュールの購入者の第2の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第2の端末に返送する。また、前記検索部は、前記第2の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第2の端末に提示する。
【0007】
また、第1の側面に係る情報処理装置は、前記検索部の検索結果に基づいて前記第2の端末で選択された複数のモジュールからアプリケーションをビルドして前記第2の端末に提供する提供部、前記第2の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部、前記第2の端末で選択されたモジュールを最適化する最適化部をさらに備えてもよい。
【0008】
また、本明細書で開示する技術の第2の側面は、
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法である。
【0009】
また、本明細書で開示する技術の第3の側面は、
ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置である。
【0010】
第3の側面に係る情報処理装置は、前記入力部に入力された前記製品の識別情報を外部装置に送信し、前記提示部は、前記外部装置が前記製品の識別情報に基づいて検索した、関連するモジュールの機能を有する前記モジュールを提示する。また、前記提示部は、外部装置が検索した、前記第2の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を提示する。
【0011】
また、本明細書で開示する技術の第4の側面は、
ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法である。
【0012】
また、本明細書で開示する技術の第5の側面は、
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システムである。
【0013】
但し、ここで言う「システム」とは、複数の装置(又は特定の機能を実現する機能モジュール)が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【発明の効果】
【0014】
本明細書で開示する技術によれば、アプリケーションの開発に関連する処理を実行する情報処理装置及び情報処理方法、並びに情報処理システムを提供することができる。
【0015】
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。
【0016】
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【図面の簡単な説明】
【0017】
【
図1】
図1は、オンライン取引システム100の構成例を模式的に示した図である。
【
図2】
図2は、カメラシステム200の構成例を示した図である。
【
図3】
図3は、カメラシステム200において、カメラ映像から人を検出して追従する処理手順を示したフローチャートである。
【
図4】
図4は、カメラ映像から人を検出して追従するアプリケーションの開発手順を示した図である。
【
図5】
図5は、アプリケーション開発の際に、購入者端末102とモジュール販売サイト103間で実施される処理シーケンス例を示した図である。
【
図6】
図6は、モジュール登録情報データベース104に格納されるモジュールの登録情報の一例を示した図である。
【
図7】
図7は、物体認識のSub-class候補を例示した図である。
【
図8】
図8は、物体検出のTarget候補を例示した図である。
【
図9】
図9は、Class名「物体認識」に含まれる各Sub-classに関する、入力インターフェース、出力インターフェース、及び対象を示した図である。
【
図10】
図10は、ROS(Robot Operating System)のモジュールと入出力インターフェースを可視化した例(入出力があるモジュールの例)を示した図である。
【
図11】
図11は、ROSのモジュールと入出力インターフェースを可視化した例(出力のみ行うモジュールの例)を示した図である。
【
図12】
図12は、ROSのモジュールと入出力インターフェースを可視化した例(入力のみあるモジュールの例)を示した図である。
【
図13】
図13は、アプリケーション開発において、モジュールを検索する手順を説明するための図である。
【
図14】
図14は、モジュールを検索する手順を説明するための図である。
【
図15】
図15は、モジュールを検索する手順を説明するための図である。
【
図16】
図16は、モジュールを検索する手順を説明するための図である。
【
図17】
図17は、モジュールを検索する手順を説明するための図である。
【
図18】
図18は、モジュール検索を通じてモジュールを追加したモジュール検索画面を例示した図である。
【
図19】
図19は、モジュールを検索する手順を説明するための図である。
【
図20】
図20は、モジュールを検索する手順を説明するための図である。
【
図21】
図21は、モジュールを検索する手順を説明するための図である。
【
図22】
図22は、モジュールを検索する手順を説明するための図である。
【
図23】
図23は、モジュールを検索する手順を説明するための図である。
【
図24】
図24は、オンライン取引システム100においてモジュールのシミュレーションと動作テストを行う流れ(テストデータを使用する場合)を示した図である。
【
図25】
図25は、オンライン取引システム100においてモジュールのシミュレーションと動作テストを行う流れ(実機上でモジュールを試す場合)を示した図である。
【
図26】
図26は、オンライン取引システム100においてモジュールのシミュレーションと動作テストを行う流れ(シミュレーションで試す場合)を示した図である。
【
図27】
図27は、オンライン取引システム100の拡張例を示した図である。
【発明を実施するための形態】
【0018】
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
【0019】
一般に、アプリケーションは、1又は複数のモジュール(若しくは、アルゴリズム)で構成される。アプリケーションを構成する一部のモジュールについて機能変更が行われることがある。アプリケーションをダウンロード販売した後に、アプリケーション全体をアップデートして機能変更を実現することはできる。
【0020】
しかしながら、一部のモジュールのみを開発対象として機能を変更し、オンラインマーケットを通じて流通させる仕組みはまだない。また、アプリケーションは用途や販売元などに基づいて容易に検索できるのに対し、モジュールは開発者毎に異なる構成であったり、多様な用語が使用されたりするため、簡単にモジュール検索できないというのが現状である。
【0021】
例えば、近年では、AI(Artificial Intelligence)技術の急速な普及に伴ってディープラーニング技術が活用される機会が増大してきているが、ディープラーニングの学習済みモデルがモジュールという単位で開発される機会が増え、且つ高い頻度で更新されていく。したがって、このようなモジュールがオンラインマーケット上で取引の対象として扱うことができれば、メリットが大きい。
【0022】
例えば、プログラム中の特定のモジュールを変更する際、そのモジュールに使用されている変数が他のモジュールにおいても使用されているかを容易に確認できるようにする方法について提案されている(特許文献1を参照のこと)。しかしながら、製品IDを入力して現在搭載されるモジュールに代替するモジュールを検索する方法については開示されていない。
【0023】
また、プログラムの知識がなくともデータベースからのデータの取り出しが簡単にできるようにする方法について提案されている(特許文献2を参照のこと)。しかしながら、製品IDを入力して現在搭載されるモジュールに代替するモジュールを検索する方法については開示されていない。
【0024】
また、同様多種に発生する関数を管理し関数名を知らなくても関数を容易に再利用できるようにするプログラム開発支援システムについて提案されている(特許文献3を参照のこと)。しかしながら、製品IDを入力して現在搭載されるモジュールに代替するモジュールを検索する方法については開示されていない。
【0025】
そこで、本明細書では、アプリケーションの構成要素であるモジュールを、オンラインマーケットなどで取引の対象として好適に扱う技術について、以下で提案する。
【0026】
A.システム構成
図1には、アプリケーションの構成要素であるモジュール単位でソフトウェアをオンライン取引するオンライン取引システム100の構成例を模式的に示している。図示のオンライン取引システム100は、販売者端末101と、購入者端末102と、モジュール販売サイト103と、モジュール登録情報データベース104からなる。各装置101~104は、例えばインターネットのような広域ネットワーク越しに相互接続されるものとする。
【0027】
販売者端末101は、モジュールの販売者が操作する端末装置(PC、タブレット端末、スマートフォンなど)である。また、購入者端末102は、モジュールの購入者が操作する端末装置(PC、タブレット端末、スマートフォンなど)である。モジュール販売サイト103は、販売者端末101と購入者端末102の間に介在して、モジュールのオンライン取引を取り仕切る。また、モジュール登録情報データベース104は、販売サイト103上で取引される各モジュールの登録情報を蓄積する。
【0028】
ここで言う「モジュール」は、特定のアルゴリズムの入力と出力を規定してデータベースに登録することのできるデータ構造を有することを想定している。
【0029】
モジュールの販売者は、自分の販売者端末101を通じて、インターネット越しにモジュール販売サイト103に接続して、モジュールの販売登録を行う。具体的には、モジュールの販売者は、自分の販売者端末101を通じて、モジュール販売サイト103で販売するモジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報(但し、特定の製品に依存したモジュールの場合)といったモジュールの登録情報を入力する。そして、モジュール販売サイト103は、販売者端末101を通じて入力されたモジュールの登録情報を、モジュール登録情報データベース104に登録する。
【0030】
また、モジュールの販売者は、モジュール販売サイト103に登録したモジュールが、購入者によって購入されたとき(若しくは、購入したモジュールが購入者端末102にダウンロードされたとき)、その売り上げをモジュール販売サイト103から受け取ることができる。
【0031】
モジュールの購入者は、自分の購入者端末102を通じて、インターネット越しにモジュール販売サイト103に接続して、モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報(但し、特定の製品に依存したモジュールの場合)といったモジュールの登録情報に基づいて、モジュール登録情報データベース104に登録されているモジュールを検索することができる。そして、モジュールの購入者は、自分の購入者端末102を通じて、所望のモジュールの購入手続きを実施し、購入したモジュールを購入者端末102にダウンロードする。
【0032】
モジュールの購入や購入者端末102へモジュールをダウンロードする際に、モジュール販売サイト103は、購入者若しくはその購入者端末102に対して課金処理を実施する。但し、課金処理の詳細については説明を省略する。
【0033】
モジュールの購入者は、自分の購入者端末102にダウンロードした複数のモジュールを組み合わせて、特定用途のアプリケーションを開発することができる。購入者端末102のユーザは、モジュールの購入者であるとともに、アプリケーションの開発者でもある。
【0034】
なお、
図1では、図面の簡素化のため、販売者端末101及び購入者端末102をそれぞれ1台ずつしか描いていないが、1つのモジュール販売サイト103を介して複数のモジュール販売者がモジュールの販売登録並びに販売を行うとともに、複数の購入者がモジュールの購入及びダウンロードを行うことが想定される。
【0035】
ここで、
図2に示すような、デジタルカメラ201と、デジタルカメラ201を搭載してパン及びチルトするパンチルト雲台202と、カメラ映像の処理及びパンチルト雲台202の駆動制御が可能なシングルボードコンピュータ203とを組み合わせたハードウェア構成からなるカメラシステム200において、カメラ映像から人を検出して追従する、という特定用途のアプリケーションを、
図1に示したオンライン取引システム100を利用して開発する事例について、以下で説明する。
【0036】
なお、
図2に示したハードウェア構成からなるカメラシステム200において、シングルボードコンピュータ203は、例えばARMプロセッサを搭載した「Raspberry Pi(ラズパイ)」であってもよい。また、デジタルカメラ201とシングルボードコンピュータ203間は例えばUSB(Univeresal Serial Bus)で接続され、パンチルト雲台202とシングルボードコンピュータ203間はUART(Universal Asynchronous Receiver/Transmitter)で接続されるものとする。
【0037】
カメラシステム200において、カメラ映像から人を検出して追従するためには、例えば
図3にフローチャートを示すように、デジタルカメラ201の映像を取得し(ステップS301)、映像から人を検出し(ステップS302)、人を検出した位置に追従する軌道を計算し(ステップS303)、その軌道通りにパンチルト雲台202を駆動させる(ステップS304)、という処理を実行する必要がある。また、追従が終了するまでは(ステップS305のNo)、ステップS301~S304の処理が繰り返し実行される。
【0038】
したがって、カメラシステム200においてカメラ映像から人を検出して追従するためのアプリケーションを開発するには、以下に示す各モジュールが必要であることが分かる。すなわち、
【0039】
(a)デジタルカメラ201から映像を取得する処理を実施するモジュール。
(b)映像から人を検出する処理を実施するモジュール。
(c)映像内で人を検出した位置に追従する軌道を計算する処理を実施するモジュール。
(d)所定の軌道通りにパンチルト雲台202を駆動させる処理を実施するモジュール。
【0040】
アプリケーションの開発者は、自分の購入者端末102上で、モジュールの登録情報を使ってモジュール登録情報データベース104から上記の各モジュール(a)~(d)を検索して、モジュールを組み合わせ、さらに組み合わせたモジュールの動作テストを実施し、そのテスト結果に基づいて、モジュール(a)~(d)を購入して、それらをビルド及びダウンロードして、カメラシステム200の実機にインストールして、利用可能にする。上記のアプリケーションの開発手順を、
図4にまとめておく。
【0041】
図5には、カメラシステム200においてカメラ映像から人を検出して追従するためのアプリケーションを開発する際に、購入者端末102とモジュール販売サイト103間で実施される処理シーケンス例を示している。この処理シーケンスが開始する前に、販売の対象となるモジュールの情報は既にモジュール登録情報データベース104に登録済みであるものとする。また、この処理シーケンスでは、「モジュールの検索」、「モジュールのシミュレーションと動作テスト」、「モジュールの最適化とコンパイル」の各フェーズが順に実施される。
【0042】
アプリケーションの開発者は、自分の購入者端末102上で、デジタルカメラ201及びパンチルト雲台202のデバイスIDを入力する(SEQ501)。入力した各デバイスIDの情報は、購入者端末102からモジュール販売サイト103へ転送される(SEQ531)。ここで、デバイスIDは、ユーザがキーボードなどの入力装置を用いて購入者端末102に入力するようにしてもよい。あるいは、購入者端末102が、USBやBluetooth(登録商標)など有線又は無線通信回線を介して接続したデジタルカメラ201及びパンチルト雲台202から各デバイスIDの情報を自動的に読み出すようにしてもよい。購入者端末102と接続されるデバイスの双方が非接触型リーダ・ライタ機能を備える場合には、購入者端末102が、非接触型通信を用いてデバイスからIDを読み出すようにしてもよい。
【0043】
モジュール販売サイト103側では、購入者端末102から受信したデバイスIDに基づいて、モジュール登録情報データベース104から、デジタルカメラ201及びパンチルト雲台202を制御するためのモジュールを検索し(SEQ551)、そのモジュール検索結果を購入者端末102に返信して(SEQ532)、購入者端末102上でアプリケーションの開発者に提示する(例えば、「モジュール検索画面(後述)」に表示する)。
【0044】
アプリケーションの開発者は、購入者端末102上で、デジタルカメラ201及びパンチルト雲台202を制御するための各モジュールに対して、実現したい機能又はアルゴリズムに応じて必要なモジュールをさらに検索して、モジュールの接続を試みる(SEQ502)。
【0045】
このとき、購入者端末102からモジュール販売サイト103へ、モジュールの検索情報及び接続情報が転送される(SEQ533)。モジュール販売サイト103側では、購入者端末102から受信したモジュールの検索情報及び接続情報に基づいて、モジュール登録情報データベース104から、該当するモジュールを検索する(SEQ552)。そして、その結果を購入者端末102に返信して(SEQ534)、購入者端末102上でアプリケーションの開発者に提示する(例えば、モジュール検索画面に表示する)。ここまでが、モジュールの検索フェーズである。
【0046】
必要に応じて、モジュールの検索及びモジュール同士を接続する上記の処理シーケンスが複数回繰り返される。検索された複数のモジュールを接続していく結果として、システム100上でプログラム(カメラ映像から人を検出して追従するためのアプリケーション)が組み上げられる(以下では、「ビルドされる」という)。そして、アプリケーションの開発者は、ビルドされたプログラムの動作テストを、シミュレーションを用いて行う(SEQ503)。
【0047】
このとき、購入者端末102上では、アプリケーションの開発者によりシミュレーション情報の入力並びに設定が行われ、購入者端末102からモジュール販売サイト103へ、入力・設定されたシミュレーション情報とともに、テストデータがアップロードされる(SEQ535)。
【0048】
モジュール販売サイト103側では、購入者端末102からアップロードされたテストデータに基づいて、ビルドされたプログラムのシミュレーションによる動作テストが実行され(SEQ553)、その動作テストの結果を購入者端末102に返信して(SEQ536)、購入者端末102上でアプリケーションの開発者に提示する(例えば、モジュール検索画面に表示する)。
【0049】
続いて、カメラシステム200の実機でも、ビルドされたプログラムの動作テストを実施する(SEQ504)。そして、購入者端末102からモジュール販売サイト103へ、実機上のテストデータをアップロードする(SEQ537)。
【0050】
モジュール販売サイト103側では、購入者端末102からアップロードされた実機のテストデータに基づいて、プログラムが実行され(SEQ554)、そのプログラム実行結果を購入者端末102に返信して(SEQ538)、購入者端末102上でアプリケーションの開発者に提示する(例えば、モジュール検索画面に表示する)。ここまでが、モジュールのシミュレーションと動作テストのフェーズである。
【0051】
その後、アプリケーションの開発者は、購入者端末102を使って、購入を決めたモジュール毎にモジュール販売サイト103に対して決済処理を行って、各モジュールを購入すると、モジュール毎にコンパイルし、アプリケーションとしてビルドしてダウンロードの手続きを行う(SEQ505)。
【0052】
このとき、購入者端末102からモジュール販売サイト103へ、決済の入力情報とともに、コンパイル情報(シングルボードコンピュータ203のデバイスIDなど)と、ダウンロードの指示が送信される(SEQ539)。
【0053】
モジュール販売サイト103側では、購入者端末102から受信した決済情報に基づいて決済処理を実行するとともに、コンパイル情報に基づいてモジュールを最適化して、コンパイルし、コンパイルされたモジュールの購入者端末102へのダウンロードを実行する(SEQ555)。そして、購入者端末102側では、インストーラがコンパイル結果をカメラシステム200の実機にインストールする(SEQ540)。ここまでが、モジュールのコンパイル及び最適化フェーズである。
【0054】
図6には、モジュール登録情報データベース104に格納されるモジュールの登録情報の一例を示している。同図では、カメラの映像から人を検出するモジュール「人検出algo-C」に関する登録情報を例示している。
【0055】
人検出algo-Cモジュールの入力はcamera/imageインターフェースで表現され、カメラからの画像を入力することを表す。例えば、RGBの各色信号が8ビットの階調で表される画像を入力する場合、camera/imageのROSインターフェース定義は以下の通りである。
【0056】
- camera/image
- int8 r
- int8 g
- int8 b
【0057】
また、人検出algo-Cモジュールの出力はtarget_positionインターフェースで表現され、カメラから入力される撮影画像から人を検出してその位置を出力することを表す。
図6は、かかるモジュールの登録情報を、ロボットアプリケーション作成を支援するライブラリとツールを提供するROSの記法に従って表現して可視化したものである。モジュール販売登録では、モジュールの販売者が、自分の販売者端末101から
図6に示されるモジュールの登録情報を入力して、モジュール登録情報データベース104に登録する。
【0058】
図示のモジュール登録情報のうち、Nameはモジュールの名前を示し、Descriptionはモジュールの概要を示し、Inはモジュールの入力変数名を示し、Outはモジュールの出力変数名を示し、Classはアルゴリズムの一般名を示し、Sub-classはアルゴリズムの目的・用途を示し(これが一般名として登録されることを許容してもよい)、Targetはアルゴリズムが何を対象とするのかを示し(アルゴリズムによってはTargetがない場合もある)、DeviceIDはアルゴリズムが特定のデバイス・製品に依存しているかどうか(若しくは、アルゴリズムに対応しているデバイス・製品の識別情報)を示し、Priceはアルゴリズムの販売価格を示す。なお、ClassとSub-class、さらにはTargetを併せて(若しくは、いずれか1つだけで)、アルゴリズムの機能を表現しているということもできる。
【0059】
Filesには、モジュールの実体が登録される。その形態はオブジェクトコード、ソースコード、ニューラルネットワークであれば、ネットワークの構成ファイル、学習済みの重みパラメータなどが登録される。なお、ディープラーニングの学習済みモデルが、モジュール単位で開発される機会が増え、且つ高い頻度で更新されていくことが想定される。
【0060】
続いて、Class、Sub-Class、及びTargetの各項目について、それぞれ例を挙げて説明する。
【0061】
ここで、アルゴリズムの一般名(Class)は、物体認識として登録する。物体認識のアルゴリズムは、"物体認識のsub-class候補"に示される通り、いくつか種類が存在し、それのうちどれかを示すのがSub-Classである。
図6に示す例では、Sub-classが1つであるが、複数のSub-classに該当するアルゴリズムや、さらにSub-classの階層が深いアルゴリズムがあることも想定される。前者の場合、例えばSub-classセル内に複数の要素を持つことがある。また、後者の場合には、Sub-class-1、Sub-class-2など、登録情報に新しいカラムを追加してもよい。物体認識のSub-class候補を
図7に例示しておく。
【0062】
物体検出をここで選択した場合、何を検出するのか定義する必要がある。その候補が、"物体検出のTarget候補"に示される。複数のTargetが示される場合もあり、その場合にはTargetセル内に複数の要素を含むこともある。物体検出のTarget候補を
図8に例示しておく。
【0063】
DeviceIDで示すデバイス・製品として、カメラ、モーター、センサーといった機器を想定している。
【0064】
なお、アルゴリズムの一般名であるClassとして「物体認識」を指定した場合、そのSub-class候補には、
図7にも示したように、アルゴリズムの目的・用途に応じて、「照合」、「画像分類」、「物体検出」、「シーンの理解」、「特定物体認識」、…などが挙げられる。Sub-class毎、すなわちアルゴリズムの目的・用途に応じて、入力変数、出力変数、及び対象(target)が異なる。
【0065】
図9には、Class名「物体認識」に含まれる各Sub-class「照合」、「画像分類」、「物体検出」、「シーンの理解」、「特定物体認識」に関する、入力変数、出力変数、及び対象をそれぞれ示している。
【0066】
Sub-class「照合」のモジュールは、画像を入力とし、入力画像中のROI(Region Of Interest)をtargetとして指定すると、入力画像中のROIの物体名を出力する。また、Sub-class「画像分類」のモジュールは、画像を入力とし、入力画像に含まれる物体の物体名を出力する。また、Sub-class「物体検出」のモジュールは、画像を入力とし、targetとして物体名を指定すると、入力画像中で指定した物体名の物体を検出して、その検出位置を出力する。モジュール「人検出algo-C」は、Sub-class「物体検出」のモジュールであるが、
図6に示した登録情報に記載されている通り、カメラ画像を入力とし、人をtargetに指定して、カメラ入力画像中から検出した人の位置を出力する。また、Sub-class「シーンの理解」のモジュールは、画像を入力とし、入力画像から理解したシーンを出力する。また、Sub-class「特定物体認識」のモジュールは、画像を入力とし、辞書を適宜参照して、入力画像に含まれる物体の物体名を出力する。
【0067】
B.モジュールの検索
続いて、アプリケーション開発のうち、モジュールの検索について説明する。但し、必要に応じて、適宜、ROSの記法を用いて説明することにする。
【0068】
図10~
図12には、ROSのモジュールと入出力インターフェースを可視化した例をそれぞれ示している。
【0069】
図10には、入出力があるROSモジュールの例として、人検出algo-Cモジュール及びその入出力インターフェースを示している。
【0070】
人検出algo-Cモジュールの入力は、camera/imageインターフェースで表現され、カメラからの画像を入力することを表す。また、人検出algo-Cモジュールの出力は、target_positionインターフェースで表現され、カメラの画像から人を検出してその位置を出力することを表す。なお、人検出algo-Cモジュールの登録情報は、
図6に示した通りであり、Classが「物体認識」、Sub-classが「物体検出」であり、且つ、入力がcamera/imageインターフェースで表現され、出力がtarget_positionインターフェースで表現されることが記載されている。入出力があるデバイス(データを入力して、その処理結果を出力するデバイス)を扱うモジュールは、このタイプに当たる。
【0071】
また、
図11には、出力のみを行うROSモジュールの例として、xxx_cameraモジュール及びその出力インターフェースを示している。図示のように、xxx_cameraモジュールは、カメラで撮像した情報をcamera/imageとして出力するモジュールである。センサーデバイスなどの出力のみを行う入力デバイスを扱うモジュールはこのタイプに当たる。
【0072】
また、
図12には、入力のみを行うROSモジュールの例として、xxx_motorモジュール(但し、pan方向のみ回転)及びその入力インターフェースを示している。図示のように、xxx_motorモジュールは、入力されたrotate_motor/cmd/radianの通り、モーターを制御してpan方向に駆動させるモジュールである。モーターやディスプレイなどの入力だけ受け付けるデバイスを扱うモジュールはこのタイプに当たる。
【0073】
ここで、カメラ画像から人を検出して追従するシステム(アプリケーション)を開発する場合を例にとって、モジュールを検索する具体的な手順について、
図13~
図22を参照しながら説明する。
【0074】
まず、アプリケーションの開発を行う購入者が、モジュール検索画面上で、対象デバイスとしてカメラ201とパンチルト雲台202を指定すると、製品を特定する情報(すなわち、製品の識別情報)がモジュール販売サイト103に入力され、対応するモジュールが選定される。モジュール販売サイト103は、選定されたモジュールの登録情報を、モジュール登録情報データベース104から適宜読み出すことができる。
【0075】
製品を特定する情報の入力、すなわちデバイスの指定には、製品を特定できる情報がなんらかの形で、購入者端末102に入力されればよい。例えば、対象とする製品を購入者端末102に接続したことによるID読み出し、購入者端末102のモジュール検索画面上でのID入力、NFC(Near Field Communication)などによる非接触のID入力でもよい。あるいは、デジタルカメラ201やパンチルト雲台202などデバイス一般名又はカテゴリなどの検索キーワードを購入者が自分の購入者端末102に入力して、デバイスを選定するようにしてもよい。
【0076】
図13に示す例では、デジタルカメラ201及びパンチルト雲台202をそれぞれ特定する識別情報が購入者すなわちアプリケーションの開発者によって入力されると、購入者端末102のモジュール検索画面には、識別情報に基づいて特定されるデジタルカメラ201及びパンチルト雲台202の各アイコンが表示される。さらに、モジュール販売サイト103では、モジュール登録情報データベース104を検索して、デジタルカメラ201及びパンチルト雲台202の各々に対応するモジュールxxx_cameraと、xxx_motor(pan)及びxxx_motor(tilt)が画面に出力される。さらに、モジュールxxx_cameraの出力インターフェース(camera/image<interface>)、及び、xxx_motor(pan)及びxxx_motor(tilt)それぞれの入力のインターフェース(rotate_motor/cmd/radian<interface>)が画面に出力される。
【0077】
このようにして、デバイスとデバイスの接点となるモジュールが決定された後、さらにモジュールを検索する手順について、
図14~
図17を参照しながら説明する。
【0078】
購入者は、購入者端末102のモジュール検索画面上で、
図14中の参照番号1401で示す、camera/imageインターフェースの出力端をクリックする。モジュール販売サイト103は、このクリック操作が購入者端末102から通知されると、camera/imageインターフェースに接続できるモジュール(若しくは、入力がcamera/imageインターフェースで表現されるモジュール)を、モジュール登録情報データベース104から検索する。既に検索されたxxx_cameraモジュールの出力変数と共通の入力変数を持つモジュールを、モジュール登録情報データベース104から検索するということもできる。そして、そのデータベース検索結果が、参照番号1402で示すように、購入者端末102のモジュール検索画面に表示される。
【0079】
その際、購入者は、参照番号1403で示すSearchBox内に、今回のアプリケーション開発の目的(若しくは、Class名)を「物体認識」と入力する。
【0080】
モジュール販売サイト103は、購入者によって入力された目的「物体認識」が購入者端末102から通知されると、camera/imageインターフェースに接続できるモジュール(若しくは、出力がcamera/imageインターフェースで表現されるモジュール)のうち、Class「物体認識」にヒットするSub-class(若しくは、用途)を、モジュール登録情報データベース104から検索する。その際、類似度判定も行い、近いものも検索する。
【0081】
なお、購入者が指定したClassにヒットする候補が多い場合には、モジュール販売サイト103は、購入者端末102を通じて、細分化するための購入者への問いかけを行う。
図15に示す例では、モジュール販売サイト103は、「物体認識の用途は何か?」という、テキスト又は音声のメッセージによる問いかけとともに、参照番号1404で示すように、用途リストとして物体認識のsub-class一覧を表示する。購入者は、物体認識のsub-class一覧1404から、1つあるいは複数のsub-classを選択することができる。
図15に示す例では、購入者は、sub-class一覧1404から、「物体検出」を選択する。
【0082】
モジュール販売サイト103は、購入者がsub-class「物体検出」を選択したことが購入者端末102から通知されると、camera/imageインターフェースに接続できるモジュール(若しくは、入力がcamera/imageインターフェースで表現されるモジュール)のうち、「物体認識」がClassにあり、且つ、「物体検出」がsub-classにあるものをモジュール登録情報データベース104から検索する。そして、そのデータベース検索結果が、購入者端末102のモジュール検索画面に表示される。
【0083】
購入者が指定したClass及びsub-classにヒットする候補が依然として多い場合には、
図16に示すように、モジュール販売サイト103は、「物体検出」の対象となるものを絞り込むために、「何を検出したいか?」というテキスト又は音声メッセージによる問いかけとともに、参照番号1405で示すように、検出対象(Target)一覧を表示する。購入者は、検出対象(Target)一覧1405から、1つあるいは複数の検出対象を選択することができる。
図16に示す例では、購入者は、検出対象(Target)一覧1405から、「人」を選択する。
【0084】
モジュール販売サイト103は、camera/imageインターフェースに接続できるモジュール(若しくは、入力がcamera/imageインターフェースで表現されるモジュール)のうち、「物体認識」がClassにあり、且つ、「物体検出」がsub-classにあり、且つ、Targetに「人」があるものをモジュール登録情報データベース104から検索する。そして、
図17中の参照番号1406で示すように、モジュール登録情報データベース104を検索してヒットしたモジュールの一覧が、購入者端末102のモジュール検索画面に表示される。購入者は、モジュール一覧1406から、1つあるいは複数のモジュールを選択することができる。
図17に示す例では、購入者は、モジュール一覧1406から、「(人検出)algo-C」モジュールを選択する。
【0085】
購入者が指定したClass及びsub-class及びTargerにヒットする依然として候補が多い場合には、ユーザレビュー評価や、認識の精度、性能などの評価結果、システム要求仕様といった情報がモジュール登録情報データベース104にある場合には、モジュール販売サイト103においてそういった情報に基づいて多数の候補モジュールをフィルタリングして選択するようにしてもよい。
【0086】
なお、モジュール登録情報データベース104の検索によりヒットしたモジュールの候補数が多いかどうかを判断するために、システム100で一律の閾値を設定してもよいし、購入者(若しくは、アプリケーションの開発者)毎に個別の閾値を設定してもよい。あるいは、モジュール候補一覧を購入者端末102のモジュール検索画面に表示した上で、購入者自身で候補数が多いかどうかを毎回判断して、絞込みのトリガーをかけるようにしてもよい。
【0087】
また、
図14~
図17で示した各検索は、類似度検索を含む。そして、検索結果の一覧では、類似度が高いものが上に表示され、類似度が低いものが下に表示される。また、類似度の検索範囲はスライド式のパラメータ調整インターフェースなどで行う。
【0088】
図14~
図17で示したモジュール検索画面を介したモジュール登録情報データベース104の検索を通じて、購入者は、「(人検出)algo-C」モジュールを選択することができる。そして、
図18において参照番号1801で示すように、購入者端末102のモジュール検索画面上には、選択された「(人検出)algo-C」モジュールが追加され、camera/imageインターフェースを介して「xxx_camera」モジュールと接続される。さらに、
図6に示した「人検出algo-C」モジュールの登録情報に基づいて、
図18中の参照番号1802で示すように、「人検出algo-C」モジュールの出力側にはtarget_positionインターフェースが表示される。
【0089】
なお、人検出algo-Cモジュールの実体がニューラルネットワークであれば、そのネットワークの構成ファイルや学習済みの重みパラメータといったモジュールの実体を構成する1又は複数のファイルの情報が、モジュールの登録情報のFiles(
図6を参照のこと)に登録される。ディープラーニングの学習済みモデルが、「人検出algo-C」のようなモジュール単位で開発される機会が増え、且つ高い頻度で更新されていくことが想定される。
【0090】
図13~
図18から分かるように、アプリケーションの開発者が、モジュール検索画面上のGUI操作によって、所望のモジュールを検索し、選択することができ、且つ、モジュール検索画面上では、モジュールの接続と、接続されたモジュール間でのデータフローが可視化される、という点を十分理解されたい。
【0091】
続いて、購入者は、購入者端末102のモジュール検索画面上で、
図19中の参照番号1901で示す、target_positionインターフェースの出力端をクリックする。モジュール販売サイト103は、このクリック操作が購入者端末102から通知されると、target_positionインターフェースに接続できるモジュール(若しくは、入力がtarget_positionインターフェースで表現されるモジュール)を、モジュール登録情報データベース104から検索する。その際、購入者は、参照番号1903で示すSearchBox内に、検索対象となるモジュールのClass名を「2次元 追従」と入力する。すると、モジュール販売サイト103では、target_positionインターフェースに接続可能で、且つ、Class「2次元 追従」のモジュールを、モジュール登録情報データベース104から検索する。そして、
図19中の参照番号1902で示すように、モジュール登録情報データベース104を検索してヒットしたモジュールの一覧が、購入者端末102のモジュール検索画面に表示される。購入者は、モジュール一覧1902から、1つあるいは複数のモジュールを選択することができる。
図19に示す例では、購入者は、モジュール一覧1902から、「追従モジュールB」を選択する。
【0092】
なお、購入者が指定したClass及びsub-class及びTargerにヒットする依然として候補が多い場合には、ユーザレビュー評価や、認識の精度、性能などの評価結果、システム要求仕様といった情報がモジュール登録情報データベース104にある場合には、モジュール販売サイト103においてそういった情報に基づいて多数の候補モジュールをフィルタリングして選択するようにしてもよい(同上)。
【0093】
図18及び
図19で示したモジュール検索画面を介したモジュール登録情報データベース104の検索を通じて、購入者は、「追従モジュールB」を選択することができる。そして、
図20において参照番号2001で示すように、購入者端末102のモジュール検索画面上には、選択された「追従モジュールB」が追加され、target_positionインターフェースを介して「人検出algo-C」モジュールと接続される。さらに、
図20中の参照番号2002及び2003で示すように、「追従モジュールB」の出力側には、rotate_motor/cmd/radianインターフェースが表示される。
【0094】
その後、
図21に示すように、rotate_motor/cmd/radian「追従モジュールB」の一方の出力側のrotate_motor/cmd/radianインターフェース2002は、xxx_motorモジュール(但し、pan方向のみ回転)の入力側のrotate_motor/cmd/radianインターフェース2101との間で、前後の入出力の状態が確認される。同様に、rotate_motor/cmd/radian「追従モジュールB」の他方の出力側のrotate_motor/cmd/radianインターフェース2003は、xxx_motorモジュール(但し、tilt方向のみ回転)の入力側のrotate_motor/cmd/radianインターフェース2102との間で、前後の入出力の状態が確認される。そして、同じrotate_motor/cmd/radianインターフェースを、前後の入出力状態が矛盾し内容に接続すると、
図22に示すように統合される。
【0095】
図22は、モジュール検索画面上で、開発したアプリケーションを可視化したものということもできる。図示のアプリケーションは、カメラシステム200においてカメラ映像から人を検出して追従するという用途を持つ。ここで、xxx_cameraはデジタルカメラ201から映像を取得する処理を実施するモジュールであり、人検出algo-Cは映像から人を検出する処理を実施するモジュールであり、追従モジュールBは映像内で人を検出した位置に追従する軌道を計算する処理を実施するモジュールであり、xxx_motor(pan)及びxxx_motor(tilt)は所定の軌道通りにパンチルト雲台202を駆動させる処理を実施するモジュールである。したがって、
図3に示したフローチャートから必要であると導き出された複数のモジュールがモジュール検索画面を通じて検索され、これらを組み合わせてアプリケーションを開発することができたことが分かる。
【0096】
なお、
図20並びに
図21に示したように、モジュール同士を接続する際に、一方のモジュールの出力インターフェースと、他方のモジュールの入力インターフェースの統合時に、同じ名前のインターフェース「rotate_motor/cmd/radian」があると、どちらがpan又はtiltのいずれのデータか分からなくなるという問題がある。このような問題に備えて、モジュール登録情報データベース104には、インターフェースのalias(別名)情報を追加して登録できるようにしてもよい。
【0097】
図23に示す例では、追従モジュールBの一方の出力側のrotate_motor/cmd/radianインターフェース2002に、参照番号2301で示すように、alias情報「pan」を追加登録している。同様に、他方の出力側のrotate_motor/cmd/radianインターフェース2003に、参照番号2302で示すように、alias情報「tilt」を追加登録している。このような場合、一方のrotate_motor/cmd/radianインターフェース2002のデータがpanであり、xxx_motor(pan)側のrotate_motor/cmd/radianインターフェース2101と統合すべきこと、及び、他方のrotate_motor/cmd/radianインターフェース2003のデータがtiltであり、xxx_motor(tilt)側のrotate_motor/cmd/radianインターフェース2102と統合すべきことが明確となる。
【0098】
C.モジュールのシミュレーションと動作テスト
本実施形態に係るオンライン取引システム100では、購入者は、自分の購入者端末102から、モジュール販売サイト103を通じてモジュール検索して、複数のモジュールを組み合わせていくことで、アプリケーションの開発を実現することができる。
【0099】
ここで、モジュールのオンライン取引の処理シーケンスにおいて、モジュールのシミュレーションと動作テストを行う目的は、モジュールの検索により任意に組んだモジュールの集合(プログラムに相当)が、ユーザ(若しくは、モジュールの購入者、アプリケーションの開発者)の期待する通りに動作するかを、モジュールの購入前に確認することにある。
【0100】
モジュールのシミュレーションと動作テストには、テストデータを使用するパターンと、テストデータを使用しないパターンの2パターンに大別される。
【0101】
C-1.テストデータを使用するパターン
テストデータを使用するパターンでは、購入者端末102からモジュール販売サイト103へ、モジュールのシミュレーションと動作テストに使用するテストデータをアップロードする。
【0102】
モジュール販売サイト103では、アップロードされたテストパターンを実行して、その結果を購入者端末102に返送する。購入者端末102では、受信した実行結果を可視化する。
【0103】
図24には、カメラ映像から人を検出して追従するアプリケーションを試す場合のデータの流れを示している。購入者端末102からモジュール販売サイト103へ、camera/imageインターフェースを介して人検出algo-Cモジュールに入力されるテストデータがアップロードされる。モジュール販売サイト103側では、アップロードされたテストデータを人検出algo-Cモジュールと追従モジュールBを組み合わせたアプリケーションを実行するシミュレータに投入する。そして、モジュール販売サイト103は、シミュレーション結果を購入者端末102に返送する。購入者端末102では、受信した実行結果を可視化する。
【0104】
モジュールの購入者、又はアプリケーションの開発者は、可視化されたシミュレーションと動作テストの実行結果に基づいて、モジュール検索画面上で組んだモジュールの集合、すなわち開発したプログラムが正常に動作するかどうかを確認することができる。
【0105】
購入者は、プログラムが正常に動作することを確認できれば、自分の購入者端末102上で、モジュールの集合の購入手続きに進めばよい。また、購入者は、プログラムの動作が異常であったこと、又は、正常に動作するがさらに改良したい場合には、改めてモジュール検索画面上でモジュールの検索作業を繰り返し実施するようにしてもよい。
【0106】
C-2.テストデータを使用しないパターン
一方、テストデータを使用しないパターンとして、実機上でモジュールを試す方法と、シミュレーションでモジュールを試す方法を挙げることができる。
【0107】
C-2-1.実機上でモジュールを試す方法
上述した、カメラ映像から人を検出して追従するアプリケーションを試す場合を例にとって、この方法について
図25を参照しながら説明する。
【0108】
購入者端末102に、デジタルカメラ201及びパンチルト雲台202を接続する。また、デジタルカメラ201をパンチルト雲台202に取り付けておく。そして、デジタルカメラ201で撮影される映像を、購入者端末102からモジュール販売サイト103へ、リアルタイムに転送する。
【0109】
モジュール販売サイト103側では、テストの対象となるアプリケーションを動作させている。そして、人検出algo-Cモジュールは、受信したリアルタイム映像をcamera/imageインターフェースを介して入力して、その映像から人を検出して、その検出位置をtarget_positionインターフェースから出力する。続いて、追跡モジュールBは、target_positionインターフェースから人の検出位置のデータを入力すると、人の動きに追従するようにパンチルト雲台202をpan方向並びにtilt方向にそれぞれ駆動させる各制御データを算出して、rotate_motor/cmd/radianインターフェースから出力する、そして、パンチルト雲台202をpan方向並びにtilt方向に駆動させるための制御データを購入者端末102に時々刻々と送信する。
【0110】
購入者端末102は、モジュール販売サイト103から受信した制御データに基づいて、パンチルト雲台202をpan方向並びにtilt方向にそれぞれ駆動する。購入者は、デジタルカメラ201の映像が人を追従するように、パンチルト雲台202が駆動してデジタルカメラ201の向きを変えているかどうか、すなわち自ら開発したアプリケーションが正常に動作しているかどうかを、目視などにより確認することができる。
【0111】
購入者は、アプリケーションが正常に動作することを確認できれば、自分の購入者端末102上で、モジュールの集合の購入手続きに進めばよい。また、購入者は、プログラムの動作が異常であったこと、又は、正常に動作するがさらに改良したい場合には、改めてモジュール検索画面上でモジュールの検索作業を繰り返し実施するようにしてもよい。
【0112】
C-2-2.シミュレーションでモジュールを試す方法
仮想雲台に取り付けられたか仮想カメラの映像から赤いキューブを追跡するシミュレータ(仮想機械)を用いて、アプリケーションを試す場合を例にとって、この方法について
図26を参照しながら説明する。
【0113】
購入者端末102上で、仮想カメラ2601及び仮想雲台2602を動作させるシミュレータを実行させる。そして、購入者は、シミュレータ画面上で、例えばマウスの操作により、(仮想的な人として)画面内の赤いキューブ2603を動かす。購入者端末102は、仮想カメラ2601で撮影した仮想映像を、モジュール販売サイト103へ、リアルタイムに転送する。
【0114】
モジュール販売サイト103側では、テストの対象となるアプリケーションを動作させており、受信した仮想映像から赤いキューブを検出し、その赤いキューブの動きに追従するように仮想雲台を駆動させる制御データを算出して、このデータを購入者端末102に時々刻々と送信する。
【0115】
購入者端末102で実行するシミュレータは、モジュール販売サイト103から受信した制御データに基づいて、仮想雲台2602を駆動する。購入者は、仮想カメラ2601の映像が赤いキューブ2603を追従するように、仮想雲台2602が駆動して仮想カメラ2601の向きを変えているかどうか、すなわち自ら開発したアプリケーションが正常に動作しているかどうかを、シミュレーション画面により確認することができる。
【0116】
購入者は、アプリケーションが正常に動作することを確認できれば、自分の購入者端末102上で、モジュールの集合の購入手続きに進めばよい。また、購入者は、プログラムの動作が異常であったこと、又は、正常に動作するがさらに改良したい場合には、改めてモジュール検索画面上でモジュールの検索作業を繰り返し実施するようにしてもよい。
【0117】
D.モジュールの最適化とコンパイル
通常、モジュール販売サイト103は、複数のモジュールを組み合わせたプログラムをビルドして、購入者端末102に配布する。
【0118】
一方、ニューラルネットワークをモジュール単位で配布する場合には、最適化とコンパイルが必要になる。例えば、人検出アルゴリズムからなる人検出algo-Cモジュールの実体がニューラルネットワークであることが想定される(前述)。モジュールの最適化とコンパイルを行うアルゴリズムとして、例えば以下の2つを挙げることができる。
【0119】
(a)ユースケースに応じて処理で使用されるパラメータをモデル圧縮することで、モジュールを高速且つ省電力で動作できるように最適化する。
【0120】
(b)配布先のプロセッサ(例えば、シングルボードコンピュータ203に搭載されたプロセッサ)に適合したプログラム構成に最適化する。ニューラルネットワークを実行するためのハードウェアエンジンを搭載したプロセッサが多種多様に登場しているという状況があるためである。
【0121】
モジュール販売サイト103は、上記の(a)及び(b)を設定又は調整するためのインターフェースを、購入者端末102に提供するようにしてもよい。購入者は、モジュールの購入手続きを行う際に、モジュール販売サイト103から提供されるインターフェースを通じて、そのモジュールの最適化とコンパイルを設定又は調整することができる。
【0122】
具体的には、購入者は、開発したアプリケーションを実行するプロセッサを搭載したボード(例えば、シングルボードコンピュータ203)を、USBなどの接続用インターフェースを介して購入者端末102に接続することを通じて、モジュール販売サイト103に対してプロセッサを設定することができる。あるいは、購入者端末102の画面に表示されたプルダウン方式のメニューを通じて、プロセッサを指定するようにしてもよい。
【0123】
また、購入者は、購入者が指定したプロセッサの構成と、パラメータのモデル圧縮のデータタイプの設定(例えば、スライド式で、32ビット、16ビット、8ビット、4ビット、2ビット、1ビットを調整する。但し、調整する対象は単純にビット数には限定されない)の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも1つとのトレードオフを購入者に提示する。そして、購入者の指定又は自動的に選択された、購入者自身のユースケースにおいて最適なプロセッサの構成情報とモデル圧縮のデータタイプの設定値を用いてモジュールを最適化するようにコンパイル情報を決定することができる。なお、モデル圧縮は、ニューラルネットワークにおいては、SVD(Singular Value Decomposition)、ネットワークワーク枝刈り(Pruning)、量子化(Quantization)、ハフマンエンコーディング(Huffman Encoding)、ディープ圧縮(Deep Compression)などの手法が使われる。
【0124】
E.システムの拡張
図1にはオンライン取引システム100の構成例を模式的に示したが、
図27には、上記のB~D項で説明した機能を実現するための、システムの拡張構成を示している。
【0125】
図27では、モジュール販売サイト103は、基本機能部2701と、モジュール試験装置2702と、モジュール最適化装置2703を備えている。基本機能部2701と、モジュール試験装置2702と、モジュール最適化装置2703は、それぞれ物理的に独立した複数の装置であってもよいし、いずれか少なくとも2つを組み合わせて1つの装置として構成することもできる。
【0126】
基本機能部2701は、モジュールの販売登録、モジュールの検索、及びモジュールの購入に関する処理を実行する機能を有する。
【0127】
モジュールの販売者は、自分の販売者端末101を通じて、モジュール販売サイト103で販売するモジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報(但し、特定の製品に依存したモジュールの場合)といったモジュールの登録情報を入力する。そして、モジュール販売サイト103内では、基本機能部2701は、販売者端末101を通じて入力されたモジュールの登録情報を、モジュール登録情報データベース104に登録する。また、モジュール販売サイト103に登録したモジュールが、購入者によって購入されたとき(若しくは、購入したモジュールが購入者端末102にダウンロードされたとき)、基本機能部2701は、その売り上げを販売者端末101に送金する。
【0128】
モジュールの購入者は、アプリケーションの開発過程において、必要とするモジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報(但し、特定の製品に依存したモジュールの場合)などのモジュール検索のための情報を自分の購入者端末102に入力する。基本機能部2701は、購入者端末102に入力された情報を元に、モジュール登録情報データベース104に登録されているモジュールを検索し、その検索結果は購入者端末102に画面に提示される。なお、モジュールの購入者は、
図14~
図22に示したようなモジュール検索画面上で、アプリケーションの開発に必要なモジュールを逐次選択していくことで、複数のモジュールを組み合わせてアプリケーションを開発することができるが、その処理手順の詳細は既に説明した通りである。また、基本機能部2701は、モジュールの購入手続きも実施し、購入者が購入したモジュールをその購入者の購入者端末102にダウンロードする。
【0129】
また、モジュール試験装置2702は、テストデータを使用してモジュールの動作をシミュレーションする機能を有する。
【0130】
購入者がモジュールの検索により任意に組んだモジュールの集合(プログラムに相当)が、ユーザ(若しくは、モジュールの購入者、アプリケーションの開発者)の期待する通りに動作するかを、モジュールの購入前に確認することにある。このような場合、購入者端末102からモジュール販売サイト103へ、モジュールのシミュレーションと動作テストに使用するテストデータをアップロードする。モジュール試験装置2702は、アップロードされたテストデータを、購入者が開発したアプリケーションを実行するシミュレータに投入する。そして、モジュール試験装置2702は、シミュレーション結果を購入者端末102に返送する。購入者端末102では、受信した実行結果を可視化する。
【0131】
モジュール最適化装置2703は、購入者が選択した複数のモジュールを組み合わせたプログラムを、配布先のプロセッサ(例えば、シングルボードコンピュータ203に搭載されたプロセッサ)に適合したプログラム構成に最適化する機能を有する。
【0132】
購入者は、開発したアプリケーションを実行するプロセッサを搭載したボード(例えば、シングルボードコンピュータ203)を、USBなどの接続用インターフェースを介して購入者端末102に接続することを通じて、プロセッサを指定する。あるいは、購入者は、購入者端末102の画面に表示されたプルダウン方式のメニューを通じて、プロセッサを指定する。そして、モジュール最適化装置2703は、基本機能部2701により検索した複数のモジュールを組み合わせたプログラムを、指定されたプロセッサに適合したプログラム構成となるように最適化する。また、基本機能部2701によって購入者端末102にダウンロードされるプログラムは、モジュール最適化装置2703によって最適化されたバイナリ形式のプログラムである。
【0133】
ニューラルネットワークを実行するためのハードウェアエンジンを搭載したプロセッサが多種多様に登場しているという状況があるため、モジュール最適化装置2703によるプログラムの最適化は重要である。
【産業上の利用可能性】
【0134】
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
【0135】
本明細書で開示する技術を適用したオンライン取引システムは、モジュール検索が容易であり、モジュール単位でソフトウェアを取引することが可能になる。したがって、アプリケーションの開発者は、本明細書で開示する技術を適用したオンライン取引システムを利用して、モジュールを検索し、複数のモジュールを組み合わせて、アプリケーションを開発することができる。ディープラーニング技術が活用される機会が増大してきている近年においては、ディープラーニングの学習済みモデルがモジュールという単位で開発される機会が増え、且つ高い頻度で更新されていく。したがって、モジュールがオンラインマーケット上で取引の対象として扱うことを可能にする、本明細書で開示する技術のメリットは大きい。
【0136】
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。
【0137】
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
(1)モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置。
(2)前記登録部は、モジュールの販売者の第1の端末から受信した前記登録情報を前記データベースに登録する、
上記(1)に記載の情報処理装置。
(3)前記検索部は、モジュールの購入者の第2の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第2の端末に返送する、
上記(1)又は(2)のいずれかに記載の情報処理装置。
(4)前記検索部は、既に検索したモジュールの出力変数と共通する入力変数を持ち、又は、既に検索したモジュールの入力変数と共通する出力変数を持つモジュール候補を検索して、前記第2の端末に提示する、
上記(3)に記載の情報処理装置。
(5)前記検索部は、前記第2の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第2の端末に提示する、
上記(4)に記載の情報処理装置。
(6)前記検索部は、前記第2の端末上で、スライド式にパラメータ調整された類似度の検索範囲に従って、モジュールを検索する、
上記(5)に記載の情報処理装置。
(7)前記検索部の検索結果に基づいて前記第2の端末で選択された複数のモジュールからアプリケーションをビルドして前記第2の端末に提供する提供部をさらに備える、
上記(3)乃至(6)のいずれかに記載の情報処理装置。
(8)第1のモジュールの出力変数と共通する入力変数を持つ第2のモジュールとを、前後の入出力の状態を確認して接続する、
上記(7)に記載の情報処理装置。
(9)前記登録部は、モジュールの入力変数又は出力変数のうち少なくとも一方のalias情報をさらに前記データベースに登録する、
上記(1)乃至(8)のいずれかに記載の情報処理装置。
(10)前記第2の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部をさらに備える、
上記(3)乃至(9)のいずれかに記載の情報処理装置。
(11)前記試験部は、前記第2の端末からアップロードされたテストデータを使用して前記アプリケーションの動作をテストし、前記テストの結果を前記第2の端末に返送する、
上記(10)に記載の情報処理装置。
(12)前記試験部は、前記アプリケーションに対する入力データを前記第2の端末から受信して、前記アプリケーションを動作させ、前記アプリケーションの出力データを前記第2の端末に返送する、
上記(10)に記載の情報処理装置。
(13)前記第2の端末で選択されたモジュールを最適化する最適化部をさらに備える、
上記(1)乃至(12)のいずれかに記載の情報処理装置。
(14)前記最適化部は、前記第2の端末から指定されたプロセッサの構成情報に基づいて、前記モジュールを最適化する、
上記(13)に記載の情報処理装置。
(15)前記モジュールはニューラルネットワークモジュールであり、
前記最適化部は、前記第2の端末において設定された前記ニューラルネットワークモジュールのパラメータのモデル圧縮のデータタイプの設定値の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも1つとのトレードオフを前記第2の端末に提示する、
上記(13)又は(14)のいずれかに記載の情報処理装置。
(16)モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法。
(17)ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置。
(17-1)前記入力部に入力された前記製品の識別情報を外部装置に送信し、
前記提示部は、前記外部装置が前記製品の識別情報に基づいて検索した、関連するモジュールの機能を有する前記モジュールを提示する、
上記(17)に記載の情報処理装置。
(18)前記入力部に、モジュールの機能さらに入力可能であり、
前記提示部は、前記入力部に入力されたモジュールの機能に類似する機能を有するモジュール候補をさらに提示する、
請求項17に記載の情報処理装置。
(18-1)前記提示部は、外部装置が検索した、既に検索したモジュールの出力変数と共通する入力変数を持ち、又は、既に検索したモジュールの入力変数と共通する出力変数を持つモジュール候補を提示する、
上記(18)に記載の情報処理装置。
(18-2)前記提示部は、外部装置が検索した、前記第2の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を提示する、
上記(18)に記載の情報処理装置。
(18-3)前記提示部が提示するモジュール候補の中からモジュールの選択を前記入力部に入力可能であり、選択したモジュールを外部装置に通知する、
上記(18)に記載の情報処理装置。
(19)ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法。
(20)モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システム。
【符号の説明】
【0138】
100…オンライン取引システム、101…販売者端末
102…購入者端末、103…モジュール販売サイト
104…モジュール登録情報データベース
200…カメラシステム、201…デジタルカメラ
202…パンチルト雲台、203…シングルボードコンピュータ
2701…基本機能部、2702…モジュール試験装置
2703…モジュール最適化装置
【手続補正書】
【提出日】2023-10-18
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置。
【請求項2】
前記登録部は、モジュールの販売者の第1の端末から受信した前記登録情報を前記データベースに登録する、
請求項1に記載の情報処理装置。
【請求項3】
前記検索部は、モジュールの購入者の第2の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第2の端末に返送する、
請求項1に記載の情報処理装置。
【請求項4】
前記検索部は、既に検索したモジュールの出力変数と共通する入力変数を持ち、又は、既に検索したモジュールの入力変数と共通する出力変数を持つモジュール候補を検索して、前記第2の端末に提示する、
請求項3に記載の情報処理装置。
【請求項5】
前記検索部は、前記第2の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第2の端末に提示する、
請求項4に記載の情報処理装置。
【請求項6】
前記検索部は、前記第2の端末上で、スライド式にパラメータ調整された類似度の検索範囲に従って、モジュールを検索する、
請求項5に記載の情報処理装置。
【請求項7】
前記検索部の検索結果に基づいて前記第2の端末で選択された複数のモジュールからアプリケーションをビルドして前記第2の端末に提供する提供部をさらに備える、
請求項3に記載の情報処理装置。
【請求項8】
第1のモジュールの出力変数と共通する入力変数を持つ第2のモジュールとを、前後の入出力の状態を確認して接続する、
請求項7に記載の情報処理装置。
【請求項9】
前記登録部は、モジュールの入力変数又は出力変数のうち少なくとも一方のalias情報をさらに前記データベースに登録する、
請求項1に記載の情報処理装置。
【請求項10】
前記第2の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部をさらに備える、
請求項3に記載の情報処理装置。
【請求項11】
前記試験部は、前記第2の端末からアップロードされたテストデータを使用して前記アプリケーションの動作をテストし、前記テストの結果を前記第2の端末に返送する、
請求項10に記載の情報処理装置。
【請求項12】
前記試験部は、前記アプリケーションに対する入力データを前記第2の端末から受信して、前記アプリケーションを動作させ、前記アプリケーションの出力データを前記第2の端末に返送する、
請求項10に記載の情報処理装置。
【請求項13】
前記第2の端末で選択されたモジュールを最適化する最適化部をさらに備える、
請求項1に記載の情報処理装置。
【請求項14】
前記最適化部は、前記第2の端末から指定されたプロセッサの構成情報に基づいて、前記モジュールを最適化する、
請求項13に記載の情報処理装置。
【請求項15】
前記モジュールはニューラルネットワークモジュールであり、
前記最適化部は、前記第2の端末において設定された前記ニューラルネットワークモジュールのパラメータのモデル圧縮のデータタイプの設定値の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも1つとのトレードオフを前記第2の端末に提示する、
請求項13に記載の情報処理装置。
【請求項16】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法。
【請求項17】
ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置。
【請求項18】
前記入力部に、モジュールの機能さらに入力可能であり、
前記提示部は、前記入力部に入力されたモジュールの機能に類似する機能を有するモジュール候補をさらに提示する、
請求項17に記載の情報処理装置。
【請求項19】
ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法。
【請求項20】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも1つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システム。