【解決手段】情報処理装置10は、記憶部20、画像合成部30、結果処理部40を備える。記憶部20は、切出領域22a,23aを定義した合成定義情報21と、1または複数の画像22,23を記憶する。画像合成部30は、記憶部20から合成定義情報21を読み出し、記憶部20から画像22,23を取得し、合成定義情報21に基づき画像22,23から部分を抽出した複数の切出領域22a,23aを含む合成画像24を生成し、合成画像24を推論処理部50に送信する。結果処理部40は、合成画像24に対して推論処理部50が推論処理を実行した結果である推論結果60を受信し、合成定義情報21に基づき推論結果60を画像22,23の座標に還元して結果情報を求める。
記憶部から切出領域を定義した合成定義情報を読み出し、前記記憶部から画像を取得し、前記合成定義情報に基づき前記画像から部分を抽出した複数の切出領域を含む合成画像を生成し、前記合成画像を推論処理部に送信し、
前記合成画像に対して前記推論処理部が推論処理を実行した結果である推論結果を受信し、前記合成定義情報に基づき前記推論結果を前記画像の座標に還元して結果情報を求める、
処理を情報処理装置に実行させるプログラム。
【発明を実施するための形態】
【0013】
以下、本実施の形態について図面を参照して説明する。
[第1の実施形態]
図1は、第1の実施形態の情報処理システムの一例を説明するための図である。
図1に示す情報処理システム1は、情報処理装置10と、推論処理部50と、を備える。
【0014】
情報処理装置10は、記憶部20と画像合成部30と結果処理部40とを備える。記憶部20は、例えば、RAM(Random Access Memory)等の情報処理装置10が備える記憶装置として実現される。なお、記憶部20は、RAM等の揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリ等の不揮発性記憶装置でもよい。
【0015】
画像合成部30と結果処理部40は、情報処理装置10が備えるプロセッサが実行するプログラムである。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。なお、プロセッサは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA等を含み得る。プロセッサは、RAM等のメモリ(例えば、記憶部20)に記憶されたプログラムを実行する。
【0016】
記憶部20は、合成定義情報21と、1または複数の画像22,23とを記憶する。合成定義情報21は、画像合成部30が切出領域を含む合成画像24を生成するために用いる情報である。また、合成定義情報21は、結果処理部40が合成画像24に対して推論処理を実行した結果である推論結果を分離するために用いる情報でもある。
【0017】
合成定義情報21は、少なくとも切出領域22a,23aが定義された情報である。例えば、合成定義情報21は、画像22,23を識別する画像識別情報と、画像22,23における切出領域22a,23aの座標と、画像22,23における切出領域22a,23aの大きさ(縦、横のサイズ)を含む情報である。更に、合成定義情報21は、合成画像24に含まれる切出領域22a,23aの座標を含めることもできる。画像22,23は、監視カメラ等が撮影した画像データ(以下、単に画像ともいう)である。記憶部20には、撮影された画像22,23が随時蓄積される。切出領域22a,23aは、画像22,23において推論処理を行う対象となる領域である。
【0018】
画像合成部30は、記憶部20から画像22を取得し、画像22の部分である切出領域22a(第1の切出領域)を抽出する。画像合成部30は、記憶部20から画像23を取得し、画像23の部分である切出領域23a(第2の切出領域)を抽出する。画像合成部30は、切出領域22a,23aを含む合成画像24を生成する。画像合成部30は、合成定義情報21に基づいて、画像22,23から切出領域22a,23aを抽出し、合成画像24を生成する。画像合成部30は、生成した合成画像24を推論処理部50に送信する。
【0019】
なお、画像合成部30が取得する画像は、画像22,23の2枚(2フレーム)に限るものではなく、1枚(1フレーム)のみでもよいし、3枚以上であってもよい。また、画像合成部30は、画像22,23ごとに1箇所の切出領域22a,23aを抽出してもよいし、1枚の画像から複数個所の切出領域を抽出してもよい。
【0020】
推論処理部50は、受信した合成画像24に対して推論処理を実行するプログラムである。推論処理部50は、合成画像24に限らず、画像22,23に対しても推論処理を実行することができる。なお、推論処理部50は、情報処理装置10が備えるプロセッサが実行してもよいし、情報処理装置10とは異なる他の装置が実行してもよい。
【0021】
推論処理部50は、合成画像24に対して、人物検出処理、人物特定処理、特徴抽出処理を含む推論処理を行い、合成画像24に含まれる人物を検出して、人物を検出した座標、人物の特徴情報を推論結果として求める。推論処理部50は、合成画像24に対して推論処理を実行し、実行した結果である推論結果60を結果処理部40に送信する。
【0022】
結果処理部40は、合成定義情報21に基づき、推論結果60を合成画像24の生成元の画像の座標に還元して結果情報を求める。また、結果処理部40は、複数の画像22,23から切出領域22a,23aを抽出し、合成画像24を生成した場合、合成画像24に基づき得られた推論結果60を、画像22,23ごとに分離する。結果処理部40は、推論結果60のうち合成画像24に含まれる切出領域22aの領域から得られたものについて、切出領域22aの元の画像である画像22に対する分離結果(第1の分離結果)とする。結果処理部40は、推論結果60のうち合成画像24に含まれる切出領域23aの領域から得られたものについて、切出領域23aの元のである画像23に対する分離結果(第2の分離結果)とする。
【0023】
結果処理部40は、分離結果を画像22,23ごとの座標に還元して結果情報を求める。例えば、結果処理部40は、第1の分離結果を合成画像24の座標から画像22の座標に還元して画像22に対する結果情報(第1の結果情報)を求める。また、結果処理部40は、第2の分離結果を合成画像24の座標から画像23の座標に還元して画像23に対する結果情報(第2の結果情報)を求める。
【0024】
結果画像22z,23zは、結果処理部40が求めた結果情報と画像22,23とを併せて表示した画像の一例である。結果画像22z,23zは、推論結果60を画像22,23ごとに分離し、合成画像24の座標から画像22,23の座標に座標を還元して求めた結果情報を、合成画像24を生成する元となった画像22,23に対して適用した一例である。
【0025】
このように、情報処理システム1において、画像22,23から推論処理を行う対象となる切出領域22a,23aを抽出し、1枚の合成画像24を生成し、合成画像24に対して推論処理を実行し、結果情報を求めることができる。これにより、情報処理システム1において、画像22,23それぞれに対して推論処理を実行した場合と同等の推論結果を、合成画像24に対する推論処理を実行することにより求めることができる。
【0026】
ここで、切出領域について補足説明をする。情報処理システム1は、店舗等の監視に適用するシステムであり、カメラで撮影された画像に基づき、人物の検出や特徴抽出を行い、不審者の判定を行う。このため、画像において、人間が立ち入ることのない場所(棚、壁等)が撮影された領域については、推論処理を実行する必要がない。言い換えると、推論処理部50が、推論処理を実行すべき対象は、画像のうち人物が含まれる領域(人物が映り込む領域)である。情報処理システム1において、推論処理を実行すべき対象の領域である切出領域を抽出して合成画像とし、合成画像に対して推論処理を実行することで、切出領域を抽出した元の画像に対して推論処理を実行した場合と同等の推論結果を得られる。
【0027】
こうして、情報処理システム1は、情報処理装置10の性能や推論処理の結果の精度を維持しつつ、画像に対して推論処理を実行する効率を高めることができる。また、合成定義情報21が、画像22,23を識別する画像識別情報と、画像22,23における切出領域22a,23aの座標と、画像22,23における切出領域22a,23aの大きさと、合成画像24に含まれる切出領域22a,23aの座標とを含む。これにより、情報処理システム1は、合成定義情報21を用いて推論処理を実行すべき対象の領域を抽出した合成画像24を生成でき、合成画像24に対して推論処理を実行できる。
【0028】
また、画像合成部30は、複数の画像22,23を取得し、画像22,23それぞれから少なくとも1以上の切出領域22a,23aを抽出して合成画像24を生成する。また結果処理部40は、推論結果60を複数の画像22,23ごとに分離した分離結果を生成し、分離結果それぞれに対して複数の画像22,23ごとの座標に還元して結果情報を求める。これにより、情報処理システム1は、1枚の合成画像24に対して推論処理を実行することで、画像22,23ごとに推論処理を実行した場合と同等の推論結果60を得ることができる。
【0029】
また、画像合成部30は、複数の画像22,23を取得し、画像22,23それぞれから少なくとも1以上の切出領域22a,23aを抽出して合成画像24を生成する際に、1枚の画像22と同じサイズの領域に含まれるように切出領域22a,23aそれぞれを配置して合成画像24を生成する。このように、情報処理システム1は、1以上の切出領域22a,23aを1枚の画像22と同じサイズの合成画像24に含めることで、1枚の画像22に対して推論処理を実行した場合と同様の処理で(推論処理を実行する対象の画像サイズの変更を行うことなく)推論結果を得られることができる。
【0030】
また、結果処理部40は、推論結果60のうち、合成画像24に含まれる切出領域22a,23a以外の領域に対する推論結果60を削除する。これにより、情報処理システム1は、推論結果60から推論処理を実行すべき対象の領域外における誤った判定の結果を削除し、推論結果60の精度を維持することができる。
【0031】
また、画像合成部30は、第1の画像(画像22)と第2の画像(画像23)それぞれから切出領域22a,23aを抽出して合成画像24を生成する場合であって、第1の画像を取得した時間から所定の時間内に第2の画像を取得できない場合、第1の画像から抽出した切出領域22aのみを含む合成画像24を生成し、推論処理部50に送信する。これにより、情報処理システム1は、取得した画像22に基づき合成画像24を生成し、推論処理部50に送信する際に、適切な処理速度を保つことができる。
【0032】
また、画像合成部は、第1の画像(画像22)から抽出した第1の切出領域(切出領域22a)と、第2の画像(画像23)から抽出した第2の切出領域(切出領域23a)とを含む合成画像24を生成する場合であって、第1の画像の解像度である第1の解像度が第2の画像の解像度である第2の解像度と異なる場合、第1の切出領域を第2の解像度に応じた倍率に変更し、倍率を変更した第1の切出領域と第2の切出領域とを含む合成画像24を生成する。また、結果処理部40は、推論結果60を、第1の切出領域を抽出した第1の画像に対する第1の分離結果と、第2の切出領域を抽出した第2の画像に対する第2の分離結果に分離し、第1の分離結果に対して第1の画像の座標に還元し、変更した倍率を還元して第1の結果情報を求め、第2の分離結果に対して第2の画像の座標に還元して第2の結果情報を求める。これにより、情報処理システム1は、画像22,23の解像度が異なる場合であっても、合成画像24を生成することができ、合成画像24に推論処理を実行することにより、画像22,23ごとに推論処理を実行した場合と同等の推論結果60を得ることができる。
【0033】
このように、情報処理システム1における情報処理装置10は、情報処理装置10の性能や推論処理の結果の精度を維持しつつ、画像に対して推論処理を実行する効率を高めることができる。
【0034】
[第2の実施形態]
次により具体的な実施形態として推論システムについて説明する。
図2は、第2の実施形態の推論システムの全体概要例を示す図である。
【0035】
推論システム100としては、例えば、小売店等におけるAI推論処理を用いた人物推定を行うシステム等がある。推論システム100は、画像データ(以下、単に画像ともいう)を収集するカメラ300−1〜300−nに近いエリアで、情報処理システム200を用いてデータの処理を行うことで、通信遅延等を抑止してリアルタイム性を確保した処理を実現してもよい。また、推論システム100は、カメラ300−1〜300−nが収集した画像データを記憶装置に蓄積し、ネットワークを介して記憶装置から処理対象のデータを取得して情報処理システム200においてデータの処理を実現してもよい。
【0036】
推論システム100は、情報処理システム200と、カメラ300−1〜300−nとを備える。なお、以下では、カメラ300−1〜300−nのうちの任意のカメラを指すときはカメラ300を用いることとする。情報処理システム200とカメラ300との間には、ハブが存在する構成であってもよいし、その他の機器を含む構成であってもよい。情報処理システム200は、第1の実施形態の情報処理システム1の一実施態様である。
【0037】
カメラ300は、画像データの収集・出力を行うデバイスであり、店舗等の各種施設や屋外(公園、道路等)に配置される。カメラ300は、例えば、店内の人間を撮影する防犯カメラや、道路を通過する乗物を撮影する監視カメラ等がある。
【0038】
情報処理システム200は、カメラ300が収集したデータを集約し、集約したデータを処理するシステムである。情報処理システム200は、AI推論処理や画像処理等を実行する高い演算性能を実現するコンピュータである。
【0039】
なお、情報処理システム200は、データの処理に用いる学習データの作成、提供等を行う装置や、画像データを蓄積した記憶装置とアクセスできるものとする。
【0040】
次に情報処理システムのハードウェア構成について説明する。
図3は、第2の実施形態の情報処理システムのハードウェア構成の一例を示す図である。
【0041】
図3に示す情報処理システム200は、PCIeブリッジコントローラ(中継装置ともいう)230と、プラットフォーム210,220−1〜220−6とを備える。プラットフォーム210は、第1の実施形態の情報処理装置10の一実施態様である。プラットフォーム210は、情報処理システム200の制御部およびGUI(Graphical User Interface)として機能するホストコンピュータであり、プラットフォーム220−1〜220−6は、AI推論処理や画像処理等を実行する演算部である。なお、プラットフォーム210,220−1〜220−6は、それぞれが異なるプラットフォームであってもよい。なお、以下では、プラットフォーム210,220−1〜220−6のうち任意のプラットフォームを指すときには符号を付与しないで用いることとする。
【0042】
プラットフォームは、PCIeブリッジコントローラ230に通信可能に接続されている。具体的には、プラットフォーム210は、2つのRC(Root Complex)を用いて(例えば、2つのPCIeインタフェース(接続部ともいう)をRCとして機能させて)PCIeブリッジコントローラ230に搭載されている2つのEP(End Point)と接続されている。EPは、拡張バスの末端機器として認識されるスレイブ側の接続部であり、RCは、EP側を末端機器として認識して拡張バスを介した通信を制御するマスター側の接続部である。
【0043】
プラットフォーム210は、ホストコンピュータとして機能するプラットフォームであるため、データの送受信量が大きくなることが想定されることから2つのRCを用いてPCIeブリッジコントローラ230と接続されている。このように2つのRCと2つのEPとが接続されているため、プラットフォーム210は、データの通信経路(即ち、いずれのRC−EP間で通信するか決定することで)を適切に振り分けることで広い通信帯域の通信を行うことができる。なお、プラットフォーム210において、2つのRCおよび2つのEPを接続する構成は一例であり、その他の個数であってもよい。
【0044】
プラットフォーム220−1〜220−6は、1つのRCを用いてPCIeブリッジコントローラ230に搭載されている1つのEPと接続されている。
【0045】
このように情報処理システム200においては、プラットフォームがホスト側として動作可能なRCとなり、PCIeブリッジコントローラ230がEPとなり、データ転送が行われる。
【0046】
プラットフォーム210は、プロセッサ211を備える。プラットフォーム220−1〜220−6は、プロセッサ221−1〜221−6をそれぞれ備える。なお、以下では、プロセッサ211,221−1〜221−6のうち任意のプロセッサを指すときには符号を付与しないで用いることとする。
【0047】
プロセッサは、それぞれ違うメーカ(またはベンダ)から提供されてもよい。例えば、プロセッサ221は、A社が提供するものであり、プロセッサ221−1は、B社が提供するものであり、プロセッサ221−2は、C社が提供するものであり、プロセッサ221−3は、D社が提供するものであるものとすることができる。また、プロセッサ221−4は、E社が提供するものであり、プロセッサ221−5は、F社が提供するものであり、プロセッサ221−6は、G社が提供するものであるものとすることができる。
【0048】
プロセッサは、搭載されたプラットフォームを統括的に制御する。プロセッサは、マルチプロセッサであってもよい。プロセッサは、例えば、CPU、MPU(Micro Processing Unit)、DSP、ASIC、またはPLD(Programmable Logic Device)である。また、プロセッサは、CPU、GPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0049】
PCIeブリッジコントローラ230は、拡張バス(例えば、各プラットフォームの拡張バスとして機能するバス)を有し、拡張バスを介した通信を中継する。
【0050】
次に、プラットフォームのハードウェア構成について説明する。
図4は、第2の実施形態のプラットフォームのハードウェア構成の一例を示す図である。
【0051】
プラットフォーム210は、プロセッサ211と、ディスプレイ212と、USB(Universal Serial Bus)インタフェース213と、イーサネット(Ethernet:登録商標)インタフェース214と、DIMM(Dual Inline Memory Module)215と、を備える。また、プラットフォーム210は、SSD(Solid State Drive)216と、HDD217と、TPM(Trusted Platform Module)218と、PCIeインタフェース219a,219bと、を備える。プラットフォーム210が有する各構成要素は、バスを介して接続している。
【0052】
プロセッサ211は、プラットフォーム210全体を統括的に制御する。ディスプレイ212は、各種の情報を表示する表示部として機能する。USBインタフェース213は、USBデバイスが接続可能であり、USBデバイスとプロセッサ211との通信を媒介可能である。なお、USBデバイスには、入力装置や記憶装置等がある。イーサネットインタフェース214は、イーサネットケーブルが接続可能であり、イーサネットケーブルを介した外部機器とプロセッサ211との通信を媒介可能である。
【0053】
DIMM215は、各種の情報を一時記憶可能なRAM等の揮発性の記憶媒体である。SSD216およびHDD217は、各種の情報を電源断後も記憶可能な不揮発性の記憶媒体である。SSD216およびHDD217は、プロセッサ211が実行する各種のプログラム等の各種の情報を記憶する。TPM218は、システムのセキュリティ機能を実現するモジュールである。PCIeインタフェース219a,219bは、拡張バスと接続するための通信インタフェース(即ち、接続インタフェース)である。情報処理システム200においては、PCIeインタフェース219a,219bは、PCIeブリッジコントローラ230と接続され、PCIeブリッジコントローラ230を介したプラットフォーム220−1〜220−6との通信を媒介する。なお、以下では、PCIeインタフェース219a,219bのうち任意のPCIeインタフェースを指すときにはPCIeインタフェース219を用いることとする。
【0054】
以上のハードウェア構成によってプラットフォーム210の処理機能が実現される。なお、プラットフォーム220−1〜220−6についても同様の構成により各プラットフォームで実行される処理機能を実現することができる。なお、以下では、プラットフォーム220−1〜220−6についても同様の構成を備えていることとし、プラットフォーム220−1〜220−6のプロセッサ以外の上記構成要素については上記と同様の符号を用いることとする。
【0055】
次にPCIeブリッジコントローラ230のハードウェア構成について説明する。
図5は、第2の実施形態のPCIeブリッジコントローラのハードウェア構成の一例を示す図である。
【0056】
PCIeブリッジコントローラ230は、8チャネルのEPとして機能する接続インタフェースを1チップ内に有する中継装置である。PCIeブリッジコントローラ230は、CPU231と、メモリ232と、インターコネクト233および複数のスロット(即ち、接続インタフェース)234−1〜234−8を備える。なお、以下では、スロット234−1〜234−8のうち任意のスロットを指すときにスロット234を用いることとする。
【0057】
スロット234−1〜234−8にはそれぞれPCIeの規格を満たすよう構成されたデバイスが接続される。情報処理システム200においては、スロット234−1,234−2にプラットフォーム210が接続され、スロット234−3〜234−8のそれぞれにプラットフォーム220−1〜220−6が接続される。このように、プラットフォーム210に対して2つのスロット234をアサインすることで、プラットフォーム210に広い通信帯域を用いた通信を行わせることを可能としている。
【0058】
なお、以下では、Slot#0にプラットフォーム210のPCIeインタフェース219aが接続され、Slot#1にプラットフォーム210のPCIeインタフェース219bが接続されているものとする。また、Slot#2にプラットフォーム220−1が接続され、Slot#3にプラットフォーム220−2が接続され、Slot#4にプラットフォーム220−3が接続されているものとする。また、Slot#5にプラットフォーム220−4が接続され、Slot#6にプラットフォーム220−5が接続され、Slot#7にプラットフォーム220−6が接続されているものとする。
【0059】
各スロット234は、内部バス(Internal Busともいう)を介してインターコネクト233にそれぞれ接続されている。また、インターコネクト233にはCPU231およびメモリ232が接続されている。これにより、各スロット234とCPU231およびメモリ232はインターコネクト233を介して相互に通信可能に接続されている。
【0060】
メモリ232は、例えば、ROM(Read Only Memory)およびRAMを含む記憶メモリ(物理メモリ)である。メモリ232のROMには、データ通信制御に係るソフトウェアプログラムやこのプログラム用のデータ類が書き込まれている。メモリ232上のソフトウェアプログラムは、CPU231に適宜読み込まれて実行される。また、メモリ232のRAMは、一次記憶メモリあるいはワーキングメモリとして利用される。
【0061】
CPU231は、PCIeブリッジコントローラ230全体を制御する。CPU231は、マルチプロセッサであってもよい。なお、CPU231に代えてMPU,DSP,ASIC,PLD,FPGAのいずれか一つが用いられてもよい。また、CPU231は、CPU,MPU,DSP,ASIC,PLD,FPGAのうちの2種類以上の要素の組み合わせであってもよい。
【0062】
そして、CPU231がメモリ232に格納されたソフトウェアプログラムを実行することで、PCIeブリッジコントローラ230におけるプラットフォーム間(またはプロセッサ間)のデータ転送(即ち、データの送受信)を実現する。
【0063】
PCIeブリッジコントローラ230は、プラットフォーム間のデータ転送を高速化するためにPCIeを用い、各プラットフォームに備えられるプロセッサをそれぞれRCとして動作させ、デバイスとして動作するEP間でデータ転送を実現している。
【0064】
具体的には、情報処理システム200においては、各プラットフォームのプロセッサを、データ転送インタフェースとしてPCIeのRCを動作させている。また、各プラットフォーム(またはプロセッサ)に対して、PCIeブリッジコントローラ230(例えば、各プラットフォームが接続されているスロット234)をEPとして動作させている。
【0065】
なお、PCIeブリッジコントローラ230をプロセッサに対してEPとして接続する手法としては、既知の種々の手法を用いて実現することができる。例えば、PCIeブリッジコントローラ230は、プラットフォームとの接続時に、EPとして機能することを示す信号を当該プロセッサに通知することで、EPとしてプロセッサと接続することができる。
【0066】
PCIeブリッジコントローラ230においてはEPtoEP(End Point to End Point)でデータをトンネリングさせて、複数のRCにデータを転送する。プロセッサ間の通信は、PCIeのトランザクションが発生したときに論理的に接続され、1つのプロセッサにデータ転送が集中しないときは、それぞれのプロセッサ間で並行してデータ転送できる。
【0067】
次に、情報処理システム200のソフトウェア構成について
図6を用いて説明する。
図6は、第2の実施形態の情報処理システムにおける各プラットフォームのソフトウェア構成の一例を示す図である。なお、
図6中においては、便宜上、プラットフォーム210,220−1,220−2のソフトウェア構成のみを図示する。なお、プラットフォーム220−1〜220−6は、同様の構成である。
【0068】
まずプラットフォーム210について説明する。プラットフォーム210は、アプリケーション210aと、ドライバ210cと、OS(Operating System)210eと、BIOS(Basic Input Output System)210fと、を有する。
【0069】
アプリケーション210aは、プラットフォーム210で行うOS210eが提供する機能を利用して各種処理を実行する応用ソフトウェアまたは応用プログラムである。アプリケーション210aは、OS210e上で動作する。プラットフォーム210は、アプリケーション210aの制御下で各種処理を行う。
【0070】
プラットフォーム210が有するアプリケーション210aとして、店舗監視プログラム210bがある。店舗監視プログラム210bは、例えば、推論システム100を適用した店舗においてカメラ300が撮影した画像データを用いて店舗を監視するプログラムである。店舗監視プログラム210bは、カメラ300が撮影した画像データを取得し、AI推論処理を実行した結果をディスプレイ212に出力する。
【0071】
また、店舗監視プログラム210bは、画像データをプラットフォーム210以外のプラットフォーム220−1,220−2,…に出力する前に、AI推論処理を実行する効率を高めるように画像データを加工する処理を行う。
【0072】
なお、プラットフォーム210は、アプリケーション210aとして店舗監視プログラム210bを実行するだけでなく、その他のアプリケーションプログラムも実行することが可能である。
【0073】
ドライバ210cは、プラットフォーム210に搭載されているハードウェア等をOS210eによって制御可能にするために用意されたソフトウェアである。
【0074】
プラットフォーム210が有するドライバ210cとしては、ブリッジドライバ210d1,210d2等がある。なお、以下では、ブリッジドライバ210d1,210d2のうち任意のブリッジドライバを指すときにブリッジドライバ210cを用いることとする。
【0075】
ブリッジドライバ210cは、PCIeブリッジコントローラ230を制御するためのドライバ(言い換えればPCIeブリッジコントローラ230に電気的にアクセスして他のプラットフォームと通信を行うためのドライバ)である。
【0076】
プラットフォーム210は、2つのRCを用いてPCIeブリッジコントローラ230に搭載されている2つのEPと接続しているため、それぞれの接続として機能するRCに対応する2つのブリッジドライバ210cを有している。
【0077】
なお、以下では、ブリッジドライバ210d1がPCIeインタフェース219aに対応するドライバであり、ブリッジドライバ210d2がPCIeインタフェース219bに対応するドライバであることとする。
【0078】
OS210eは、プラットフォーム210を動かすための基本ソフトウェアまたは基本プログラムである。BIOS210fは、プラットフォーム210におけるOS210eの起動を制御するソフトウェアである。プラットフォーム210では、例えば、BIOS210fによってBootloaderが起動(または呼び出)され、BIOS210fによって起動されたBootloaderによりOS210eを検出し、OS210eが起動する。
【0079】
次にプラットフォーム220−1〜220−6について説明する。プラットフォーム220−1〜220−6は、同様の構成であるので、プラットフォーム220−1を例として用いて説明する。プラットフォーム220−1は、アプリケーション220−1aと、ドライバ220−1cと、OS220−1eと、Bootloader220−1fと、を有する。
【0080】
アプリケーション220−1aは、プラットフォーム220−1で行うOS220−1eが提供する機能を利用して各種処理を実行する応用ソフトウェアまたは応用プログラムである。アプリケーション220−1aは、OS220−1e上で動作する。プラットフォーム220−1は、アプリケーション220−1aの制御下で各種処理を行う。
【0081】
プラットフォーム220−1が有するアプリケーション220−1aとしては、AI推論プログラム220−1b等がある。
【0082】
AI推論プログラム220−1bは、店舗監視プログラム210bから受け付けた画像データに対してAI推論処理を実行するプログラムである。
【0083】
なお、プラットフォーム220−1は、アプリケーション220−1aとしてAI推論プログラム220−1bを実行するだけでなく、その他のアプリケーションプログラムも実行することが可能である。
【0084】
ドライバ220−1cは、プラットフォーム220−1に搭載されているハードウェア等をOS220−1eによって制御可能にするために用意されたソフトウェアである。
【0085】
プラットフォーム220−1が有するドライバ220−1cとしては、ブリッジドライバ220−1d等がある。
【0086】
ブリッジドライバ220−1dは、PCIeブリッジコントローラ230を制御するためのドライバである。プラットフォーム220−1は、1つのRCを用いてPCIeブリッジコントローラ230に搭載されている1つのEPと接続するため、1つのブリッジドライバ220−1dを有している。
【0087】
OS220−1eは、プラットフォーム220−1を動かすための基本ソフトウェアまたは基本プログラムである。Bootloader220−1fは、プラットフォーム220−1の起動時に呼び出され、OS220−1eを起動するソフトウェアである。プラットフォーム210では、例えば、Bootloader220−1fによりOS210eを検出し、OS210eが起動する。
【0088】
次にPCIeブリッジコントローラ230に接続されるプラットフォーム間における通信処理の一例について説明する。
図7は、第2の実施形態の情報処理システムにおけるプラットフォーム間における通信処理の一例を説明するための図である。
【0089】
ここではプラットフォーム210のプロセッサ211と、プラットフォーム220−1のプロセッサ221−1との間で通信を行う例を用いて説明する。
【0090】
送信元のプラットフォーム210は、RCであるプロセッサ211において生成したデータを、ソフトウェア,トランザクション層,データリンク層および物理層(PHY)に順次転送し、物理層においてPCIeブリッジコントローラ230の物理層に転送する。
【0091】
PCIeブリッジコントローラ230は、プラットフォーム210から転送されたデータを、物理層,データリンク層,トランザクション層およびソフトウェアに順次転送し、プラットフォーム220−1のRCに対応するEPにトンネリングにより転送する。即ち、PCIeブリッジコントローラ230においては、EP間でデータをトンネリングさせることで、1つのRC(またはプロセッサ)から他のRC(またはプロセッサ)にデータが転送される。
【0092】
送信先のプラットフォーム220−1は、PCIeブリッジコントローラ230から転送されたデータを、物理層,データリンク層,トランザクション層およびソフトウェアに順次転送し、送信先のプラットフォーム220−1のプロセッサ221−1に転送する。
【0093】
情報処理システム200では、プラットフォーム間の通信はPCIeのトランザクションが発生したときに論理的に接続される。
【0094】
PCIeブリッジコントローラ230が有する8スロットのうちの一つに接続された特定のプロセッサに対して複数の他のプロセッサからのデータ転送が集中しないときは、異なる任意の複数組のそれぞれのプロセッサ間で並行してデータ転送してもよい。例えば、プロセッサ221−1に対して、プロセッサ221−2およびプロセッサ221−3が通信する場合には、PCIeブリッジコントローラ230は、プロセッサ221−2およびプロセッサ221−3による通信をシリアルに処理する。
【0095】
一方、異なるプラットフォームのプロセッサ同士が通信し、特定のプラットフォームのプロセッサに通信が集中しない場合には、PCIeブリッジコントローラ230は、プラットフォーム間の通信を並行して処理することも可能である。
【0096】
次に、
図8を用いて、情報処理システム200におけるPCIeブリッジコントローラ230を介したプラットフォーム間のデータ転送方法を説明する。
図8は、第2の実施形態の情報処理システムにおけるPCIeブリッジコントローラを介したプロセッサ間のデータ転送方法の一例を説明するための図である。
【0097】
ここではSlot#0,Slot#1に接続されたプラットフォーム210のSlot#0からSlot#3に接続されたプラットフォーム220−2にデータを転送する場合を例に用いて説明する。
【0098】
送信元のプラットフォーム210は、ソフトウェア等によって送信されるデータ(以下、送信データという)を、プラットフォーム210に備えられるHDD217等の記憶装置(即ち、ストレージ)からプラットフォーム210のDIMM215等(即ち、物理メモリ)のメモリ領域215aに格納する(P10)。メモリ領域215aは、転送されるデータが一時的に格納される通信バッファの一部であってもよい。
【0099】
メモリ領域215aは、プラットフォームそれぞれのDIMM215等に、同じ大きさで設けられた領域である。メモリ領域215aは、スロット234の数に応じて分割されている。メモリ領域215aの分割された記憶領域は、いずれかのスロット234に対応付けられている。即ち、各プラットフォームのメモリ領域215aには、Slot#0〜#7のそれぞれに対応する記憶領域が設けられている。
【0100】
例えば、メモリ領域215a内のSlot#0で示す記憶領域は、Slot#0に接続されたプラットフォーム210に対応付けられ、Slot#3で示す記憶領域は、Slot#3に接続されたプラットフォーム220−2に対応付けられている。プラットフォーム210は、メモリ領域215aのうち、送信先のスロット234に割り当てられた領域(ここでは、Slot#3)に送信データを格納する。
【0101】
ブリッジドライバ210d1は、プラットフォームのメモリ領域215aの記憶領域に基づいて、送信先のスロット234を示すスロット情報と、送信先のメモリ領域215aにおける分割領域内におけるアドレスを示すアドレス情報とを取得または生成する(P11)。
【0102】
送信元EPにおいて、ブリッジドライバ210d1は、スロット情報と、アドレス情報と、送信データとを含む転送データをPCIeブリッジコントローラ230に渡す(P12)。これにより、PCIeブリッジコントローラ230は、スロット情報に基づいてEPtoEPにより送信元のスロット234と送信先のスロット234とを接続することにより、転送データを送信先のプラットフォーム220−2に転送する(P13)。送信先のプラットフォーム220−2は、スロット情報およびアドレス情報に基づいて、送信先のプラットフォーム220−2のメモリ領域215aのSlot#3に対応する記憶領域内のアドレス情報が示す領域に送信データ(または転送データ)を格納する(P14)。
【0103】
送信先のプラットフォーム220−2において、例えば、プログラムが、メモリ領域215aに格納された送信データを読み出して、DIMM215やHDD217に移動させる(P15、P16)。
【0104】
以上のようにして、送信元のプラットフォーム210から送信先のプラットフォーム220−2にデータが転送される。
【0105】
このように情報処理システム200においては、PCIeブリッジコントローラ230において、当該PCIeブリッジコントローラ230内のEP間でデータ転送を媒介する。これにより、PCIeブリッジコントローラ230に接続された複数のRC間でのデータ転送を実現することができる。
【0106】
即ち、各プロセッサをPCIeのRCとして独立動作させ、PCIeブリッジコントローラ230において、それぞれのプロセッサに接続するデバイスをEPとして接続し、EP間でデータ転送を行う。これにより、デバイスドライバに起因する問題を回避し、高速データ転送を1つのシステムとして動作させることができる。
【0107】
また、PCIeの規格に適合したデータ通信機能を有してさえいれば異なるプロセッサ間でのデータ転送が可能となるため、デバイスドライバの有無や、サポートOS等を気にすることなく使用するプロセッサの選択肢を広げることが可能となる。
【0108】
各プロセッサはEPとなるPCIeブリッジコントローラ230を介して接続されるため、EPの先のRCのデバイスドライバを追加する必要がない。従って、デバイスドライバの開発が不要であるとともに、デバイスドライバを追加することに起因する不具合が発生することもない。
【0109】
情報処理システム200においては、ARMプロセッサやFPGA等の一般的なプロセッサはRCとして動作することが求められるため、情報処理システム200のプロセッサとして容易に追加することができる。
【0110】
PCIeブリッジコントローラ230においては、PCIeでの接続および通信がされるので、イーサネットでは実現できない高速転送を実現することができる。また、4K,8K等の高精細映像のプロセッサ間送受信、大規模なビッグデータの並列計算等も行うことができる。
【0111】
また、画像処理やデータ検索等の各機能に特化した専用プロセッサを接続することもできるので、安価に機能追加、性能向上を行うことができる。
【0112】
更に、情報処理システム200を、AI推論処理や画像処理といった高負荷な演算を用途とするシステムに適用することもできる。
【0113】
次に、情報処理システム200における機能ブロックについて説明する。
図9は、第2の実施形態の情報処理システムの機能ブロックの一例を示す図である。
【0114】
図9に示すプラットフォーム210,220−1〜220−6は、店舗等における監視システムを実現するプログラムを実行する。プラットフォーム210,220−1〜220−6が備える制御部(プロセッサ)が、プログラムを実行する。
図9においては、PCIeブリッジコントローラ230の図示を省略する。また、
図9においては、主にアプリケーション210a,220−1a,220−2a,…の機能の説明を行うものとし、その他については説明を適宜省略する。
図9において、実線矢印は、画像データおよびその他のデータの流れを示す。また、破線矢印は、画像データ以外のデータの流れを示す。
【0115】
プラットフォーム210は、画像取得部240、画像合成部241、API部243、結果処理部244、不審者判定部245、表示制御部246、キュー247,248を実現する。プラットフォーム210に含まれるこれらのものは、店舗監視プログラム210bに含まれる機能の一例である。また、プラットフォーム210が備えるHDD217やSSD216等の記憶部は、合成定義情報242やキュー247,248に蓄積される情報を記憶する。記憶部は、第1の実施形態の記憶部20の一実施態様である。画像合成部241は、第1の実施形態の画像合成部30の一実施態様である。結果処理部244は、第1の実施形態の結果処理部40の一実施態様である。
【0116】
画像取得部240は、カメラ300−1,300−2,…から画像データおよび画像識別情報(画像ID)を取得する。なお、画像データには、どのカメラ300−1,300−2,…が撮影した画像であるかが識別できる画像識別情報が付与されているものとする。画像取得部240は、取得した画像データを、取得した順序に従いキュー247に蓄積する。
【0117】
画像合成部241は、キュー247から画像データを取得し、合成定義情報242に基づき画像データを合成し、合成画像を生成する。また、画像合成部241は、合成画像をAPI部243を介してAI推論処理部250に送信する。
【0118】
合成定義情報242は、画像合成部241が画像を合成して合成画像を生成するために用いる情報である。また、合成定義情報242は、結果処理部244が合成画像に基づくAI推論処理の結果(以下、推論結果ともいう)を分離するために用いる情報でもある。合成定義情報242は、後で
図14を用いて説明する。
【0119】
API部243は、画像合成部241から受信した合成画像を、プラットフォーム220−1〜220−6のいずれかに合成した画像データを送信する。例えば、プラットフォーム220−1〜220−3がAI推論処理部250における人物検出処理251を実行するものと予め定められている場合、API部243はプラットフォーム220−1〜220−3のいずれかに合成画像を送信する。
【0120】
結果処理部244は、AI推論処理部250から推論結果を受信し、合成定義情報242に基づき推論結果を分離し、次の処理部(不審者判定部245)に分離した結果情報を送信する。
【0121】
不審者判定部245は、結果処理部244から受信した結果情報に基づいて、撮影された人物(画像データに含まれる人物)が不審者であるか否かを判定する。不審者判定部245は、結果処理部244から受信した結果情報に基づき、撮影された人物が不審者でないと判定した場合、受信した情報を表示制御部246に送信する。また、不審者判定部245は、撮影された人物が不審者であると判定した場合、受信した結果情報に不審者である旨の情報を付与し、表示制御部246に送信する。
【0122】
表示制御部246は、不審者判定部245から受信した結果情報と、キュー248に蓄積された画像データとを対応付け、ディスプレイ212に出力する。表示制御部246は、画像データに付与されている画像IDと結果情報に付与されている画像IDに基づき、同一の画像IDが付与された画像データと結果情報とを対応付ける。表示制御部246は、結果情報に、不審者である旨の情報が付与されている場合、画像データと結果情報と不審者を検知した旨の情報とをディスプレイ212に出力する。
【0123】
キュー247は、画像取得部240から受信した画像データを受信した順に蓄積する。キュー247は、AI推論処理部250がAI推論処理を実行する前の画像データを蓄積するキューである。キュー247は、画像合成部241からの要求に応じて、蓄積した画像データを画像合成部241に送信し、キュー248にも送信する。
【0124】
キュー248は、キュー247から受信した画像データを受信した順に蓄積する。表示制御部246は、結果情報を不審者判定部245から受信し、結果情報に対応する画像データ(結果情報に付与された画像IDと同一の画像IDが付与された画像データ)をキュー248に要求する。キュー248は、表示制御部246からの要求に応じて、蓄積した画像データを表示制御部246に送信する。
【0125】
プラットフォーム220−1〜220−6は、AI推論処理部250を実現する。AI推論処理部250は、AI推論プログラム220−1b,220−2b,…の機能の一例である。AI推論処理部250は、店舗等における監視のために、API部243から受信した合成画像に対してAI推論処理を実行するプログラムである。AI推論処理は、人物検出処理251、人物特定処理252、特徴抽出処理253の3つの処理で実現するものである。AI推論処理部250は、第1の実施形態の推論処理部50の一実施態様である。
【0126】
AI推論処理は、分散して実行される。例えば、プラットフォーム220−1〜220−3が人物検出処理251を実行し、プラットフォーム220−4〜220−5が人物特定処理252を実行し、プラットフォーム220−6が特徴抽出処理253を実行する。なお、プラットフォーム220−1〜220−6は、処理負荷に応じた分散処理を行うことも可能である。
【0127】
人物検出処理251は、API部243から受信した合成画像から、人物を検出し、人物の座標を特定する。人物特定処理252は、人物検出処理251において特定した人物に対して識別する情報(人物識別情報)を付与する。特徴抽出処理253は、人物特定処理252において識別情報を付与した人物に対し、人物の特徴(年齢、性別等)を求め、人物識別情報と対応付ける。
【0128】
AI推論処理部250は、人物検出処理251、人物特定処理252、特徴抽出処理253を実行した結果に基づき、人物識別情報に人物の座標と人物の特徴を対応付け、推論結果として結果処理部244に送信する。
【0129】
ディスプレイ212は、表示制御部246からの指示に基づき、画像データと結果情報を表示する。例えば、ディスプレイ212は、画像データに含まれる人物を人物の座標に基づき黒色の矩形枠で囲み、人物識別情報および特徴を文字情報で表記した画像を表示する。また、ディスプレイ212は、画像データと結果情報と不審者を検知した旨の情報を受信した場合、不審者と認識された人物を他の人物と区別して強調表示(赤色の矩形枠で囲み表示)し、不審者である旨の情報を文字情報で表記した画像を表示する。
【0130】
次に、情報処理システム200における画像処理イメージについて説明する。
図10は、第2の実施形態の画像合成処理イメージを説明するための図である。
【0131】
図10(A)は、情報処理システム200における画像処理イメージの一例である。元画像400と元画像401は、画像合成部241によってキュー247から取得された画像である。切出領域400aは、元画像400の一部分の画像である。切出領域401aは、元画像401の一部分の画像である。なお、以下では、任意の切出領域を指すときは、符号を付与しないで用いることとする。
【0132】
ここで、切出領域について説明する。切出領域は、画像データにおいて、AI推論処理を行う対象となる領域である。情報処理システム200は、店舗等の監視を行うため、店舗等における人物を検出し特徴の抽出を行い、不審者の判定を行う。このため、画像データにおいて、人間が立ち入ることのない場所(棚、壁、窓等)が撮影された領域については、AI推論処理を実行する必要がない。言い換えると、AI推論処理を実行すべき対象は、画像データのうち人間が含まれる領域である。
【0133】
情報処理システム200において、複数の画像データから人間が映り込む領域を切出領域として抽出し、抽出した切出領域を1枚に合成した画像(合成画像)にAI推論処理を実行する。これにより、情報処理システム200は、複数の画像データそれぞれに対してAI推論処理を実行した場合と同等の推論結果を1枚の合成画像に対するAI推論処理の推論結果から得ることができる。
【0134】
画像合成部241は、合成定義情報242に基づき画像データに対して画像合成処理を実行する。画像合成部241は、キュー247から取得した元画像400,401それぞれから切出領域400a,401aを抽出し、1枚の合成画像402を生成する。画像合成部241は、API部243を介して合成画像402をAI推論処理部250に送信する。
【0135】
AI推論処理部250は、合成画像402を受信し、合成画像402に対してAI推論処理を実行する。AI推論処理部250は、AI推論処理を行った推論結果を結果処理部244に送信する。
【0136】
結果処理部244は、合成定義情報242に基づき推論結果を分離する。結果処理部244は、推論結果を分離した結果情報を不審者判定部245に送信する。不審者判定部245は、受信した結果情報を表示制御部246に送信する。表示制御部246は、結果情報と対応する画像データとをディスプレイ212に表示させる。
【0137】
ディスプレイ212が表示する画像の一例が、結果画像400z,401zである。結果画像400zは、元画像400と、合成画像402の推論結果から切出領域400aに対する推論結果を分離した結果情報とを合わせたものである。結果画像401zは、元画像401と、合成画像402の推論結果から切出領域401aに対する推論結果を分離した結果情報とを合わせたものである。
【0138】
このように、情報処理システム200において、合成画像にAI推論処理を実行することにより、1枚の画像データに対するAI推論処理で、複数の画像データに対してAI推論処理を実行した場合と同等の結果を得ることができる。
【0139】
図10(B)は、1枚の画像データから複数の切出領域を取得する場合の画像処理イメージの一例である。なお、
図10(A)においては、1枚の画像データから1箇所の切出領域を抽出した例を示したが、切出領域の数は1箇所に限られるものではない。また、
図10(A)と同様の内容については適宜説明を省略する。
【0140】
元画像405と元画像406は、画像合成部241によってキュー247から取得された画像である。切出領域405a,405b,405cは、元画像405の一部分であり、元画像405においてAI推論処理を行う対象となる領域である。切出領域406a,406bは、元画像406の一部分であり、元画像406においてAI推論処理を行う対象となる領域である。
【0141】
合成画像407は、切出領域405a,405b,405cと切出領域406a,406bとを組み合わせて1枚の画像としたものである。AI推論処理部250は、合成画像407に対してAI推論処理を実行し、推論結果を求める。
【0142】
結果処理部244は、AI推論処理部250から推論結果を受信し、推論結果を分離する。例えば、結果処理部244が、推論結果として、IR−1A,IR−1B,IR−1C,IR−2A,IR−2Bの5つの結果を得た場合について説明する。推論結果は、推論結果に含まれる座標に基づき、切出領域と対応付けられるものとする。切出領域405aに対する推論結果がIR−1Aであり、切出領域405bに対する推論結果がIR−1Bであり、切出領域405cに対する推論結果がIR−1Cであるものとする。また、切出領域406aに対する推論結果がIR−2Aであり、切出領域406bに対する推論結果がIR−2Bであるものとする。
【0143】
結果処理部244は、推論結果IR−1A,IR−1B,IR−1Cを、元画像405に対する推論結果とし、推論結果IR−2A,IR−2Bを元画像406に対する推論結果として分離する。結果処理部244は、推論結果を分離した結果情報を不審者判定部245に送信する。表示制御部246は、不審者判定部245を介して結果情報を受信し、キュー248から元画像405,406を取得し、ディスプレイ212に表示指示を行う。
【0144】
ディスプレイ212は、推論結果IR−1A,IR−1B,IR−1Cと元画像405とを含む結果画像405zを表示する。また、ディスプレイ212は、推論結果IR−2A,IR−2Bと元画像406とを含む結果画像406zを表示する。
【0145】
ディスプレイ212を目視する管理者等は、元画像405に対したAI推論処理を行った結果として結果画像405zを認識し、元画像406に対したAI推論処理を行った結果として結果画像406zを認識できる。
【0146】
このように、情報処理システム200は、複数の切出領域を合成画像に含める場合に、切出領域を左右水平方向に並べて配置するのみではなく、切出領域の形状や大きさに応じて座標を調整して1枚の合成画像に含めるように配置させることができる。
【0147】
情報処理システム200は、1枚の元画像と同等のサイズの合成画像に複数の切出領域を含めるように配置位置を最適化することで、AI推論処理の対象とする合成画像の枚数を減らしAI推論処理の効率化を図ることができる。
【0148】
次に、情報処理システム200における誤判定回避処理について説明する。
図11は、第2の実施形態の誤判定回避処理を説明するための図である。
【0149】
図11は、情報処理システム200における結果処理部244が実行する誤判定回避処理を説明するための図である。
図11の説明において、
図10(A)と同様の内容については適宜説明を省略する。
【0150】
AI推論処理部250が、合成画像402に対してAI推論処理を実行した場合、合成画像402に含まれる切出領域400a,401aを跨ぐように、切出領域400a,401aの範囲外の人物が存在しない部分について人物が検出される場合がある。
【0151】
例えば、AI推論処理部250が、合成画像402に対してAI推論処理を実行し、人物を検出した領域として人物検出領域408a,408b,408cの3つの結果が得られる場合がある。これは、AI推論処理部250が、切出領域400a,401aの継ぎ目の部分を人物として誤判定し、人物検出領域408bとして推論結果を出した例である。なお、以下では、任意の人物検出領域を指すときは、符号を付与しないで用いることとする。また、人物検出領域について、検出した人物の画像を囲む点線で描いた矩形の領域として図示するが、その他の形状であってもよい。
【0152】
結果処理部244は、AI推論処理部250による誤判定を回避するため、推論結果として得られた人物検出領域が、合成画像を構成する切出領域それぞれの座標の領域内に含まれるか否かを判定し、含まれない場合には誤判定として推論結果を削除する。
【0153】
結果処理部244は、人物検出領域408aについて、切出領域400aの範囲内にあると判定した場合、人物検出領域408aを切出領域400aの推論結果として反映する。結果処理部244は、人物検出領域408bについて、切出領域400a,401aそれぞれの範囲内にないと判定した場合、人物検出領域408bを推論結果から削除する。
【0154】
結果処理部244は、人物検出領域408cについて、切出領域401aの範囲内にあると判定した場合、人物検出領域408cを切出領域401aの推論結果として反映する。
【0155】
このように、結果処理部244は、推論結果に含まれる人物検出領域が、合成画像を構成する各切出領域の範囲内に含まれているか否かを判定し、各切出領域の範囲内に含まれない場合は人物検出領域を誤判定として削除する。また、結果処理部244は、削除した人物検出領域に関連する情報(人物識別情報や人物の特徴)も合わせて削除する。これにより、情報処理システム200において、合成画像をAI推論処理の対象とすることにより発生する誤判定を低減させることができる。
【0156】
なお、結果処理部244は、人物検出領域408a,408b,408cが、切出領域400a,401aのいずれかの範囲内にあるか否かを判定するにあたり、所定のマージンを取って計算してもよい。例えば、マージンとして、20ピクセル等の所定の値や、切出領域400a,401aそれぞれの幅の5%等を設定してもよい。結果処理部244は、マージンを設けることにより、切出領域400a,401aの端部に存在する人物の検出漏れを低減させることができる。
【0157】
次に、情報処理システム200における切出領域の設定について説明する。
図12は、第2の実施形態の切出領域の設定を説明するための図である。
【0158】
図12(A)は、カメラ300で撮影した画像であり、切出領域を設定する基準画像410の一例である。基準画像410は、切出領域を設定する基準となる画像であり、監視対象物(人物)が映り込まない画像である。なお、基準画像410は、画像の中央に店舗の床が映り、画像の左右両側に店舗の棚が映る画像であるが、この画像は一例に過ぎず、カメラ300の配置に応じて映り込む背景が異なる。
【0159】
図12(B)は、人物軌跡蓄積画像411の一例である。人物軌跡蓄積画像411は、カメラ300が店舗を移動する人物を撮影した画像に基づき、人物と人物を囲む人物検出領域を蓄積した画像である。人物軌跡蓄積画像411を用いて、人物および人物検出領域の軌跡を特定し、基準画像410において人物および人物検出領域を含む領域(座標)を特定する。
【0160】
図12(C)は、床軌跡領域イメージ412の一例である。床軌跡領域イメージ412は、基準画像410に対して床幅413a、軌跡幅413b、切出幅413cを示したものである。床幅413aは、基準画像410に映る床の幅である。軌跡幅413bは、人物軌跡蓄積画像411から求めた人物および人物検出領域の軌跡が映る幅である。切出幅413cは、軌跡幅413bにマージンを加えた幅である。ここでのマージンとは、軌跡幅413bに対する所定割合(20%)の値である。
【0161】
図12(D)は、基準画像410に対して切出領域414を設定した一例である。切出領域414は、切出幅413cを囲む矩形の領域として設定する。なお、切出領域414を矩形の領域とするのは一例に過ぎず、切出幅413cに沿った形状(台形)の領域であってもよいし、その他の形状の領域であってもよい。
【0162】
なお、情報処理システム200において、切出領域はカメラ300ごとに定めるものであり、カメラ300ごとの基準画像410および人物軌跡蓄積画像411を用いる。また、切出領域は、システム管理者等の人間が手作業で設定してもよいし、切出領域を設定する機能を備えるプログラムを用いて実現してもよい。
【0163】
次に、情報処理システム200における合成定義情報の設定について説明する。
図13は、第2の実施形態の合成定義情報の設定を説明するための図である。
【0164】
図13は、合成画像422を生成するための合成定義情報の設定を説明するための図である。合成画像422は、切出領域420aと切出領域421aとを合成して生成された画像である。
【0165】
切出領域420aは、元画像420に設定された領域である。元画像420を識別する情報(画像ID)は、「C101」であるものとする。切出領域420aは、矩形の領域であり、矩形の左上端点を基準点420bとする。基準点420bの座標(X座標,Y座標)は、(200,0)であるものとする。切出領域420aは、幅が(600)、高さが(720)であるものとする。なお、画像や切出領域の座標や大きさとして付与する数値の単位はピクセルとし、以下の説明も同様とする。
【0166】
切出領域421aは、元画像421に設定された領域である。元画像421を識別する情報(画像ID)は、「C201」であるものとする。切出領域421aは、矩形の領域であり、矩形の左上端点を基準点421bとする。基準点421bの座標(X座標,Y座標)は、(201,3)であるものとする。切出領域421aは、幅が(620)、高さが(710)であるものとする。
【0167】
合成画像422は、切出領域420a,421aをベース画像に張り付けることで合成した画像である。ベース画像は、切出領域を張り付ける対象とする画像であり、黒一色の画像である。合成画像422は、ベース画像のサイズよりも切出領域420a,421aのサイズが小さい場合、差分の領域にベース画像の黒色が表示される。なお、ベース画像について、色を黒色とするのは一例に過ぎず、他の色でもよい。
【0168】
合成画像422において、切出領域420a,421aを張り付ける位置は、合成画像422における座標で定める。例えば、切出領域420aを合成画像422へ合成する場合、基準点420bが合成点422aの位置へ移動する。合成点422aの座標(X座標,Y座標)は、(0,0)であるものとする。また、切出領域421aを合成画像422へ合成する場合、基準点421bが合成点422bの位置へ移動する。合成点422bの座標(X座標,Y座標)は、(600,0)であるものとする。
【0169】
次に、情報処理システム200における合成定義情報について説明する。
図14は、第2の実施形態の合成定義情報の一例を示す図である。
【0170】
合成定義情報242は、合成画像を生成するための情報である。また、合成定義情報242は、合成画像に基づくAI推論処理の結果(以下、推論結果とも記載する)を分離するための情報でもある。合成定義情報242は、プラットフォーム210の記憶部に記憶される情報である。なお、合成定義情報242は、システム管理者等が作成してもよい。また、画像合成部241が、合成定義情報242を生成する機能を備え、合成定義情報242を生成してもよい。
【0171】
合成定義情報242は、定義ID、画像ID、切出領域ID、元画像座標情報、オフセット座標の項目を含む。定義IDの項目には、合成定義情報242に含まれるエントリを識別する識別情報(定義ID)が登録される。定義IDで示すエントリは、合成対象とする画像IDおよび切出領域IDを含む。
【0172】
画像IDの項目には、画像を識別する識別情報(画像ID)が登録される。画像IDで示す画像とは、切出領域を抽出する対象である元画像である。また、画像IDによって、どのカメラ300が撮影した画像であるかを区別することができる。例えば、画像IDの先頭が「C1」である場合、カメラ300−1が撮影した画像であり、画像IDの先頭が「C2」である場合、カメラ300−2が撮影した画像であるものとする。切出領域IDの項目には、切出領域を識別する識別情報(切出領域ID)が登録される。
【0173】
ここで、画像IDと切出領域IDとの対応関係について説明する。例えば、定義ID「T1」のエントリにおいては、画像IDと切出領域IDが1対1に対応する。定義ID「T1」のエントリは、
図10(A)のように1枚の元画像から1箇所の切出領域を抽出する場合の一例である。
【0174】
また、定義ID「T2」のエントリにおいては、画像IDと切出領域IDが1対多に対応する。定義ID「T2」のエントリは、
図10(B)のように、1枚の元画像から複数個所の切出領域を抽出する場合の一例である。
【0175】
元画像座標情報の項目には、基準点X座標、基準点Y座標、切出領域の幅、切出領域の高さが登録される。なお、基準点とは、
図13における説明のとおり、切出領域の左上端点である。
【0176】
オフセット座標の項目には、合成点X座標、合成点Y座標が登録される。なお、合成点とは、
図13における説明のとおり、合成画像における切出領域の左上端点である。
【0177】
ここで、定義ID「TI」のエントリについて説明する。定義ID「TI」のエントリは、画像ID「C1××」および切出領域ID「C1E01」を含むエントリと、画像ID「C2××」および切出領域ID「C2E01」を含むエントリとを含む。なお、「××」は任意の数字であり、以下も同様とする。
【0178】
また、切出領域ID「C1E01」のエントリには、元画像座標情報が(200,0,600,719)、オフセット座標が(0,0)という情報が登録される。切出領域ID「C2E01」のエントリには、元画像座標情報が(201,3,620,710)、オフセット座標が(600,0)という情報が登録される。
【0179】
定義ID「T1」は、カメラ300−1が撮影する画像(画像ID「C1××」)から抽出した切出領域(切出領域ID「C1E01」)と、カメラ300−2が撮影する画像(画像ID「C2××」)から抽出した切出領域(切出領域ID「C2E01」)とを合成することを示す。
【0180】
また、切出領域ID「C1E01」は、基準点座標が(200,0)であり、幅が「600」、高さが「719」の領域であり、合成点座標が(0,0)であることを示す。また、切出領域ID「C2E01」は、基準点座標が(201,3)であり、幅が「620」、高さが「710」の領域であり、合成点座標が(600,0)であることを示す。
【0181】
このように、合成定義情報242は、画像合成処理を行う対象となる画像の組み合わせと、カメラごとに定めた切出領域の座標と、画像合成処理を行った後の切出領域の座標とを定める。画像合成部241は、合成定義情報242を用いて画像合成処理を実行する。また、結果処理部244は、AI推論処理部250から受信した推論結果を、合成定義情報242を用いて元画像と対応付けて分離する。
【0182】
次に、画像合成部241が実行する画像合成処理について説明する。
図15は、第2の実施形態の画像合成処理のフローチャートの一例である。
【0183】
画像合成処理は、画像合成部241が、合成定義情報242を読み出し、キュー247から画像を取得して合成画像を生成し、API部243を介してAI推論処理部250に合成画像を送信する処理である。プラットフォーム210の制御部(プロセッサ211)が画像合成部241を実行する。
【0184】
[ステップS11]画像合成部241は、情報処理システム200の起動後、合成定義情報242を記憶部から読み出す。
【0185】
[ステップS12]画像合成部241は、合成定義情報242に基づき、キュー247から画像を取得する。本ステップにおける画像とは、画像合成処理を実行する対象とする画像であり、切出領域を抽出する元となる画像(元画像)を意味する。画像合成部241は、合成定義情報242に含まれる画像IDに基づき、キュー247から画像を取得する。なお、画像合成部241は、キュー247に格納された順序に従って画像を取得してもよいし、合成定義情報242の定義内容に基づいてキュー247から画像を取得してもよい。
【0186】
[ステップS13]画像合成部241は、合成定義情報242に基づき、全ての合成対象の画像を取得したか否かを判定する。画像合成部241は、全ての合成対象の画像を取得したか否かについて、合成定義情報242の定義IDで識別するエントリごとに判定する。ここで、合成定義情報242の定義ID「TI」を例に説明する。定義ID「TI」のエントリについて全ての合成対象の画像とは、定義ID「TI」のエントリに含まれる、画像IDが「C1××」の画像と、画像IDが「C2××」の画像の2枚の画像を意味する。
【0187】
画像合成部241は、全ての合成対象の画像を取得した場合、ステップS16にすすむ。画像合成部241は、全ての合成対象の画像を取得していない場合、ステップS14にすすむ。
【0188】
[ステップS14]画像合成部241は、ステップS12で画像を取得してから所定時間以内(例えば、200ミリ秒以内)であるか否かを判定する。画像合成部241は、所定時間以内である場合はステップS15にすすみ、所定時間以内でない場合はステップS16にすすむ。
【0189】
ここで、本ステップについて補足説明する。情報処理システム200は、店舗等の監視を行うものであり、店舗内の人物を適切に監視可能な程度の処理速度が要求されるシステムである。しかし、合成対象の全ての画像が揃うまでに長時間が経過する場合、適切に監視可能な処理速度を保つことが難しい状態となる。このため、画像合成部241は、本ステップにおいて所定時間以内であるかを判定し、所定時間が経過した場合に次の処理にすすむことで、適切な処理速度を保つ。
【0190】
[ステップS15]画像合成部241は、取得できていないカメラ300の画像を再取得する。言い換えると、画像合成部241は、合成定義情報242で定義された合成対象の画像のうち、取得していない画像をキュー247から取得する。
【0191】
[ステップS16]画像合成部241は、ベース画像を生成する。ベース画像は、切出領域を張り付ける対象とする画像であり、元画像と同一のサイズで黒一色の画像である。
【0192】
[ステップS17]画像合成部241は、合成定義情報242に基づき、キュー247から取得した画像から切出領域を抽出する。具体的には、画像合成部241は、元画像座標情報に含まれる切出領域の左上端点座標(基準点X座標,基準点Y座標)、切出領域のサイズ(幅,高さ)に基づき、画像から切出領域を抽出する。なお、画像合成部241は、切出領域が複数存在する場合、全ての切出領域を抽出する。
【0193】
[ステップS18]画像合成部241は、合成定義情報242に基づき、切出領域をベース画像に張り付け、合成画像を生成する。
【0194】
[ステップS19]画像合成部241は、API部243を介してAI推論処理部250に合成画像を送信する。
【0195】
[ステップS20]画像合成部241は、キュー247から次の画像(未だ合成画像を生成していない画像)を取得できるか否かを判定する。画像合成部241は、次の画像を取得できた場合はステップS13にもどる。画像合成部241は、次の画像を取得できない場合は処理を終了する。
【0196】
次に、結果処理部244が実行する結果分離処理について説明する。
図16は、第2の実施形態の結果分離処理のフローチャートの一例である。
【0197】
結果分離処理は、結果処理部244が、合成定義情報242を読み出し、AI推論処理部250から推論結果を受信し、推論結果から誤判定のものを削除し、推論結果を元画像ごとに分離する処理である。プラットフォーム210の制御部(プロセッサ211)が結果処理部244を実行する。
【0198】
[ステップS31]結果処理部244は、情報処理システム200の起動後、合成定義情報242を記憶部から読み出す。
【0199】
[ステップS32]結果処理部244は、合成画像における切出領域の左上端点および右下端点の座標を求める。具体的には、結果処理部244は、合成画像における切出領域の左上端点をオフセット座標(合成点X座標,合成点Y座標)とする。結果処理部244は、オフセット座標に元画像座標情報の幅と高さを加算した値を、合成画像における切出領域の右下端点の座標とする。結果処理部244は、合成点X座標に元画像座標情報の幅を加えた値を右下端点X座標とする。結果処理部244は、合成点Y座標に元画像座標情報の高さを加えた値を右下端点Y座標とする。
【0200】
[ステップS33]結果処理部244は、ステップS32で求めた左上端点座標(左上端点X座標,左上端点Y座標)および右下端点座標(右下端点X座標,右下端点Y座標)にマージン(マージンの値を「m」とする)を付与し、有効エリアを生成する。有効エリアとは、推論結果に含まれる人物検出領域が切出領域に含まれるか否かを判定する際に用いる領域であり、推論結果が誤判定であるか否かを判定する際に用いる。結果処理部244は、合成画像に張り付けた切出領域それぞれについて有効エリアを生成する。なお、有効エリアは、合成画像における切出領域にマージンを付与して広げた領域であり、有効エリアの左上端点座標は(左上端点X座標−m,左上端点Y座標−m)、有効エリアの右下端点座標は(右下端点X座標+m,右下端点Y座標+m)で求めることができる。また、誤判定については、
図11で説明したとおりである。
【0201】
[ステップS34]結果処理部244は、AI推論処理部250から推論結果を受信したか否かを判定する。結果処理部244は、推論結果を受信した場合はステップS35にすすみ、推論結果を受信していない場合はステップS34にもどる。
【0202】
なお、推論結果は、検出した人物ごとに、人物識別情報と、人物検出領域の情報と、人物の特徴とを対応付けた情報を含む。人物検出領域の情報は、人物検出座標、人物検出領域の大きさを含む。人物検出座標は、人物検出領域の左上端点の座標(X座標,Y座標)である。人物検出領域の大きさは、人物検出領域の幅、人物検出領域の高さである。
【0203】
[ステップS35]結果処理部244は、受信した推論結果に含まれる人物検出領域が有効エリア内であるか否かを判定する。結果処理部244は、人物検出領域が有効エリア内でない場合はステップS36にすすみ、人物検出領域が有効エリア内である場合はステップS37にすすむ。
【0204】
[ステップS36]結果処理部244は、有効エリア内にない人物検出領域を誤判定として削除する。なお、結果処理部244は、削除した人物検出領域に関連する情報(人物識別情報や人物の特徴)も合わせて推論結果から削除する。
【0205】
[ステップS37]結果処理部244は、人物検出領域を該当する有効エリア内のものとして、切出領域(有効エリアの生成元の切出領域)と対応付ける。具体的には、結果処理部244は、有効エリア内に存在すると判定した人物検出領域および関連する情報(有効な推論結果)を、有効エリアの生成元である切出領域の切出領域IDと対応付ける。
【0206】
[ステップS38]結果処理部244は、有効エリア内の推論結果を元画像ごとのグループに分離し、分離結果を生成する。具体的には、結果処理部244は、ステップS37において有効な推論結果に対応付けられた切出領域IDに基づき、切出領域IDごとのグループに分離することで、分離結果を生成する。
【0207】
[ステップS39]結果処理部244は、分離結果に対してオフセット座標を減算し、元画像の基準点座標を加算し、座標を還元し、結果情報を求める。具体的には、結果処理部244は、分離結果に含まれる人物検出座標に、分離結果に対応付けられた切出領域IDと対応するオフセット座標を減算し、切出領域IDと対応する元画像座標情報に含まれる基準点座標を加算して、結果情報を算出する。
【0208】
つまり、結果処理部244は、元画像ごとのグループに分離した推論結果に含まれる人物検出座標に対し、合成画像の座標から元画像の座標に座標変換を実行したものを結果情報とする。
【0209】
[ステップS40]結果処理部244は、結果情報を各カメラ300が撮影した画像に対する推論結果として不審者判定部245に送信し、ステップS34にもどる。
【0210】
このように、結果処理部244は、AI推論処理部250から受信した推論結果から誤判定の結果を削除し、元画像ごとに分離した分離結果を生成し、分離結果の座標を元画像の座標に還元し、結果情報を求めることができる。これにより、結果処理部244は、1枚の合成画像に対してAI推論処理を実行することにより、複数の元画像に対してAI推論処理を実行した場合と同様の結果を得られる。
【0211】
こうして、情報処理システム200(情報処理装置)は、記憶部と、画像合成部241と、結果処理部244とを備える。記憶部は、切出領域を定義した合成定義情報242と、1または複数の画像を記憶する。また、画像合成部241は、記憶部から合成定義情報242を読み出し、記憶部から画像を取得し、合成定義情報242に基づき画像から部分を抽出した複数の切出領域を含む合成画像を生成し、合成画像をAI推論処理部250(推論処理部)に送信する。また、結果処理部244は、合成画像に対してAI推論処理部250(推論処理部)が推論処理を実行した結果である推論結果を受信し、合成定義情報242に基づき推論結果を画像の座標に還元して結果情報を求める。このように、情報処理システム200において、画像から推論処理を行う対象となる切出領域を抽出し、1枚の合成画像を生成し、合成画像に対して推論処理を実行し、結果情報を求めることができる。
【0212】
これにより、情報処理システム200(情報処理装置)において、画像それぞれに対して推論処理を実行した場合と同等の推論結果を、合成画像に対する推論処理を実行することにより求めることができる。また、情報処理システム200(情報処理装置)の性能や推論処理の結果の精度を維持しつつ、画像に対して推論処理を実行する効率を高めることができる。
【0213】
また、合成定義情報242が、画像を識別する画像識別情報(画像ID)と、画像における切出領域の座標(元画像座標情報における基準点X座標と、基準点Y座標)と、画像における切出領域の大きさ(元画像座標情報における幅と高さ)と、合成画像に含まれる切出領域の座標(オフセット座標)とを含む。これにより、情報処理システム200(情報処理装置)は、合成定義情報242を用いて推論処理を実行すべき対象の領域を抽出した合成画像を生成でき、合成画像に対して推論処理を実行できる。
【0214】
また、画像合成部241は、複数の画像を取得し、画像それぞれから少なくとも1以上の切出領域を抽出して合成画像を生成する。また、結果処理部244は、推論結果を複数の画像ごとに分離した分離結果を生成し、分離結果それぞれに対して複数の画像ごとの座標に還元して結果情報を求める。これにより、情報処理システム200(情報処理装置)は、1枚の合成画像に対して推論処理を実行することで、画像ごとに推論処理を実行した場合と同等の推論結果を得ることができる。
【0215】
また、画像合成部241は、複数の画像を取得し、画像それぞれから少なくとも1以上の切出領域を抽出して合成画像を生成する際に、1枚の画像と同じサイズの領域に含まれるように切出領域それぞれを配置して合成画像を生成する。このように、情報処理システム200(情報処理装置)は、1以上の切出領域を1枚の画像と同じサイズの合成画像に含めることで、1枚の画像に対して推論処理を実行した場合と同様の処理で(推論処理を実行する対象の画像サイズの変更を行うことなく)推論結果を得られることができる。
【0216】
また、結果処理部244は、推論結果のうち、合成画像に含まれる切出領域以外の領域に対する推論結果を削除する。これにより、情報処理システム200(情報処理装置)は、推論結果から推論処理を実行すべき対象の領域外における誤った判定の結果を削除し、推論結果の精度を維持することができる。
【0217】
また、画像合成部241は、第1の画像と第2の画像それぞれから切出領域を抽出して合成画像を生成する場合であって、第1の画像を取得した時間から所定の時間内に第2の画像を取得できない場合、第1の画像から抽出した切出領域のみを含む合成画像を生成し、AI推論処理部250(推論処理部)に送信する。これにより、情報処理システム200(情報処理装置)は、取得した画像に基づき合成画像を生成し、AI推論処理部250(推論処理部)に送信する際に、適切な処理速度を保つことができる。
【0218】
このように、推論システム100は、情報処理システム200(情報処理装置)の性能や推論処理の結果の精度を維持しつつ、画像に対して推論処理を実行する効率を高めることができる。
【0219】
[第3の実施形態]
次に、第3の実施形態について説明する。第3の実施形態において第2の実施形態と異なる点は、元画像として高解像度の画像(以下、高解像度画像と記載する)を用いる点である。また、第3の実施形態においては、高解像度画像を用いることに伴い、画像合成部241および結果処理部244の処理内容の一部が第2の実施形態と異なる。第3の実施形態における画像合成部241および結果処理部244の処理については、後で
図19〜22を用いて説明する。
【0220】
なお、第3の実施形態において、前提となるシステム構成やソフトウェアについては、第2の実施形態とほぼ同様であるため説明を適宜省略する。
【0221】
次に、高解像度画像の処理イメージについて説明する。
図17は、第3の実施形態の高解像度画像の処理イメージを説明するための図である。
【0222】
図17は、情報処理システム200における高解像度画像の処理イメージの一例である。なお、
図17の説明において、
図10と同様の部分については説明を適宜省略する。
【0223】
情報処理システム200において、カメラ300から遠方の領域を撮影した画像については解像度が低く、人物が画像内で小さく映るため、人物検出処理251において人物が検出されない場合がある。
【0224】
情報処理システム200において、人物が検出されない場合に対処するため、解像度が低いエリア(カメラ300から遠方のエリア)に対して高解像度のカメラ300で撮影した画像を用いる。ここで、高解像度画像とは、4K UHD(Ultra HighDefinition)、8K UHD、フルHD(Full High Definition)等の画像を含む。
【0225】
以下の説明において、高解像度画像は、4K(第1の解像度)のカメラ300で撮影された画像であるものとする。また、4Kの画像の解像度は、3840×2160ピクセルであるものとする。また、通常画像とは、HD(第2の解像度)のカメラ300で撮影された画像であるものとする。HDの画像の解像度は、1280×720ピクセルであるものとする。
【0226】
元画像500と元画像501は、ほぼ同じ場所を撮影した画像であり、同一の人物が撮影されているが、解像度が異なる画像である。元画像500と元画像501は、画像合成部241によってキュー247から取得された画像である。元画像500は、4K画像を撮影するカメラ300で撮影された高解像度画像である。元画像500の画像IDは「HC901」であるものとする。元画像501は、HD画像を撮影するカメラ300で撮影された通常画像である。元画像501の画像IDは「C501」であるものとする。
【0227】
切出領域500aは、元画像500の一部分の画像である。切出領域500aは、元画像500のうち、カメラ300から遠方の部分を抽出した画像である。切出領域500aは、通常画像では解像度が低く人物の検出ができない領域を、高解像度画像である元画像500から抽出したものである。
【0228】
切出領域501aは、元画像501の一部分の画像である。切出領域501aは、通常画像の解像度で人物の検出が可能な領域を通常画像である元画像501から抽出したものである。
【0229】
画像合成部241は、高解像度画像の処理を行うための合成定義情報(高解像度合成定義情報)に基づき画像に対して画像合成処理を実行する。なお、高解像度合成定義情報については、後で
図18を用いて説明する。
【0230】
画像合成部241は、元画像500,501それぞれから切出領域500a,501aを抽出する。画像合成部241は、高解像度画像から抽出した切出領域500aに対して、解像度に応じて倍率を調整した切出領域500bを生成する。
【0231】
画像合成部241は、切出領域500b,501aをベース画像に張り付けて合成画像503を生成する。画像合成部241は、API部243を介して合成画像503をAI推論処理部250に送信する。AI推論処理部250は、合成画像503に対してAI推論処理を実行する。結果処理部244は、AI推論処理部250から合成画像503に対する推論結果を受信し、推論結果の倍率の調整および座標変換を行う。
【0232】
ディスプレイ212が表示する推論結果を示す画像の一例が、結果画像504zである。結果画像504zは、倍率を調整して座標変換を行った推論結果と、元画像501とを合わせたものである。
【0233】
このように、第3の実施形態における画像合成部241は、高解像度画像から抽出した切出領域の倍率を調整して通常画像の合成画像に張り付ける。これにより、AI推論処理部250は、解像度が異なる切出領域を1枚に纏めた合成画像に対して、通常画像と同様にAI推論処理を実行することが可能となる。
【0234】
次に、情報処理システム200における高解像度合成定義情報について説明する。
図18は、第3の実施形態の高解像度合成定義情報の一例を示す図である。
【0235】
高解像度合成定義情報242aは、解像度が異なる画像から合成画像を生成するための情報である。情報処理システム200における高解像度合成定義情報242aの位置づけは、合成定義情報242とほぼ同様である。高解像度合成定義情報242aの説明において、
図14で説明した合成定義情報242と同様の部分については、説明を適宜省略する。
【0236】
高解像度合成定義情報242aは、合成画像を生成するための情報である。また、高解像度合成定義情報242aは、推論結果に対して倍率変更および座標変換を行うための情報でもある。高解像度合成定義情報242aは、プラットフォーム210の記憶部に記憶される情報である。
【0237】
合成定義情報242は、定義ID、画像ID、切出領域ID、元画像座標情報、オフセット座標、解像度、画像種別、AI処理座標情報の項目を含む。定義ID、画像ID、切出領域ID、元画像座標情報、オフセット座標の項目については、合成定義情報242と同様であるため説明を省略する。なお、画像IDの先頭に「C5」が付与された画像は、HD画像を撮影するカメラ300で撮影された画像であるものとする。また、画像IDの先頭に「HC9」が付与された画像は、4K画像を撮影するカメラ300で撮影された画像であるものとする。
【0238】
解像度の項目には、画像の解像度(HDの解像度「1280×720」、4Kの解像度「3840×2160」)が登録される。画像種別の項目には、画像の解像度に応じた画像種別(HD、4K等)が登録される。
【0239】
AI処理座標情報の項目には、画像種別に応じて倍率を変更した元画像座標情報が登録される。画像種別が「HD」の場合、元画像座標情報の値がAI処理座標情報に登録される。また、画像種別が「4K」の場合、元画像座標情報の値を「HD」相当に換算した値がAI処理座標情報に登録される。
【0240】
具体的には、解像度に基づき倍率(4Kの解像度/HDの解像度)を求める。解像度に基づく倍率は、縦の倍率が(2160/720)=3倍、横の倍率が(3840/1280)=3倍、となる。このため、画像種別が「4K」の場合、元画像座標情報の値を3倍した値をAI処理座標情報に登録する。AI処理座標情報の項目に示す(値[×3])は、値を3倍することを示す。
【0241】
なお、高解像度合成定義情報242aは、システム管理者等が作成してもよい。また、画像合成部241が、高解像度合成定義情報242aを生成する機能を備え、高解像度合成定義情報242aを生成してもよい。
【0242】
次に、情報処理システム200における高解像度合成定義情報生成処理について説明する。
図19は、第3の実施形態の高解像度合成定義情報生成処理のフローチャートの一例である。
【0243】
高解像度合成定義情報生成処理は、画像合成部241が高解像度合成定義情報242aを生成する処理である。プラットフォーム210の制御部(プロセッサ211)が画像合成部241を実行する。
【0244】
[ステップS51]画像合成部241は、記憶部から高解像度合成定義情報を生成する対象となる高解像度画像を取得する。
【0245】
[ステップS52]画像合成部241は、高解像度画像の切出領域を決定する。なお、切出領域は、1箇所であってもよいし、複数個所であってもよい。
【0246】
[ステップS53]画像合成部241は、高解像度合成定義情報242aのエントリを生成する。画像合成部241は、高解像度合成定義情報242aのエントリに含まれる項目のうち、合成定義情報242と同様の項目(定義ID、画像ID、切出領域ID、元画像座標情報、オフセット座標)については、合成定義情報242と同様に生成する。
【0247】
画像合成部241は、解像度、画像種別の項目については、画像IDで定義された画像を撮影するカメラ300に応じて値を登録する。例えば、カメラ300が、HD画像を撮影するものである場合、解像度に「1280×720」、画像種別に「HD」が登録される。また、カメラ300が、4K画像を撮影するものである場合、解像度に「3840×2160」、画像種別に「4K」が登録される。
【0248】
[ステップS54]画像合成部241は、高解像度合成定義情報242aのエントリのうち、画像種別が「4K」の項目が存在するか否かを判定する。画像合成部241は、画像種別が「4K」の項目が存在する場合、ステップS55にすすむ。画像合成部241は、画像種別が「4K」の項目が存在しない場合、ステップS56にすすむ。
【0249】
[ステップS55]画像合成部241は、解像度の倍率(4Kの解像度/HDの解像度)を求め、求めた倍率と元画像座標情報との積をAI処理座標情報に登録する。
【0250】
具体的には、画像合成部241は、解像度の倍率(縦の倍率、横の倍率)を求め、元画像座標情報のX方向に横の倍率を掛け、元画像座標情報のY方向に縦の倍率を掛ける。つまり、AI処理座標情報は、(基準点X座標[×横の倍率],基準点Y座標[×縦の倍率],幅[×横の倍率],高さ[×縦の倍率])となる。
【0251】
[ステップS56]画像合成部241は、高解像度合成定義情報242aのエントリのうち、画像種別が「HD」の項目について、元画像座標情報の値をAI処理座標情報に登録する。
【0252】
このようにして、高解像度合成定義情報242aが生成される。なお、高解像度合成定義情報生成処理は、高解像度合成定義情報242aを生成する方法の一例であり、これらの処理の一部または全部をシステム管理者等が実行してもよい。
【0253】
次に、情報処理システム200における高解像度画像合成処理について
図20および
図21を用いて説明する。
図20は、第3の実施形態の高解像度画像合成処理のフローチャートの一例である(その1)。
図21は、第3の実施形態の高解像度画像合成処理のフローチャートの一例である(その2)。
【0254】
高解像度画像合成処理は、画像合成部241が、高解像度合成定義情報242aを読み出し、キュー247から画像を取得して合成画像を生成し、API部243を介してAI推論処理部250に合成画像を送信する処理である。プラットフォーム210の制御部(プロセッサ211)が画像合成部241を実行する。
【0255】
[ステップS61]画像合成部241は、情報処理システム200の起動後、高解像度合成定義情報242aを記憶部から読み出す。
【0256】
[ステップS62]画像合成部241は、高解像度合成定義情報242aに含まれる画像IDに基づき、キュー247から画像を合成する対象の4K画像(切出領域を抽出する元画像)を取得する。
【0257】
[ステップS63]画像合成部241は、高解像度合成定義情報242aに基づき、キュー247から取得した4K画像から切出領域を抽出する。
【0258】
[ステップS64]画像合成部241は、取得した4K画像の画像IDに対応する切出領域IDのエントリに基づき、全ての切出領域を抽出したか否かを判定する。画像合成部241は、全ての切出領域を抽出していない場合、ステップS65にすすむ。画像合成部241は、全ての切出領域を抽出した場合、ステップS67にすすむ。
【0259】
[ステップS65]画像合成部241は、ステップS62で画像を取得してから所定時間以内(例えば、1秒以内)であるか否かを判定する。画像合成部241は、所定時間以内である場合はステップS66にすすみ、所定時間以内でない場合はステップS67にすすむ。
【0260】
[ステップS66]画像合成部241は、4K画像について、高解像度合成定義情報242aに基づき、抽出していない切出領域の画像をキュー247から再取得し、ステップS64にもどる。
【0261】
[ステップS67]画像合成部241は、切出領域について4K画像をHD画像に変換する。具体的には、画像合成部241は、画像の解像度の倍率(縦の倍率、横の倍率)を求める。縦の倍率は、(4Kの縦方向の解像度/HDの縦方向の解像度)で求められる。横の倍率は、(4Kの横方向の解像度/HDの横方向の解像度)で求められる。画像合成部241は、切出領域のX方向を横の倍率に拡大し、切出領域のY方向に縦の倍率に拡大し、切出領域の倍率を調整することで画像を変換する。
【0262】
[ステップS68]画像合成部241は、高解像度合成定義情報242aに含まれる画像IDに基づき、キュー247から画像を合成する対象のHD画像(切出領域を抽出する元画像)を取得する。
【0263】
[ステップS69]画像合成部241は、高解像度合成定義情報242aに基づき、キュー247から取得したHD画像から切出領域を抽出する。
【0264】
[ステップS70]画像合成部241は、取得したHD画像の画像IDに対応する切出領域IDのエントリに基づき、全ての切出領域を抽出したか否かを判定する。画像合成部241は、全ての切出領域を抽出していない場合、ステップS71にすすむ。画像合成部241は、全ての切出領域を抽出した場合、ステップS73にすすむ。
【0265】
[ステップS71]画像合成部241は、ステップS68で画像を取得してから所定時間以内(例えば、1秒以内)であるか否かを判定する。画像合成部241は、所定時間以内である場合はステップS72にすすみ、所定時間以内でない場合はステップS73にすすむ。
【0266】
[ステップS72]画像合成部241は、HD画像について、高解像度合成定義情報242aに基づき、抽出していない切出領域の画像をキュー247から再取得し、ステップS70にもどる。
【0267】
[ステップS73]画像合成部241は、ベース画像を生成する。ベース画像は、切出領域を張り付ける対象とする画像であり、HD画像である。
【0268】
[ステップS74]画像合成部241は、高解像度合成定義情報242aに基づき、切出領域をベース画像に張り付け、合成画像を生成する。画像合成部241が合成画像を生成する方法は、第2の実施形態とほぼ同様である。画像合成部241は、元画像における基準点を合成画像における合成点へ移動するように切出領域を張り付ける。なお、画像合成部241は、元画像が4K画像である場合、ステップS67において4K画像をHD画像に変換した切出領域をベース画像に張り付ける。
【0269】
[ステップS75]画像合成部241は、API部243を介してAI推論処理部250に合成画像を送信する。
【0270】
[ステップS76]画像合成部241は、キュー247から次の画像(未だ合成画像を生成していない画像)を取得できるか否かを判定する。画像合成部241は、次の画像を取得できた場合はステップS62にもどる。画像合成部241は、次の画像を取得できない場合は処理を終了する。
【0271】
次に、結果処理部244が実行する高解像度結果処理について説明する。
図22は、第3の実施形態の高解像度結果処理のフローチャートの一例である。
【0272】
高解像度結果処理は、結果処理部244が、高解像度合成定義情報242aを読み出し、AI推論処理部250から推論結果を受信し、推論結果から誤判定のものを削除し、推論結果を元画像(HD画像)に還元する処理である。プラットフォーム210の制御部(プロセッサ211)が結果処理部244を実行する。
【0273】
[ステップS81]結果処理部244は、情報処理システム200の起動後、高解像度合成定義情報242aを記憶部から読み出す。
【0274】
[ステップS82]結果処理部244は、合成画像における切出領域の左上端点および右下端点の座標を求める。具体的には、結果処理部244は、合成画像における切出領域の左上端点をオフセット座標(合成点X座標,合成点Y座標)とする。
【0275】
結果処理部244は、オフセット座標にAI処理座標情報の幅と高さを加算した値を、合成画像における切出領域の右下端点の座標とする。結果処理部244は、合成点X座標にAI処理座標情報の幅を加えた値を右下端点X座標とする。結果処理部244は、合成点Y座標にAI処理座標情報の高さを加えた値を右下端点Y座標とする。
【0276】
[ステップS83]結果処理部244は、ステップS82で求めた左上端点座標(左上端点X座標,左上端点Y座標)および右下端点座標(右下端点X座標,右下端点Y座標)にマージンを付与し、有効エリアを生成する。結果処理部244は、合成画像に張り付けた切出領域それぞれについて有効エリアを生成する。なお、有効エリアについては、ステップS33と同様である。
【0277】
[ステップS84]結果処理部244は、AI推論処理部250から推論結果を受信したか否かを判定する。結果処理部244は、推論結果を受信した場合はステップS85にすすみ、推論結果を受信していない場合はステップS84にもどる。
【0278】
[ステップS85]結果処理部244は、受信した推論結果に含まれる人物検出領域が有効エリア内であるか否かを判定する。結果処理部244は、人物検出領域が有効エリア内でない場合はステップS86にすすみ、人物検出領域が有効エリア内である場合はステップS87にすすむ。
【0279】
[ステップS86]結果処理部244は、有効エリア内にない人物検出領域を誤判定として削除する。なお、結果処理部244は、削除した人物検出領域に関連する情報(人物識別情報や人物の特徴)も合わせて推論結果から削除する。
【0280】
[ステップS87]結果処理部244は、人物検出領域を該当する有効エリア内のものとして、切出領域(有効エリアの生成元の切出領域)と対応付ける。具体的には、結果処理部244は、有効エリア内に存在すると判定した人物検出領域および関連する情報(有効な推論結果)を、有効エリアの生成元である切出領域の切出領域IDと対応付ける。
【0281】
[ステップS88]結果処理部244は、有効エリア内の推論結果を元画像ごとのグループに分離し、分離結果を生成する。具体的には、結果処理部244は、ステップS87において有効な推論結果に対応付けられた切出領域IDに基づき、切出領域IDごとのグループに分離することで、分離結果を生成する。
【0282】
[ステップS89]結果処理部244は、分離結果に対してオフセット座標を減算し、元画像の基準点座標を加算し、座標を還元し、結果情報を求める。具体的には、結果処理部244は、分離結果に含まれる人物検出座標に、分離結果に対応付けられた切出領域IDと対応するオフセット座標を減算し、切出領域IDと対応する元画像座標情報に含まれる基準点座標を加算して、結果情報を算出する。
【0283】
つまり、結果処理部244は、元画像ごとのグループに分離した推論結果に含まれる人物検出座標に対し、合成画像の座標から元画像の座標に座標変換を実行したものを結果情報とする。
【0284】
[ステップS90]結果処理部244は、分離結果のうち画像種別が4Kのものについて、座標を4KからHD相当に倍率を還元する。言い換えると、結果処理部244は、4K画像をHD画像に変換する際に拡大された倍率に応じて縮小することで、倍率を還元する。
【0285】
ここで、倍率還元について
図17を用いて説明する。合成画像503を生成するに際に、4K画像である元画像500から切出領域500aを縦横それぞれ3倍にした切出領域500bが張り付けられたものとする。この場合、結果処理部244は、分離結果のうち画像種別が4Kのものについて、座標を1/3倍にすることで座標還元を行う。
【0286】
より具体的には、結果処理部244は、元画像が4K画像である切出領域に対する推論結果について、推論結果に含まれる人物検出座標(X座標,Y座標)、人物検出領域の大きさ(縦,横)を、それぞれ1/3倍にする。
【0287】
[ステップS91]結果処理部244は、座標還元と倍率還元を行った推論結果を合成し、HD画像を撮影するカメラ300が撮影した画像に対する推論結果として不審者判定部245に送信し、ステップS84にもどる。
【0288】
こうして、結果処理部244は、解像度が異なるカメラ300が撮影した元画像それぞれから抽出した切出領域を含む合成画像に対する推論結果を、元画像ごとに分離した分離結果を生成し、座標を還元する。また、結果処理部244は、分離結果について、元画像の解像度に応じて倍率を調整する。また、結果処理部244は、それぞれの推論結果を合成し、1台のカメラ300が撮影した画像に対する推論結果として出力することができる。
【0289】
こうして、情報処理システム200(情報処理装置)における画像合成部241は、第1の画像(元画像500)から抽出した第1の切出領域(切出領域500a)と、第2の画像(元画像501)から抽出した第2の切出領域(切出領域501a)とを含む合成画像(合成画像503)を生成する場合であって、第1の画像の解像度である第1の解像度(たとえば、4K)が第2の画像の解像度である第2の解像度(たとえば、HD)と異なる場合、第1の切出領域を第2の解像度に応じた倍率に変更し、倍率を変更した第1の切出領域と第2の切出領域とを含む合成画像を生成する。また、結果処理部244は、推論結果を、第1の切出領域を抽出した第1の画像に対する第1の分離結果と、第2の切出領域を抽出した第2の画像に対する第2の分離結果に分離し、第1の分離結果に対して第1の画像の座標に還元し、変更した倍率を還元して第1の結果情報を求め、第2の分離結果に対して第2の画像の座標に還元して第2の結果情報を求める。これにより、情報処理システム200(情報処理装置)は、画像の解像度が異なる場合であっても、合成画像を生成することができ、合成画像に推論処理を実行することにより、画像ごとに推論処理を実行した場合と同等の推論結果を得ることができる。
【0290】
このように、推論システム100における情報処理システム200(情報処理装置)は、情報処理システム200(情報処理装置)の性能や推論処理の結果の精度を維持しつつ、画像に対して推論処理を実行する効率を高めることができる。
【0291】
このように、情報処理システム200は、画像について、推論処理の対象となる部分を切出領域として抽出し、切出領域に対して推論処理を適用することができる。また、情報処理システム200は、複数の画像から部分を抽出し、抽出した部分を1つの合成画像にし、1つの合成画像に対して推論処理を実行することで、複数の画像に対して推論処理を実行した場合と同様の推論結果を得ることができる。また、情報処理システム200は、複数の切出領域を1枚の合成画像に配置することで、推論処理の効率を高めることができる。また、情報処理システム200は、推論結果から合成画像に配置された切出領域以外の領域に対する推論結果を削除することにより、推論結果に含まれる誤判定の結果を排除することができる。また、情報処理システム200は、第1の画像および第2の画像から切出領域を抽出する場合、第1の画像を取得した時間から所定の時間内に第2の画像を取得できない場合、第1の画像から抽出した切出領域のみを含む合成画像を生成することで、処理速度を保つことができる。また、情報処理システム200は、解像度が異なる画像それぞれから切出領域を抽出する場合、解像度に応じて切出領域の倍率を変更し、合成画像の解像度に合わせることにより、1枚の合成画像を生成することができる。これにより、情報処理システム200は、1枚の合成画像に対して推論処理を実行することで、解像度が異なる画像ごとに推論処理を実行した場合と同等の推論結果を得ることができる。こうして、情報処理システム200は、情報処理システム200の性能や推論処理の結果の精度を維持しつつ、画像に対して推論処理を実行する効率を高めることができる。
【0292】
なお、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【0293】
例えば、上記実施形態では、プラットフォーム210の2つのRCを用いてPCIeブリッジコントローラ230と接続する例を説明したが、プラットフォーム210の3つ以上のRCを用いてPCIeブリッジコントローラ230と接続することもできる。また、例えば、
図5に示す構成においては、PCIeブリッジコントローラ230は8つのスロット234−1〜234−8を有しているが、これに限定されるものではなく種々変形して実施することができる。即ち、PCIeブリッジコントローラ230は7つ以下もしくは9つ以上のスロット234を備えてもよい。また、例えば、
図3に示す構成においては、複数のプラットフォーム(例えば、演算部として機能するプラットフォーム)が2つ以上のRCを用いてPCIeブリッジコントローラ230のEPと接続するようにすることもできる。
【0294】
また、上述した実施形態においては、PCIeを用いた通信システムについて示したが、これに限定されるものではなく、PCIe以外の通信規格での通信に適用してもよい。
【0295】
上述の実施形態では、各部のI/O(Input/Output)のインタフェースとしてPCIeを例に挙げて説明したが、インタフェースはPCIeに限定されない。例えば、各部のインタフェースは、データ転送バスによって、デバイス(例えば、周辺制御コントローラ)とプロセッサとの間でデータ転送を行える技術であればよい。データ転送バスは、1個の筐体等に設けられたローカルな環境(例えば、1つのシステムまたは1つの装置)で高速にデータを転送できる汎用のバスであってよい。インタフェースは、パラレルインターフェースおよびシリアルインターフェースのいずれであってもよい。
【0296】
I/Oインタフェースは、シリアル転送の場合、ポイント・ツー・ポイント接続ができ、データをパケットベースで転送可能な構成でよい。なお、I/Oインタフェースは、シリアル転送の場合、複数のレーンを有してよい。I/Oインタフェースのレイヤ構造は、パケットの生成および復号を行うトランザクション層と、エラー検出等を行うデータリンク層と、シリアルとパラレルとを変換する物理層とを有してよい。また、I/Oインタフェースは、階層の最上位であり1または複数のポートを有するルートコンプレックス、I/Oデバイスであるエンドポイント、ポートを増やすためのスイッチ、および、プロトコルを変換するブリッジ等を含んでよい。インタフェースは、送信するデータとクロック信号とをマルチプレクサによって多重化して送信してもよい。この場合、受信側は、デマルチプレクサでデータとクロック信号を分離してよい。
記憶部から切出領域を定義した合成定義情報を読み出し、前記記憶部から画像を取得し、前記合成定義情報に基づき前記画像から部分を抽出した複数の切出領域を含む合成画像を生成し、前記合成画像を推論処理部に送信し、
前記合成画像に対して前記推論処理部が推論処理を実行した結果である推論結果を受信し、前記合成定義情報に基づき前記推論結果を前記画像の座標に還元して結果情報を求め、
前記合成画像を生成する際に、
複数の前記画像を取得し、前記画像それぞれから少なくとも1以上の前記切出領域を抽出し、1枚の前記画像と同じサイズの領域に含まれるように前記切出領域それぞれを配置して前記合成画像を生成し、
前記結果情報を求める際に、
前記推論結果を複数の前記画像ごとに分離した分離結果を生成し、前記分離結果それぞれに対して複数の前記画像ごとの座標に還元して前記結果情報を求める、
処理を情報処理装置に実行させるプログラム
記憶部から切出領域を定義した合成定義情報を読み出し、前記記憶部から画像を取得し、前記合成定義情報に基づき前記画像から部分を抽出した複数の切出領域を含む合成画像を生成し、前記合成画像を推論処理部に送信し、
前記合成画像に対して前記推論処理部が推論処理を実行した結果である推論結果を受信し、前記合成定義情報に基づき前記推論結果を前記画像の座標に還元して結果情報を求め、
前記合成画像を前記推論処理部に送信する際に、
第1の画像と第2の画像それぞれから前記切出領域を抽出して前記合成画像を生成する場合であって、
前記第1の画像を取得した時間から所定の時間内に前記第2の画像を取得できない場合、前記第1の画像から抽出した前記切出領域のみを含む前記合成画像を生成し、前記推論処理部に送信する、
処理を情報処理装置に実行させるプログラム。