(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024016546
(43)【公開日】2024-02-07
(54)【発明の名称】推論プログラム、推論方法および情報処理装置
(51)【国際特許分類】
G06V 10/70 20220101AFI20240131BHJP
G06T 7/00 20170101ALI20240131BHJP
G06N 20/00 20190101ALI20240131BHJP
【FI】
G06V10/70
G06T7/00 350B
G06N20/00
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022118759
(22)【出願日】2022-07-26
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】中尾 鷹詔
(72)【発明者】
【氏名】雷 旭穎
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096FA02
5L096JA11
5L096JA16
5L096KA04
(57)【要約】
【課題】異なる画像領域に対して推論処理を行う複数の機械学習モデルの計算量を削減する。
【解決手段】情報処理装置10は、異なる第1の座標が付与された複数の画素を含む画像データ13から生成された、異なる第2の座標が付与された複数の特徴量を含む特徴データ14を取得する。情報処理装置10は、特徴データ14を機械学習モデル15に入力して、画像データ13の中の画像領域16を示す第1の推論結果を生成する。情報処理装置10は、第1の座標と第2の座標との対応関係を示す座標対応情報17に基づいて、特徴データ14から、画像領域16に対応する特徴データ18を生成する。情報処理装置10は、特徴データ18を機械学習モデル19に入力して、画像領域16に対する第2の推論結果を生成する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
異なる第1の座標が付与された複数の画素を含む画像データから生成された、異なる第2の座標が付与された複数の特徴量を含む第1の特徴データを取得し、
前記第1の特徴データを第1の機械学習モデルに入力して、前記画像データの中の一部の画像領域を示す第1の推論結果を生成し、
前記異なる第1の座標と前記異なる第2の座標との対応関係を示す座標対応情報に基づいて、前記第1の特徴データから、前記第1の推論結果が示す前記一部の画像領域に対応する第2の特徴データを生成し、
前記第2の特徴データを第2の機械学習モデルに入力して、前記一部の画像領域に対する第2の推論結果を生成する、
処理をコンピュータに実行させる推論プログラム。
【請求項2】
前記第1の特徴データは、前記画像データを第3の機械学習モデルに入力することで生成される、
請求項1記載の推論プログラム。
【請求項3】
前記第2の特徴データは、前記第1の特徴データの中から、前記一部の画像領域に対応する第2の座標が付与された特徴量を抽出することで生成される、
請求項1記載の推論プログラム。
【請求項4】
前記第1の機械学習モデルは、前記画像データの中から検出対象のオブジェクトを含む画像領域を推論し、前記第2の機械学習モデルは、前記オブジェクトの状態を推論する、
請求項1記載の推論プログラム。
【請求項5】
異なる第1の座標が付与された複数の画素を含む画像データから生成された、異なる第2の座標が付与された複数の特徴量を含む第1の特徴データを取得し、
前記第1の特徴データを第1の機械学習モデルに入力して、前記画像データの中の一部の画像領域を示す第1の推論結果を生成し、
前記異なる第1の座標と前記異なる第2の座標との対応関係を示す座標対応情報に基づいて、前記第1の特徴データから、前記第1の推論結果が示す前記一部の画像領域に対応する第2の特徴データを生成し、
前記第2の特徴データを第2の機械学習モデルに入力して、前記一部の画像領域に対する第2の推論結果を生成する、
処理をコンピュータが実行する推論方法。
【請求項6】
画像データに含まれる複数の画素に付与される異なる第1の座標と、前記画像データから生成される第1の特徴データに含まれる複数の特徴量に付与される異なる第2の座標との対応関係を示す座標対応情報を記憶する記憶部と、
前記第1の特徴データを取得し、前記第1の特徴データを第1の機械学習モデルに入力して、前記画像データの中の一部の画像領域を示す第1の推論結果を生成し、前記座標対応情報に基づいて、前記第1の特徴データから、前記第1の推論結果が示す前記一部の画像領域に対応する第2の特徴データを生成し、前記第2の特徴データを第2の機械学習モデルに入力して、前記一部の画像領域に対する第2の推論結果を生成する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は推論プログラム、推論方法および情報処理装置に関する。
【背景技術】
【0002】
情報処理装置は、機械学習モデルを用いて画像認識を行うことがある。機械学習モデルは、例えば、深層学習によって訓練されるニューラルネットワークである。ある機械学習モデルは、画像データを受け付け、受け付けた画像データを複数の特徴量を含む特徴データに変換し、特徴データに基づいて、画像データの中で特定のオブジェクトを含む画像領域を推論することがある。また、ある機械学習モデルは、オブジェクトを含む画像データを受け付け、受け付けた画像データを複数の特徴量を含む特徴データに変換し、特徴データに基づいて、オブジェクトのクラスを推論することがある。
【0003】
なお、入力された画像データから特徴量を抽出する特徴量抽出器と、抽出された特徴量を物体認識用の識別量に変換する識別器とを含む画像認識モデルを、訓練データを用いて半教師あり学習によって訓練する情報処理装置が提案されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
情報処理装置は、ある機械学習モデルを用いて、画像データの中の一部の画像領域を特定する推論処理を行い、別の機械学習モデルを用いて、特定された画像領域に対して別の推論処理を行いたいことがある。ここで、推論目的が異なる機械学習モデルであっても、画像データから特徴量を抽出する前半部分に同じモデル構造を含むことがある。
【0006】
しかし、上記の2つの機械学習モデルは、異なる画像領域の画像データを処理する。このため、先の推論処理で生成された特徴データをそのままでは後の推論処理に流用することができず、2つの機械学習モデルが画像データからの特徴量の抽出を重複して行うことになる。そこで、1つの側面では、本発明は、異なる画像領域に対して推論処理を行う複数の機械学習モデルの計算量を削減することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、コンピュータに以下の処理を実行させる推論プログラムが提供される。異なる第1の座標が付与された複数の画素を含む画像データから生成された、異なる第2の座標が付与された複数の特徴量を含む第1の特徴データを取得する。第1の特徴データを第1の機械学習モデルに入力して、画像データの中の一部の画像領域を示す第1の推論結果を生成する。異なる第1の座標と異なる第2の座標との対応関係を示す座標対応情報に基づいて、第1の特徴データから、第1の推論結果が示す一部の画像領域に対応する第2の特徴データを生成する。第2の特徴データを第2の機械学習モデルに入力して、一部の画像領域に対する第2の推論結果を生成する。
【0008】
また、1つの態様では、コンピュータが実行する推論方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0009】
1つの側面では、異なる画像領域に対して推論処理を行う複数の機械学習モデルの計算量を削減できる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態の情報処理装置を説明するための図である。
【
図2】第2の実施の形態の情報処理システムの例を示す図である。
【
図3】サーバ装置のハードウェア例を示すブロック図である。
【
図4】監視カメラの画像データの例を示す図である。
【
図5】複数の画像認識モデルの連携例を示す図である。
【
図8】プーリング層のデータ変換例を示す図である。
【
図10】画像ブロックの並び替え例を示す図である。
【
図13】サーバ装置の機能例を示すブロック図である。
【
図15】機械学習の手順例を示すフローチャートである。
【
図16】画像認識の手順例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の情報処理装置を説明するための図である。
第1の実施の形態の情報処理装置10は、機械学習モデルを用いて画像認識を行う。情報処理装置10は、ある機械学習モデルを用いて、画像データの中の一部の画像領域を特定することを含む推論処理を行い、別の機械学習モデルを用いて、特定された画像領域に対して別の推論処理を行う。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータまたは推論装置と呼ばれてもよい。
【0013】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0014】
記憶部11は、特徴データ14および座標対応情報17を記憶する。特徴データ14は、画像データ13から生成される。画像データ13は、異なる第1の座標が付与された複数の画素を含む。画像データ13は、例えば、複数の画素が矩形に並んだテンソルデータである。画像データ13は、奥行き方向に2以上のチャネルを含んでもよい。第1の座標は、例えば、行番号および列番号を含む直交座標系の座標である。画像データ13は、動画像や監視カメラの画像のように、定期的に発生するものであってもよい。
【0015】
特徴データ14は、異なる第2の座標が付与された複数の特徴量を含む。特徴データ14は、例えば、複数の特徴量が矩形に並んだテンソルデータである。特徴データ14は、奥行き方向に2以上のチャネルを含んでもよい。第2の座標は、例えば、行番号および列番号を含む直交座標系の座標である。特徴データ14は、画像データ13の変化に合わせて定期的に生成されるものであってもよい。特徴データ14は、例えば、機械学習モデルを用いて画像データ13から生成される。機械学習モデルは、ニューラルネットワークであってもよい。画像データ13から特徴データ14への変換は、情報処理装置10が行ってもよいし他の情報処理装置が行ってもよい。
【0016】
座標対応情報17は、画像データ13の画素を識別する第1の座標と、特徴データ14の特徴量を識別する第2の座標との対応関係を示す。画像データ13が特徴データ14より大きい場合、第1の座標と第2の座標との対応関係は多対一であり、1つの第1の座標は2以上の第2の座標と対応付けられない。第1の座標に対応する第2の座標が示す特徴量は、当該第1の座標が示す画素を用いて算出されている。ある特徴量の算出に使用される画素は、画像データ13に含まれる画素のうちの一部である。ある特徴量の算出に使用される2以上の画素は、画像データ13で隣接していることが好ましい。
【0017】
ニューラルネットワークが特徴データ14を生成する場合、ニューラルネットワークは、畳み込み層およびプーリング層を含んでもよい一方、全結合層を含まないことが好ましい。画像データ13と特徴データ14とは、相似であることがある。特徴データ14を生成する機械学習モデルは、画素および特徴量の相対位置を保存することがある。例えば、第1の画素が第2の画素の上側にある場合、第1の画素から算出される第1の特徴量が第2の画素から算出される第2の特徴量より上側にあることがある。また、第1の画素が第2の画素の左側にある場合、第1の特徴量が第2の特徴量より左側にあることがある。その場合、第2の座標は第1の座標を定数倍したものである。
【0018】
ただし、機械学習モデルは、画素または特徴量を並び替えることがある。その場合、第1の座標に対応する第2の座標は、第1の座標を定数倍したものにならないことがある。座標対応情報17は、ユーザによって作成されてもよいし、機械学習モデルのモデル構造を分析することで自動的に生成されてもよい。座標対応情報17は、ユーザから情報処理装置10に入力されてもよいし、他の情報処理装置から受信されてもよい。他の情報処理装置は、特徴データ14を生成する情報処理装置であってもよい。
【0019】
処理部12は、特徴データ14を取得し、特徴データ14を機械学習モデル15に入力して第1の推論結果を生成する。機械学習モデル15は、画像データ13に対して第1の推論処理を行う機械学習モデルである。機械学習モデル15は、例えば、訓練データを用いて訓練済みである。機械学習モデル15の訓練は、情報処理装置10が行ってもよいし他の情報処理装置が行ってもよい。第1の推論処理に関して、特徴データ14を生成する機械学習モデルは前段モデルに相当し、機械学習モデル15は後段モデルに相当する。
【0020】
第1の推論処理は、画像データ13の中の一部の画像領域である画像領域16を特定することを含む。第1の推論結果は、画像領域16を少なくとも示す。例えば、機械学習モデル15は、画像データ13の中から特定の種類のオブジェクトを含む画像領域を検出する。機械学習モデル15は、畳み込みニューラルネットワークであってもよい。
【0021】
処理部12は、座標対応情報17に基づいて、特徴データ14から、第1の推論結果が示す画像領域16に対応する特徴データ18を生成する。例えば、処理部12は、画像領域16に含まれる画素に付与された第1の座標に対応する第2の座標を特定し、特定した第2の座標が付与された特徴量を特徴データ14から抽出する。特徴データ18は、例えば、特徴データ14から抽出された特徴量が矩形に並んだテンソルデータである。特徴データ18は、特徴データ14の一部領域を切り出したものであってもよい。特徴データ18は、奥行き方向に2以上のチャネルを含んでもよい。ただし、処理部12は、機械学習モデル19の入力に合うように特徴データ18を加工してもよい。
【0022】
処理部12は、特徴データ18を機械学習モデル19に入力して第2の推論結果を生成する。機械学習モデル19は、画像領域16に対して第2の推論処理を行う機械学習モデルである。機械学習モデル19は、例えば、訓練データを用いて訓練済みである。機械学習モデル19の訓練は、情報処理装置10が行ってもよいし他の情報処理装置が行ってもよい。第2の推論処理に関して、特徴データ14を生成する機械学習モデルは前段モデルに相当し、機械学習モデル19は後段モデルに相当する。この場合、第1の推論処理と第2推論処理とは、前段モデルを共有して特徴データ14を再利用していることになる。
【0023】
第2の推論処理は、画像データ13の一部である画像領域16に対して行われる。第2の推論結果は、第2の推論処理の結果を示す。例えば、機械学習モデル19は、画像領域16に含まれるオブジェクトの状態を判定する。例えば、機械学習モデル15が画像データ13の中から人を含む画像領域を検出し、機械学習モデル19が人の姿勢を判定する。機械学習モデル19は、畳み込みニューラルネットワークであってもよい。処理部12は、第2の推論結果を出力する。処理部12は、第2の推論結果を不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、他の情報処理装置に送信してもよい。
【0024】
以上説明したように、第1の実施の形態の情報処理装置10は、画像データ13から生成された特徴データ14を機械学習モデル15に入力し、画像データ13の中の画像領域16を示す第1の推論結果を生成する。情報処理装置10は、画像データ13の座標と特徴データ14の座標との対応関係を示す座標対応情報17に基づいて、特徴データ14から画像領域16に対応する特徴データ18を生成する。情報処理装置10は、特徴データ18を機械学習モデル19に入力し、画像領域16に対する第2の推論結果を生成する。
【0025】
これにより、画像データ13に対して、異なる推論目的の推論処理が実行される。また、第2の推論処理では、座標対応情報17を参照することで、第1の推論処理で使用した特徴データ14の一部が再利用され、画像領域16から特徴データ18を生成する特徴抽出が省略される。これにより、異なる画像領域を対象とする複数の推論処理の計算量が削減され、情報処理装置10の負荷が低下する。
【0026】
なお、特徴データ14は、画像データ13を機械学習モデルに入力することで生成されてもよい。これにより、第1の推論処理と第2の推論処理とで、特徴抽出を行う前段の機械学習モデルが共有され、重複した特徴抽出が抑制される。また、特徴データ18は、特徴データ14の中から、画像領域16に対応する第2の座標が付与された特徴量を抽出することで生成されてもよい。これにより、画像領域16に対して特徴抽出を行った場合に算出される特徴量が効率的に再現される。
【0027】
また、機械学習モデル15は、検出対象のオブジェクトを含む画像領域を推論するものであってもよく、機械学習モデル15は、検出されたオブジェクトの状態を推論するものであってもよい。これにより、機械学習モデル15,19を連携させて、画像データ13に対して、異なる推論目的の推論処理が効率的に実行される。
【0028】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0029】
第2の実施の形態の情報処理システムは、監視カメラ31の画像を分析して不審人物を検出する。情報処理システムは、監視カメラ31、エッジサーバ32およびクラウドサーバ33,34を含む。監視カメラ31とエッジサーバ32とは、LAN(Local Area Network)または広域ネットワークを介して通信する。エッジサーバ32とクラウドサーバ33,34とは、インターネットなどの広域ネットワークを介して通信する。クラウドサーバ33は、第1の実施の形態の情報処理装置10に対応する。
【0030】
監視カメラ31は、一定のフレームレートで画像データを生成する撮像装置である。監視カメラ31は、例えば、街路に設定されている。監視カメラ31は、ネットワークを介してエッジサーバ32に継続的に画像データを送信する。
【0031】
エッジサーバ32は、クラウドサーバ33,34と比べて監視カメラ31の近くに設置されたサーバコンピュータである。エッジサーバ32は、監視カメラ31から継続的に画像データを受信する。エッジサーバ32は、受信した画像データに対して、後述するような前段処理を実行し、前段処理の結果をネットワークを介してクラウドサーバ33に送信する。なお、エッジサーバ32は、前段処理の結果をクラウドサーバ34に送信してもよく、クラウドサーバ33,34を並列に使用してもよい。
【0032】
クラウドサーバ33,34は、エッジサーバ32と比べて監視カメラ31から遠くに設置されたサーバコンピュータである。クラウドサーバ33,34は、エッジサーバ32よりも高い演算能力をもつ。クラウドサーバ33,34は、いわゆるクラウドシステムに含まれる計算資源であり、データセンタに設置されていてもよい。クラウドサーバ33,34は、異なる場所に設置されていてもよく、異なるクラウドシステムに属してもよい。
【0033】
クラウドサーバ33は、エッジサーバ32から前段処理の結果を継続的に受信する。クラウドサーバ33は、受信した前段処理の結果に対して、後述するような後段処理を実行する。後段処理は、画像データの中から人を検出する処理と、検出された人の姿勢を予測する処理とを含む。クラウドサーバ33は、後段処理の結果を出力する。例えば、クラウドサーバ33は、不審な動きをする人が検出された場合、オペレータが使用するクライアントコンピュータに対して、不審人物が検出された旨を通知する。
【0034】
クラウドサーバ34は、クラウドサーバ33と同様にエッジサーバ32から前段処理の結果を受信してもよく、クラウドサーバ33と異なる目的の後段処理をクラウドサーバ33と並列に実行してもよい。ただし、後述するように、クラウドサーバ34は、前段処理および後段処理に使用される機械学習モデルを訓練するために用いられてもよい。
【0035】
図3は、サーバ装置のハードウェア例を示すブロック図である。
クラウドサーバ33は、CPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。これらのハードウェアユニットは、バスに接続されている。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。エッジサーバ32およびクラウドサーバ34が、クラウドサーバ33と同様のハードウェアを有してもよい。
【0036】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータをRAM102にロードし、プログラムを実行する。クラウドサーバ33は、複数のプロセッサを有してもよい。
【0037】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。クラウドサーバ33は、RAM以外の種類の揮発性メモリを有してもよい。
【0038】
HDD103は、オペレーティングシステム(OS:Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムと、データとを記憶する不揮発性ストレージである。クラウドサーバ33は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0039】
GPU104は、CPU101と連携して画像処理を行い、クラウドサーバ33に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。クラウドサーバ33に、プリンタなどの他の種類の出力デバイスが接続されてもよい。また、GPU104は、GPGPU(General Purpose Computing on Graphics Processing Unit)として使用されてもよい。GPU104は、CPU101からの指示に応じてプログラムを実行し得る。クラウドサーバ33は、RAM102以外の揮発性半導体メモリをGPUメモリとして有してもよい。
【0040】
入力インタフェース105は、クラウドサーバ33に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。クラウドサーバ33に複数の入力デバイスが接続されてもよい。
【0041】
媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0042】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0043】
通信インタフェース107は、ネットワーク30を介してエッジサーバ32と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0044】
次に、機械学習モデルを用いた人検出および姿勢予測について説明する。
図4は、監視カメラの画像データの例を示す図である。
監視カメラ31は、画像データ41のような画像データをエッジサーバ32に継続的に送信する。画像データ41は、チャネル数が1のモノクロ画像でもよいし、チャネル数が3のカラー画像でもよい。監視カメラ31は、固定点から街路を撮像している。画像データ41の中央の画像領域には、ランニングする人が写っている。このように、監視カメラ31が生成する画像データの中の一部の画像領域に、人が含まれることがある。
【0045】
クラウドサーバ33は、機械学習モデルを用いて、画像データの中から人を含む画像領域を特定する人検出を行う。また、クラウドサーバ33は、人検出とは異なる機械学習モデルを用いて、特定された画像領域に含まれる人の姿勢を予測する姿勢予測を行う。姿勢のクラスには、例えば、立つ、歩く、走る、座る、しゃがむなどが含まれる。次に、上記の2つの機械学習モデルのシンプルな実装例について説明する。
【0046】
図5は、複数の画像認識モデルの連携例を示す図である。
画像認識モデル51は、人検出のための機械学習モデルである。画像認識モデル52は、姿勢予測のための機械学習モデルである。画像認識モデル51,52は、畳み込み層やプーリング層を含む畳み込みニューラルネットワークである。
【0047】
画像認識モデル51は、画像データ41を受け付ける。画像認識モデル51は、画像データ41を処理して位置情報42を出力する。位置情報42は、画像データ41のうち人を含む1以上の画像領域を示す。例えば、位置情報42は、画像領域を示す矩形の境界ボックス(バウンディングボックス)の左上の座標および右下の座標を含む。
【0048】
画像認識モデル51は、前段モデル53および後段モデル54を含む。前段モデル53は、画像データ41に含まれる画素値から特徴量を算出し、算出された特徴量が格子状に並んだ特徴マップを生成する。後段モデル54は、前段モデル53が生成した特徴マップに基づいて、人を含む画像領域を検出する。例えば、後段モデル54は、複数の境界ボックスの候補それぞれに対して人が含まれる確率を算出し、確率が閾値を超える境界ボックスの座標を位置情報42として出力する。
【0049】
位置情報42が生成されると、位置情報42が示す画像領域を画像データ41から抽出することで、人を含む部分画像データ43が生成される。画像認識モデル52は、部分画像データ43を受け付ける。画像認識モデル52は、部分画像データ43を処理して姿勢情報44を生成する。姿勢情報44は、部分画像データ43に含まれる人の姿勢を示す。例えば、姿勢情報44は、複数の姿勢クラスそれぞれの確率を含む。また、例えば、姿勢情報44は、確率が最も高い姿勢クラスおよびその確率を含む。
【0050】
画像認識モデル52は、前段モデル55および後段モデル56を含む。前段モデル55は、部分画像データ43に含まれる画素値から特徴量を算出し、算出された特徴量が格子状に並んだ特徴マップを生成する。後段モデル56は、前段モデル55が生成した特徴マップに基づいて、部分画像データ43に含まれる人の姿勢を予測する。例えば、後段モデル56は、複数の姿勢クラスそれぞれの確率を算出し、確率が最も高い姿勢クラスに部分画像データ43を分類する。姿勢クラスは、立つ、歩く、走る、座る、しゃがむなどの人の姿勢を示す。後段モデル56は、部分画像データ43に含まれる頭、手、腕、足、脚などの人のパーツを認識することで、姿勢を予測する。
【0051】
ここで、人検出のための前段モデル53と姿勢予測のための前段モデル55は、画素値の集合から特徴量を算出する点で共通しており、同じモデル構造をもつことがある。部分画像データ43は画像データ41の一部分であるため、前段モデル55と同様の特徴抽出が、前段モデル53の中でも行われていることがある。しかし、前段モデル53と前段モデル55は、処理対象の画像領域が異なるため異なる特徴マップを出力する。そのため、後段モデル56は、前段モデル53の出力をそのままでは再利用できない。
【0052】
そこで、第2の実施の形態の情報処理システムは、座標変換関数を用いて、前段モデル53が生成する特徴マップを、後段モデル56に入力される特徴マップに変換する。情報処理システムは、前段モデル53,55を共通化し、人検出で生成された特徴マップを姿勢予測で再利用する。これにより、前段モデル55による特徴抽出が省略される。
【0053】
図6は、前段モデルの共通化例を示す図である。
前段モデル61は、人検出および姿勢予測に共通に使用される特徴抽出のための機械学習モデルである。前段モデル61は、畳み込み層やプーリング層を含む畳み込みニューラルネットワークである。ただし、前段モデル61は、画素または特徴量の隣接関係の情報が失われる全結合層を含まない。前段モデル61は、画像データ41を受け付ける。画像データ41のサイズは、例えば、300行×450行である。画像データ41の画素は、行番号および列番号を含む直交座標系の座標で識別される。
【0054】
前段モデル61は、画像データ41を処理して特徴マップ45を生成する。特徴マップ45は、特徴量が格子状に並べられたテンソルであり、奥行き方向に複数のチャネルを含んでもよい。特徴マップ45の特徴量は、行番号および列番号を含む直交座標系の座標で識別される。通常、特徴マップ45のサイズは画像データ41よりも小さい。前段モデル61は、前述の前段モデル53,55に相当する。
【0055】
後段モデル62は、人検出のための機械学習モデルである。後段モデル62はニューラルネットワークであり、畳み込み層やプーリング層を含む畳み込みニューラルネットワークであってもよい。後段モデル62は、特徴量の隣接関係の情報が失われる全結合層を含んでもよい。後段モデル62は、特徴マップ45から位置情報42を生成する。後段モデル62は、前述の後段モデル54に相当する。
【0056】
位置情報42が生成されると、座標変換関数に基づいて、位置情報42が示す画像領域に対応する特徴量が特徴マップ45から抽出されて部分特徴マップ46が生成される。座標変換関数は、前段モデル61のモデル構造を考慮して作成されており、画像データ41の座標と特徴マップ45の座標との対応関係を示す。ただし、後段モデル63の入力に合わせて、部分特徴マップ46が加工されてもよい。例えば、後段モデル63の入力サイズに合わせて、部分特徴マップ46が拡大または縮小される。
【0057】
後段モデル63は、姿勢予測のための機械学習モデルである。後段モデル63はニューラルネットワークであり、畳み込みニューラルネットワークであってもよい。後段モデル63は、全結合層を含んでもよい。後段モデル63は、後段モデル62と同じモデル構造を含んでもよいし、後段モデル62と異なるモデル構造を含んでもよい。ただし、推論目的が異なるため、後段モデル62,63は個別に訓練され、異なるパラメータ値を含む。後段モデル63は、部分特徴マップ46から姿勢情報44を生成する。後段モデル63は、前述の後段モデル56に相当する。
【0058】
第2の実施の形態では、前段モデル61はエッジサーバ32によって実行され、後段モデル62,63はクラウドサーバ33によって実行される。よって、エッジサーバ32からクラウドサーバ33に特徴マップ45が送信される。また、座標変換関数はエッジサーバ32に記憶されており、監視カメラ31の画像データの処理をクラウドサーバ33が開始する前にエッジサーバ32からクラウドサーバ33に送信される。ただし、前段モデル61がクラウドサーバ33によって実行されてもよい。また、後段モデル62,63の少なくとも一方がエッジサーバ32によって実行されてもよい。
【0059】
図7は、座標変換関数の例を示す図である。
座標変換関数47は、画像データ41の座標と特徴マップ45の座標との対応関係を示す。座標変換関数47は、前段モデル61のモデル構造を参照してユーザによって作成されて、エッジサーバ32に保存される。ただし、前段モデル61のモデル構造に基づいて座標変換関数47が自動的に生成されてもよい。
【0060】
画像データ41は、同じ大きさの複数の画像ブロックに分割される。画像ブロックは、一定の個数の画素を含む矩形領域である。特徴マップ45は、同じ大きさの複数の特徴ブロックに分割される。特徴ブロックは、一定の個数の特徴量を含む矩形領域である。画像ブロックの個数と特徴ブロックの個数は、同じである。座標変換関数47は、画像データ41の複数の画像ブロックと特徴マップ45の複数の特徴ブロックとを、一対一に対応付ける。よって、1つの画像ブロックは2以上の特徴ブロックには対応せず、1つの特徴ブロックは2以上の画像ブロックには対応しない。
【0061】
特徴マップ45が画像データ41と相似である場合、特徴マップ45の高さ方向に並ぶ特徴ブロックの個数は、画像データ41の高さ方向に並ぶ画像ブロックの個数と同じである。また、特徴マップ45の幅方向に並ぶ特徴ブロックの個数は、画像データ41の幅方向に並ぶ画像ブロックの個数と同じである。特徴マップ45が画像データ41より小さい場合、特徴ブロックのサイズ、すなわち、特徴ブロック1つに含まれる特徴量の個数は、画像ブロックのサイズ、すなわち、画像ブロック1つに含まれる画素の個数より小さい。
【0062】
画像ブロックの個数および特徴ブロックの個数は、事前に決定される。画像ブロックに含まれる画素の座標は、画像データ41での当該画像ブロックの位置と画像ブロック1つのサイズとから算出できる。また、特徴ブロックに含まれる特徴量の座標は、特徴マップ45での当該特徴ブロックの位置と特徴ブロック1つのサイズとから算出できる。
【0063】
前段モデル61が、画像ブロックまたは特徴ブロックの並べ替えを行わない場合、複数の画像ブロックと複数の特徴ブロックとの間で相互の位置関係が保存される。前段モデル61が畳み込み層およびプーリング層のみ含む畳み込みニューラルネットワークである場合、このような位置関係が保存される。例えば、特徴マップ45の左上の特徴ブロックf1が、画像データ41の左上の画像ブロックb1と対応する。また、特徴ブロックf1の右に隣接する特徴ブロックf2が、画像ブロックb1の右に隣接する画像ブロックb2と対応する。また、特徴ブロックf1の下に隣接する特徴ブロックf6が、画像ブロックb1の下に隣接する画像ブロックb6と対応する。
【0064】
ただし、前段モデル61が、後述するように画像ブロックまたは特徴ブロックの並べ替えを行う場合、上記のような位置関係が保存されないことがある。
図7の例では、特徴ブロックf1は画像ブロックb10と対応し、特徴ブロックf2は画像ブロックb12と対応し、特徴ブロックf6は画像ブロックb19と対応する。また、画像ブロックb13は特徴ブロックf17と対応し、画像ブロックb18は特徴ブロックf5と対応し、画像ブロックb23は特徴ブロックf10と対応する。
【0065】
クラウドサーバ33は、画像データ41からの画像領域の選択を画像ブロック単位で行い、特徴マップ45からの特徴量の抽出を特徴ブロック単位で行う。クラウドサーバ33は、後段モデル62によって境界ボックスが特定されると、画像データ41の中から、境界ボックスと重なる画像ブロックおよび境界ボックスの内側にある画像ブロックを選択する。クラウドサーバ33は、座標変換関数47に基づいて、選択した画像ブロックに対応する特徴ブロックを特定し、特定した特徴ブロックを特徴マップ45から抽出する。
【0066】
例えば、後段モデル62は、人を含む画像領域として、画像ブロックb13,b18,b23と重なる境界ボックスを特定する。すると、クラウドサーバ33は、境界ボックスの座標と各画像ブロックの座標とを比較して、画像データ41から画像ブロックb13,b18,b23を選択する。クラウドサーバ33は、座標変換関数47を参照して、画像ブロックb13,b18,b23に対応する特徴ブロックf5,f10,f17を特定し、特徴マップ45から特徴ブロックf5,f10,f17を抽出する。クラウドサーバ33は、画像ブロックb13,b18,b23の並び方に合わせて特徴ブロックf5,f10,f17を並べて、部分特徴マップ46を生成する。
【0067】
次に、座標変換関数47を作成するにあたって考慮する前段モデル61のモデル構造について説明する。前段モデル61は、プーリング層や畳み込み層を含んでもよい。プーリング層や畳み込み層は、特徴マップのテンソル構造を維持する。一方、前段モデル61は、全結合層を含まない。全結合層は、特徴マップのテンソル構造を失わせる。ただし、前段モデル61は、画像ブロックまたは特徴ブロックを並べ替える「パッチ化」を行ってもよい。パッチ化が行われない場合、特徴マップ45は画像データ41と相似であり、特徴ブロックの相対位置と画像ブロックの相対位置とが一致する。一方、パッチ化が行われる場合、特徴マップ45は画像データ41と相似でないことがあり、特徴ブロックの相対位置と画像ブロックの相対位置とが一致しないことがある。
【0068】
図8は、プーリング層のデータ変換例を示す図である。
プーリング層は、特徴マップ71を特徴マップ72に変換する。特徴マップ71は、4×4=16個の特徴量を含む。プーリング層は、特徴マップ71の中の2×2や3×3などの矩形の小領域を、特徴マップ72の1つの特徴量に変換する。2×2の場合、特徴マップ72の一辺の長さは特徴マップ71の2分の1になる。3×3の場合、特徴マップ72の一辺の長さは特徴マップ71の3分の1になる。
【0069】
プーリング演算には、最大値プーリングと平均値プーリングとがある。最大値プーリングは、小領域に含まれる特徴量の最大値を選択するプーリング演算である。平均値プーリングは、小領域に含まれる特徴量の平均値を算出するプーリング演算である。
図8の例では、プーリング層は2×2の最大値プーリングを行っている。
【0070】
プーリング層は、特徴マップ71に含まれる座標(0,0),(0,1),(1,0),(1,1)の特徴量の中から最大値を選択し、特徴マップ72の座標(0,0)の特徴量とする。また、プーリング層は、特徴マップ71に含まれる座標(0,2),(0,3),(1,2),(1,3)の特徴量の中から最大値を選択し、特徴マップ72の座標(0,1)の特徴量とする。また、プーリング層は、特徴マップ71に含まれる座標(2,0),(2,1),(3,0),(3,1)の特徴量の中から最大値を選択し、特徴マップ72の座標(1,0)の特徴量とする。また、プーリング層は、特徴マップ71に含まれる座標(2,2),(2,3),(3,2),(3,3)の特徴量の中から最大値を選択し、特徴マップ72の座標(1,1)の特徴量とする。
【0071】
図9は、畳み込み層のデータ変換例を示す図である。
畳み込み層は、特徴マップ73を、カーネル74を用いて特徴マップ75に変換する。特徴マップ73は、6×6=36個の特徴量を含む。カーネル74は、3×3や5×5などの係数行列である。カーネル74に含まれる係数は、機械学習によって訓練されるパラメータである。畳み込み層は、カーネル74を特徴マップ73に重ね合わせ、重なった特徴マップ73の特徴量とカーネル74の係数との積を算出して合算する積和演算を行う。算出された積和値が、特徴マップ75の1つの特徴量になる。畳み込み層は、特徴マップ73上で「ストライド」ずつカーネル74をシフトしながら積和演算を繰り返す。ストライドは、例えば、1、2または3である。
【0072】
ストライドが1である場合、特徴マップ75の一辺の長さは、特徴マップ73の一辺の長さからカーネル74の一辺の長さを引いて1を足した値である。ただし、畳み込み層は、特徴マップ73の周囲にパッドを付加するパディングを行うことで、特徴マップ75のサイズを特徴マップ73と一致させることがある。ストライドが2である場合、特徴マップ75の一辺の長さは、特徴マップ73の約2分の1になる。ストライドが3である場合、特徴マップ75の一辺の長さは、特徴マップ73の約3分の1になる。
【0073】
図9の例では、ストライドは1であり、パディングはなしである。例えば、畳み込み層は、特徴マップ73の座標(0,0),(2,2)で特定される3×3の領域とカーネル74とから、特徴マップ75の座標(0,0)の特徴量を算出する。また、畳み込み層は、特徴マップ73の座標(0,1),(2,3)で特定される3×3の領域とカーネル74とから、特徴マップ75の座標(0,1)の特徴量を算出する。また、畳み込み層は、特徴マップ73の座標(1,0),(3,2)で特定される3×3の領域とカーネル74とから、特徴マップ75の座標(1,0)の特徴量を算出する。
【0074】
畳み込み層は、同一の特徴マップに対して異なるカーネルを適用することで、複数のチャネルを含む特徴マップを生成することがある。よって、出力の特徴マップのチャネル数が、入力の特徴マップのチャネル数よりも多いことがある。
【0075】
VGG16(Visual Geometry Group 16)と呼ばれる機械学習モデルは、複数の畳み込み層および複数のプーリング層を含む。VGG16は、最後尾に数個の全結合層を含むものの、それより前には全結合を含まない。そこで、VGG16の全結合層より前の部分を、前段モデル61として使用することが可能である。
【0076】
図10は、画像ブロックの並び替え例を示す図である。
ある前段モデルは、複数の画像ブロックまたは複数の特徴ブロックを、一定の方法で並び替えるパッチ化を行うことがある。例えば、前段モデルは、300×450の画像データ76を、それぞれ150×150の画像ブロックb1,b2,b3,b4,b5,b6に分割する。前段モデルは、画像ブロックb1,b2,b3,b4,b5,b6をシーケンシャルに並べることで、150×900の画像データ77を生成する。前段モデルは、画像データ77から、畳み込み層やプーリング層などのニューラルネットワークのレイヤを通じて、画像データ77と相似の特徴マップを生成する。
【0077】
複数の画像ブロックまたは複数の特徴ブロックを並べ替えても、個々の特徴ブロックのテンソル構造は維持され、近接する少数の画素値から1つの特徴量が算出されるという関係が維持される。そのため、1つの特徴ブロックが1つの画像ブロックに対応するという一対一関係が維持される。よって、前段モデルはパッチ化が許容される。
【0078】
DETR(Detection Transformer)と呼ばれる機械学習モデルは、畳み込みニューラルネットワークが出力する特徴マップを直線化してトランスフォーマエンコーダに入力する。DETRは、平面に並んだn×m個の特徴ベクトルを、一直線に並んだ1×nm個の特徴ベクトルに並び替える。前段モデルは、DETRのように、その内部において複数の特徴ブロックを並び替えることが許容される。
【0079】
次に、前段モデル61および後段モデル62,63の例を説明する。
図11は、前段モデルの構造例を示す図である。
一例として、SSD(Single Shot Multibox Detector)と呼ばれる機械学習モデルの前半を前段モデル61として使用し、SSDの後半を後段モデル62,63として使用する場合を説明する。前段モデル61はSSDのベースネットワークに相当し、後段モデル62,63はSSDの追加特徴層に相当する。後段モデル62,63のモデル構造は同一である。ただし、後段モデル62は人を検出するように訓練され、後段モデル63は姿勢を予測するように訓練される。よって、後段モデル62,63のパラメータ値は異なる。
【0080】
前段モデル61は、畳み込み層141a,141b,142a,142b,143a,143b,143c,144a,144b,144c,145a,145b,145c,146,147を含む。また、前段モデル61は、最大値プーリング層141c,142c,143d,144d,145dを含む。
【0081】
畳み込み層141aは、画像データ41を受け付け、畳み込み演算により画像データ41を特徴マップに変換する。畳み込み層141bは、畳み込み演算により、畳み込み層141aの特徴マップを別の特徴マップに変換する。最大値プーリング層141cは、最大値プーリングにより、畳み込み層141bの特徴マップを別の特徴マップに変換する。畳み込み層142aは、畳み込み演算により、最大値プーリング層141cの特徴マップを別の特徴マップに変換する。畳み込み層142bは、畳み込み演算により、畳み込み層142aの特徴マップを別の特徴マップに変換する。最大値プーリング層142cは、最大値プーリングにより、畳み込み層142bの特徴マップを別の特徴マップに変換する。
【0082】
畳み込み層143aは、畳み込み演算により、最大値プーリング層142cの特徴マップを別の特徴マップに変換する。畳み込み層143bは、畳み込み演算により、畳み込み層143aの特徴マップを別の特徴マップに変換する。畳み込み層143cは、畳み込み演算により、畳み込み層143bの特徴マップを別の特徴マップに変換する。最大値プーリング層143dは、最大値プーリングにより、畳み込み層143cの特徴マップを別の特徴マップに変換する。
【0083】
畳み込み層144aは、畳み込み演算により、最大値プーリング層143dの特徴マップを別の特徴マップに変換する。畳み込み層144bは、畳み込み演算により、畳み込み層144aの特徴マップを別の特徴マップに変換する。畳み込み層144cは、畳み込み演算により、畳み込み層144bの特徴マップを別の特徴マップに変換する。畳み込み層144cは、38×38の特徴マップを出力する。最大値プーリング層144dは、最大値プーリングにより、畳み込み層144cの特徴マップを別の特徴マップに変換する。
【0084】
畳み込み層145aは、畳み込み演算により、最大値プーリング層144dの特徴マップを別の特徴マップに変換する。畳み込み層145bは、畳み込み演算により、畳み込み層145aの特徴マップを別の特徴マップに変換する。畳み込み層145cは、畳み込み演算により、畳み込み層145bの特徴マップを別の特徴マップに変換する。最大値プーリング層145dは、最大値プーリングにより、畳み込み層145cの特徴マップを別の特徴マップに変換する。
【0085】
畳み込み層146は、畳み込み演算により、最大値プーリング層145dの特徴マップを別の特徴マップに変換する。畳み込み層147は、畳み込み演算により、畳み込み層146の特徴マップを別の特徴マップに変換する。畳み込み層147は、19×19の特徴マップを出力する。前段モデル61は、畳み込み層144cが生成する38×38の特徴マップと、畳み込み層147が生成する19×19の特徴マップとを出力する。
【0086】
図12は、後段モデルの構造例を示す図である。
後段モデル62は、畳み込み層148a,148b,149a,149b,150a,150b,151a,151bおよびクラス判定部152を含む。後段モデル62は、これら畳み込み層の間に1以上のプーリング層を含んでもよい。後段モデル63のモデル構造が、後段モデル62と同じであってもよい。
【0087】
畳み込み層148aは、畳み込み層147が出力した特徴マップを受け付け、畳み込み演算により当該特徴マップを別の特徴マップに変換する。ただし、後段モデル63には、畳み込み層147が出力した特徴マップの一部分が入力される。畳み込み層148bは、畳み込み演算により、畳み込み層148aの特徴マップを別の特徴マップに変換する。畳み込み層148bは、10×10の特徴マップを出力する。畳み込み層149aは、畳み込み演算により、畳み込み層148bの特徴マップを別の特徴マップに変換する。畳み込み層149bは、畳み込み演算により、畳み込み層149aの特徴マップを別の特徴マップに変換する。畳み込み層149bは、5×5の特徴マップを出力する。
【0088】
畳み込み層150aは、畳み込み演算により、畳み込み層149bの特徴マップを別の特徴マップに変換する。畳み込み層150bは、畳み込み演算により畳み込み層150aの特徴マップを別の特徴マップに変換する。畳み込み層150bは、3×3の特徴マップを出力する。畳み込み層151aは、畳み込み演算により、畳み込み層150bの特徴マップを別の特徴マップに変換する。畳み込み層151bは、畳み込み演算により、畳み込み層151aの特徴マップを別の特徴マップに変換する。畳み込み層151bは、1×1の特徴マップを出力する。
【0089】
クラス判定部152は、畳み込み層144c,147,148b,149b,150b,151bが出力した異なるサイズの特徴マップを取得する。ただし、後段モデル63には、畳み込み層144c,147が出力した特徴マップの一部分が入力される。クラス判定部152は、取得した特徴マップを用いて、複数のクラスそれぞれの確率を算出する。クラス判定部152は、1以上の全結合層を含んでもよい。
【0090】
後段モデル62の場合、クラス判定部152は、サイズの異なる複数の境界ボックスの候補それぞれに対して確率を算出する。これにより、例えば、確率が閾値を超える境界ボックスが人を囲む境界ボックスと判断され、その境界ボックスの座標が出力される。後段モデル63の場合、クラス判定部152は、複数の姿勢の候補それぞれに対して確率を算出する。これにより、例えば、確率が閾値を超える姿勢が選択される。
【0091】
前段モデル61および後段モデル62,63は、訓練データを用いて機械学習によって訓練される。以下の説明では、クラウドサーバ34が機械学習を行い、前段モデル61をエッジサーバ32に配置し、後段モデル62,63をクラウドサーバ33に配置するものと仮定する。他の情報処理装置が機械学習を行ってもよい。
【0092】
クラウドサーバ34は、画像データと正解の境界ボックスを示す位置情報と正解の姿勢を示す姿勢情報とを、複数組取得する。画像データは入力データに相当し、位置情報および姿勢情報は教師データに相当する。クラウドサーバ34は、まず前段モデル61および後段モデル62をチューニングし、その後に後段モデル63をチューニングする。
【0093】
クラウドサーバ34は、画像データを前段モデル61に入力して特徴マップを生成し、その特徴マップを後段モデル62に入力して位置情報を推論する。クラウドサーバ34は、推論された位置情報と正解の位置情報との誤差を算出し、誤差逆伝播法により、前段モデル61および後段モデル62に含まれるパラメータ値を更新する。クラウドサーバ34は、画像データの入力とパラメータ値の更新を繰り返し、前段モデル61および後段モデル62のパラメータ値を最適化する。これにより、前段モデル61および後段モデル62が、画像データの中から人を含む画像領域を検出するようにチューニングされる。
【0094】
次に、クラウドサーバ34は、訓練済みの前段モデル61に画像データを入力して特徴マップを生成する。クラウドサーバ34は、その特徴マップを後段モデル63に入力して姿勢情報を推論する。クラウドサーバ34は、推論された姿勢情報と正解の姿勢情報との誤差を算出し、誤差逆伝播法により、後段モデル63に含まれるパラメータ値を更新する。クラウドサーバ34は、特徴マップの入力とパラメータ値の更新を繰り返し、後段モデル63のパラメータ値を最適化する。これにより、訓練済みの前段モデル61の出力を前提として、後段モデル63が人の姿勢を予測するようにチューニングされる。ただし、上記の機械学習の手順は一例であり、他の手順によって機械学習を行ってもよい。
【0095】
次に、エッジサーバ32およびクラウドサーバ33,34の機能について説明する。
図13は、サーバ装置の機能例を示すブロック図である。
エッジサーバ32は、モデル記憶部121、関数記憶部122、関数送信部131、画像受信部132および特徴抽出部133を有する。モデル記憶部121および関数記憶部122は、例えば、RAMまたはHDDを用いて実装される。関数送信部131、画像受信部132および特徴抽出部133は、例えば、CPUまたはGPUとプログラムと通信インタフェースとを用いて実装される。
【0096】
モデル記憶部121は、訓練済みの前段モデル61を記憶する。前段モデル61は、ユーザによりエッジサーバ32に保存されてもよく、他の情報処理装置から転送されてもよい。関数記憶部122は、座標変換関数47を記憶する。座標変換関数47は、ユーザによりエッジサーバ32に保存されてもよく、他の情報処理装置から転送されてもよい。
【0097】
関数送信部131は、監視カメラ31の画像データの分析に使用されるクラウドサーバが決定されると、画像データの分析を開始する前に、関数記憶部122に記憶された座標変換関数47を決定されたクラウドサーバに送信する。ここでは、関数送信部131は、座標変換関数47をクラウドサーバ33に送信する。
【0098】
画像受信部132は、監視カメラ31から画像データを継続的に受信する。例えば、画像受信部132は、一定のフレームレートで監視カメラ31から画像フレームを受信する。特徴抽出部133は、画像受信部132が受信した画像データを、モデル記憶部121に記憶された前段モデル61に入力し、特徴マップを生成する。特徴抽出部133は、生成された特徴マップをクラウドサーバ33に送信する。
【0099】
クラウドサーバ33は、モデル記憶部123、関数受信部134、特徴受信部135、入力データ生成部136および推論部137を有する。モデル記憶部123は、例えば、RAM102またはHDD103を用いて実装される。関数受信部134、特徴受信部135、入力データ生成部136および推論部137は、例えば、CPUまたはGPUとプログラムと通信インタフェースとを用いて実装される。
【0100】
モデル記憶部123は、訓練済みの後段モデル62,63を記憶する。後段モデル62,63は、ユーザによりクラウドサーバ33に保存されてもよく、他の情報処理装置からクラウドサーバ33に転送されてもよい。
【0101】
関数受信部134は、画像データの分析の開始前に、エッジサーバ32から座標変換関数47を受信する。関数受信部134は、受信した座標変換関数47を、RAM102などの揮発性メモリまたはHDD103などの不揮発性ストレージに保存する。特徴受信部135は、エッジサーバ32から特徴マップを継続的に受信する。例えば、特徴受信部135は、一定のフレームレートで画像フレームに対応する特徴マップを受信する。
【0102】
入力データ生成部136は、特徴受信部135が受信した特徴マップから、後段モデル62,63それぞれに入力される入力データを生成する。後段モデル62に入力される入力データは、エッジサーバ32から受信された特徴マップそのものである。後段モデル63に入力される入力データは、エッジサーバ32から受信された特徴マップのうち、後段モデル62が検出した画像領域を包含する画像ブロックに対応する特徴ブロックである。人を含む画像領域を包含する画像ブロックに対応する特徴ブロックは、関数受信部134が受信した座標変換関数47を用いて特定される。
【0103】
推論部137は、モデル記憶部123に記憶された後段モデル62,63を用いて、人検出および姿勢判定をそれぞれ実行する。推論部137は、入力データ生成部136が生成した入力データを後段モデル62に入力し、人を含む画像領域を示す位置情報42を生成する。位置情報42が生成された後、推論部137は、入力データ生成部136が生成した入力データを後段モデル63に入力し、人の姿勢を示す姿勢情報44を生成する。推論部137は、位置情報42および姿勢情報44を出力する。推論部137は、位置情報42および姿勢情報44を不揮発性ストレージに保存してもよいし、表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。
【0104】
クラウドサーバ34は、訓練データ記憶部124およびモデル訓練部138を有する。訓練データ記憶部124は、例えば、RAMまたはHDDを用いて実装される。モデル訓練部138は、例えば、CPUまたはGPUとプログラムとを用いて実装される。
【0105】
訓練データ記憶部124は、機械学習に使用される複数の画像データを記憶する。各画像データには、正解の位置情報および正解の姿勢情報が付与されている。正解の位置情報および正解の姿勢情報は、例えば、ユーザによって付与される。
【0106】
モデル訓練部138は、訓練データ記憶部124に記憶された画像データを用いて、前段モデル61および後段モデル62,63を訓練する。まず、モデル訓練部138は、画像データから位置情報が推論されるように、前段モデル61および後段モデル62を訓練する。これにより、後段モデル62が人を含む画像領域を検出するようにチューニングされる。その後、モデル訓練部138は、訓練済みの前段モデル61が生成する特徴マップから姿勢情報が推論されるように、後段モデル63を訓練する。これにより、後段モデル63が人の姿勢を予測するようにチューニングされる。
【0107】
モデル訓練部138は、訓練済みの前段モデル61および後段モデル62,63を出力する。モデル訓練部138は、前段モデル61および後段モデル62,63を不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、他の情報処理装置に送信してもよい。例えば、モデル訓練部138は、前段モデル61をエッジサーバ32に送信し、後段モデル62,63をクラウドサーバ33に送信する。
【0108】
図14は、機械学習用データの例を示す図である。
訓練データ記憶部124は、画像データ81を記憶する。また、訓練データ記憶部124は、画像データ81と対応付けて位置情報82および姿勢情報83を記憶する。位置情報82は、人を含む画像領域を囲む境界ボックス84の座標を示す。例えば、位置情報82は、境界ボックス84の左上の座標および右下の座標を示す。姿勢情報83は、境界ボックス84の中に含まれる人の姿勢を示す。
【0109】
図15は、機械学習の手順例を示すフローチャートである。
(S10)モデル訓練部138は、画像データと正解の境界ボックスを示す位置情報とを訓練データ記憶部124から読み出し、画像データと位置情報のペアを複数組含むデータセットを、人検出用の訓練データとして生成する。
【0110】
(S11)モデル訓練部138は、ステップS10の訓練データを用いて、前段モデルと第1後段モデルを訓練する。このとき、モデル訓練部138は、画像データを前段モデルに入力して特徴マップを生成し、特徴マップを第1後段モデルに入力して位置情報を予測する。モデル訓練部138は、位置情報の予測と正解との間の誤差を算出し、誤差が小さくなるように前段モデルおよび第1後段モデルのパラメータ値を更新する。
【0111】
(S12)モデル訓練部138は、ステップS10の訓練データに含まれる画像データを訓練済みの前段モデルに入力して、特徴マップを生成する。
(S13)モデル訓練部138は、画像データの中から、ステップS10の訓練データに含まれる位置情報が示す境界ボックスを包含する画像ブロックを特定する。
【0112】
(S14)モデル訓練部138は、座標変換関数を用いて、ステップS12の特徴マップの中から、ステップS13の画像ブロックに対応する特徴ブロックを抽出し、抽出された特徴ブロックを並べた部分特徴マップを生成する。このとき、モデル訓練部138は、第2後段モデルの入力に合わせて部分特徴マップを変形してもよい。
【0113】
(S15)モデル訓練部138は、正解の姿勢を示す姿勢情報を訓練データ記憶部124から読み出し、ステップS14の部分特徴マップと姿勢情報のペアを複数組含むデータセットを、姿勢予測用の訓練データとして生成する。
【0114】
(S16)モデル訓練部138は、ステップS15の訓練データを用いて、第2後段モデルを訓練する。このとき、モデル訓練部138は、部分特徴マップを第2後段モデルに入力して姿勢情報を予測する。モデル訓練部138は、姿勢情報の予測と正解との間の誤差を算出し、誤差が小さくなるように第2後段モデルのパラメータ値を更新する。
【0115】
(S17)モデル訓練部138は、訓練済みの前段モデル、第1後段モデルおよび第2後段モデルを出力する。例えば、モデル訓練部138は、前段モデルをエッジサーバ32に配置し、第1後段モデルおよび第2後段モデルをクラウドサーバ33に配置する。モデル訓練部138は、訓練済みの前段モデル、第1後段モデルおよび第2後段モデルを、不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、エッジサーバ32およびクラウドサーバ33以外の情報処理装置に送信してもよい。
【0116】
図16は、画像認識の手順例を示すフローチャートである。
(S20)関数送信部131は、関数記憶部122から座標変換関数を読み出してクラウドサーバ33に送信する。関数受信部134は、受信した座標変換関数を保存する。
【0117】
(S21)画像受信部132は、監視カメラ31から画像データを受信する。
(S22)特徴抽出部133は、モデル記憶部121に記憶された前段モデルに画像データを入力して、画像データ全体に対応する特徴マップを生成する。
【0118】
(S23)特徴抽出部133は、特徴マップをクラウドサーバ33に送信する。
(S24)特徴受信部135は、エッジサーバ32から特徴マップを受信する。推論部137は、モデル記憶部123に記憶された第1後段モデルに特徴マップを入力して、人を含む画像領域を囲む境界ボックスを示す位置情報を生成する。
【0119】
(S25)入力データ生成部136は、画像データの中から、位置情報が示す境界ボックスを包含する画像ブロックを特定する。
(S26)入力データ生成部136は、座標変換関数を用いて、特徴マップの中から、ステップS25の画像ブロックに対応する特徴ブロックを抽出し、抽出された特徴ブロックを並べた部分特徴マップを生成する。このとき、入力データ生成部136は、第2後段モデルの入力に合わせて部分特徴マップを変形してもよい。
【0120】
(S27)推論部137は、モデル記憶部123に記憶された第2後段モデルに部分特徴マップを入力して、境界ボックス内の人の姿勢を示す姿勢情報を生成する。
(S28)推論部137は、ステップS24の位置情報およびステップS27の姿勢情報を出力する。推論部137は、位置情報および姿勢情報を不揮発性ストレージに保存してもよいし、表示装置に表示してもよいし、他の情報処理装置に送信してもよい。
【0121】
以上説明したように、第2の実施の形態の情報処理システムは、監視カメラ31の画像データに対して、複数の機械学習モデルを用いて異なる推論目的の推論処理を行う。これにより、画像データが多面的に分析され、分析精度が向上する。また、監視カメラ31に近いエッジサーバ32が、画像データからの特徴抽出を行い、演算能力の高いクラウドサーバが、抽出された特徴量を用いて推論処理を行う。これにより、情報処理システムは、画像データの分析のために様々なクラウドサーバを使い分けることができる。
【0122】
また、情報処理システムは、ある機械学習モデルを用いて、画像データから人を含む画像領域を検出し、別の機械学習モデルを用いて、検出された画像領域に含まれる人の姿勢を予測する。後者の機械学習モデルは、絞り込まれた画像領域に対して推論処理を行うため、姿勢予測の精度が向上する。また、情報処理システムは、人検出と姿勢予測とで前段モデルを共通化し、人検出で抽出された特徴量を再利用して姿勢予測を行う。これにより、姿勢予測における特徴抽出が省略されて計算量が減少し、負荷が低下する。
【0123】
また、情報処理システムは、前段モデルのモデル構造に基づく座標変換関数を参照して、人検出で抽出された特徴量のうち姿勢予測に再利用する特徴量を判定する。これにより、検出された画像領域に対応する適切な特徴量が再利用される。また、情報処理システムは、前段モデルおよび第1後段モデルを、人を含む画像領域を検出するようにチューニングし、訓練済みの前段モデルの出力を前提として、第2後段モデルを人の姿勢を予測するようチューニングする。これにより、高品質な前段モデル、第1後段モデルおよび第2後段モデルが生成され、人検出および姿勢予測の推論精度が向上する。
【符号の説明】
【0124】
10 情報処理装置
11 記憶部
12 処理部
13 画像データ
14,18 特徴データ
15,19 機械学習モデル
16 画像領域
17 座標対応情報