(57)【要約】      （修正有）【課題】画像分析装置及び画像分析システムにおいて、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、これらの物体認識と物体検出に対応したＮＮモデルの各々の推論処理に適切な推論用プロセッサを割り当てる。【解決手段】ＡＩ推論インスタンスに含まれる物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々の推論時間と使用頻度とに基づいて、複数のチップ（推論用プロセッサ）のうち、上記の各ＮＮモデルの推論処理に用いるチップの割り当てを行うようにした（Ｓ３、Ｓ５、Ｓ９、Ｓ１３、Ｓ１６、及びＳ１９）。これにより、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、これらの物体認識と物体検出に対応したＮＮモデルの各々の推論処理に適切なチップを割り当てられる。【選択図】図７
2020181488.tif 000002
【特許請求の範囲】
【請求項１】
複数のカメラと接続される画像分析装置であって、
前記カメラの各々から入力された画像に映り込んだ物体を検出するための学習済物体検出用ニューラルネットワークモデルと、前記学習済物体検出用ニューラルネットワークモデルにより検出された物体を認識するための１種類以上の学習済物体認識用ニューラルネットワークモデルとを含む画像分析プログラムの各インスタンスを用いて、前記複数のカメラの各々から入力された画像を分析する画像分析部と、
前記学習済物体検出用ニューラルネットワークモデル、及び前記学習済物体認識用ニューラルネットワークモデルにおける推論処理を行うための複数の推論用プロセッサと、
前記画像分析プログラムの各インスタンスに含まれる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、前記複数の推論用プロセッサのうち、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理、及び前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に用いる推論用プロセッサの割り当てを行うプロセッサ割当部とを備える画像分析装置。
【請求項２】
前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項１に記載の画像分析装置。
【請求項３】
前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項１又は請求項２に記載の画像分析装置。
【請求項４】
前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度と、前記学習済物体認識用ニューラルネットワークモデルの各々が一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項２に記載の画像分析装置。
【請求項５】
前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数と、前記学習済物体検出用ニューラルネットワークモデルが一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項３に記載の画像分析装置。
【請求項６】
前記カメラの各々から入力された画像を蓄積する画像蓄積部をさらに備え、
ある時点において、前記プロセッサ割当部が前記推論用プロセッサを割り当てることができなかった、前記学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理について、その後に、前記プロセッサ割当部が、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理に前記推論用プロセッサを割り当てることができるようになった後で、前記画像蓄積部に蓄積された過去の画像に基づいて、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理を、非リアルタイムで行うことを特徴とする請求項１乃至請求項５のいずれか一項に記載の画像分析装置。
【請求項７】
前記画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていることを特徴とする請求項１乃至請求項６のいずれか一項に記載の画像分析装置。
【請求項８】
前記請求項１乃至請求項７のいずれか一項に記載の画像分析装置を複数備え、
前記画像分析装置の各々に接続された複数のカメラと、
前記画像分析装置への前記画像分析プログラムのインストールを含む、前記画像分析装置及び前記カメラの管理を行う管理サーバとをさらに備える画像分析システム。
【請求項９】
前記画像分析システム内の複数の画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていることを特徴とする請求項８に記載の画像分析システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像分析装置、及び画像分析システムに関する。
【背景技術】
【０００２】
従来から、監視カメラ等のカメラで撮影したフレーム画像に映り込んだ人等の物体を、物体検出用ニューラルネットワーク等で検出して、検出した物体の認識を、物体認識用ニューラルネットワークを用いて行うようにした装置やシステムが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−２２４９２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、上記のようなニューラルネットワークを用いて物体の検出及び認識を行う装置やシステム（以下、「物体の検出及び認識を行う装置」と略す）では、物体検出も物体認識も、相当のコンピュータリソースを要する処理である。そして、１つのフレーム画像における全ての物体を認識するために要する時間は、フレームに含まれる（検出）物体数に依存する。
【０００５】
従って、たくさんの物体が検出されたフレーム画像における物体の認識には、長時間を要してしまうため、物体が多いフレーム画像の後暫くの間に入力されたフレーム画像における物体の認識を行うことができない（認識漏れが発生する）という、いわゆるフレーム落ちの問題が発生する。
【０００６】
上記の問題への既存の対処方法としては、物体検出処理用のスレッドと物体認識処理用のスレッドを分割して並行処理可能にし、また物体認識処理を高速化するために、物体認識用ニューラルネットワークの推論処理に、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等の推論用プロセッサを多数割り当てる、という方法がある。
【０００７】
しかし、上記の物体の検出及び認識を行う装置やシステムが、１台のカメラからの入力画像に対する物体検出及び物体認識を行うものである場合には、入力画像に対して行う物体検出と物体認識の種類が決まっているため、上記の既存の方法で対応可能であるが、複数のカメラからの入力画像に対する物体検出及び物体認識を行うものである場合には、各カメラからの入力画像に対して行う物体検出及び物体認識の種類が全て同じであることは少ないので、上記の方法では対応できない。より具体的に言うと、物体の検出及び認識を行う装置やシステムが、複数のカメラからの入力画像に対する物体検出及び物体認識を行うものであって、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合には、全ての種類の物体認識に対応したニューラルネットワーク（の推論処理）に、多数のＧＰＵを割り当てると、余りにもコストが高くなる。従って、複数種類の物体認識及び物体検出に対応した各ニューラルネットワークモデルの処理時間（推論時間）と使用頻度とを考慮して、上記の各ニューラルネットワークモデル毎に、これらのニューラルネットワークモデルの各々の推論処理に適切な推論用プロセッサを割り当てる必要がある。
【０００８】
本発明は、上記課題を解決するものであり、複数のカメラのうち、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、これらの物体認識と物体検出の各々に対応したニューラルネットワークモデル毎に、これらのニューラルネットワークモデルの各々の推論処理に適切な推論用プロセッサを割り当てることが可能な画像分析装置、及び画像分析システムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の第1の態様による画像分析装置は、複数のカメラと接続される画像分析装置であって、前記カメラの各々から入力された画像に映り込んだ物体を検出するための学習済物体検出用ニューラルネットワークモデルと、前記学習済物体検出用ニューラルネットワークモデルにより検出された物体を認識するための１種類以上の学習済物体認識用ニューラルネットワークモデルとを含む画像分析プログラムの各インスタンスを用いて、前記複数のカメラの各々から入力された画像を分析する画像分析部と、前記学習済物体検出用ニューラルネットワークモデル、及び前記学習済物体認識用ニューラルネットワークモデルにおける推論処理を行うための複数の推論用プロセッサと、前記画像分析プログラムの各インスタンスに含まれる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、前記複数の推論用プロセッサのうち、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理、及び前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に用いる推論用プロセッサの割り当てを行うプロセッサ割当部とを備える。
【００１０】
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定してもよい。
【００１１】
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定してもよい。
【００１２】
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度と、前記学習済物体認識用ニューラルネットワークモデルの各々が一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定してもよい。
【００１３】
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数と、前記学習済物体検出用ニューラルネットワークモデルが一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定してもよい。
【００１４】
この画像分析装置において、前記カメラの各々から入力された画像を蓄積する画像蓄積部をさらに備え、ある時点において、前記プロセッサ割当部が前記推論用プロセッサを割り当てることができなかった、前記学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理について、その後に、前記プロセッサ割当部が、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理に前記推論用プロセッサを割り当てることができるようになった後で、前記画像蓄積部に蓄積された過去の画像に基づいて、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理を、非リアルタイムで行ってもよい。
【００１５】
この画像分析装置において、前記画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていてもよい。
【００１６】
本発明の第２の態様による画像分析システムは、前記のいずれかの画像分析装置を複数備え、前記画像分析装置の各々に接続された複数のカメラと、前記画像分析装置への前記画像分析プログラムのインストールを含む、前記画像分析装置及び前記カメラの管理を行う管理サーバとをさらに備える画像分析システムである。
【００１７】
この画像分析システムにおいて、前記画像分析システム内の複数の画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていることが望ましい。
【発明の効果】
【００１８】
本発明の第１の態様による画像分析装置によれば、画像分析プログラムの各インスタンスに含まれる学習済物体検出用ニューラルネットワークモデル及び学習済物体認識用ニューラルネットワークモデルの各々の推論時間と使用頻度とに基づいて、複数の推論用プロセッサのうち、上記の（インスタンスに含まれる）学習済物体検出用ニューラルネットワークモデルにおける推論処理、及び上記の（インスタンスに含まれる）学習済物体認識用ニューラルネットワークモデルの各々における推論処理に用いる推論用プロセッサの割り当てを行うようにした。これにより、複数のカメラのうち、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、複数種類の物体認識及び物体検出に対応した各ニューラルネットワークモデルの処理時間（推論時間）と使用頻度とを考慮して、これらの物体認識と物体検出の各々に対応したニューラルネットワークモデル毎に、これらのニューラルネットワークモデルの各々の推論処理に適切な推論用プロセッサを割り当てることができる。従って、限られた数の推論用プロセッサを用いて、複数のカメラの各々から入力された画像に対する効率的な物体認識を行うことができる。
【００１９】
また、本発明の第２の態様による画像分析システムによれば、上記の効果に加えて、管理サーバを用いて、画像分析装置への画像分析プログラムのインストールを含む、画像分析装置の管理を行うことができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態の分析ボックスを含む画像分析システムの概略の構成を示すブロック構成図。
【図２】同分析ボックスの概略のハードウェア構成を示すブロック図。
【図３】同分析ボックスにおけるＣＰＵの機能ブロック構成図。
【図４】同分析ボックスにおける主なソフトウェアの構成図。
【図５】同分析ボックスにおける、各物体認識用ＮＮモデルの推論処理に必要なチップ数の算出方法の説明図。
【図６】同分析ボックスにおける、ＡＩ推論インスタンスとＧＰＵサーバとの間の通信の説明図。
【図７】上記ＧＰＵサーバが行うチップへのＮＮモデルの割り当て処理のフローチャート。
【図８】画像分析システムにおけるカメラグループとアプリグループの説明図。
【図９】上記アプリグループの一例を示す説明図。
【図１０】図９中のベクトル化モデルが行うベクトル化処理の説明図。
【図１１】店舗内の各カメラ及び各分析ボックスと、管理サーバとの接続を示すブロック図。
【図１２】画像分析システム内の各分析ボックスに接続されたカメラの管理の単位の例を示す説明図。
【発明を実施するための形態】
【００２１】
以下、本発明を具体化した実施形態による画像分析装置、及び画像分析システムについて、図面を参照して説明する。図１は、本実施形態による画像分析装置である分析ボックス１を含む、画像分析システム１０の概略の構成を示すブロック構成図である。本実施形態では、分析ボックス１、及びこの分析ボックス１に接続されるネットワークカメラ（ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）カメラ）２が、チェーン店等の店舗Ｓ内に配される場合の例について説明する。図１に示すように、画像分析システム１０は、店舗Ｓ内に配された、分析ボックス１、複数のネットワークカメラ２（以下、「カメラ２」と略す）、ハブ３、及びルータ５と、クラウドＣ上のＡＩ分析サーバ６及び管理サーバ７とを備えている。上記の複数のカメラ２と分析ボックス１とは、複数の店舗に配置されるので、画像分析システム１０は、複数の分析ボックス１と、これらの分析ボックス１の各々に接続された複数のカメラ２とを備えている。
【００２２】
上記のネットワークカメラ２は、ＩＰアドレスを持ち、ネットワークに直接接続することが可能である。図１に示すように、分析ボックス１は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）４とハブ３とを介して、複数のカメラ２と接続され、これらのカメラ２の各々から入力された画像を分析する。具体的には、カメラ２の各々から入力された画像に対する物体検出処理と、この物体検出処理で検出された物体の画像に対する物体認識処理とを行う。
【００２３】
また、図１に示されるように、分析ボックス１は、ハブ３とルータ５とを介して、クラウドＣ上のＡＩ分析サーバ６及び管理サーバ７と接続されている。ＡＩ分析サーバ６は、分析ボックス１からの物体認識結果に基づいて、例えば、各店舗内における人物の行動を分析し、分析結果の情報を、マーケティングや防犯等の種々の用途のアプリケーションが使い易いデータに変換して出力する。
【００２４】
上記の管理サーバ７は、各店舗に配された多数の分析ボックス１、及びこれらの分析ボックス１に接続されたカメラ２の管理を行う。具体的には、管理サーバ７は、各店舗の分析ボックス１へのアプリパッケージのインストールや、これらの分析ボックス１に接続されたカメラ２の起動及び停止等の制御を行う。なお、このアプリパッケージは、請求項における「画像分析プログラム」に相当し、図９のアプリケーション５１は、このアプリパッケージの一例である。このアプリパッケージについての詳細は後述するが、このアプリパッケージは、学習済物体検出用ニューラルネットワークモデルと、１種類以上の学習済物体認識用ニューラルネットワークモデルと、これらのニューラルネットワークモデルの使い方（処理の順番）を記載した制御用スクリプトとを含んだパッケージ・プログラムである。
【００２５】
次に、図２を参照して、分析ボックス１のハードウェア構成について説明する。分析ボックス１は、装置全体の制御及び各種演算を行うＣＰＵ１１と、各種のデータやプログラムを格納するハードディスク１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ＤＮＮ推論用プロセッサである推論チップ（以下、「チップ」と略す）１４ａ〜１４ｈと、通信制御ＩＣ１５とを備えている。ＣＰＵ１１は、一般的な汎用ＣＰＵ、又は多数の映像ストリームを同時処理するため並列処理性能を高めるように設計されたＣＰＵである。また、ハードディスク１２に格納されるデータには、カメラ２の各々から入力された映像ストリーム（のデータ）をデコードした後の映像データ（フレーム画像のデータ）が含まれ、ハードディスク１２に格納されるプログラムには、上記のアプリパッケージに加えて、図４の説明で述べるＶＭＳ２１、分析ボックスＯＳ２４、及びＧＰＵサーバ２５のプログラムが含まれている。
【００２６】
上記の（推論）チップ１４ａ〜１４ｈは、ＤＮＮ（Ｄｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ）推論に最適化されたプロセッサ（推論専用チップ）であることが望ましいが、一般的な用途に用いられる汎用のＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、又はその他のプロセッサであってもよい。また、上記の各チップ１４ａ〜１４ｈは、１つのボードコンピュータ上に複数のチップ（推論用プロセッサ）が集積（搭載）されたデバイスであってもよい。また、１つの分析ボックス１に、複数の種類のチップを搭載してもよい。例えば、１つの分析ボックス１に、Ａ社製の推論専用チップを４枚、Ｂ社製の推論専用チップを８枚、Ｃ社製のＧＰＧＰＵを１枚搭載するようにしてもよい。ただし、後述する学習済物体認識用ニューラルネットワークモデルや学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要なチップ数の推定処理の説明では、話を簡単にするために、１つの分析ボックス１に、同種類の複数のチップを搭載する場合の例について、説明する。
【００２７】
図２に示すように、上記の（推論）チップ１４ａ〜１４ｈは、ＰＣＩ  Ｅｘｐｒｅｓｓ又はＵＳＢにより、ＣＰＵ１１に接続される。なお、チップ１４ａ〜１４ｈのうち、一部のチップがＰＣＩ  ＥｘｐｒｅｓｓでＣＰＵ１１に接続され、他のチップがＵＳＢでＣＰＵ１１に接続されてもよい。
【００２８】
また、上記の通信制御ＩＣ１５は、Ｅｔｈｅｒｎｅｔ規格のＬＡＮへの接続用のポートであるＬＡＮポート１６を有している。
【００２９】
図３は、上記の分析ボックス１におけるＣＰＵ１１の機能ブロックを示す。分析ボックス１は、機能ブロックとして、画像分析部１８と、プロセッサ割当部１９とを備えている。
【００３０】
上記の画像分析部１８は、カメラ２の各々から入力された画像に映り込んだ物体を検出するための学習済物体検出用ニューラルネットワークモデル（以下、「物体検出用ＮＮモデル」という）と、この物体検出用ＮＮモデルにより検出された物体を認識するための１種類以上の学習済物体認識用ニューラルネットワークモデル（以下、「物体認識用ＮＮモデル」という）とを含むアプリパッケージの各インスタンス（図４に示すＡＩ推論インスタンス２３ａ〜２３ｃ）を用いて、カメラ２の各々から入力された画像を分析する。また、プロセッサ割当部１９は、アプリパッケージの各インスタンスに含まれる物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、複数のチップ１４ａ〜１４ｈのうち、物体検出用ＮＮモデルにおける推論処理、及び物体認識用ＮＮモデルの各々における推論処理に用いるチップ（推論用プロセッサ）の割り当てを行う。上記の画像分析部１８の機能は、分析ボックス１のＣＰＵ１１が、主に、図４に示すＡＩ推論インスタンス２３ａ〜２３ｃ（のプログラム）を実行することにより実現される。また、プロセッサ割当部１９の機能は、分析ボックス１のＣＰＵ１１が、図４に示すＧＰＵサーバ２５（のプログラム）を実行することにより実現される。
【００３１】
次に、図４を参照して、分析ボックス１における主なソフトウェアの構成について説明する。図４に示すように、分析ボックス１における主なソフトウェアは、ＶＭＳ（Ｖｉｄｅｏ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）２１と、ＡＩ推論インスタンス２３ａ〜２３ｃと、分析ボックスＯＳ２４と、ＧＰＵサーバ２５である。図４では、各ソフトウェアのプロセスを示している。ＶＭＳ２１は、カメラ２ａ〜２ｃからハブ３を介して入力される映像ストリームをデコードして、デコード後のフレーム画像（のデータ）を、ストレージ２２に記憶すると共に、分析ボックス１内のバスを介してＡＩ推論インスタンス２３ａ〜２３ｃに出力する。このＶＭＳ２１は、ストレージ２２と共に、ＶＭＳサーバ２０を構成する。
【００３２】
また、上記のＡＩ推論インスタンス２３ａ〜２３ｃの各々は、上記のアプリパッケージ（図９のアプリケーション５１に相当）のインスタンスである。ＡＩ推論インスタンス２３ａ、２３ｂ、２３ｃは、それぞれ、各カメラ２ａ、２ｂ、２ｃから入力された画像に対する物体検出や物体認識を行う。このように、各カメラ２ａ、２ｂ、２ｃから入力された画像に対する物体認識処理用のＡＩ推論インスタンスを分けたのは、カメラ２ａ、２ｂ、２ｃ毎に、使用するアプリパッケージ（に含まれる物体検出用ＮＮモデルや物体認識用ＮＮモデル）の種類が、異なる可能性があるからである。
【００３３】
また、上記の分析ボックスＯＳ２４は、分析ボックス１内のＡＩ推論インスタンス２３ａ〜２３ｃ等のアプリケーションの制御を行うと共に、管理サーバー７との送受信を行う。また、上記のＧＰＵサーバ２５が行う主な処理は、各ＡＩ推論インスタンス２３ａ〜２３ｃの起動時に、各ＡＩ推論インスタンス２３ａ〜２３ｃに含まれる物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、複数のチップ１４ａ〜１４ｈ（図２参照）のうち、物体検出用ＮＮモデルにおける推論処理、及び物体認識用ＮＮモデルの各々における推論処理に用いるチップの割り当てを行う処理である。ただし、各ＡＩ推論インスタンス２３ａ〜２３ｃに含まれる物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々の使用頻度は、時間帯によっても変動し得るので、ＧＰＵサーバ２５は、時間帯によって、物体検出用ＮＮモデルにおける推論処理、及び物体認識用ＮＮモデルの各々における推論処理に用いるチップの割り当てを変更することができる。
【００３４】
次に、ＧＰＵサーバ２５が、チップ１４ａ〜１４ｈに、物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々を割り当てる場合の基本方針について述べる。
【００３５】
１．各チップ１４ａ〜１４ｈに割り当てるＮＮモデル（物体検出用ＮＮモデル又は物体認識用ＮＮモデル）の入れ替えは可能だが、ＮＮモデルの入れ替えには、時間（的コスト）がかかるので、できるだけ入れ替えをしない。なお、上記のＮＮモデルの入れ替えに要する時間は、チップによって異なる。また、一般的に、（推論）チップには、１つのＮＮモデルしか割り当てられないものもあれば、複数のＮＮモデルを割り当てることができるものもある。
【００３６】
２．店舗内における分析要望（物体認識の要望）に丁度応えられるように、各チップ１４ａ〜１４ｈに、各ＮＮモデルを割り当てる。具体的には、下記の２−１、及び２−２のようにする。
２−１．現在のチップ構成（チップの種類と数）で全認識対象物の認識が可能なフレームレートで、全カメラからの画像に対する物体検出が可能な最低限のチップに、物体検出用ＮＮモデルを割り当てる。なお、最低限のチップとは、数及び性能の観点から見て、最低限のチップである。
２−２．（分類等の）認識の推論時間（物体認識用ＮＮモデルの推論処理に必要な推論時間）と、当該認識の必要性（使用頻度、及び優先度）に応じて、各物体認識用ＮＮモデルを、適切な数のチップに割り当てる。
２−３．上記２−１及び２−２が、時々刻々と変化する場合は、上記１のＮＮモデルの入れ替えに要する時間（的コスト）を考慮して、最低限のＮＮモデルの入れ替え（交換）で済むようにする。
【００３７】
３．余り優先度の高くない認識処理については、後回しにしてもよい（リアルタイムにやり切らなくてもよい）。すなわち、暇な時間帯に、ＶＭＳサーバ２０（図４参照）からのフレーム画像（のデータ）に基づいて、上記の認識処理を行ってもよい。
【００３８】
上記の基本方針に従って、各チップ１４ａ〜１４ｈに各ＮＮモデルを割り当てた結果、チップの割り当てが適切であれば、ＧＰＵサーバ２５の挙動は、非常にシンプルで、単に、カメラ２ａ〜２ｃから入力される映像ストリームをデコードしたフレーム画像（のデータ）を、物体検出用ＮＮモデルに割り当てられたチップに入力して認識対象物を検出し、検出された全認識対象物を、物体認識用ＮＮモデルに割り当てられたチップに流し込むだけである。
【００３９】
次に、ＧＰＵサーバ２５によるチップへのＮＮモデルの割り当て方の例について、説明する。この割り当て方の例では、物体検出結果である認識対象物が、どの程度出てくる（検出される）か、及びこれらの認識対象物に物体認識用ＮＮモデルを適用する時間がどの程度になるかを求めて、これらの計算結果から逆算して、物体認識用ＮＮモデルに割り当てるチップ数を算出する。このようなチップの割り当て方をする理由は、物体検出結果である認識対象物の数、及びこれらの認識対象物に適用する物体認識用ＮＮモデルの種類によって、物体検出のフレームレートを一定にした場合における、各物体認識用ＮＮモデルにおける推論処理に必要なチップ数が異なるからである。
【００４０】
上記の点について、図５を参照して説明する。図５において、物体検出用ＮＮモデル３４は、人と顔の両方を検出することが可能なＮＮモデルである。図５に示すように、物体検出用ＮＮモデル３４が、１枚目のフレーム画像３３から、１−１という人と、１−２という人を検出し、２枚目のフレーム画像３３から、２−１という顔を検出したとすると、これらの２枚のフレーム画像については、人に対する分類等の物体認識処理を行うための第１物体認識用ＮＮモデル３６が、２回使用され、顔に対する（性別・年齢推定等の）物体認識処理を行うための第２物体認識用ＮＮモデル３７が、１回使用される。ここで、上記の第１物体認識用ＮＮモデル３６と第２物体認識用ＮＮモデル３７では、物体認識の推論処理に必要な推論時間が異なるので、第１物体認識用ＮＮモデル３６と第２物体認識用ＮＮモデル３７の各々の推論処理に必要なチップ数は、物体検出結果である認識対象物の数、及びこれらの認識対象物に適用する物体認識用ＮＮモデルの推論時間によって異なる。すなわち、物体検出結果である認識対象物の数、及びこれらの認識対象物に適用する物体認識用ＮＮモデルの種類によって、物体検出のフレームレートを一定にした場合における、各物体認識用ＮＮモデルにおける推論処理に必要なチップ数は異なる。
【００４１】
ただし、各フレーム画像３３に対する物体検出の結果である認識対象物の数、及びこれらの認識対象物に対して各物体認識用ＮＮモデルの推論処理を行う時間は、時間帯によって異なる。例えば、夕方の忙しい時間帯と、昼過ぎの暇な時間帯とでは、認識対象物の数が異なるので、これらの認識対象物に対する物体認識処理に必用な時間が異なる。従って、これを予想し、最低限のＮＮモデルの入れ替え（変更）回数（各チップへの各ＮＮモデル（物体検出用ＮＮモデル及び各物体認識用ＮＮモデル）の割り当て方の変更回数）で対応できるように、分析ボックス１の起動時に、各チップに、各ＮＮモデル（例えば、物体検出用ＮＮモデル３４、第１物体認識用ＮＮモデル３６、及び第２物体認識用ＮＮモデル３７）を割り当てておく必要がある。
【００４２】
上記の管理サーバ７（図１参照）は、管理者が、簡易的手順で（後述する「必要チップ数推定」処理で使用するモデル性能、カメラ台数、目標性能等の入力処理を行うことで）、実施したい分析（物体認識）に必用な各ＮＮモデルを各チップに割り当てられるようにする。具体的には、管理者が、管理サーバ７から、モデル性能、カメラ台数、目標性能等の入力を行うと、管理サーバ７が、この入力された情報を分析ボックス１に送信して、分析ボックス１のＣＰＵ１１が、受信した入力情報に基づき、ＧＰＵサーバ２５（図４参照）を用いて、分析に必用な各ＮＮモデルを各チップに割り当てる。
【００４３】
次に、上記のＧＰＵサーバ２５によるチップへのＮＮモデルの割り当て方の例について、具体的に説明するが、その前に、図６を参照して、上記のＡＩ推論インスタンス２３（図４におけるＡＩ推論インスタンス２３ａ〜２３ｃの総称）とＧＰＵサーバ２５との間の通信について説明する。ＡＩ推論インスタンス２３（のプロセス）とＧＰＵサーバ２５（のプロセス）との間のプロセス間通信は、例えば、ｓｈａｒｅｄ  ｍｅｍｏｒｙ、ｓｏｃｋｅｔ、ｆｉｆｏ等を用いて行われる。図６では、ｆｉｆｏを用いた場合の例について示している。図６では、既に、各チップ１４ａ〜１４ｈに各ＮＮモデルを割り当てた後の処理が記載されている。なお、図６中のプロセス間通信において、ＡＩ推論インスタンス２３側の送受信処理は、正確に言うと、ＡＩ推論インスタンス２３内のスクリプト（図９中のアプリケーション５１におけるスクリプト５５に相当）によって行われる。
【００４４】
図６において、ＡＩ推論インスタンス２３ａには、モデルＩＤ１の物体検出用ＮＮモデルと、モデルＩＤ２の物体認識用ＮＮモデルが含まれており、ＡＩ推論インスタンス２３ｂには、モデルＩＤ１の物体検出用ＮＮモデルと、モデルＩＤ３の物体認識用ＮＮモデルが含まれている。ここで、図６を参照して、既に各チップ１４ａ〜１４ｈに各ＮＮモデルを割り当てた後において、ＡＩ推論インスタンス２３ａ、２３ｂとＧＰＵサーバ２５との間で行われる処理について、説明しておく。
【００４５】
まず、図６に示すように、ＡＩ推論インスタンス２３ａが、実行するＮＮモデルがモデルＩＤ１であるという情報と、ＮＮモデルによる推論処理に用いるフレーム（画像）データとを、ＧＰＵサーバ２５に送信すると、ＧＰＵサーバ２５は、受信したフレームデータを、モデルＩＤ１の物体検出用ＮＮモデルに対応した第１推論スレッド４１ａにおける推論データ用キュー４２ａに入れる（入力する）。推論データ用キュー４２ａは、入力されたフレームデータを、入力された順番に、モデルＩＤ１の物体検出用ＮＮモデルに割り当てられたチップ１４ａ〜１４ｃに出力する。そして、これらの推論用のチップ１４ａ〜１４ｃによって、入力されたフレーム（画像）データに対する物体検出が行われる。この後、ＧＰＵサーバ２５の第１推論スレッド４１ａは、上記の物体検出の結果を、ＡＩ推論インスタンス２３ａに返す。
【００４６】
ＡＩ推論インスタンス２３ａは、上記の物体検出結果を第１推論スレッド４１ａから受信すると、受け取った物体検出結果に基づく認識対象物（例えば、人や顔）のフレームデータと共に、実行するＮＮモデルがモデルＩＤ２であるという情報を、ＧＰＵサーバ２５に送信する。ＧＰＵサーバ２５は、受信したフレームデータを、モデルＩＤ２の物体認識用ＮＮモデルに対応した第２推論スレッド４１ｂにおける推論データ用キュー４２ｂに入れる（入力する）。推論データ用キュー４２ｂは、入力された認識対象物のフレームデータを、入力された順番に、モデルＩＤ２の物体認識用ＮＮモデルに割り当てられたチップ１４ｄに出力する。そして、これらの推論用のチップ１４ｄによって、入力されたフレーム（画像）データに対する物体認識が行われる。この後、ＧＰＵサーバ２５の第２推論スレッド４１ｂは、上記の物体認識の結果を、ＡＩ推論インスタンス２３ａに返す。
【００４７】
ＡＩ推論インスタンス２３ｂが行う処理も、基本的には、ＡＩ推論インスタンス２３ａが行う処理と同様であるが、認識対象物のフレームデータに対して行う物体認識処理のＮＮモデルが、モデルＩＤ３のＮＮモデルであるという点が異なる。なお、図６に示すように、ＧＰＵサーバ２５において、各ＮＮモデルに対応する推論処理を行うスレッドは、別々のスレッド（第１推論スレッド４１ａ、第２推論スレッド４１ｂ、及び第３推論スレッド４１ｃ）に分けられており、また、これらの推論スレッド４１ａ〜４１ｃは、それぞれの推論データ用キュー４２ａ〜４２ｃを有している。
【００４８】
次に、上記図５を参照して説明したチップへのＮＮモデルの割り当て方の例について、図７を参照して、より具体的に説明する。なお、以下の説明では、ＧＰＵサーバ２５が処理を行うように記載しているが、より正確に言うと、図３中のプロセッサ割当部１９が、チップへのＮＮモデルの割り当て処理を行う。すなわち、ＣＰＵ１１が、ＧＰＵサーバ２５（というソフトウェア）と協働して、チップへのＮＮモデルの割り当て処理を行う。
【００４９】
図７は、ＧＰＵサーバ２５（正確には、プロセッサ割当部１９）が行うチップへのＮＮモデルの割り当て処理のフローチャートである。この割り当て処理は、所定時間毎に（例えば、一時間に一度）、タイマーによるバッチ処理として行われる。図７のフローチャートに示す処理を開始する前に、ＧＰＵサーバ２５は、使用する可能性のある全てのＡＩ推論インスタンス２３に含まれる全てのＮＮモデルについてのモデルＩＤ、モデルパス、モデル性能（値）、ＮＮモデル自体の優先度、及びＡＩ推論インスタンス２３自体の優先度の情報を取得する。ここで、上記のモデルパスとは、ハードディスク１２（図２参照）における該当のＮＮモデルの（格納先ファイルがある場所までの経路を示す）パスを意味する。また、上記の優先度は、（アプリケーション５１（図９参照）の登録時に管理者が登録する情報である）当該ＮＮモデル自体の優先度×このＡＩ推論インスタンス２３自体の優先度（人があまり映らないカメラの優先度は低いという基準に基づく、そのカメラに対応したＡＩ推論インスタンス２３の優先度）から算出される。
【００５０】
そして、ＧＰＵサーバ２５は、以下の（１）〜（３）の処理を行う。
（１）上記の取得した各情報（モデルＩＤ、モデルパス、モデル性能（値）、ＮＮモデル自体の優先度、及びＡＩ推論インスタンス２３自体の優先度の情報）に基づいて、全ＡＩ推論インスタンス２３に含まれる全てのＮＮモデルについて、（モデルＩＤ、モデルパス、モデル性能（値）、優先度）のパラメータ群を生成することにより、パラメータ群のリストを得て、このリストを優先度順で並び替えたリストＬ＝（ｌ１、ｌ２、・・・、ｌＮ）を作成する。
（２）その時点におけるチップへのＮＮモデルの割り当てをリセット（解除）する。
（３）上記のリストＬの各要素ｌｉについて、先頭から（優先度の高いものから）順に、図７のＳ１以降の処理を実行して、ＮＮモデルのチップへの割り当てを行う。
【００５１】
ここで、上記の優先度が負の値の場合（＝当該ＮＮモデル自体の優先度に負の値が設定されている場合）は、以下の処理で当該ＮＮモデルがチップに割り当てられないことを許容する。そして、当該ＮＮモデルがチップに割り当てられない場合は、当該ＮＮモデルによる推論処理は、段落（００３６）に記載したように、ＶＭＳサーバ２０に蓄積されたフレーム画像を用いて、後回しで処理される。
【００５２】
また、上記のＡＩ推論インスタンス２３の優先度は、当該ＡＩ推論インスタンス２３（に含まれている全ＮＮモデル）の過去の推論量の実績から計算する。例えば、前一時間における当該ＡＩ推論インスタンス２３の推論時間の積算値から、このＡＩ推論インスタンス２３の優先度を算出してもよいし、過去一か月程度における、各曜日・各時間帯における当該ＡＩ推論インスタンス２３の推論時間の積算値から、次の一時間における当該ＡＩ推論インスタンス２３の推論時間を予測し、これを優先度化するようにしてもよい。
【００５３】
上記（３）のリストＬ中のある要素ｌｉ（に対応するＮＮモデル）についてのチップ割り当て処理を開始すると（Ｓ１でＹＥＳ）、ＧＰＵサーバ２５は、該当のＮＮモデルについて、このＮＮモデルへのチップの割り当てが既に行われているか否かを確認する。具体的には、ＧＰＵサーバ２５は、自プロセスが管理するモデルＩＤ配列（ＧＰＵサーバ２５のプログラムにおける配列）中に、上記の要素ｌｉの（パラメータ群に含まれる）モデルＩＤが格納されているか否か（存在するか否か）を確認することにより、このモデルＩＤに対応するＮＮモデルへのチップの割り当てが既に行われているか否かを確認する（Ｓ２）。この結果、上記のモデルＩＤ配列に、上記のモデルＩＤが未だ格納されていない場合には（Ｓ２でＮＯ）、このモデルＩＤに対応するＮＮモデルの推論処理に必要なチップ数を推定する（Ｓ３）。この必要チップ数推定処理の詳細については、後述する。
【００５４】
次に、ＧＰＵサーバ２５は、図２に示す（推論）チップ１４ａ〜１４ｈのうち、未だ（ＮＮモデルに）未割当のチップが残っている場合は（Ｓ４でＹＥＳ）、この未割当のチップの中から、上記Ｓ３で必要と推定されたチップ数のチップを選択して、これらのチップを、上記Ｓ２で未だ格納されていないと判定されたモデルＩＤに対応するＮＮモデルに割り当てる（Ｓ５）。そして、ＧＰＵサーバ２５は、上記Ｓ２で未だ格納されていないと判定されたモデルＩＤを、上記のモデルＩＤ配列に追加する（格納する）（Ｓ６）。
【００５５】
上記Ｓ５のチップの割り当て処理の結果、この割り当て処理でチップが割り当てられたＮＮモデルが、分析ボックス１において使用可能になる（“Ｔｒｕｅ”の状態になる）（Ｓ７）。図７において、“Ｔｒｕｅ”は、該当のＮＮモデルに最低１つ以上のチップが割り当てられており、このＮＮモデルを使用可能な状態を意味する。これに対して、“Ｆａｌｓｅ”は、該当のＮＮモデルにチップが１つも割り当てられておらず、このＮＮモデルを使用できない状態を意味する。“Ｆａｌｓｅ”の場合は、当該ＮＮモデルによる推論処理は、段落（００３６）に記載したように、後回しで処理される。
【００５６】
上記Ｓ４の判定処理において、未割当のチップが残っていない場合は（Ｓ４でＮＯ）、ＧＰＵサーバ２５は、上記の要素ｌｉの優先度が０以上で、かつ、他の推論スレッド（図６の第１推論スレッド４１ａ〜４１ｃに相当）からチップを融通することが可能か否かを判定する（Ｓ８）。上記の要素ｌｉの優先度が０以上で、かつ、他の推論スレッドからチップを融通することができる場合には（Ｓ８でＹＥＳ）、ＧＰＵサーバ２５は、他の推論スレッドからチップを融通して、融通したチップを、上記Ｓ２で未だ格納されていないと判定されたモデルＩＤに対応するＮＮモデルに割り当てる（Ｓ９）。そして、ＧＰＵサーバ２５は、上記Ｓ２で未だ格納されていないと判定されたモデルＩＤを、上記のモデルＩＤ配列に追加する（Ｓ１０）。なお、上記の他の推論スレッドからチップを融通する処理の具体的な内容については、後述する。
【００５７】
上記Ｓ９のチップを融通して割り当てる処理の結果、この割り当て処理でチップが割り当てられたＮＮモデルが、分析ボックス１において使用可能になる（“Ｔｒｕｅ”の状態になる）（Ｓ１１）。ただし、上記Ｓ８の判定の結果、上記の要素ｌｉの優先度が０より小さい（負の）場合、又は他の推論スレッドからチップを融通することができない場合には（Ｓ８でＮＯ）、上記Ｓ２で未だ格納されていないと判定されたモデルＩＤを、分析ボックス１で使用することができない（“Ｆａｌｓｅ”の状態になる）（Ｓ１２）。なお、上記Ｓ８の判定において、上記の要素ｌｉの優先度が０より小さい（負である）と判定された場合は、上記の他の推論スレッドからのチップ融通を試みずに、“Ｆａｌｓｅ”の値を返す（“Ｆａｌｓｅ”の状態になる）。この“Ｆａｌｓｅ”の状態になった場合には、既に未割当のチップが残っておらず、しかも、これ以降の要素ｌｉの優先度が負のもののみであるか、又は他の推論スレッドからチップを融通することができない状態になっている（既にチップ割り当て済みのＮＮモデルの数が、チップ数と同じになっている）。従って、ここで、リストＬ中の各要素についてのチップ割り当て処理を終了する。
【００５８】
上記Ｓ２の判定処理において、該当の要素ｌｉのＮＮモデルについて、このＮＮモデルへのチップの割り当てが既に行われている場合（上記のモデルＩＤ配列に、上記の要素ｌｉのモデルＩＤが既に格納されている場合）には（Ｓ２でＹＥＳ）、チップに割り当てられるＮＮモデルの数が増える訳ではないが、該当のＮＮモデルのインスタンスが増えることになる。このため、ＧＰＵサーバ２５は、該当のＮＮモデルについて、上記Ｓ３と同様な必要チップ数の推定処理を行う（Ｓ１３）。
【００５９】
上記Ｓ１３の推定処理では、最初に該当のＮＮモデルについての必要チップ数推定処理（Ｓ３の推定処理）を行った時と比べて、該当のＮＮモデルのインスタンス数が増えているので、物体検出用ＮＮモデル及び物体認識用ＮＮモデルの必要チップ数推定の基になるカメラ台数や、物体認識用ＮＮモデルの必要チップ数推定の基になる各カメラに映りこむ平均人数（平均の認識対象物数）が、増加する。このため、ＧＰＵサーバ２５は、上記Ｓ１３の推定処理で求めた必要チップ数から見て、該当のＮＮモデルに割り当てるチップを追加する必要があるか否かを判定する（Ｓ１４）。
【００６０】
上記Ｓ１４の判定の結果、該当のＮＮモデルに割り当てるチップを追加する必要がある場合は（Ｓ１４でＹＥＳ）、ＧＰＵサーバ２５は、未だ（ＮＮモデルに）未割当のチップが残っている場合は（Ｓ１５でＹＥＳ）、この未割当のチップの中から、追加する必要のある枚数のチップを選択して、これらのチップを、上記Ｓ１４で追加する必要があると判定されたＮＮモデルに追加割り当てをする（Ｓ１６）。この結果、該当のＮＮモデルに２つ以上のチップが割り当てられた状態になるので、該当のＮＮモデルは、当然、上記の“Ｔｒｕｅ”の状態になる（Ｓ１７）。
【００６１】
これに対して、Ｓ１５の判定の結果、未割当のチップが残っていない場合は（Ｓ１５でＮＯ）、ＧＰＵサーバ２５は、上記の要素ｌｉの優先度が０以上で、かつ、他の推論スレッドからチップを融通することが可能か否かを判定する（Ｓ１８）。上記の要素ｌｉの優先度が０以上で、かつ、他の推論スレッドからチップを融通することができる場合には（Ｓ１８でＹＥＳ）、ＧＰＵサーバ２５は、他の推論スレッドからチップを融通して、融通したチップを、上記Ｓ１４で追加する必要があると判定されたＮＮモデルに追加割り当てをする（Ｓ１９）。なお、ＧＰＵサーバ２５は、上記Ｓ１４で追加する必要があると判定されたＮＮモデルに対応するスレッドが、他の推論スレッドからチップを融通しないと、後述する認識レートの最も低いスレッドになる場合には、上記Ｓ１９の追加割り当て処理（他の推論スレッドからのチップ融通処理）を行うが、他の推論スレッドからチップを融通しなくても、認識レートの最も低いスレッドにはならない場合には、必ずしも、他の推論スレッドからのチップの融通処理を行わない。
【００６２】
上記Ｓ１９の追加割り当て処理を行った場合には、該当のＮＮモデルに２つ以上のチップが割り当てられた状態になるので、該当のＮＮモデルは、当然、上記の“Ｔｒｕｅ”の状態になる（Ｓ２０）。また、上記Ｓ１８の判定の結果、上記の要素ｌｉの優先度が０より小さい（負の）場合、又は他の推論スレッドからチップを融通することができない場合には（Ｓ１８でＮＯ）、該当のＮＮモデルへのチップの追加割り当てを行うことはできない。けれども、この場合でも、上記Ｓ２の判定結果（「該当のＮＮモデルへのチップの割り当てが既に行われている」という判定結果）から、該当のモデルＩＤに対応するＮＮモデルへのチップの割り当ては既に行われているはずなので、該当のＮＮモデルについては、当然、上記の“Ｔｒｕｅ”の状態になる（Ｓ２１）。
【００６３】
上記の説明では、優先度が０以上のＮＮモデルについてのチップの割り当て処理が全て終了した後は、未割当チップが残っている場合に限り（Ｓ４でＹＥＳ、及びＳ１５でＹＥＳ）、優先度が負のＮＮモデルにも、チップを割り当てた。けれども、これに限られず、未割当チップが残っていない場合でも、後述する目標性能を充分に超えていて余裕のあるＮＮモデルのスレッドがある場合には、このＮＮモデルに割り当てられたチップを、優先度が負のＮＮモデルに融通して割り当ててもよい。
【００６４】
上記Ｓ１４の判定の結果、該当のＮＮモデルに割り当てるチップを追加する必要がない場合（Ｓ１４でＮＯ）、すなわち、該当のＮＮモデルのインスタンスが増えても、現在の割り当てチップ数で足りる場合にも、該当のＮＮモデルは、当然、上記の“Ｔｒｕｅ”の状態になる（Ｓ２２）。
【００６５】
次に、上記Ｓ３及びＳ１３の必要チップ数推定処理の詳細について、説明する。この必要チップ数推定処理は、対象となるＮＮモデルが、物体検出用ＮＮモデルであるか、物体認識用ＮＮモデルであるかによって、内容に差異がある。ただし、ＮＮモデルが、いずれのモデルであっても、ＧＰＵサーバ２５（プロセッサ割当部１９）は、各ＮＮモデルの推論処理に必要な推論時間と使用頻度とに基づいて、各ＮＮモデルの推論処理に必要な推論用プロセッサの数を推定する。また、以下の必要チップ数推定処理の説明では、話を簡単にするために、１つの分析ボックス１に、同種類の複数のチップを搭載する場合の例について、説明する。
【００６６】
まず、物体検出用ＮＮモデルについての必要チップ数推定処理について、説明する。この場合には、ＧＰＵサーバ２５（プロセッサ割当部１９）は、この物体検出用ＮＮモデルによる物体検出の対象となる画像の入力元のカメラの台数Ｋと、この物体検出用ＮＮモデルのモデル性能Ｔ（この物体検出用ＮＮモデルの推論処理に必要な推論時間（秒））と、この物体検出用ＮＮモデルの目標性能Ｆ（この物体検出用ＮＮモデルが一定時間内（１秒間）に推論処理する目標のフレーム数（ＦＰＳ（ｆｒａｍｅ  ｐｅｒ  ｓｅｃｏｎｄ））とに基づいて、この物体検出用ＮＮモデルの推論処理に必要なチップ数（必要性能）を、以下の式で推定する。
・必要性能（チップ数）＝Ｋ＊Ｆ＊Ｔ
【００６７】
例えば、カメラ台数Ｋ＝３（台）、モデル性能Ｔ＝０．０５（秒）、目標性能Ｆ＝６（ＦＰＳ）とすると、この物体検出用ＮＮモデルの必要性能（推論処理に必要なチップ数）は、以下の式で計算される。
必要性能（チップ数）＝３＊６＊０．０５＝０．９
【００６８】
従って、上記の例の場合は、チップが１つ必要ということになる。必要チップ数を推定するための基準値として、上記の目標性能Ｆが必要である。また、この目標性能Ｆは、他の（ＮＮモデルに対応する）スレッドとの間で、性能やリソースの余裕度合を比較する際にも必要である。
【００６９】
次に、物体認識用ＮＮモデルについての必要チップ数推定処理について、説明する。この場合には、ＧＰＵサーバ２５（プロセッサ割当部１９）は、この物体認識用ＮＮモデルによる物体認識の対象となる画像の入力元の各カメラに映りこむ平均人数Ｎ１，Ｎ２，・・・（すなわち、この物体認識用ＮＮモデルの使用頻度）と、この物体認識用ＮＮモデルのモデル性能Ｔ（この物体認識用ＮＮモデルの推論処理に必要な推論時間（秒））と、この物体認識用ＮＮモデルの目標性能Ｆ（この物体認識用ＮＮモデルが一定時間内に推論処理する目標のフレーム数（ＦＰＳ））とに基づいて、この物体認識用ＮＮモデルの推論処理に必要なチップ数（必要性能）を、以下の式で推定する。
・必要性能（チップ数）＝ｓｕｍ（Ｎ１，Ｎ２，・・・）＊Ｆ＊Ｔ
（ただし、ｓｕｍ（Ｎ１，Ｎ２，・・・）は、Ｎ１，Ｎ２，・・・の総和（合計）を表す）
【００７０】
例えば、この物体認識用ＮＮモデルへの画像の入力元のカメラが３台で、各カメラに映りこむ平均人数が、５人、２人、３人であり、モデル性能Ｔ＝０．０３秒、目標性能Ｆ＝６ＦＰＳとすると、この物体認識用ＮＮモデルの必要性能（推論処理に必要なチップ数）は、以下の式で計算される。
必要性能（チップ数）＝（５＋２＋３）＊６＊０．０３＝１．８
【００７１】
従って、上記の例の場合は、チップが２つ必要ということになる。物体検出用ＮＮモデルの場合と同様に、必要チップ数を推定するための基準値として、上記の目標性能Ｆが必要である。また、この目標性能Ｆは、他の（ＮＮモデルに対応する）スレッドとの間で、性能やリソースの余裕度合を比較する際にも必要である。
【００７２】
次に、上記Ｓ８、Ｓ９、Ｓ１８、及びＳ１９の説明で述べた、他の推論スレッドからのチップの融通処理について、より詳細に説明する。具体的なチップの融通処理の手順を説明する前に、他の推論スレッドからチップを融通する際の基本原則について、述べる。上記Ｓ４及びＳ１５において、未割当のチップが残っておらず、他の推論スレッドから（該当のＮＮモデルに）チップを融通する時には、一度に複数のチップの割り当てを変更せず、１つのチップの割り当てだけを変更すべきである。何故なら、一度に複数のチップの割り当てを変更した場合には、物体検出用ＮＮモデル（スレッド）に割り当てるチップ数が増減する可能性がある程度高くなり、もし、物体検出用ＮＮモデル（スレッド）に割り当てるチップ数が増減した場合、物体検出処理の後の物体認識処理を行う物体認識用ＮＮモデル（スレッド）へのデータ（主に、認識対象物のフレームデータ）の流入量が大きく増減するため、各ＮＮモデル（のスレッド）についての必要チップ数を再度推定する（推定し直す）必要があるからである。
【００７３】
次に、他の推論スレッドからチップを融通する処理の具体的な手順について、説明する。
１．まず、複数のチップが割り当てられているＮＮモデルのスレッドを列挙する。
２．上記１で列挙したスレッドのうち、後述するデータ損失率が０のスレッドがあれば、それらのスレッドを改めて列挙する。これに対して、上記１で列挙したスレッドの中に、データ損失率が０のスレッドがない場合は、上記１で列挙したスレッドを、まず優先度について昇順にソートし、優先度の同じＮＮモデルのスレッドが複数ある場合は、それらについてさらに、後述する認識レートが大きい順に（認識レートの降順に）ソートする。
３．上記２において、データ損失率が０のスレッドがあった場合には、列挙したデータ損失率が０のスレッドのうち、最上位（最初）のスレッドから、チップを１つ解放する。なお、正確に言うと、データ損失率が０のスレッドが複数あった場合には、もっとも優先度の低い（ＮＮモデルが使用されている）スレッドからチップを1つ解放する。また、上記２において、データ損失率が０のスレッドがなく、認識レートの降順にソートをした場合には、最上位のスレッドから、チップを１つ解放する。
４．上記３で解放したチップを、チップを必要としている（ＮＮモデルの）スレッド（チップが未割当のＮＮモデルのスレッド、又は認識レートの最も低いスレッド）に、割り当てる。
【００７４】
次に、上記のデータ損失率について、説明する。このデータ損失率とは、物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々に対応する各スレッドに流入するデータのうち、検出又は認識されずに捨てられたデータの割合である。
【００７５】
また、上記の認識レートＲを、上記の目標性能Ｆａ（ＦＰＳ）と、実性能Ｆｒ（ＦＰＳ）とで表すと、以下のようになる。
Ｒ＝Ｆｒ／Ｆａ
【００７６】
上記の式において、実性能Ｆｒは、該当の（ＮＮモデルの）スレッドが、一定時間内（１秒間）に推論処理したデータ数（フレーム数）の実測値を示す。この実性能Ｆｒは、上記のデータ損失率＞０のときだけ、意味がある。何故なら、データ損失率＝０の場合は、該当のスレッドが一定時間内（１秒間）に推論可能なデータ数（フレーム数）は、上記の実測値（すなわち、実性能Ｆｒ）以上であるからである。また、上記の式中の目標性能Ｆａは、上記の物体検出用ＮＮモデル及び物体認識用ＮＮモデルの目標性能Ｆと実質的に同じものであり、各ＮＮモデルに対応するスレッドが、一定時間内（１秒間）に推論処理する目標のフレーム数（ＦＰＳ）を表す。
【００７７】
次に、図８及び図９を参照して、上記の画像分析システム１０におけるアプリケーショングループ（以下、「アプリグループ」という）について、説明する。図８に示すように、画像分析システム１０内の各分析ボックス１に接続されたカメラ２（カメラ２ａ〜２ｄ等）は、複数のカメラのグループ（第１カメラグループ、第２カメラグループ等）に分類される。これらのカメラグループのそれぞれに対応するアプリケーション５１（図９参照：請求項における「画像分析プログラム」）は、互いに異なるＮＮモデル（物体検出用ＮＮモデル及び物体認識用ＮＮモデル）の組み合わせで構成されている。図８における各アプリグループ２４ａ、２４ｂは、それぞれ、同じ種類のアプリケーション５１のインスタンス（ＡＩ推論インスタンス）から構成されている。すなわち、第１アプリグループ２４ａに属するＡＩ推論インスタンス２３ａ、２３ｂ（第１カメラグループに属する入口のカメラ２ａと出口のカメラ２ｂからの画像を処理する２つのＡＩ推論インスタンス）は、互いに同じ種類のアプリケーション５１のインスタンスであり、第２アプリグループ２４ｂに属する各ＡＩ推論インスタンス（店舗内の通路の各所に配されたカメラ２ｃ、２ｄ等からの画像を処理するＡＩ推論インスタンス２３ｃ、２３ｄ等）は、互いに同じ種類のアプリケーション５１のインスタンスである。
【００７８】
図９は、上記のアプリグループの一例を示す。図９における出入口顔認識アプリグループ５０は、図８における第１アプリグループ２４ａのように、各店舗の入口にあるカメラ２ａと出口にあるカメラ２ｂからの画像を処理するＡＩ推論インスタンス２３のグループである。図９におけるアプリケーション５１は、上記のＡＩ推論インスタンス２３ａ、２３ｂのクラス（class）に相当するアプリケーション・プログラムであり、人物・顔検出モデル５２、ベクトル化モデル５３、顔認識モデル５４、及びスクリプト５５を含むパッケージ・プログラムである。人物・顔検出モデル５２は、各店舗の入口にあるカメラ２ａと出口にあるカメラ２ｂから取得した画像に含まれる人と顔を検出する物体検出用ＮＮモデルである。ベクトル化モデル５３は、人物・顔検出モデル５２で検出した人の画像に対してベクトル化処理を行う物体認識用ＮＮモデルである。顔認識モデル５４は、人物・顔検出モデル５２で検出した顔に基づいて、検出した人の性別・年齢を推定する物体認識用ＮＮモデルである。スクリプト５５は、上記の人物・顔検出モデル５２、ベクトル化モデル５３、顔認識モデル５４の処理手順等を記述した制御用の簡易なプログラムである。
【００７９】
なお、上記図７で説明した各ＮＮモデルのチップへの割り当て処理に使用した各ＮＮモデル自体の優先度の登録は、以下のようにして行う。すなわち、管理者が、管理サーバ７から、上記のアプリケーション５１（図９参照）に含まれる各ＮＮモデル５２〜５４（自体）の優先度の入力を行うと、管理サーバ７が、入力された各ＮＮモデル毎の優先度を登録する。この各ＮＮモデル毎の優先度の情報は、図１１で説明する管理サーバ７から分析ボックス１への各アプリケーションのダウンロード時に、管理サーバ７から分析ボックス１へ送信される。
【００８０】
一方、図８における第２アプリグループ２４ｂのＡＩ推論インスタンス２３ｃ、２３ｄ等（店舗内の通路の各所に配されたカメラ２ｃ、２ｄ等からの画像を処理するＡＩ推論インスタンス）のクラス（class）に相当するアプリケーション５１は、例えば、人を検出する物体検出用ＮＮモデルと、この物体検出用ＮＮモデルで検出した人の画像に基づいて、かごを持っている人を判別する物体認識用ＮＮモデルと、上記の物体検出用ＮＮモデルで検出した人の画像に基づいて、売り場を担当している店員を判別する物体認識用ＮＮモデルと、スクリプト５５とを含むパッケージ・プログラムである。
【００８１】
ＧＰＵサーバ２５（プロセッサ割当部１９）は、上記図７の説明で述べた、リストＬの各要素ｌｉについての処理を行うことにより、できるだけデータ損失（認識されずに捨てられるデータ）が生じないで、物体検出及び物体認識が行えるように、物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々に、チップ１４ａ，１４ｂ等を割り当てる。ＧＰＵサーバ２５（プロセッサ割当部１９）は、物体検出のフレームレートを一定に保ちつつ（物体検出のフレームレートを下げないように）、優先度の高い物体認識処理を最大限行えるように、各ＮＮモデルへのチップ１４ａ，１４ｂ等の割り当てを行う。ここで、図９に示すように、リアルタイムの処理に間に合わなかった物体認識処理については、ＣＰＵ１１が、ＶＭＳサーバ２０（図４参照）に格納されたフレーム画像を用いて、後で行う。また、上記のように、物体検出のフレームレートを一定に保つのは、分析ボックス１による物体認識結果を用いたＡＩ分析サーバ６による処理（分析等）の精度を保つためである。
【００８２】
ここで、上記図９におけるベクトル化モデル５３が行うベクトル化処理について、図１０を参照して説明する。図３に示すＣＰＵ１１の画像分析部１８は、ＡＩ推論インスタンスに含まれるベクトル化モデル５３（図９参照）を用いて、以下のベクトル化処理を行う。すなわち、画像分析部１８は、図１０に示すように、各カメラ２ａ、２ｂで撮影したフレーム画像３３ａ、３３ｂについて人物・顔検出モデル５２で検出した人の画像５７ａ、５７ｂを、ベクトル化モデル５３（のＤＮＮモデル）に入力することにより、ベクトル化モデル５３が、図１０に示すように、上記のフレーム画像３３ａ、３３ｂを、ベクトルＶ１、Ｖ３に変換して出力する。これらのベクトルＶ１、Ｖ３は、例えば、１２８次元のベクトルである。
【００８３】
カメラ２ａで撮影したフレーム画像３３ａで検出された人の画像５７ａから求めたベクトルＶ１と、カメラ２ｂで撮影したフレーム画像３３ｂで検出された人の画像５７ｂから求めたベクトルＶ３とを、Ｄｉｓｔ関数に入力すると、上記の画像５７ａに写っていた人５８ａと、画像５７ｂに写っていた人５８ｂとが、同じである場合には、Ｄｉｓｔ関数の出力値が所定の値（例えば、１５）よりも小さくなる。これに対して、図１０に示す例の場合は、Ｄｉｓｔ関数の出力値（３２）が所定の値（１５）以上であるので、画像５７ａに写っていた人５８ａと、画像５７ｂに写っていた人５８ｂとが、違う人ということになる。
【００８４】
従って、ＣＰＵ１１の画像分析部１８は、各カメラ２ａ、２ｂで撮影したフレーム画像において検出した、ある人の画像のうち、少なくとも一つのその人の画像（例えば、図１０中の人の画像５７ａや５７ｂ）について、上記のベクトル化処理を行うことにより、カメラ２ａで映した人と、カメラ２ｂで映した人とが、同じ人か否かを判定することができる。
【００８５】
図１１は、管理サーバ７と店舗内の各分析ボックス１と各カメラ２との接続を示す図である。この図１１では、管理サーバ７と、ある店舗Ｓ内の各分析ボックス１ａ、１ｂ及び各カメラ２ａ〜２ｆとの接続のみを示している。また、分析ボックス１ａ、１ｂ内の各アプリケーション５１ａ〜５１ｃと各カメラ２ａ〜２ｆとの対応関係を分かり易く示すために、各アプリケーション５１ａ〜５１ｃと各カメラ２ａ〜２ｆとの間を、破線と実線でつないでいる。管理サーバ７と、各分析ボックス１ａ、１ｂと、各カメラ２ａ〜２ｆとを接続する際には、まず、管理サーバ７に、接続する分析ボックス１ａ、１ｂを登録した上で、店舗Ｓ内の各カメラ２ａ〜２ｆを、分析ボックス１ａ、１ｂのいずれかに登録する必要がある。そして、上記の各カメラ２ａ〜２ｆの各分析ボックス１ａ、１ｂへの登録時に、各カメラ２ａ〜２ｆと各アプリケーション５１（第１アプリケーション５１ａ、第２アプリケーション５２ｂ、及び第３アプリケーション５２ｃ）との対応付け（すなわち、各カメラと上記のアプリグループ（図８及び図９参照）との対応付け）を行うためのアプリケーションの選択処理や、その他の設定処理を行う。
【００８６】
この時、各カメラ２ａ〜２ｆについて選択したアプリケーション５１が、既に分析ボックス１（分析ボックス１ａ又は分析ボックス１ｂ）にインストール済みのアプリケーションであれば、該当のカメラ２と、選択したアプリケーション５１との紐づけだけを行う。これに対して、選択したアプリケーション５１が、未だ該当の分析ボックス１にインストールされていない新規のアプリケーション５１であれば、分析ボックス１（のＣＰＵ１１）は、管理サーバ７から、このアプリケーション５１をダウンロードして、インストールした上で、このアプリケーション５１と該当のカメラ２との紐づけを行う。
【００８７】
なお、図１１では、分析ボックス１ａの第１アプリケーション５１ａとカメラ２ａとが紐づけされており、分析ボックス１ａの第２アプリケーション５２ｂとカメラ２ｂとが紐づけされている。また、分析ボックス１ｂの第１アプリケーション５１ａとカメラ２ｃ、２ｄとが紐づけされており、分析ボックス１ｂの第３アプリケーション５２ｃとカメラ２ｅ、２ｆとが紐づけされている。
【００８８】
上記の各アプリケーション５１ａ〜５１ｃは、図８における各アプリグループに対応する。また、分析ボックス１ａ、１ｂに接続されたカメラ２ａ〜２ｆは、上記の各アプリケーション５１ａ〜５１ｃに対応した３つのカメラグループに分類される。具体的には、図１１に示すカメラ２ａ〜２ｆは、第１アプリケーション５１ａに紐づけされたカメラ２ａ、２ｃ、２ｄと、第２アプリケーション５２ｂに紐づけされたカメラ２ｂと、第３アプリケーション５２ｃに紐づけされたカメラ２ｅ、２ｆの３つのカメラグループに分類される。
【００８９】
上記図１１では、１つの店舗Ｓ内の各カメラ２ａ〜２ｆと各アプリケーション５１ａ〜５１ｃとの対応関係について説明したが、画像分析システム１０内の全ての分析ボックス１に接続されたカメラは、各アプリケーション５１に対応するカメラグループに分類され、これらのカメラグループのそれぞれに対応するアプリケーション５１は、互いに異なる物体検出用ＮＮモデル及び物体認識用ＮＮモデルの組み合わせで構成されている。
【００９０】
なお、上記図８、図９及び図１１等の説明では、管理サーバ７が、画像分析システム１０内のカメラ２を、アプリケーション５１単位で管理する場合の例を示したが、管理サーバ７によるカメラ２の管理の単位は、これに限らない。図１２は、管理サーバ７による、画像分析システム１０内の各分析ボックス１に接続されたカメラ２の管理の単位の例を示す。管理サーバ７は、画像分析システム１０内のカメラ２を、エリア単位（Ａエリアグループ６１ａ、Ｂエリアグループ６１ｂ）、店単位（Ａ店グループ６２ａ〜Ｄ店グループ６２ｄ）、アプリケーション単位（出入口顔認識アプリグループ６３ａ（図９中の出入口顔認識アプリグループ５０に相当）、万引き検出アプリグループ６３ｂ）等の単位（グループ）で管理することができる。図１２中の各グループは、上記のカメラグループに相当する。管理者は、カメラ２の管理の単位を変更するときは、管理サーバ７から、グループ単位の切り替え操作を行う。
【００９１】
管理サーバ７は、各カメラ２を、グループ単位に管理することもできるし、個別に管理することもできるが、管理の効率性を考えると、グループ単位で管理することが望ましい。管理サーバ７が、各分析ボックス１に接続されたカメラ２をグループ単位で管理することにより、管理サーバ７は、例えば、グループ内のカメラ２を管理する各分析ボックス１に対して、更新したアプリケーション５１を一括配信することや、グループ内のカメラ２に対して、一斉に、起動・停止を指示することができる。
【００９２】
上記のように、本実施形態の分析ボックス１によれば、各ＡＩ推論インスタンス２３に含まれるＮＮモデル（物体検出用ＮＮモデル及び物体認識用ＮＮモデル）の各々の推論時間と使用頻度とに基づいて、複数のチップのうち、上記の（各ＡＩ推論インスタンス２３に含まれる）物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々における推論処理に用いるチップ１４の割り当てを行うようにした。これにより、複数のカメラ２のうち、あるカメラ２から入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、複数種類の物体認識及び物体検出に対応した各ＮＮモデルの処理時間（推論時間）と使用頻度とを考慮して、これらの物体認識と物体検出の各々に対応したＮＮモデル毎に、これらのＮＮモデルの各々の推論処理に適切なチップ１４を割り当てることができる。従って、限られた数のチップ１４を用いて、複数のカメラ２の各々から入力された画像に対する効率的な物体認識を行うことができる。
【００９３】
また、本実施形態の分析ボックス１によれば、物体認識用ＮＮモデルの各々における推論処理に必要な推論時間と、物体認識用ＮＮモデルの各々の使用頻度に基づいて、物体認識用ＮＮモデルの各々の推論処理に必要なチップ１４の数を推定するようにした。これにより、複数のカメラ２のうち、あるカメラ２から入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、複数種類の物体認識に対応した各ＮＮモデルの処理時間（推論時間）と使用頻度とを考慮して、これらの物体認識の各々に対応したＮＮモデル毎に、これらのＮＮモデルの各々の推論処理に適切な数のチップ１４を割り当てることができる。
【００９４】
また、本実施形態の分析ボックス１によれば、物体検出用ＮＮモデルにおける推論処理に必要な推論時間と、物体検出用ＮＮモデルによる物体検出の対象となる画像の入力元のカメラ２の台数に基づいて、物体検出用ＮＮモデルの推論処理に必要なチップ１４の数を推定するようにした。ここで、物体検出用ＮＮモデルの使用頻度は、この物体検出用ＮＮモデルによる物体検出の対象となる画像の入力元のカメラ２の台数に応じて異なるので、上記のように、物体検出用ＮＮモデルによる物体検出の対象となる画像の入力元のカメラ２の台数と、物体検出用ＮＮモデルにおける推論処理に必要な推論時間とに基づいて、物体検出用ＮＮモデルの推論処理に必要なチップ１４の数を推定することにより、この物体検出用ＮＮモデルに、適切な数のチップ１４を割り当てることができる。
【００９５】
また、本実施形態の分析ボックス１によれば、物体認識用ＮＮモデルの各々における推論処理に必要な推論時間と、物体認識用ＮＮモデルの各々の使用頻度と、物体認識用ＮＮモデルの各々が一定時間内に推論処理する目標のフレーム数に基づいて、物体認識用ＮＮモデルの各々の推論処理に必要なチップ１４の数を推定するようにした。ここで、例えば、上記の目標のフレーム数を、物体認識用ＮＮモデルの各々が行う物体認識処理の優先度に応じて変更することにより、上記に記載の効果に加えて、物体認識用ＮＮモデルの各々が行う物体認識処理の優先度を考慮して、これらのＮＮモデルの各々の推論処理に適切な数のチップ１４を割り当てることができる。
【００９６】
また、本実施形態の分析ボックス１によれば、物体検出用ＮＮモデルにおける推論処理に必要な推論時間と、物体検出用ＮＮモデルによる物体検出の対象となる画像の入力元のカメラ２の台数と、物体検出用ＮＮモデルが一定時間内に推論処理する目標のフレーム数に基づいて、物体検出用ＮＮモデルの推論処理に必要なチップ１４の数を推定するようにした。ここで、例えば、上記の目標のフレーム数を、物体検出用ＮＮモデルの各々が行う物体検出処理の優先度（物体認識用ＮＮモデルの各々が行う物体認識処理や、他の種類の物体検出用ＮＮモデルが行う物体検出処理と比較した優先度）に応じて変更することにより、上記に記載の効果に加えて、この物体検出用ＮＮモデルが行う物体検出処理の優先度を考慮して、この物体検出用ＮＮモデルの物体検出処理に適切な数のチップ１４を割り当てることができる。
【００９７】
また、本実施形態の分析ボックス１によれば、カメラ２の各々から入力された画像を蓄積するＶＭＳサーバ２０（のストレージ２２）をさらに備え、ある時点において、プロセッサ割当部１９が推論用のチップ１４を割り当てることができなかった、物体検出用ＮＮモデル又は物体認識用ＮＮモデルの推論処理について、その後に、プロセッサ割当部１９が該当の物体検出用ＮＮモデル又は物体認識用ＮＮモデルの推論処理にチップ１４を割り当てることができるようになった後で、ＣＰＵ１１が、ＶＭＳサーバ２０に蓄積された過去の画像に基づいて、該当の物体検出用ＮＮモデル又は物体認識用ＮＮモデルの推論処理を、非リアルタイムで行うようにした。これにより、ある時点において、プロセッサ割当部１９が、ある物体検出用ＮＮモデル又は物体認識用ＮＮモデルの推論処理に、推論用のチップ１４を割り当てることができなかった場合でも、ＣＰＵ１１が、ＶＭＳサーバ２０に蓄積された過去の画像に基づいて、後追いで、該当の物体検出用ＮＮモデル又は物体認識用ＮＮモデルの推論処理を行うことができる。
【００９８】
また、本実施形態の画像分析システム１０によれば、上記の効果に加えて、管理サーバ７を用いて、分析ボックス１へのアプリケーション５１のインストールを含む、分析ボックス１の管理を行うことができる。
【００９９】
変形例：
なお、本発明は、上記の各実施形態の構成に限られず、発明の趣旨を変更しない範囲で種々の変形が可能である。次に、本発明の変形例について説明する。
【０１００】
変形例１： 
上記の実施形態では、プロセッサ割当部１９（ＧＰＵサーバ２５）が、各ＮＮモデル（物体検出用ＮＮモデル及び物体認識用ＮＮモデルの各々）の推論処理に必要なチップ１４（推論用プロセッサ）の数を推定し、推定した数のチップ１４を、各ＮＮモデル（の推論処理）に割り当てる場合の例を示した。けれども、１つの分析ボックスに、複数の種類のチップ（推論用プロセッサ）が搭載されており、これらのチップが、異なる性能のチップから構成されている場合には、プロセッサ割当部が、各ＮＮモデルの推論処理に用いるチップの種類と数を決定し、決定した種類と数のチップを、各ＮＮモデルに割り当ててもよいし、各ＮＮモデルの推論処理に用いるチップの種類のみを決定し、決定した種類のチップを、各ＮＮモデルに割り当ててもよい
【０１０１】
変形例２： 
上記の実施形態における物体検出用ＮＮモデルの必要チップ数推定処理では、プロセッサ割当部１９（ＧＰＵサーバ２５）が、物体検出用ＮＮモデルによる物体検出の対象となる画像の入力元のカメラの台数Ｋと、物体検出用ＮＮモデルのモデル性能Ｔ（この物体検出用ＮＮモデルの推論処理に必要な推論時間）と、この物体検出用ＮＮモデルの目標性能Ｆ（この物体検出用ＮＮモデルが一定時間内に推論処理する目標のフレーム数）とに基づいて、この物体検出用ＮＮモデルの推論処理に必要なチップ数（必要性能）を推定するようにした。けれども、これに限られず、例えば、プロセッサ割当部１９が、上記の画像の入力元のカメラの台数Ｋと、物体検出用ＮＮモデルのモデル性能Ｔのみに基づいて、物体検出用ＮＮモデルの推論処理に必要なチップ数を推定するようにしてもよい。
【０１０２】
また、上記の実施形態における物体認識用ＮＮモデルの必要チップ数推定処理では、プロセッサ割当部１９（ＧＰＵサーバ２５）が、物体認識用ＮＮモデルによる物体認識の対象となる画像の入力元の各カメラに映りこむ平均人数Ｎ１，Ｎ２，・・・（すなわち、この物体認識用ＮＮモデルの使用頻度）と、この物体認識用ＮＮモデルのモデル性能Ｔ（この物体認識用ＮＮモデルの推論処理に必要な推論時間（秒））と、この物体認識用ＮＮモデルの目標性能Ｆ（この物体認識用ＮＮモデルが一定時間内に推論処理する目標のフレーム数）とに基づいて、この物体認識用ＮＮモデルの推論処理に必要なチップ数を推定するようにした。けれども、これに限られず、例えば、プロセッサ割当部１９が、上記の画像の入力元の各カメラに映りこむ平均人数Ｎ１，Ｎ２，・・・と、物体認識用ＮＮモデルのモデル性能Ｔのみに基づいて、物体検出用ＮＮモデルの推論処理に必要なチップ数を推定するようにしてもよい。
【０１０３】
変形例３： 
上記の実施形態では、画像分析システム１０が、クラウドＣ上に、ＡＩ分析サーバ６と管理サーバ７とを備える場合の例を示したが、画像分析システムの構成はこれに限られず、例えば、クラウド上に、管理サーバのみを備えてもよい。
【符号の説明】
【０１０４】
１    分析ボックス（画像分析装置）
２    ネットワークカメラ（カメラ）
７    管理サーバ
１０  画像分析システム
１４ａ〜１４ｈ  チップ（推論用プロセッサ）
１８  画像分析部
１９  プロセッサ割当部
２０  ＶＭＳサーバ
２２  ストレージ（画像蓄積部）
２３，２３ａ，２３ｂ，２３ｃ  ＡＩ推論インスタンス（画像分析プログラムのインスタンス）
５１  アプリケーション（画像分析プログラム）
Ｋ    カメラの台数
Ｔ    モデル性能（学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間、及び学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間）
Ｆ    目標性能（学習済物体認識用ニューラルネットワークモデルの各々が一定時間内に推論処理する目標のフレーム数、及び学習済物体検出用ニューラルネットワークモデルが一定時間内に推論処理する目標のフレーム数）
【図１】
2020181488.tif 000003
【図２】
2020181488.tif 000004
【図３】
2020181488.tif 000005
【図４】
2020181488.tif 000006
【図５】
2020181488.tif 000007
【図６】
2020181488.tif 000008
【図７】
2020181488.tif 000009
【図８】
2020181488.tif 000010
【図９】
2020181488.tif 000011
【図１０】
2020181488.tif 000012
【図１１】
2020181488.tif 000013
【図１２】
2020181488.tif 000014