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

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

▶ 株式会社アクセルの特許一覧

<>
  • 特許-推論システム 図1
  • 特許-推論システム 図2
  • 特許-推論システム 図3
  • 特許-推論システム 図4
  • 特許-推論システム 図5
  • 特許-推論システム 図6
  • 特許-推論システム 図7
  • 特許-推論システム 図8
  • 特許-推論システム 図9
  • 特許-推論システム 図10
  • 特許-推論システム 図11
  • 特許-推論システム 図12
  • 特許-推論システム 図13
  • 特許-推論システム 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-25
(45)【発行日】2022-06-02
(54)【発明の名称】推論システム
(51)【国際特許分類】
   G06N 5/04 20060101AFI20220526BHJP
【FI】
G06N5/04
【請求項の数】 1
(21)【出願番号】P 2019206312
(22)【出願日】2019-11-14
(65)【公開番号】P2021081786
(43)【公開日】2021-05-27
【審査請求日】2020-10-01
【前置審査】
(73)【特許権者】
【識別番号】398034168
【氏名又は名称】株式会社アクセル
(74)【代理人】
【識別番号】100085660
【弁理士】
【氏名又は名称】鈴木 均
(72)【発明者】
【氏名】客野 一樹
【審査官】中村 信也
(56)【参考文献】
【文献】特開2019-012555(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-3/12
G06N 7/08-99/00
G06N 5/00-7/06
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークの推論処理を行う第1装置と、前記推論処理に用いる学習済みモデルを作成する第2装置と、を備え、
前記第1装置は、
前記推論処理を行う対象データの入力を受け付ける受付部と、
前記第2装置が作成した前記学習済みモデルを読み込む読込部と、
前記学習済みモデルを用いて前記対象データに基づく前記推論処理を実行する推論部と、
前記推論処理の結果出力される出力データのデータ形式を、後段処理に対応する形式に変換する後処理を行う後処理部と、
を備え、
前記学習済みモデルは、前記後処理を前記第1装置に実行させるための第1制御情報を含み、
前記後処理部は、前記後処理を、前記学習済みモデルに含まれる前記第1制御情報に基づいて実行し、
前記第2装置は、
前記第1制御情報として、前記後処理のプログラムコードを前記第1装置で実行可能なレイヤーに変換する変換部と、
前記変換部が変換した前記レイヤーを前記学習済みモデルに統合する統合部と、
を備えることを特徴とする推論システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、推論システム、推論装置、推論方法及び推論プログラムに関する。
【背景技術】
【0002】
画像認識、音声認識、文字認識などのアプリケーションにおいて、入力層、中間層、及び出力層を含むニューラルネットワークを用いた推論処理が用いられている。
ニューラルネットワークの学習処理では、中間層を多層化した構成を用いたディープラーニングを実行することにより、高い精度で推論可能な学習済みモデルを作成する。
アプリケーションの利用者は、推論装置が実行する推論フレームワークに、ネットワーク構造と重み係数で定義される学習済みモデル(例えば、特許文献1)を読み込ませることにより推論処理を実行する。
なお、推論処理における入力データの形式は、学習時の設計に応じた制限がかけられる。このような制限には、入力ニューロンの数に対応する1データの要素数、及びデータの分解能などがある。
推論装置は、入力データを上記制限に適応した形式にする前処理を実行し、前処理済みの入力データをニューラルネットワークに入力する。
また推論装置は、ニューラルネットワークの出力データを後段で実行される処理に適応した形式にする後処理を実行し、後処理済みの出力データを後段のアプリケーションに出力する。
【0003】
特許文献2には、学習時にニューラルネット演算装置に与えられる学習データについて前処理を施す前処理装置と、認識時にニューラルネット演算装置に与えられる認識データに前処理を施す前処理装置が開示されている。
学習時の前処理では、例えば2値化処理でニューラルネット演算装置に入力させる学習データのデータセット数を適正に少なくして学習時間を短縮させることができる。また認識時の前処理は、例えば量子化処理で認識データの特徴を際立たせることにより認識率を向上させることができる。
また特許文献2には、前処理装置により前処理された学習データ又は認識データに基づきニューラルネット演算装置で学習演算又は認識演算された結果を受けて、後で使用する機器に合わせてデータ変換(後処理)を行う後処理装置が記載されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2019-159499号公報
【文献】特開平8-212182号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ニューラルネットワークを用いた推論を行う学習済みモデルは、推論装置の利用者自身が作成するのではなく、推論システムの開発を商業的に行う販売者が作成し、利用者に提供されるケースがある。
この場合、推論装置の利用者は、販売者がネットワーク上にアップロードした学習済みモデルを購入・ダウンロードし、自身の推論装置に予め導入した推論フレームワークに組み込んで利用する。
推論フレームワーク自体はマルチプラットフォームで動作するため、利用者は自身の環境で推論フレームワークを手軽に実行できる。
しかし、上記の前処理部と後処理部はC言語やPythonなどのプログラム言語を用いて、利用者が自らの環境に応じて実装する必要があるのが現状である。
利用者自身によるこれらの実装は難度が高く、プラットフォーム毎にコンパイルしなおす必要がありポータビリティも低い。
その結果、現状として、特に販売者から提供された学習済みモデルを利用することは決して容易ではない。
本発明はこのような事情を鑑みてなされたものであり、一側面として、学習済みモデルを容易に使用可能とすることを目的とする。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するためになされたものであり、一形態として、ニューラルネットワークの推論処理を行う第1装置と、前記推論処理に用いる学習済みモデルを作成する第2装置と、を備え、前記第1装置は、前記推論処理を行う対象データの入力を受け付ける受付部と、前記第2装置が作成した前記学習済みモデルを読み込む読込部と、前記学習済みモデルを用いて前記対象データに基づく前記推論処理を実行する推論部と、前記推論処理の結果出力される出力データのデータ形式を、後段処理に対応する形式に変換する後処理を行う後処理部と、を備え、前記学習済みモデルは、前記後処理を前記第1装置に実行させるための第1制御情報を含み、前記後処理部は、前記後処理を、前記学習済みモデルに含まれる前記第1制御情報に基づいて実行し、前記第2装置は、前記第1制御情報として、前記後処理のプログラムコードを前記第1装置で実行可能なレイヤーに変換する変換部と、前記変換部が変換した前記レイヤーを前記学習済みモデルに統合する統合部と、を備えることを特徴とする。
【発明の効果】
【0007】
本発明によれば、一側面として、学習済みモデルを容易に使用することが出来る。
【図面の簡単な説明】
【0008】
図1】ニューラルネットワークを用いて推論を行うための方式を説明する図である。
図2】本実施形態の推論装置を適用した推論システムの概要を説明する図である。
図3】第1の例に係る推論処理を説明する図である。
図4】第1の例において、前処理及び後処理をバーチャルマシンで実行する学習済みモデルの作成方法を説明する図である。
図5】第2の例に係る推論装置を説明する図である。
図6】第2の実施形態に係る前処理及び後処理をCNNレイヤーとして実装した学習済みモデルの作成方法を示す図である。
図7】第1の例に係る推論装置の機能構成を説明するブロック図である。
図8】第1の例に係る販売者装置の機能構成を説明するブロック図である。
図9】第2の例に係る推論装置の機能構成を説明するブロック図である。
図10】第2の例における販売者装置の機能構成を説明するブロック図である。
図11】推論装置が実行する学習済みモデル要求処理を説明するフローチャートである。
図12図11の学習済みモデル要求処理に対応して販売者装置が実行する学習済みモデル送信処理を説明するフローチャートである。
図13】推論装置が実行する推論処理を説明するフローチャートである。
図14】コンピュータ装置の一実施例を示すブロック図である。
【発明を実施するための形態】
【0009】
以下に、図面を参照して本発明の実施の形態を詳細に説明する。
図1は、ニューラルネットワークを用いて推論を行うための方式を説明する図である。
ニューラルネットワークを用いた推論では、CNN(Convolutional Neural Network)の推論フレームワークに学習済みモデルを読み込む。学習済みモデルはネットワーク構造と重み係数で定義されており、推論フレームワークは、これらの情報をパラメータとして推論処理を実行する。
推論フレームワークは、推論ランタイムともいう。推論ランタイムは推論ランタイムライブラリの略であり、ニューラルネットワーク(メインプログラム)を実行するときに用いられるプログラムの部品をひとまとめにしたファイルである。
なお、推論フレームワークによる推論処理では、推論対象の画像データ等を推論フレームワークに入力する前に当該データに対して行う前処理と、推論フレームワークの出力に対して行う後処理が必要である。前処理部と後処理部は、利用者によってC言語などで記述される。
【0010】
前処理は画像形式変換等であり、後処理は検出結果の整形等である。
例えば「Yolo」などでは、前処理として、入力された8bitの画像をfloatに変換し、RGB順の並び替え、リサイズを行ったあとでCNNに投入する。学習済みモデルの種類によって、RGB値のレンジが-128~127や、0~1.0、-0.5~0.5など、期待する入力が異なるため、それを合わせ込むために行われる。
前処理として入力画像をフーリエ変換したあとに推論フレームワークに入力する場合や、フレーム間の動きベクトルを計算したあとに推論フレームワークに入力する場合もある。
さらに、上記の「Yolo」の場合、CNNの出力は1470次元のベクトルである。後処理として、下記に示すようなコードでバウンディングボックスに変換する必要がある。
【0011】
推論フレームワーク自体はマルチプラットフォームで動作する。
しかしながら、推論フレームワークへの入力データのフォーマットをあわせる前処理部と、出力ベクトルから期待する結果(バウンディングボックスなど)に整形する後処理部は、C++言語やPythonなどで記述されているため学習済みモデルに含めることができない。
前処理部、後処理部については利用者が自ら実現するためのプログラムコードを記述する必要があり、非常に難度が高い。
また異なるプラットフォーム上で学習済みモデルを使いたい場合、プラットフォーム毎にコンパイルしなおす必要がありポータビリティが低い。その結果、学習済みモデルを利用することは決して容易ではない。
この問題は、学習済みモデルの販売プラットフォームを作る時に障害になる。販売者から見ると、後処理をプログラムで提供する必要がありノウハウが流出してしまう恐れがある。また利用者から見ると、後処理をコーディングする必要があり取扱が煩雑である。
【0012】
ニューラルネットワークでは、学習済みモデルを作成するとき教師データを利用して学習を実行する。学習済みモデルをアップデートするときには、新たな教師データを利用して学習を実行する。
教師データとは、ニューラルネットワークが学習しやすいように、例えば、ラベル、オフセット、バウンディングボックスが調整された例題と答えについてのデータである。従って、教師データが変わると、推論時に利用する前処理及び後処理も調整する必要が生じる。
前処理部及び後処理部は、学習時に使用した推論フレームワーク及び学習時の設定などに対応するように作成されるからである。また学習時の設定は、推論対象に応じた入力データごとに適切な設定を技術者が適宜設定するものなので、一意に決まるものではない。学習時に使用する推論フレームワークは、推論時に使用する推論フレームワークとは違うものでもよいため、設定は複数種類存在することになる。
前処理及び後処理は学習済みモデルごとに異なる処理となる。
一度作成した前処理プログラム、後処理プログラムを更新後の学習済みモデルに適用することは難しく、学習済みモデルのアップデート時にも改めて前処理、後処理をコーディングする必要がある。利用者にとってはとりわけ取扱が煩雑となる。
前処理プログラム、後処理プログラムをそのままに学習済みモデルを差し替えることを考えた場合、特に後処理がハードコーディングされていると差し替えできる範囲が狭くなることが考えられる。
【0013】
本実施形態の推論装置、及び推論装置が用いる学習済みモデルはこのような諸問題を解決するものである。
学習済みモデルに前処理及び後処理の機能をあらかじめ組み込み、それを推論フレームワークで実行可能としたことで、学習済みモデルの利用者が自ら前処理、後処理用のコードを記述する必要がない。その結果、学習済みモデルの利用を非常に容易とすることができる。
【0014】
図2は、本実施形態の推論装置を適用した推論システムの概要を説明する図である。
システムは、学習済みモデルの利用者が利用する推論装置1と、推論フレームワークの提供者が利用する推論フレームワーク提供者装置2と、例えばアプリケーションの販売者である、学習済みモデルの販売者が利用する販売者装置3と、を含む。これらの装置は、インターネットなどのネットワークNWに接続され、互いに通信可能に構成されている。
【0015】
図2を用いて、本実施形態に係る処理の流れを概説する。
(1)推論フレームワークの提供者は、推論ランタイムにVMを組み込んだランタイムライブラリとして利用者に提供する。学習済みモデルの利用者は、提供された推論フレームワークを、自身の推論装置1に導入する。
(2)学習済みモデルの販売者は、販売者装置3を用いて、提供者が提供した推論フレームワーク向けに前処理及び後処理の機能を組み込んだ学習済みモデルを作成する。
(3)学習済みモデルの販売者は、販売者装置3を用いて、作成した学習済みモデルを利用者に販売提供する。学習済みモデルは販売者装置3から直接利用者に販売提供される。あるいは、販売者が学習済みモデルストアのサーバにアップロードした学習済みモデルを、利用者が推論装置1を用いてダウンロードすることで学習済みモデルが提供されてもよい。
(4)推論装置1の利用者は、(1)で提供された推論フレームワークに、(3)で提供された学習済みモデルを読み込ませ、推論装置1を用いて入力データ等に対する推論処理を実行する。なお、以下の説明では、画像データを用いた推論処理を一例として説明するが、入力データは、音声データ、文字データなどの他のデータでもよい。
【0016】
推論装置1、販売者装置3が行う処理については後に詳述するが、本実施形態の推論処理を概説する。
推論装置1は、学習済みモデルが含む前処理用の機能を入力データに対して実行し、入力データを推論処理に対応した形式に変換する前処理を行う。
推論装置1は、前処理済みの入力データをニューラルネットワークに入力して推論処理を行う。
さらに推論装置1は、ニューラルネットワークの出力データ(推論結果出力データ)に対して学習済みモデルが含む後処理用の機能を実行し、出力データの形式を、後段の処理に対応する形式に変換する後処理を行う。推論装置1は、例えば、推論処理の出力データの形式を、後段のアプリケーションで実行される処理に適合させる。
推論装置1は、後処理済みの出力データを、後段で実行されるアプリケーションに出力する。
学習済みモデルは、前処理用の機能と後処理用の機能を含んでいる。従って、推論装置1の利用者(ユーザ)は、モデル販売者から学習済みモデルを購入して推論フレームワークに組み込むことで入出力データの前処理及び後処理を考慮することなく推論処理を実行することができる。従って、学習済みモデルを容易に使うことができる。
また学習済みモデルの中に前処理と後処理を統合することができるため、クロスプラットフォームでの一貫した動作を実現できる。
【0017】
学習済みモデルの販売者は、再学習によって学習済みモデルをアップデートした場合には、新たな学習済みモデルに対応した前処理及び後処理の機能を含んだ学習済みモデルを提供することができる。例えば、販売者装置3は、新たな学習済みモデルを、モデルストアのサーバにアップロードすることができる。推論装置1は、新たに提供された学習済みモデルに含まれる前処理及び後処理の機能をフレーワークに読み込ませて推論処理を行う。
【0018】
ニューラルネットワークでは、学習済みモデルを作成するとき教師データを利用して学習を実行する。学習済みモデルをアップデートするときには、新たな教師データを利用して学習を実行する。
教師データとは、ニューラルネットワークが学習しやすいように、例えば、ラベル、オフセット、バウンディングボックスが調整された例題と答えについてのデータである。
学習時の教師データが変わると、推論時に利用する前処理及び後処理も調整する必要が生じる。
上記のように従来は、推論フレームワークに対して前処理及び後処理をハードコーディングで実装していたため、学習済みモデルのアップデート後には前処理及び後処理のプログラムを新たに作成しなければならなかった。
従って、アップデート後の新たな学習済みモデルを利用するのが煩雑になっていた。
それに対して、本実施形態では、学習処理を実行した学習済みモデルの販売者が、新たな学習済みモデルに対応する前処理及び後処理の機能を学習済みモデル自体に含ませている。
利用者は、アップデート後の学習済みモデルを推論フレームワークに読み込ませるだけで、新たな学習済みモデルを用いた推論処理を推論装置1に実行させることができる。従って、学習済みモデルの利用がより容易になる。
【0019】
図3は、第1の例に係る推論処理を説明する図である。
推論装置1は、推論フレーワーク10を実行することにより推論処理を実行する。
この例では、推論フレーワーク10にVM(バーチャルマシン)を搭載し、学習済みモデルには、前処理用、後処理用の機能として、このVMで実行可能なバイトコードを含ませる。
推論フレーワーク10は、学習済みモデルに含まれるバイトコードを実行することによって前処理、後処理を実行することが出来る。
推論フレーワーク10は、推論エンジン11と、前処理用VM12と、後処理用VM13と、を含む。
推論エンジン11は、ニューラルネットワーク、例えばCNNによる推論処理を行う。
前処理用VM12は、前処理用のバイトコードを実行することで、推論エンジン11に入力する画像等のデータに対する形式変換などの前処理を実行する。
後処理用VM13は、前処理用のバイトコードを実行することで、推論エンジン11による推論結果に対する後処理を実行する。
【0020】
それに対し、推論フレーワーク10が読み込む学習済みモデル50は、ネットワーク構造や重み付けといったニューラルネットワークの本体データ51と、VM用のコンパイル済みバイトコードと、を備えている。
VM用バイトコードは、前処理用プログラムのバイトコード52と、後処理用プログラムのバイトコード53と、を含む。
推論フレーワーク10は、画像データ等を入力されると、学習済みモデル50が含む前処理用プログラムのバイトコード52、後処理用プログラムのバイトコード53を、前処理用VM12、後処理用VM13を用いて夫々実行することによって、前処理、後処理を自動的に行う。
その結果、学習済みモデル50の利用者は、前処理、後処理のためのプログラムコードを自ら記述して、前処理用プログラム、後処理用プログラムを別途用意する必要がない。学習済みモデルは使いやすくなると言える。
【0021】
図4は、第1の例において、前処理及び後処理をバーチャルマシンで実行する学習済みモデルの作成方法を説明する図である。
学習済みモデルの販売者は、販売者装置3において、図4に説明する変換ツール100を用いて推論フレームワークに含まれるVMに対応した学習済みモデル50を作成する。
変換ツール100は、プログラムコードをVM向けにコンパイルしてVM用のバイトコードを生成するコンパイラ101を含む。
販売者は、変換ツール100を実行する販売者装置3において、既存の推論フレームワークで学習した学習済みモデル50と、前処理用プログラムのコード、後処理用プログラムのコードを変換ツールに入力する。
【0022】
変換ツール100は、VM用コンパイラを用いてプログラムコードをVM向けにコンパイルしてバイトコードを生成し、生成したバイトコードを学習済みモデル50に含める。
バイトコードを学習済みモデル50とパックして1つのファイルとしてもよいし、バイトコードと学習済みモデル50を別ファイルとして同時に配信してもよい。
なお、前処理のプログラムコード、後処理のプログラムコードにはいずれも独自の秘匿されるべきノウハウが導入されている。従ってバイトコードがリバースエンジニアリングされてノウハウが流出することを防止するために、学習済みモデル50に含ませるバイトコードは暗号化されて配布されてもよい。
【0023】
図5は、第2の例に係る推論装置を説明する図である。
推論フレーワーク10は、レジスタやメモリに相当する機能を備えている。図3図4で説明したVMの基本命令(レジスタからのリード・ストア、メモリからのリード・ストア、条件分岐、ループ)をそれぞれCNNレイヤーとして実装し、チューリング完全とする。実質的に、図3で説明したVMと同じアーキテクチャであると言える。
推論フレーワーク10が読み込む学習済みモデル50は、重み付けとネットワーク構造を含むが、ネットワーク構造内に、図3のVMの命令に一対一で対応したレイヤーが定義されている。このレイヤーが前処理と後処理を実行するのである。
学習済みモデル50の中に前処理と後処理を実行する機能を含ませる点で、図3と同じ構成である。
前処理用のレイヤーと後処理のレイヤーを含む学習済みモデル50が推論ランタイムに読み込まれると、推論エンジン11は、画像データに対する前処理、CNNの推論処理、推論結果に対する後処理を行う。
【0024】
図6は、第2の実施形態に係る前処理及び後処理をCNNレイヤーとして実装した学習済みモデルの作成方法を示す図である。
学習済みモデルの販売者は、販売者装置3において、前処理及び後処理をCNNレイヤーとして実装した学習済みモデル50を、図6に説明する変換ツール150によって作成する。
学習済みモデルの販売者は、販売者装置3において、既存の推論フレームワークで学習した「ネットワーク構造」と「重み」を含む学習済みモデル50と、前処理用プログラムのコード、後処理用プログラムのコードを変換ツール150に入力する。
【0025】
変換ツール150は、レイヤーコンパイラ151を用いて、前処理用プログラムのコード、後処理用プログラムのコードをそれぞれレイヤーに落とし込み(コンパイルし)、生成したレイヤー55、56を学習済みモデル50に含める。
すなわち変換ツール150は、前処理用プログラムのコード、後処理用プログラムのコードをレイヤー形式のバイトコードに変換し、ニューラルネットワークの前後に接続するのである。
なお、「レイヤーに落とし込む」とは、前処理と後処理のプログラムコードに含まれるループ処理などを展開することによりCNNで処理可能なレイヤー形式に変換することである。
学習済みモデル50において、レイヤーとしてコンパイルされたプログラムはネットワーク構造として格納されているので、学習済みモデル50を読み込む推論装置1は、前処理、推論処理、及び後処理をすべてCNNで実行することが出来る。
その結果、学習済みモデル50の利用者は、前処理、後処理のためのプログラムコードを自ら記述して、前処理用プログラム、後処理用プログラムを別途用意する必要がない。学習済みモデルは使いやすくなると言える。
【0026】
図7は、第1の例に係る推論装置の機能構成を説明するブロック図である。
推論装置1は、制御部30と記憶部40とを備える。
制御部30は、受付部31と、送信部32と、受信部33と、読込部34と、前処理部35と、推論部36と、後処理部37と、出力部38と、を備える。
記憶部40は、画像データ記憶部41と、学習済みモデル記憶部42と、前処理済み画像データ記憶部43と、推論結果記憶部44と、後処理済み推論結果記憶部45と、を備える。
受付部31は、画像データ記憶部41からの推論フレーワーク10に対する画像データ等の入力を受け付ける。また、受付部31は、学習済みモデルの取得を要求する学習済みモデル取得要求を、利用者から受け付ける。
送信部32は、受付部31が学習済みモデル取得要求を受け付けたことに応じて、販売者装置3に対して学習済みモデル取得要求を送信する。送信部32はまた、受付部31が入力を受け付けた画像データ等を販売者装置3に対して送信する。
【0027】
受信部33は、販売者装置3から学習済みモデルを受信して学習済みモデル記憶部42に格納する。
読込部34は、学習済みモデル記憶部42から学習済みモデルを読み出して推論フレーワーク10に組み込む。
前処理部35は、前処理用VM12に相当し、読み込んだ学習済みモデル50に含まれる前処理用バイトコード52を実行する。それによって、前処理部35は、画像データ等に対する前処理を行い、前処理済みの画像データ等を前処理済み画像データ記憶部43に格納する。
上記したように、前処理は画像データを推論処理に対応した画像形式に変換する処理である。
【0028】
推論部36は、推論エンジン11に相当する。推論部36は、読み込んだ学習済みモデル50に含まれる本体データを用いて、前処理済み画像データ記憶部43に格納されている前処理済みの画像データに対する推論処理を行い、推論結果出力データを推論結果記憶部44に格納する。
後処理部37は、後処理用VM13に相当し、読み込んだ学習済みモデル50に含まれる後処理用バイトコード53を実行する。それによって、後処理部37は、推論結果記憶部44に格納されている推論結果出力データに対する後処理を行い、後処理済みの推論結果出力データを後処理済み推論結果記憶部45に格納する。
上記したように、後処理は、推論結果出力データを後段のアプリケーションで実行される処理に適合させる処理である。
出力部38は、後処理済み推論結果記憶部45に格納されている後処理済みの推論結果出力データを後段のアプリケーションに対して出力する。
【0029】
図8は、第1の例に係る販売者装置の機能構成を説明するブロック図である。
販売者装置3は、制御部60と記憶部70とを備える。
制御部60は、変換部61と、統合部62と、出力部63と、受付部64と、送信部65と、を備える。
記憶部70は、プログラムコード記憶部71と、学習済みモデル記憶部72と、統合学習済みモデル記憶部73と、を備える。
プログラムコード記憶部71は、予め準備された前処理用プログラム、後処用プログラムのプログラムコードが格納されている。
学習済みモデル記憶部72には、予め学習された学習済みモデルが格納される。
統合学習済みモデル記憶部73は、前処理及び後処理の機能が統合された統合学習済みモデルが格納される。
【0030】
変換部61は、プログラムコード記憶部71から入力された前処理、後処理のプログラムコードをVM向けのバイトコードに変換する(コンパイルする)処理を行う。変換部61は、図4のコンパイラ101に相当する。
変換部61は、このときバイトコードを暗号化してもよい。
統合部62は、学習済みモデル記憶部72に格納される学習済みモデル50に、変換部61が変換したバイトコードを組み込んで統合する。
このとき統合部62は、バイトコードを暗号化してもよい。
出力部63は、バイトコードを統合した学習済みモデル50を統合学習済みモデル記憶部73に出力する。
受付部64は、推論装置1からの学習済みモデル取得要求を受け付ける。
送信部65は、推論装置1に対して、統合学習済みモデル記憶部73に記憶されているバイトコードを組み込んだ学習済みモデルを送信する。
【0031】
図9は、第2の例に係る推論装置の機能構成を説明するブロック図である。図7と同様の構成には同じ符号を付して説明している。
第1の例と同様に推論装置1は、制御部30と記憶部40とを備える。
制御部30は、受付部31と、送信部32と、受信部33と、読込部34と、前処理部35と、推論部36と、後処理部37と、出力部38と、を備える。
記憶部40は、画像データ記憶部41と、学習済みモデル記憶部42と、前処理済み画像データ記憶部43と、推論結果記憶部44と、後処理済み推論結果記憶部45と、を備える。
【0032】
受付部31は、画像データ記憶部41からの推論フレーワーク10に対する画像データ等の入力を受け付ける。受付部31はまた、利用者による学習済みモデル取得要求を受け付ける。
送信部32は、受付部31が学習済みモデル取得要求を受け付けたことに応じて、販売者装置3に対して学習済みモデル取得要求を送信する。送信部32はまた、受付部31が入力を受け付けた画像データを販売者装置3に対して送信する。
受信部33は、販売者装置3から学習済みモデルを受信して学習済みモデル記憶部42に格納する。
読込部34は、学習済みモデル記憶部42から学習済みモデルを読み出して推論フレーワーク10に組み込む。
前処理部35は、推論エンジン11に相当し、読み込んだ学習済みモデル50に含まれる前処理用レイヤー55を実行する。それによって、前処理部35は画像データ等に対する前処理を行い、前処理済みの画像データ等を前処理済み画像データ記憶部43に格納する。
上記したように、前処理は画像データを推論処理に対応した画像形式に変換する等の処理である。
【0033】
推論部36は、推論エンジン11に相当する。推論部36は、読み込んだ学習済みモデル50に含まれる本体データ51を用いて、前処理済み画像データ記憶部43に格納されている前処理済みの画像データに対する推論処理を行い、推論結果出力データを推論結果記憶部44に格納する。
後処理部37は、後処理用VM13に相当し、読み込んだ学習済みモデル50に含まれる後処理用レイヤー56を実行する。それによって、後処理部37は、推論結果記憶部44に格納されている推論結果出力データに対する後処理を行い、後処理済みの推論結果出力データを後処理済み推論結果記憶部45に格納する。
上記したように、後処理は、推論結果出力データを後段のアプリケーションで実行される処理に適合させる等の処理である。
出力部38は、後処理済み推論結果記憶部45に格納されている後処理済みの推論結果出力データを後段のアプリケーションに対して出力する。
【0034】
図10は、第2の例における販売者装置の機能構成を説明するブロック図である。図8と同様の構成には同じ符号を付して説明している。
第1の例と同様に販売者装置3は、制御部60と記憶部70とを備える。
制御部60は、変換部61と、統合部62と、出力部63と、受付部64と、送信部65と、を備える。
記憶部70は、プログラムコード記憶部71と、学習済みモデル記憶部72と、統合学習済みモデル記憶部73と、を備える。
プログラムコード記憶部71は、予め準備された前処理用プログラム、後処理用プログラムのプログラムコードが格納されている。
学習済みモデル記憶部72には、予め学習された学習済みモデルが格納されている。
統合学習済みモデル記憶部73は、前処理及び後処理の機能が統合された統合学習済みモデルが格納される。
【0035】
変換部61は、プログラムコード記憶部71から入力された前処理、後処理のプログラムコードを展開してレイヤーに変換する(コンパイルする)処理を行う。図6のレイヤーコンパイラ151に相当する。
統合部62は、学習済みモデル記憶部72に格納される学習済みモデル50に、変換部61が変換したレイヤーを組み込んで統合する。
出力部63は、バイトコードを統合した学習済みモデル50を統合学習済みモデル記憶部73に出力する。
受付部64は、推論装置1からの学習済みモデル取得要求を受け付ける。
送信部65は、推論装置1に対して、統合学習済みモデル記憶部73に記憶されているレイヤーを組み込んだ学習済みモデルを送信する。
【0036】
なお、レイヤーコンパイラは、販売者装置3の変換ツール150ではなく、推論装置1の推論エンジン11が備えてもよい。
この場合、変換ツール150は、学習済みモデル50に対して、単に前処理用プログラムのコード、後処理用プログラムのコードを含めるのみである。
推論装置1の推論エンジン11が、学習済みモデル50を読み込むと、レイヤーコンパイラは、学習済みモデル50に含まれる前処理と後処理のプログラムコードに含まれるループ処理などを展開することにより、前処理と後処理のプログラムコードをCNNで処理可能なレイヤー形式のバイトコードに変換する。
【0037】
図11は、推論装置が実行する学習済みモデル要求処理を説明するフローチャートである。
ステップS101において、受付部31は、学習済みモデル取得要求があったか否かを判定する。この学習済みモデル取得要求は、推論装置1の利用者によって、推論装置1が備えるキーボードやマウスなどの入力装置を用いて行われ得る。
学習済みモデル取得要求があったと判定した場合(ステップS101でYes)、受付部31は、ステップS102において、学習済みモデル取得要求を受け付ける。そして送信部32は、ステップS103において、学習済みモデル要求を販売者装置3に送信し、学習済みモデル要求処理は終了する。
受付部31において、学習済みモデル取得要求がなかったと判定された場合(ステップS101でNo)、受信部33は、ステップS104において、販売者装置3から学習済みモデルを受信したか否かを判定する。学習済みモデルを受信したと判定した場合(ステップS104でYes)、受信部33は、ステップS105において、受信した学習済みモデルを記憶部40に格納する、そして、読込部34は、S106において、記憶部40に格納された学習済みモデルを読み出し、推論フレームワークに学習済みモデルを組み込む。
学習済みモデルを受信したと判定しなかった場合(ステップS104でNo)、受信部33は何も行わず、学習済みモデル要求処理は終了する。
【0038】
図12は、図11の学習済みモデル要求処理に対応して販売者装置が実行する学習済みモデル送信処理を説明するフローチャートである。
ステップS111において、受付部54は、学習済みモデル取得要求が推論装置1からあったか否かを判定する。学習済みモデル取得要求があったと判定した場合(ステップS111でYes)、受付部54は、ステップS112において、学習済みモデル取得要求を受け付ける。送信部55は、ステップS113において、要求に応じて記憶部60から学習済みモデルを読み出して推論装置1に送信する。
【0039】
図13は、推論装置が実行する推論処理を説明するフローチャートである。
ステップS121において、受付部31は、推論対象の画像データ等の入力が行われたか、すなわち入力データがあったかを判定する。
画像データの入力は、例えば、推論装置1が備えるキーボードやマウスなどの入力装置を用いて記憶部40に予め格納されている画像データを利用者が選択することによって行い得る。
あるいは、推論装置1が備えるカメラなどの撮像装置によって直接撮像された画像データが入力されてもよい。
入力データがなかったと判定した場合(ステップS121にてNo)、受付部31は、S121の処理を繰り返し実行する。入力データがあったと判定した場合(ステップS121でYes)、ステップS122において、受付部31は入力データを受け付ける。
【0040】
ステップS123において、前処理部35は、入力データに対して前処理を実行し、前処理済みの入力データを記憶部40に格納する。
前処理部35による前処理は、推論フレーワーク10が備えるVM12が、学習済みモデルに含まれる前処理用バイトコード51を実行することによって実施される。
あるいは前処理部35による前処理は、推論フレーワーク10が備える推論エンジン11が、学習済みモデルに含まれる前処理用レイヤー55を実行することによって実施される。
ステップS124において、推論部36(推論エンジン11)は、記憶部40に格納されている前処理済みの入力データ(変換入力データ)に対して推論処理を実行し、推論結果出力データを記憶部40に格納する。
【0041】
ステップS125において、後処理部37は、記憶部40に格納されている推論結果出力データに対して後処理を実行し、後処理済みの推論結果出力データを記憶部40に格納する。
後処理部37による後処理は、推論フレーワーク10が備えるVM13が、学習済みモデルに含まれる後処理用バイトコード52を実行することによって実施される。
あるいは後処理部37による後処理は、推論フレーワーク10が備える推論エンジン11が、学習済みモデルに含まれる後処理用レイヤー56を実行することによって実施される。
ステップS126において、出力部38は、記憶部40に格納されている後処理済みの出力データを後段のアプリケーションに対して出力する。
【0042】
図14は、コンピュータ装置の一実施例を示すブロック図である。
図14を参照して、コンピュータ装置200の構成について説明する。
図14において、コンピュータ装置200は、制御回路201と、記憶装置202と、読書装置203と、記録媒体204と、通信インターフェイス205と、入出力インターフェイス206と、入力装置207と、表示装置208とを含む。また、通信インターフェイス205は、ネットワーク300と接続される。そして、各構成要素は、バス210により接続される。
販売者装置3、推論装置1は、コンピュータ装置200に記載の構成要素の一部または全てを適宜選択して構成することができる。
【0043】
制御回路201は、コンピュータ装置200全体の制御をする。制御回路201は、例えば、Central Processing Unit(CPU)などのプロセッサである。制御回路201は、例えば、図7図9における制御部30、図8図10における制御部60として機能する。
【0044】
記憶装置202は、各種データを記憶する。そして、記憶装置202は、例えば、Read Only Memory(ROM)及びRandom Access Memory(RAM)などのメモリや、Hard Disk(HD)などである。記憶装置202は、制御回路201を、制御部30、制御部60として機能させる情報処理プログラムを記憶してもよい。記憶装置202は、例えば、図7図9における記憶部40、図8図10における記憶部70として機能する。
なお、情報処理プログラムは、制御回路201を制御部30として機能させる推論プログラムと、制御回路201を制御部60として機能させる変換プログラムとの少なくとも一方を含む。
【0045】
推論装置1、販売者装置3は、推論処理を行うとき、記憶装置202に記憶されたプログラムをRAMに読み出す。
推論装置1は、RAMに読み出されたプログラムを制御回路201で実行することにより、受付処理、送信処理、受信処理、読込処理、前処理に係る処理、推論処理、後処理に係る処理、出力処理のいずれか1以上を含む処理を実行する。
販売者装置3は、RAMに読み出されたプログラムを制御回路201で実行することにより、変換処理、統合処理、出力処理、受付処理、送信処理のいずれか1以上を含む処理を実行する。
なお、プログラムは、制御回路201が通信インターフェイス205を介してアクセス可能であれば、ネットワーク300上のサーバが有する記憶装置に記憶されていても良い。
【0046】
読書装置203は、制御回路201に制御され、着脱可能な記録媒体204のデータのリード/ライトを行なう。
記録媒体204は、各種データを保存する。記録媒体204は、例えば、取引処理プログラムを記憶する。記録媒体204は、例えば、Secure Digital(SD)メモリーカード、Floppy Disk(FD)、Compact Disc(CD)、Digital Versatile Disk(DVD)、Blu-ray(登録商標) Disk(BD)、及びフラッシュメモリなどの不揮発性メモリ(非一時的記録媒体)である。
【0047】
通信インターフェイス205は、ネットワーク300を介してコンピュータ装置200と他の装置とを通信可能に接続する。通信インターフェイス205は、例えば、図7図9において、送信部32、受信部33として機能する。通信インターフェイス205は、また図8図10において、受付部64、送信部65として機能する。
入出力インターフェイス206は、例えば、各種入力装置と着脱可能に接続するインターフェイスである。入出力インターフェイス206と接続される入力装置には、例えば、キーボード、及びマウスなどがある。入出力インターフェイス206は、接続された各種入力装置とコンピュータ装置200とを通信可能に接続する。そして、入出力インターフェイス206は、接続された各種入力装置から入力された信号を、バス210を介して制御回路201に出力する。また、入出力インターフェイス206は、制御回路201から出力された信号を、バス210を介して入出力装置に出力する。入出力インターフェイス206は、例えば、図7図9において、受付部31として機能する。また、入出力インターフェイス206は、例えば、図8図10において、受付部64として機能する。
【0048】
表示装置207は、各種情報を表示する。ネットワーク300は、例えば、LAN、無線通信、P2Pネットワーク、またはインターネットなどであり、コンピュータ装置200と他の装置を通信接続する。
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【0049】
1 推論装置、2 提供者装置、3 販売者装置、10 推論フレームワーク、11 推論エンジン、12 前処理用VM、13 後処理用VM、30 制御部、31 受付部、32 送信部、33 受信部、34 読込部、35 前処理部、36 推論部、37 後処理部、38 出力部、40 記憶部、50 学習済みモデル、51 本体データ、52 前処理用バイトコード、53 後処理用バイトコード、60 制御部、61 変換部、62 統合部、63 出力部、64 受付部、65 送信部、70 記憶部、70 記憶部、100 変換ツール、101 コンパイラ、150 変換ツール、151 レイヤーコンパイラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14