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

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

▶ キヤノン株式会社の特許一覧

<>
  • 特許-推論装置、推論方法、及びプログラム 図1
  • 特許-推論装置、推論方法、及びプログラム 図2
  • 特許-推論装置、推論方法、及びプログラム 図3
  • 特許-推論装置、推論方法、及びプログラム 図4
  • 特許-推論装置、推論方法、及びプログラム 図5
  • 特許-推論装置、推論方法、及びプログラム 図6
  • 特許-推論装置、推論方法、及びプログラム 図7A
  • 特許-推論装置、推論方法、及びプログラム 図7B
  • 特許-推論装置、推論方法、及びプログラム 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-18
(45)【発行日】2024-04-26
(54)【発明の名称】推論装置、推論方法、及びプログラム
(51)【国際特許分類】
   G06N 3/045 20230101AFI20240419BHJP
【FI】
G06N3/045
【請求項の数】 10
(21)【出願番号】P 2020016491
(22)【出願日】2020-02-03
(65)【公開番号】P2021124832
(43)【公開日】2021-08-30
【審査請求日】2023-01-27
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】堀江 信行
【審査官】武田 広太郎
(56)【参考文献】
【文献】特表2019-510287(JP,A)
【文献】国際公開第2017/187516(WO,A1)
【文献】国際公開第2019/203232(WO,A1)
【文献】米国特許出願公開第2019/0228294(US,A1)
【文献】特開2010-287062(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/045
(57)【特許請求の範囲】
【請求項1】
入力層と、複数の中間層と、出力層とを有する第1のニューラルネットワークを用いる推論処理を外部の推論装置と分担して行う推論装置であって、
前記入力層に入力された入力データについて、前記第1のニューラルネットワークの第1の部分の演算処理を行うように制御する制御手段であって、前記第1のニューラルネットワークの前記第1の部分は、前記入力層から前記複数の中間層のうちの前記入力層よりもノード数が少ない特定の中間層までの部分である、制御手段と、
前記特定の中間層の出力データを前記外部の推論装置へ送信する送信手段であって、前記外部の推論装置は、前記特定の中間層の前記出力データについて前記第1のニューラルネットワークの第2の部分の演算処理を行うことにより第1の推論結果を取得するように構成され、前記第1のニューラルネットワークの前記第2の部分は、前記第1のニューラルネットワークから前記第1の部分を除いた残りの部分である、送信手段と、
前記外部の推論装置から前記第1の推論結果を受信する受信手段と、
を備え
前記制御手段は、前記第1のニューラルネットワークの前記第1の部分の前記演算処理を実行する前に、前記外部の推論装置に通信要求を送信し、該通信要求に対する前記外部の推論装置からの応答を待つことなく前記第1のニューラルネットワークの前記第1の部分の前記演算処理を開始し、
前記送信手段は、前記通信要求に対する前記応答を前記外部の推論装置から受信した後に、前記出力データを前記外部の推論装置に送信することを特徴とする推論装置。
【請求項2】
前記特定の中間層は、前記複数の中間層のうちの最もノード数の少ない中間層である
ことを特徴とする請求項1に記載の推論装置。
【請求項3】
前記複数の中間層は、前記入力層よりもノード数が少ない第1の中間層と、前記第1の中間層よりも後に配置され前記第1の中間層よりもノード数が少ない第2の中間層とを含み、
前記制御手段は、前記第1の中間層又は前記第2の中間層を前記特定の中間層として用いるように制御する
ことを特徴とする請求項1に記載の推論装置。
【請求項4】
前記第2の中間層は、前記複数の中間層のうちの最もノード数の少ない中間層であり、
前記第1の中間層は、前記複数の中間層のうちの、前記第2の中間層を除いて最もノード数の少ない中間層である
ことを特徴とする請求項3に記載の推論装置。
【請求項5】
前記制御手段は、前記外部の推論装置との通信速度が第1の閾値以上の場合、前記第1の中間層を前記特定の中間層として用い、前記通信速度が前記第1の閾値未満の場合、前記第2の中間層を前記特定の中間層として用いるように制御する
ことを特徴とする請求項3又は4に記載の推論装置。
【請求項6】
前記制御手段は、前記推論装置の電池残量が第2の閾値未満の場合、前記第1の中間層を前記特定の中間層として用い、前記電池残量が前記第2の閾値以上の場合、前記第2の中間層を前記特定の中間層として用いるように制御する
ことを特徴とする請求項3又は4に記載の推論装置。
【請求項7】
所定の条件が満たされる場合、前記制御手段は、前記特定の中間層の前記出力データについて、入力層を含む第1の部分と出力層を含む第2の部分とから構成される第2のニューラルネットワークの前記第2の部分の演算処理を行うことにより、第2の推論結果を取得するように制御し、
前記第2のニューラルネットワークの中間層の数は、前記第1のニューラルネットワークの中間層の数よりも少なく、
前記第2のニューラルネットワークの前記第1の部分は、前記第1のニューラルネットワークの前記第1の部分と共通であり、
前記第1のニューラルネットワークの前記第1の部分と前記第2のニューラルネットワークの前記第1の部分とは、共通の学習済みパラメータを有する
ことを特徴とする請求項1又は2に記載の推論装置。
【請求項8】
前記外部の推論装置との通信が不可能な場合に、前記所定の条件が満たされる
ことを特徴とする請求項7に記載の推論装置。
【請求項9】
入力層と、複数の中間層と、出力層とを有する第1のニューラルネットワークを用いる推論処理を外部の推論装置と分担して行うための、推論装置が実行する推論方法であって、
前記入力層に入力された入力データについて、前記第1のニューラルネットワークの第1の部分の演算処理を行うように制御する制御工程であって、前記第1のニューラルネットワークの前記第1の部分は、前記入力層から前記複数の中間層のうちの前記入力層よりもノード数が少ない特定の中間層までの部分である、制御工程と、
前記特定の中間層の出力データを前記外部の推論装置へ送信する送信工程であって、前記外部の推論装置は、前記特定の中間層の前記出力データについて前記第1のニューラルネットワークの第2の部分の演算処理を行うことにより第1の推論結果を取得するように構成され、前記第1のニューラルネットワークの前記第2の部分は、前記第1のニューラルネットワークから前記第1の部分を除いた残りの部分である、送信工程と、
前記外部の推論装置から前記第1の推論結果を受信する受信工程と、
を備え
前記制御工程は、前記第1のニューラルネットワークの前記第1の部分の前記演算処理を実行する前に、前記外部の推論装置に通信要求を送信し、該通信要求に対する前記外部の推論装置からの応答を待つことなく前記第1のニューラルネットワークの前記第1の部分の前記演算処理を開始し、
前記送信工程は、前記通信要求に対する前記応答を前記外部の推論装置から受信した後に、前記出力データを前記外部の推論装置に送信することを特徴とする推論方法。
【請求項10】
コンピュータを、請求項1乃至8のいずれか1項に記載の推論装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、推論装置、推論方法、及びプログラムに関する。
【背景技術】
【0002】
従来、ニューラルネットワークによる推論を行う推論処理装置が知られている。特に画像認識を行う推論処理装置については、いわゆる畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)がよく用いられている。
【0003】
畳み込みニューラルネットワークによれば、入力される画像データに対して中間層の処理及び全結合層の処理が順次施されることにより、画像に含まれる対象物が認識された最終的な推論結果が得られる。中間層では、複数の特徴量抽出処理層が階層的に接続されており、各処理層において、前階層から入力される入力データに対して畳み込み演算処理、活性化処理、プーリング処理を実行する。中間層は、このように各処理層における処理を繰り返すことで入力画像データに含まれる特徴量を高次元で抽出する。全結合層では、中間層の演算結果データを結合し、最終的な推論結果が得られる。特徴量を高次元で抽出するためには、中間層の層数が最終的な推論結果の精度に対しては重要となる。
【0004】
しかしながら、中間層の層数を増やしていくと、例えば撮像装置のような比較的低い演算処理能力ではニューラルネットワークによる推論処理に多大な演算負荷がかかり、処理時間が長くなってしまう。そこで、この問題の解決方法の1つとして、比較的高い演算処理能力を有するサーバに入力画像を送信し、サーバにおいてニューラルネットワークの推論を行うということが考えられる。
【0005】
例えば、特許文献1では、ニューラルネットワークにおける学習をサーバにて行う際に、プライバシーに関する情報の秘匿性のため、撮像装置側で一部の中間層の処理を行ってからサーバに送信する、という技術が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】国際公開第2018/011842号
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、特許文献1に開示された技術を利用して推論処理を行う場合、撮像装置からサーバへ送信するデータのサイズによっては通信に長い時間がかかる。そのため、演算処理に要する時間は短縮されても、最終的な推論結果が得られるまでに要する時間はあまり短縮されない可能性がある。
【0008】
本発明はこのような状況に鑑みてなされたものであり、2つの推論装置間の通信に要する時間を短縮するように、2つの推論装置間で推論処理を分担する技術を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明は、入力層と、複数の中間層と、出力層とを有する第1のニューラルネットワークを用いる推論処理を外部の推論装置と分担して行う推論装置であって、前記入力層に入力された入力データについて、前記第1のニューラルネットワークの第1の部分の演算処理を行うように制御する制御手段であって、前記第1のニューラルネットワークの前記第1の部分は、前記入力層から前記複数の中間層のうちの前記入力層よりもノード数が少ない特定の中間層までの部分である、制御手段と、前記特定の中間層の出力データを前記外部の推論装置へ送信する送信手段であって、前記外部の推論装置は、前記特定の中間層の前記出力データについて前記第1のニューラルネットワークの第2の部分の演算処理を行うことにより第1の推論結果を取得するように構成され、前記第1のニューラルネットワークの前記第2の部分は、前記第1のニューラルネットワークから前記第1の部分を除いた残りの部分である、送信手段と、前記外部の推論装置から前記第1の推論結果を受信する受信手段と、を備え、前記制御手段は、前記第1のニューラルネットワークの前記第1の部分の前記演算処理を実行する前に、前記外部の推論装置に通信要求を送信し、該通信要求に対する前記外部の推論装置からの応答を待つことなく前記第1のニューラルネットワークの前記第1の部分の前記演算処理を開始し、前記送信手段は、前記通信要求に対する前記応答を前記外部の推論装置から受信した後に、前記出力データを前記外部の推論装置に送信することを特徴とする推論装置を提供する。
【発明の効果】
【0010】
本発明によれば、2つの推論装置間の通信に要する時間を短縮するように、2つの推論装置間で推論処理を分担することが可能となる。
【0011】
なお、本発明のその他の特徴及び利点は、添付図面及び以下の発明を実施するための形態における記載によって更に明らかになるものである。
【図面の簡単な説明】
【0012】
図1】ニューラルネットワークを用いる推論システム100の全体構成例を示す図。
図2】推論システム100のハードウェア構成例を示す図。
図3】推論処理の分担の概念図。
図4】第1の実施形態に係る学習フェーズの概念図。
図5】第1の実施形態に係る推論処理のフローチャート。
図6】第1の実施形態に係る学習フェーズの他の例を示す概念図。
図7A】第2の実施形態に係る学習フェーズの概念図。
図7B】第2の実施形態に係る学習フェーズの他の例を示す概念図。
図8】第2の実施形態に係る推論処理のフローチャート。
【発明を実施するための形態】
【0013】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0014】
[第1の実施形態]
図1は、ニューラルネットワークを用いる推論システム100の全体構成例を示す図である。推論システム100は、入力層と、前階層から入力されるデータに含まれる特徴量を抽出する複数の中間層と、出力層とが階層的に接続された演算を実行する。図1に示すように、推論システム100は、撮像装置101(例えばデジタルカメラ)、サーバ103、及び通信ネットワーク102(例えばインターネット)を含む。撮像装置101とサーバ103とは、通信ネットワーク102を介して、各種の情報を通信する。
【0015】
なお、本実施形態において、撮像装置101及びサーバ103は、推論処理を分担する2つの推論装置の例に過ぎない。例えば、分担を依頼する側の推論装置として、撮像装置101の代わりに、携帯電話又はタブレット端末などを用いてもよい。分担を引き受ける側の推論装置であるサーバ103の演算処理能力が分担を依頼する側の推論装置である撮像装置101の演算処理能力よりも高い場合、(通信速度にもよるが)推論処理に要する時間が短縮される。ここでいう演算処理能力とは、ニューラルネットワークの推論(行列演算等)をどれだけ高速に処理できるかに関する能力である。しかしながら、2つの推論装置間の演算処理能力の優劣は特に限定されない。サーバ103の演算処理能力が撮像装置101の演算処理能力よりも低い場合であっても、推論処理の分担により、例えば撮像装置101の電力消費量が低下するなどの何らかの効果を得ることができる。
【0016】
図2は、推論システム100のハードウェア構成例を示す図である。図2に示すように、撮像装置101とサーバ103とが通信ネットワーク102を介して相互に接続されている。
【0017】
撮像装置101はシステムバス211を備え、システムバス211に対してCPU212、ROM213、メモリ214、撮像部215、通信部216、入力部217、及び表示部218が接続される。システムバス211に接続される各部は、システムバス211を介して互いにデータのやりとりを行うことができるように構成されている。
【0018】
ROM213は、CPU212が動作するための各種プログラムなどが格納されている。なお、CPU212が動作するための各種プログラムの格納先は、ROM213に限るものではなく、例えばハードディスク等であってもよい。
【0019】
メモリ214は、例えばRAMから構成されているものである。CPU212は、ROM213に格納されるプログラムを実行する際に、ワークメモリとしてメモリ214を用いる。
【0020】
入力部217は、ユーザ操作を受け付け、操作に応じた制御信号を生成し、CPU212に供給する。例えば、入力部217は、ユーザ操作を受け付ける入力デバイスとして、物理的な操作ボタンやタッチパネルなどを有する。なお、タッチパネルは、例えば平面的に構成された入力部に対して接触された位置に応じた座標情報が出力されるように構成された入力デバイスである。
【0021】
CPU212は、入力部217に対してなされたユーザ操作に応じて供給される制御信号に基づき、プログラムに従い表示部218、撮像部215、及び通信部216を制御する。これにより、表示部218、撮像部215、及び通信部216に対し、ユーザ操作に応じた動作を行わせることができる。
【0022】
表示部218は、例えばディスプレイであり、ディスプレイに対して画像を表示させるための表示信号を出力する機構を含む。なお、入力部217としてタッチパネルを用いる場合、入力部217とディスプレイとを一体的に構成することができる。例えば、タッチパネルを光の透過率がディスプレイの表示を妨げないように構成し、ディスプレイの表示面の上層に取り付ける。そして、タッチパネルにおける入力座標と、ディスプレイ上の表示座標とを対応付けることで、タッチパネルとディスプレイとを一体的に構成することができる。
【0023】
撮像部215は、レンズ、絞り機能を備えるシャッター、光学像を電気信号に変換するCCDやCMOS素子等で構成される撮像素子、撮像素子の信号に基づき露光制御及び測距制御などのための各種画像処理を行う画像処理部、などを含み、一連の撮影処理を行う機構である。CPU212の制御に基づき、入力部217のユーザ操作に応じた撮影が可能である。
【0024】
通信部216は、CPU212の制御に基づき、LANやインターネットといった通信ネットワーク102を介して、サーバ103(外部の推論装置)に対する通信を行う。
【0025】
サーバ103はシステムバス201を備え、システムバス201に対してCPU202、メモリ204、通信部206、及びGPU209が接続される。システムバス201に接続される各部は、システムバス201を介して互いにデータのやりとりを行うことができるように構成されている。
【0026】
メモリ204は、例えばRAMからなり、CPU202及びGPU209のワークメモリとして用いられる。CPU212が動作するためのプログラムは、図示されないハードディスクやROM等に格納されている。
【0027】
通信部206は、CPU202の制御に基づき、LANやインターネットといった通信ネットワーク102を介して、撮像装置101(外部の推論装置)に対する通信を行う。本実施形態においては、サーバ103のCPU202は、撮像装置101からの通信要求を受け付け、通信要求に応じた制御信号を生成し、GPU209を動作させる。撮像装置101とサーバ103との間の具体的な通信に関しては後述する。
【0028】
GPU209は、Graphics Processing Unitの略で、コンピュータグラフィックの演算に特化した処理を行うことが可能な演算器である。加えて、GPU209は一般的に、行列演算等の、ニューラルネットワークに必要な演算においてCPU202より短時間に処理が可能である。本実施形態においてはサーバ103がCPU202及びGPU209を備えるものとするが、この構成に限るものでない。また、GPU209は1つである必要はなく、サーバ103は複数のGPUを備えていてもよい。
【0029】
図3は、推論処理の分担の概念図である。本実施形態では、撮像装置101において、入力層401、中間層1-402、中間層2-403の処理を実行する。これらの処理は、撮像装置101のCPU212によってプログラムを実行することによって実現される。
【0030】
撮像装置101は、通信ネットワーク102を介して、中間層2-403のデータをサーバ103の入力層404に入力する。サーバ103は、入力層404、中間層3-405から中間層N-406までの中間層処理、及び出力層407の処理を実行する。これらの処理は、サーバ103のCPU202とGPU209とがプログラムを実行することによって実現される。
【0031】
本実施形態では、ニューラルネットワークの学習時において、複数の中間層の中に、データ量が小さくなる特定の中間層(図3の例では中間層2-403)を意図的に用意しておく。そして、推定時において、撮像装置101は、中間層2-403までの処理を行い、以降の処理をサーバ103に実施させる。このような推論モデルを作成するための学習の詳細に関しては、図4を用いて説明する。
【0032】
図4は、第1の実施形態に係る学習フェーズの概念図である。本実施形態において、学習は高性能なPC等により事前に行われているものとする。図4に示すように、本実施形態においては、学習時においてノード数の少ない特定の中間層(図4の例では中間層2-403)を意図的に作成する。以下の説明において、意図的に作成したノード数の少ない中間層を、「少ノード中間層」と呼ぶ。少ノード中間層は、入力層よりもノード数が少ない中間層であり、例えば、ニューラルネットワークが有する複数の中間層のうちの最もノード数の少ない中間層である。
【0033】
なお、図4の例では、少ノード中間層の位置は2番目の中間層(中間層2-403)の位置である。しかしながら、少ノード中間層の位置は特に限定されず、例えば、撮像装置101のCPU212の演算処理能力に基づき、所定の時間内に推論処理が完了するような範囲で任意に決定することができる(但し、後述の通り推論精度も考慮する場合がある)。
【0034】
このように推論モデルを構成してニューラルネットワークの学習をさせることで、中間層2-403から出力されるデータ量を小さくすることができる。少ノード中間層の位置及びノード数は、推論精度の低下を抑制するように決定してもよい。例えば、少ノード中間層を作らず学習させた推論モデルと、少ノード中間層を有する推論モデルとで事前に推論精度の比較を行い、精度低下が閾値以下となるように少ノード中間層の位置及びノード数を決定することが可能である。
【0035】
図4の構成に従って学習させた推論モデルを、図3に示すように少ノード中間層(中間層2-403)の位置で分割し、撮像装置101からサーバ103へ中間層2-403の結果を受け渡すことにより、推論処理の分担が可能になる。このように構成することで、通信ネットワーク102の通信量を抑制しつつ、多層の高精度の推論を行うことが可能な推論システムを実現することが可能である。
【0036】
図5は、第1の実施形態に係る推論処理のフローチャートである。図5において、S501~S505は撮像装置101が実行する処理のステップであり、S511~S516はサーバ103が実行する処理のステップである。
【0037】
最初に、撮像装置101が実行する処理について説明する。S501で、撮像装置101のCPU212は、通信部216を介してサーバ103への通信要求を送信する。S502で、撮像装置101のCPU212は、撮像部215で撮影された画像に対して、図3に示す入力層401から中間層2-403までのニューラルネットワークの演算処理を開始する。即ち、撮像装置101は、ニューラルネットワークのうちの入力層401から中間層2-403(特定の中間層)までの部分(ニューラルネットワークの第1の部分)の演算処理を担う。この演算処理は、次のS503の処理と並行して実施することができる。
【0038】
なお、入力層401に対する入力データ(即ち、推論対象データ)は、画像データに限定されない。ニューラルネットワークを用いる推論処理の対象とすることが可能な形式のデータであれば、任意のデータを入力データとして用いることができる。
【0039】
S503で、撮像装置101のCPU212は、サーバ103からの通信可能応答を受信するまで待つ。撮像装置101のCPU212は、通信可能応答を受信したらサーバ103との通信が可能であると判断し、処理をS503へと進める。なお、図5には通信可能応答を受信するまで待ち続けるように記載されているが、実際には通信が確立しなかった際の例外処理が必要となる。例えば、一定時間待っても通信可能応答を受信しない場合、撮像装置101のCPU212は、通信要求を再度送信する。通信の確立に関しては、任意の公知の手法を利用することができる。
【0040】
S504で、撮像装置101のCPU212は、図3に示す中間層2-403の出力データを、通信部216を介してサーバ103へ送信する。前述したように、この中間層2-403は、学習時において意図的にデータ量が小さくなる層として用意されているものである。
【0041】
S505で、撮像装置101のCPU212は、サーバ103からの出力層407の出力データに基づく推論結果(例えば、画像の分類結果)を受信するまで待つ。推論結果が受信されると、本フローチャートにおける撮像装置101の処理は終了する。
【0042】
その後、撮像装置101のCPU212は、推論結果を任意の方法で利用することができる。例えば、撮像装置101のCPU212は、推論結果に基づいて撮像部215のフォーカス設定を制御してもよいし、撮影画像に対してタグとして推論結果を付与してもよい。
【0043】
次に、サーバ103が実行する処理について説明する。S511で、サーバ103のCPU202は、撮像装置101からの通信要求を受信するまで待つ。サーバ103のCPU202は、通信要求を受信したら、処理をS512へ進める。S512で、サーバ103のCPU202は、通信可能応答を撮像装置101へ送信する。
【0044】
S513で、サーバ103のCPU202は、撮像装置101からの中間層2-403の出力データを受信するまで待つ。サーバ103のCPU202は、出力データを受信したら、処理をS514へと進める。
【0045】
S514で、サーバ103のGPU209は、CPU202からの命令に従い、中間層2-403の出力データを入力層404への入力データとして、中間層N-406までのニューラルネットワークの演算処理を実行する。即ち、サーバ103は、ニューラルネットワークから撮像装置101が担う部分(ニューラルネットワークの第1の部分)を除いた残りの部分(ニューラルネットワークの第2の部分)の演算処理を担う。
【0046】
S515で、サーバ103のGPU209は、出力層407のニューラルネットワークの演算処理を実行する。これにより、撮影画像に対する推論処理が完了し、推論結果(例えば、画像の分類結果)が得られる。S516で、サーバ103のCPU202は、通信部206を介して撮像装置101へ推論結果を送信する。
【0047】
以上の処理により、推論処理の分担が実現する。
【0048】
なお、本実施形態の推論モデルは図4に示す構成に限定されず、例えば図6に示すような構成であってもよい。
【0049】
図6は、第1の実施形態に係る学習フェーズの他の例を示す概念図である。本実施形態において、学習は高性能なPC等により事前に行われているものとする。図6に示すように、推論モデルは、入力層401、中間層1-402、中間層2-601、中間層3-602、中間層4-603、中間層5-604、中間層N-605、及び出力層606で構成される。入力層401及び中間層1-402は、図4に示すものと同様である。中間層3-602~中間層N-605及び出力層606は、図4の中間層3-405~中間層N-406及び出力層407とは全く異なるノード及びパラメータの推論器である。図6に示すように、学習時において複数の少ノード中間層(図6の例では中間層2-601及び中間層4-603)を用意しておくところが図4と異なる点である。このように学習を行うことにより、推論フェーズにおいて、どの少ノード中間層に基づいて撮像装置101とサーバ103とで推論処理を分担するかを任意に変更することが可能である。
【0050】
例えば、通信ネットワーク102の通信状況に応じて分担に用いる少ノード中間層を切り替えることができる。通信ネットワーク102が高速通信可能である場合(通信速度が第1の閾値以上の場合)、撮像装置101のCPU212は、中間層2-601までの処理を行い、残りの処理をサーバ103に依頼する。一方、通信ネットワーク102が低速通信のみ可能である場合(通信速度が第1の閾値未満の場合)、撮像装置101のCPU212は、中間層4-603までの処理を行い、残りの処理をサーバ103に依頼する。このように分担に用いる少ノード中間層を任意に変更可能とすることで、通信ネットワーク102の通信状態を加味して、最短で推論が完了するように、推論システムを構築することが可能である。
【0051】
他の例として、撮像装置101の電池残量に応じて分担に用いる少ノード中間層を切り替えてもよい。撮像装置101の電池残量が少ない場合(電池残量が第2の閾値未満の場合)、撮像装置101のCPU212は、中間層2-601までの処理を行い、残りの処理をサーバ103に依頼する。一方、撮像装置101の電池残量が十分な場合(電池残量が第2の閾値以上の場合)、撮像装置101のCPU212は、中間層4-603までの処理を行い、残りの処理をサーバ103に依頼する。このように、演算に要する時間と撮像装置101の電力消費との間に優先順位をつけ、推論処理を切り替えてもよい。
【0052】
ここで、中間層2-601(第1の中間層)は、入力層401よりもノード数が少ない中間層である。また、中間層4-603(第2の中間層)は、中間層2-601(第1の中間層)よりも後に配置され中間層2-601(第1の中間層)よりもノード数が少ない中間層である。例えば、中間層4-603(第2の中間層)は、ニューラルネットワークが有する複数の中間層のうちの最もノード数の少ない中間層であり、中間層2-601(第1の中間層)は、中間層4-603(第2の中間層)を除いて最もノード数の少ない中間層である。
【0053】
なお、撮像装置101が中間層2-601及び中間層4-603のいずれの出力データをサーバ103へ送信するかに応じて、サーバ103が受信する少ノード中間層の出力データのデータ構造は異なる。そのため、サーバ103は、データ構造に基づいて、出力データに対応する少ノード中間層(特定の中間層)が中間層2-601及び中間層4-603のいずれであるかを識別することができる。
【0054】
以上説明したように、第1の実施形態によれば、撮像装置101は、入力層401に入力された入力データについて、ニューラルネットワークの入力層401から少ノード中間層(中間層2-403)までの部分(第1の部分)の演算処理を行う。そして、撮像装置101は、少ノード中間層の出力データを外部の推論装置(サーバ103)へ送信する。サーバ103は、少ノード中間層の出力データについて、ニューラルネットワークから第1の部分を除いた残りの部分(第2の部分)の演算処理を行うことにより推論結果を取得する。そして、サーバ103は、推論結果を撮像装置101へ送信する。
【0055】
このように、第1の実施形態によれば、撮像装置101からサーバ103へ送信される出力データに対応する中間層は、少ノード中間層(入力層よりもノード数が少ない特定の中間層)である。そのため、本実施形態によれば、2つの推論装置間の通信に要する時間を短縮するように、2つの推論装置間で推論処理を分担することが可能となる。
【0056】
[第2の実施形態]
第2の実施形態では、撮像装置101とサーバ103との間の通信に用いる通信ネットワーク102が遮断されている場合(例えば通信ネットワーク102が無線ネットワークであって電波状況が悪い場合)の処理について説明する。本実施形態において、推論システム100、撮像装置101、及びサーバ103の基本的な構成は第1の実施形態と同様である(図1及び図2参照)。以下、主に第1の実施形態と異なる点について説明する。
【0057】
図7Aは、第2の実施形態に係る学習フェーズの概念図である。本実施形態において、学習は高性能なPC等により事前に行われているものとする。入力層401、中間層1-402、及び中間層2-403のパラメータは、図4で学習したパラメータと同様の構成を持つ。即ち、本実施形態では、まず図7Aに示す構成において学習を行い、入力層401、中間層1-402、及び中間層2-403のパラメータを作成する。次に、図4において入力層401、中間層1-402、及び中間層2-403のパラメータは凍結した状態で、中間層3-405~出力層407の学習を行う。本実施形態においては、図7Aの層数を2層として説明するが、これに限るものではない。より多くの中間層を設定する学習フェーズに関しては図7Bを用いて後述する。
【0058】
このように学習させたニューラルネットワークの演算においては、入力層401、中間層1-402、及び中間層2-403を図4(第1のニューラルネットワーク)と図7A(第2のニューラルネットワーク)とで共通にすることができる。入力層401から中間層2-403までの部分については、図4(第1のニューラルネットワーク)と図7A(第2のニューラルネットワーク)とで共通の学習済みパラメータを有する。その上で、図4においては、中間層1-402~中間層N-406のN層のニューラルネットワークの推論システム、図7Aにおいては、中間層1-401~中間層2-402の2層のニューラルネットワークの推論システムを用意することができる。このように、2つのニューラルネットワークの推論システムにおいて、近い認識結果を出すように事前に学習をさせる。図4のニューラルネットワークの推論システムは、図7Aのニューラルネットワークの推論システムよりも推論精度がよいものとなる。
【0059】
図7Bは、第2の実施形態に係る学習フェーズの他の例を示す概念図である。本実施形態において、学習は高性能なPC等により事前に行われているものとする。図7Bに示す構成において、入力層401、中間層1-402、及び中間層2-403のパラメータは、図4で学習したパラメータと同様の構成を持つ。そして、中間層3-701~出力層703の学習が行われる。即ち、学習は中間層3-701~出力層703だけに行い、入力層401~中間層2-403のパラメータは図4で学習したパラメータを凍結して使用する。本実施形態においては、図7Bの中間層の数を4層として説明するがこれに限るものではなく、図4の層数より少ない任意の層数で設定してよい。但し、この層数とノード数は、撮像装置101の演算処理能力において期待される時間以内にニューラルネットワークの演算が完了可能な範囲で設定される必要がある。
【0060】
このように学習させたニューラルネットワークの演算においては、入力層401、中間層1-402、中間層2-403までは図4図7Bとで共通にすることができる。また学習の順番として、図4の学習をさせた後の入力層401~中間層2-403のパラメータを使用して中間層3-701~出力層703を学習させる例を述べたが、図7Bの学習を先に行ってもよい。重要なのは、学習結果である中間層1-402及び中間層2-403を共通化させる点である。
【0061】
その上で、図4においては、中間層1-401~中間層N-406のN層のニューラルネットワークの推論システム、図7Bにおいては、中間層1-401~中間層4-702の4層のニューラルネットワークの推論システムを用意することができる。図7Aの中間層3-405と図7Bの中間層3-701とは全く異なるノード及びパラメータを持つ。また、図7Aの出力層407と図7Bの出力層703も全く異なるノード及びパラメータを持つ。
【0062】
以下の説明において、図7A又は図7Bのニューラルネットワークの推論システムを推論システムBと呼ぶ。また、図4のニューラルネットワークの推論システムを推論システムAと呼ぶ。推論システムBとして図7A又は図7Bのどちらを用いるかは、事前に決められているものとする。
【0063】
図8は、第2の実施形態に係る推論処理のフローチャートである。図8において、S501、S502、S504、S505、及びS801~S803は撮像装置101が実行する処理のステップであり、S511~S516はサーバ103が実行する処理のステップである。S501、S502、S504、S505、及びS511~S516の処理は、図4(第1の実施形態)と同様である。
【0064】
S801~S803において実行される撮像装置101の処理について説明する。S801で、撮像装置101のCPU212は、サーバ103からの通信可能応答を受信するまで待つ。撮像装置101のCPU212は、通信可能応答を受信したら処理をS802へと進める。また、撮像装置101のCPU212は、通信可能応答を受信しない場合であっても、所定の時間が経過した場合(即ち、タイムアウトが発生した場合)には、処理をS802へと進める。
【0065】
S802で、撮像装置101のCPU212は、サーバ103との通信が可能であるか否かを判定する。S801において通信可能応答が受信されていた場合、撮像装置101のCPU212は、サーバ103との通信が可能であると判定し、処理をS504に進める。S801においてタイムアウトが発生していた場合、撮像装置101のCPU212は、サーバ103との通信が可能でないと判定し、処理をS803に進める。
【0066】
S803で、撮像装置101のCPU212は、図7Aの出力層703(又は図7Bの中間層3-701~出力層703)の処理(第2のニューラルネットワークの第2の部分の演算処理)を実行する。このように、撮像装置101がサーバ103と通信できない場合、推論システムBによる推論処理が行われる(即ち、推論処理の分担は行われない)。
【0067】
一方、S504以降の処理は第1の実施形態と同様であるため、撮像装置101がサーバ103と通信可能な場合には、推論システムA(図4)による推論処理が行われる。
【0068】
以上説明したように、第2の実施形態によれば、撮像装置101は、サーバ103との通信が不可能な場合、推論処理の分担を行わずに、撮像装置101だけで推論結果を取得する。この場合、撮像装置101は、サーバ103との通信が可能な場合に用いるニューラルネットワークよりも中間層の数が少ないニューラルネットワークを用いる。また、これら2つのニューラルネットワークは、入力層から少ノード中間層までの部分(第1の部分)については共通のノード構成及び学習済みパラメータを有する。従って、第2の実施形態によれば、撮像装置101は、サーバ103との通信が不可能な場合であっても、少ノード中間層までの演算結果を有効利用しつつ、単独で推論結果を取得することが可能となる。
【0069】
なお、撮像装置101が推論処理の分担を行わない条件は、サーバ103との通信が不可能である場合に限定されない。一般化すると、撮像装置101は、所定の条件が満たされる場合に、推論処理の分担を行わない。
【0070】
[その他の実施形態]
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0071】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0072】
100…推論システム、101…撮像装置、102…通信ネットワーク、103…サーバ、202…CPU、204…メモリ、206…通信部、209…GPU、212…CPU、213…ROM、214…メモリ、216…通信部
図1
図2
図3
図4
図5
図6
図7A
図7B
図8