JP2020181488A - 画像分析装置、及び画像分析システム - Google Patents

画像分析装置、及び画像分析システム Download PDF

Info

Publication number
JP2020181488A
JP2020181488A JP2019085621A JP2019085621A JP2020181488A JP 2020181488 A JP2020181488 A JP 2020181488A JP 2019085621 A JP2019085621 A JP 2019085621A JP 2019085621 A JP2019085621 A JP 2019085621A JP 2020181488 A JP2020181488 A JP 2020181488A
Authority
JP
Japan
Prior art keywords
inference
model
neural network
image
object detection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019085621A
Other languages
English (en)
Other versions
JP6644231B1 (ja
Inventor
礼於 宇野
Reo Uno
礼於 宇野
安紘 土田
Yasuhiro Tsuchida
安紘 土田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AWL Inc
Original Assignee
AWL Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by AWL Inc filed Critical AWL Inc
Priority to JP2019085621A priority Critical patent/JP6644231B1/ja
Application granted granted Critical
Publication of JP6644231B1 publication Critical patent/JP6644231B1/ja
Priority to CN202010248807.2A priority patent/CN111860478A/zh
Priority to US16/857,334 priority patent/US11475237B2/en
Publication of JP2020181488A publication Critical patent/JP2020181488A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/10Image acquisition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/285Selection of pattern recognition techniques, e.g. of classifiers in a multi-classifier system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/87Arrangements for image or video recognition or understanding using pattern recognition or machine learning using selection of the recognition techniques, e.g. of a classifier in a multiple classifier system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/96Management of image or video recognition tasks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/20Scenes; Scene-specific elements in augmented reality scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/52Surveillance or monitoring of activities, e.g. for recognising suspicious objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/161Detection; Localisation; Normalisation
    • G06V40/166Detection; Localisation; Normalisation using acquisition arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/07Target detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Multimedia (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Human Computer Interaction (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Image Analysis (AREA)

Abstract

【課題】画像分析装置及び画像分析システムにおいて、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、これらの物体認識と物体検出に対応したNNモデルの各々の推論処理に適切な推論用プロセッサを割り当てる。【解決手段】AI推論インスタンスに含まれる物体検出用NNモデル及び物体認識用NNモデルの各々の推論時間と使用頻度とに基づいて、複数のチップ(推論用プロセッサ)のうち、上記の各NNモデルの推論処理に用いるチップの割り当てを行うようにした(S3、S5、S9、S13、S16、及びS19)。これにより、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、これらの物体認識と物体検出に対応したNNモデルの各々の推論処理に適切なチップを割り当てられる。【選択図】図7

Description

本発明は、画像分析装置、及び画像分析システムに関する。
従来から、監視カメラ等のカメラで撮影したフレーム画像に映り込んだ人等の物体を、物体検出用ニューラルネットワーク等で検出して、検出した物体の認識を、物体認識用ニューラルネットワークを用いて行うようにした装置やシステムが知られている(例えば、特許文献1参照)。
特開2017−224925号公報
ところで、上記のようなニューラルネットワークを用いて物体の検出及び認識を行う装置やシステム(以下、「物体の検出及び認識を行う装置」と略す)では、物体検出も物体認識も、相当のコンピュータリソースを要する処理である。そして、1つのフレーム画像における全ての物体を認識するために要する時間は、フレームに含まれる(検出)物体数に依存する。
従って、たくさんの物体が検出されたフレーム画像における物体の認識には、長時間を要してしまうため、物体が多いフレーム画像の後暫くの間に入力されたフレーム画像における物体の認識を行うことができない(認識漏れが発生する)という、いわゆるフレーム落ちの問題が発生する。
上記の問題への既存の対処方法としては、物体検出処理用のスレッドと物体認識処理用のスレッドを分割して並行処理可能にし、また物体認識処理を高速化するために、物体認識用ニューラルネットワークの推論処理に、GPU(Graphics Processing Unit)等の推論用プロセッサを多数割り当てる、という方法がある。
しかし、上記の物体の検出及び認識を行う装置やシステムが、1台のカメラからの入力画像に対する物体検出及び物体認識を行うものである場合には、入力画像に対して行う物体検出と物体認識の種類が決まっているため、上記の既存の方法で対応可能であるが、複数のカメラからの入力画像に対する物体検出及び物体認識を行うものである場合には、各カメラからの入力画像に対して行う物体検出及び物体認識の種類が全て同じであることは少ないので、上記の方法では対応できない。より具体的に言うと、物体の検出及び認識を行う装置やシステムが、複数のカメラからの入力画像に対する物体検出及び物体認識を行うものであって、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合には、全ての種類の物体認識に対応したニューラルネットワーク(の推論処理)に、多数のGPUを割り当てると、余りにもコストが高くなる。従って、複数種類の物体認識及び物体検出に対応した各ニューラルネットワークモデルの処理時間(推論時間)と使用頻度とを考慮して、上記の各ニューラルネットワークモデル毎に、これらのニューラルネットワークモデルの各々の推論処理に適切な推論用プロセッサを割り当てる必要がある。
本発明は、上記課題を解決するものであり、複数のカメラのうち、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、これらの物体認識と物体検出の各々に対応したニューラルネットワークモデル毎に、これらのニューラルネットワークモデルの各々の推論処理に適切な推論用プロセッサを割り当てることが可能な画像分析装置、及び画像分析システムを提供することを目的とする。
上記課題を解決するために、本発明の第1の態様による画像分析装置は、複数のカメラと接続される画像分析装置であって、前記カメラの各々から入力された画像に映り込んだ物体を検出するための学習済物体検出用ニューラルネットワークモデルと、前記学習済物体検出用ニューラルネットワークモデルにより検出された物体を認識するための1種類以上の学習済物体認識用ニューラルネットワークモデルとを含む画像分析プログラムの各インスタンスを用いて、前記複数のカメラの各々から入力された画像を分析する画像分析部と、前記学習済物体検出用ニューラルネットワークモデル、及び前記学習済物体認識用ニューラルネットワークモデルにおける推論処理を行うための複数の推論用プロセッサと、前記画像分析プログラムの各インスタンスに含まれる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、前記複数の推論用プロセッサのうち、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理、及び前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に用いる推論用プロセッサの割り当てを行うプロセッサ割当部とを備える。
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定してもよい。
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定してもよい。
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度と、前記学習済物体認識用ニューラルネットワークモデルの各々が一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定してもよい。
この画像分析装置において、前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数と、前記学習済物体検出用ニューラルネットワークモデルが一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定してもよい。
この画像分析装置において、前記カメラの各々から入力された画像を蓄積する画像蓄積部をさらに備え、ある時点において、前記プロセッサ割当部が前記推論用プロセッサを割り当てることができなかった、前記学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理について、その後に、前記プロセッサ割当部が、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理に前記推論用プロセッサを割り当てることができるようになった後で、前記画像蓄積部に蓄積された過去の画像に基づいて、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理を、非リアルタイムで行ってもよい。
この画像分析装置において、前記画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていてもよい。
本発明の第2の態様による画像分析システムは、前記のいずれかの画像分析装置を複数備え、前記画像分析装置の各々に接続された複数のカメラと、前記画像分析装置への前記画像分析プログラムのインストールを含む、前記画像分析装置及び前記カメラの管理を行う管理サーバとをさらに備える画像分析システムである。
この画像分析システムにおいて、前記画像分析システム内の複数の画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていることが望ましい。
本発明の第1の態様による画像分析装置によれば、画像分析プログラムの各インスタンスに含まれる学習済物体検出用ニューラルネットワークモデル及び学習済物体認識用ニューラルネットワークモデルの各々の推論時間と使用頻度とに基づいて、複数の推論用プロセッサのうち、上記の(インスタンスに含まれる)学習済物体検出用ニューラルネットワークモデルにおける推論処理、及び上記の(インスタンスに含まれる)学習済物体認識用ニューラルネットワークモデルの各々における推論処理に用いる推論用プロセッサの割り当てを行うようにした。これにより、複数のカメラのうち、あるカメラから入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、複数種類の物体認識及び物体検出に対応した各ニューラルネットワークモデルの処理時間(推論時間)と使用頻度とを考慮して、これらの物体認識と物体検出の各々に対応したニューラルネットワークモデル毎に、これらのニューラルネットワークモデルの各々の推論処理に適切な推論用プロセッサを割り当てることができる。従って、限られた数の推論用プロセッサを用いて、複数のカメラの各々から入力された画像に対する効率的な物体認識を行うことができる。
また、本発明の第2の態様による画像分析システムによれば、上記の効果に加えて、管理サーバを用いて、画像分析装置への画像分析プログラムのインストールを含む、画像分析装置の管理を行うことができる。
本発明の一実施形態の分析ボックスを含む画像分析システムの概略の構成を示すブロック構成図。 同分析ボックスの概略のハードウェア構成を示すブロック図。 同分析ボックスにおけるCPUの機能ブロック構成図。 同分析ボックスにおける主なソフトウェアの構成図。 同分析ボックスにおける、各物体認識用NNモデルの推論処理に必要なチップ数の算出方法の説明図。 同分析ボックスにおける、AI推論インスタンスとGPUサーバとの間の通信の説明図。 上記GPUサーバが行うチップへのNNモデルの割り当て処理のフローチャート。 画像分析システムにおけるカメラグループとアプリグループの説明図。 上記アプリグループの一例を示す説明図。 図9中のベクトル化モデルが行うベクトル化処理の説明図。 店舗内の各カメラ及び各分析ボックスと、管理サーバとの接続を示すブロック図。 画像分析システム内の各分析ボックスに接続されたカメラの管理の単位の例を示す説明図。
以下、本発明を具体化した実施形態による画像分析装置、及び画像分析システムについて、図面を参照して説明する。図1は、本実施形態による画像分析装置である分析ボックス1を含む、画像分析システム10の概略の構成を示すブロック構成図である。本実施形態では、分析ボックス1、及びこの分析ボックス1に接続されるネットワークカメラ(IP(Internet Protocol)カメラ)2が、チェーン店等の店舗S内に配される場合の例について説明する。図1に示すように、画像分析システム10は、店舗S内に配された、分析ボックス1、複数のネットワークカメラ2(以下、「カメラ2」と略す)、ハブ3、及びルータ5と、クラウドC上のAI分析サーバ6及び管理サーバ7とを備えている。上記の複数のカメラ2と分析ボックス1とは、複数の店舗に配置されるので、画像分析システム10は、複数の分析ボックス1と、これらの分析ボックス1の各々に接続された複数のカメラ2とを備えている。
上記のネットワークカメラ2は、IPアドレスを持ち、ネットワークに直接接続することが可能である。図1に示すように、分析ボックス1は、LAN(Local Area Network)4とハブ3とを介して、複数のカメラ2と接続され、これらのカメラ2の各々から入力された画像を分析する。具体的には、カメラ2の各々から入力された画像に対する物体検出処理と、この物体検出処理で検出された物体の画像に対する物体認識処理とを行う。
また、図1に示されるように、分析ボックス1は、ハブ3とルータ5とを介して、クラウドC上のAI分析サーバ6及び管理サーバ7と接続されている。AI分析サーバ6は、分析ボックス1からの物体認識結果に基づいて、例えば、各店舗内における人物の行動を分析し、分析結果の情報を、マーケティングや防犯等の種々の用途のアプリケーションが使い易いデータに変換して出力する。
上記の管理サーバ7は、各店舗に配された多数の分析ボックス1、及びこれらの分析ボックス1に接続されたカメラ2の管理を行う。具体的には、管理サーバ7は、各店舗の分析ボックス1へのアプリパッケージのインストールや、これらの分析ボックス1に接続されたカメラ2の起動及び停止等の制御を行う。なお、このアプリパッケージは、請求項における「画像分析プログラム」に相当し、図9のアプリケーション51は、このアプリパッケージの一例である。このアプリパッケージについての詳細は後述するが、このアプリパッケージは、学習済物体検出用ニューラルネットワークモデルと、1種類以上の学習済物体認識用ニューラルネットワークモデルと、これらのニューラルネットワークモデルの使い方(処理の順番)を記載した制御用スクリプトとを含んだパッケージ・プログラムである。
次に、図2を参照して、分析ボックス1のハードウェア構成について説明する。分析ボックス1は、装置全体の制御及び各種演算を行うCPU11と、各種のデータやプログラムを格納するハードディスク12と、RAM(Random Access Memory)13と、DNN推論用プロセッサである推論チップ(以下、「チップ」と略す)14a〜14hと、通信制御IC15とを備えている。CPU11は、一般的な汎用CPU、又は多数の映像ストリームを同時処理するため並列処理性能を高めるように設計されたCPUである。また、ハードディスク12に格納されるデータには、カメラ2の各々から入力された映像ストリーム(のデータ)をデコードした後の映像データ(フレーム画像のデータ)が含まれ、ハードディスク12に格納されるプログラムには、上記のアプリパッケージに加えて、図4の説明で述べるVMS21、分析ボックスOS24、及びGPUサーバ25のプログラムが含まれている。
上記の(推論)チップ14a〜14hは、DNN(Deep Neural Networks)推論に最適化されたプロセッサ(推論専用チップ)であることが望ましいが、一般的な用途に用いられる汎用のGPU(Graphics Processing Unit)、又はその他のプロセッサであってもよい。また、上記の各チップ14a〜14hは、1つのボードコンピュータ上に複数のチップ(推論用プロセッサ)が集積(搭載)されたデバイスであってもよい。また、1つの分析ボックス1に、複数の種類のチップを搭載してもよい。例えば、1つの分析ボックス1に、A社製の推論専用チップを4枚、B社製の推論専用チップを8枚、C社製のGPGPUを1枚搭載するようにしてもよい。ただし、後述する学習済物体認識用ニューラルネットワークモデルや学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要なチップ数の推定処理の説明では、話を簡単にするために、1つの分析ボックス1に、同種類の複数のチップを搭載する場合の例について、説明する。
図2に示すように、上記の(推論)チップ14a〜14hは、PCI Express又はUSBにより、CPU11に接続される。なお、チップ14a〜14hのうち、一部のチップがPCI ExpressでCPU11に接続され、他のチップがUSBでCPU11に接続されてもよい。
また、上記の通信制御IC15は、Ethernet規格のLANへの接続用のポートであるLANポート16を有している。
図3は、上記の分析ボックス1におけるCPU11の機能ブロックを示す。分析ボックス1は、機能ブロックとして、画像分析部18と、プロセッサ割当部19とを備えている。
上記の画像分析部18は、カメラ2の各々から入力された画像に映り込んだ物体を検出するための学習済物体検出用ニューラルネットワークモデル(以下、「物体検出用NNモデル」という)と、この物体検出用NNモデルにより検出された物体を認識するための1種類以上の学習済物体認識用ニューラルネットワークモデル(以下、「物体認識用NNモデル」という)とを含むアプリパッケージの各インスタンス(図4に示すAI推論インスタンス23a〜23c)を用いて、カメラ2の各々から入力された画像を分析する。また、プロセッサ割当部19は、アプリパッケージの各インスタンスに含まれる物体検出用NNモデル及び物体認識用NNモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、複数のチップ14a〜14hのうち、物体検出用NNモデルにおける推論処理、及び物体認識用NNモデルの各々における推論処理に用いるチップ(推論用プロセッサ)の割り当てを行う。上記の画像分析部18の機能は、分析ボックス1のCPU11が、主に、図4に示すAI推論インスタンス23a〜23c(のプログラム)を実行することにより実現される。また、プロセッサ割当部19の機能は、分析ボックス1のCPU11が、図4に示すGPUサーバ25(のプログラム)を実行することにより実現される。
次に、図4を参照して、分析ボックス1における主なソフトウェアの構成について説明する。図4に示すように、分析ボックス1における主なソフトウェアは、VMS(Video Management System)21と、AI推論インスタンス23a〜23cと、分析ボックスOS24と、GPUサーバ25である。図4では、各ソフトウェアのプロセスを示している。VMS21は、カメラ2a〜2cからハブ3を介して入力される映像ストリームをデコードして、デコード後のフレーム画像(のデータ)を、ストレージ22に記憶すると共に、分析ボックス1内のバスを介してAI推論インスタンス23a〜23cに出力する。このVMS21は、ストレージ22と共に、VMSサーバ20を構成する。
また、上記のAI推論インスタンス23a〜23cの各々は、上記のアプリパッケージ(図9のアプリケーション51に相当)のインスタンスである。AI推論インスタンス23a、23b、23cは、それぞれ、各カメラ2a、2b、2cから入力された画像に対する物体検出や物体認識を行う。このように、各カメラ2a、2b、2cから入力された画像に対する物体認識処理用のAI推論インスタンスを分けたのは、カメラ2a、2b、2c毎に、使用するアプリパッケージ(に含まれる物体検出用NNモデルや物体認識用NNモデル)の種類が、異なる可能性があるからである。
また、上記の分析ボックスOS24は、分析ボックス1内のAI推論インスタンス23a〜23c等のアプリケーションの制御を行うと共に、管理サーバー7との送受信を行う。また、上記のGPUサーバ25が行う主な処理は、各AI推論インスタンス23a〜23cの起動時に、各AI推論インスタンス23a〜23cに含まれる物体検出用NNモデル及び物体認識用NNモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、複数のチップ14a〜14h(図2参照)のうち、物体検出用NNモデルにおける推論処理、及び物体認識用NNモデルの各々における推論処理に用いるチップの割り当てを行う処理である。ただし、各AI推論インスタンス23a〜23cに含まれる物体検出用NNモデル及び物体認識用NNモデルの各々の使用頻度は、時間帯によっても変動し得るので、GPUサーバ25は、時間帯によって、物体検出用NNモデルにおける推論処理、及び物体認識用NNモデルの各々における推論処理に用いるチップの割り当てを変更することができる。
次に、GPUサーバ25が、チップ14a〜14hに、物体検出用NNモデル及び物体認識用NNモデルの各々を割り当てる場合の基本方針について述べる。
1.各チップ14a〜14hに割り当てるNNモデル(物体検出用NNモデル又は物体認識用NNモデル)の入れ替えは可能だが、NNモデルの入れ替えには、時間(的コスト)がかかるので、できるだけ入れ替えをしない。なお、上記のNNモデルの入れ替えに要する時間は、チップによって異なる。また、一般的に、(推論)チップには、1つのNNモデルしか割り当てられないものもあれば、複数のNNモデルを割り当てることができるものもある。
2.店舗内における分析要望(物体認識の要望)に丁度応えられるように、各チップ14a〜14hに、各NNモデルを割り当てる。具体的には、下記の2−1、及び2−2のようにする。
2−1.現在のチップ構成(チップの種類と数)で全認識対象物の認識が可能なフレームレートで、全カメラからの画像に対する物体検出が可能な最低限のチップに、物体検出用NNモデルを割り当てる。なお、最低限のチップとは、数及び性能の観点から見て、最低限のチップである。
2−2.(分類等の)認識の推論時間(物体認識用NNモデルの推論処理に必要な推論時間)と、当該認識の必要性(使用頻度、及び優先度)に応じて、各物体認識用NNモデルを、適切な数のチップに割り当てる。
2−3.上記2−1及び2−2が、時々刻々と変化する場合は、上記1のNNモデルの入れ替えに要する時間(的コスト)を考慮して、最低限のNNモデルの入れ替え(交換)で済むようにする。
3.余り優先度の高くない認識処理については、後回しにしてもよい(リアルタイムにやり切らなくてもよい)。すなわち、暇な時間帯に、VMSサーバ20(図4参照)からのフレーム画像(のデータ)に基づいて、上記の認識処理を行ってもよい。
上記の基本方針に従って、各チップ14a〜14hに各NNモデルを割り当てた結果、チップの割り当てが適切であれば、GPUサーバ25の挙動は、非常にシンプルで、単に、カメラ2a〜2cから入力される映像ストリームをデコードしたフレーム画像(のデータ)を、物体検出用NNモデルに割り当てられたチップに入力して認識対象物を検出し、検出された全認識対象物を、物体認識用NNモデルに割り当てられたチップに流し込むだけである。
次に、GPUサーバ25によるチップへのNNモデルの割り当て方の例について、説明する。この割り当て方の例では、物体検出結果である認識対象物が、どの程度出てくる(検出される)か、及びこれらの認識対象物に物体認識用NNモデルを適用する時間がどの程度になるかを求めて、これらの計算結果から逆算して、物体認識用NNモデルに割り当てるチップ数を算出する。このようなチップの割り当て方をする理由は、物体検出結果である認識対象物の数、及びこれらの認識対象物に適用する物体認識用NNモデルの種類によって、物体検出のフレームレートを一定にした場合における、各物体認識用NNモデルにおける推論処理に必要なチップ数が異なるからである。
上記の点について、図5を参照して説明する。図5において、物体検出用NNモデル34は、人と顔の両方を検出することが可能なNNモデルである。図5に示すように、物体検出用NNモデル34が、1枚目のフレーム画像33から、1−1という人と、1−2という人を検出し、2枚目のフレーム画像33から、2−1という顔を検出したとすると、これらの2枚のフレーム画像については、人に対する分類等の物体認識処理を行うための第1物体認識用NNモデル36が、2回使用され、顔に対する(性別・年齢推定等の)物体認識処理を行うための第2物体認識用NNモデル37が、1回使用される。ここで、上記の第1物体認識用NNモデル36と第2物体認識用NNモデル37では、物体認識の推論処理に必要な推論時間が異なるので、第1物体認識用NNモデル36と第2物体認識用NNモデル37の各々の推論処理に必要なチップ数は、物体検出結果である認識対象物の数、及びこれらの認識対象物に適用する物体認識用NNモデルの推論時間によって異なる。すなわち、物体検出結果である認識対象物の数、及びこれらの認識対象物に適用する物体認識用NNモデルの種類によって、物体検出のフレームレートを一定にした場合における、各物体認識用NNモデルにおける推論処理に必要なチップ数は異なる。
ただし、各フレーム画像33に対する物体検出の結果である認識対象物の数、及びこれらの認識対象物に対して各物体認識用NNモデルの推論処理を行う時間は、時間帯によって異なる。例えば、夕方の忙しい時間帯と、昼過ぎの暇な時間帯とでは、認識対象物の数が異なるので、これらの認識対象物に対する物体認識処理に必用な時間が異なる。従って、これを予想し、最低限のNNモデルの入れ替え(変更)回数(各チップへの各NNモデル(物体検出用NNモデル及び各物体認識用NNモデル)の割り当て方の変更回数)で対応できるように、分析ボックス1の起動時に、各チップに、各NNモデル(例えば、物体検出用NNモデル34、第1物体認識用NNモデル36、及び第2物体認識用NNモデル37)を割り当てておく必要がある。
上記の管理サーバ7(図1参照)は、管理者が、簡易的手順で(後述する「必要チップ数推定」処理で使用するモデル性能、カメラ台数、目標性能等の入力処理を行うことで)、実施したい分析(物体認識)に必用な各NNモデルを各チップに割り当てられるようにする。具体的には、管理者が、管理サーバ7から、モデル性能、カメラ台数、目標性能等の入力を行うと、管理サーバ7が、この入力された情報を分析ボックス1に送信して、分析ボックス1のCPU11が、受信した入力情報に基づき、GPUサーバ25(図4参照)を用いて、分析に必用な各NNモデルを各チップに割り当てる。
次に、上記のGPUサーバ25によるチップへのNNモデルの割り当て方の例について、具体的に説明するが、その前に、図6を参照して、上記のAI推論インスタンス23(図4におけるAI推論インスタンス23a〜23cの総称)とGPUサーバ25との間の通信について説明する。AI推論インスタンス23(のプロセス)とGPUサーバ25(のプロセス)との間のプロセス間通信は、例えば、shared memory、socket、fifo等を用いて行われる。図6では、fifoを用いた場合の例について示している。図6では、既に、各チップ14a〜14hに各NNモデルを割り当てた後の処理が記載されている。なお、図6中のプロセス間通信において、AI推論インスタンス23側の送受信処理は、正確に言うと、AI推論インスタンス23内のスクリプト(図9中のアプリケーション51におけるスクリプト55に相当)によって行われる。
図6において、AI推論インスタンス23aには、モデルID1の物体検出用NNモデルと、モデルID2の物体認識用NNモデルが含まれており、AI推論インスタンス23bには、モデルID1の物体検出用NNモデルと、モデルID3の物体認識用NNモデルが含まれている。ここで、図6を参照して、既に各チップ14a〜14hに各NNモデルを割り当てた後において、AI推論インスタンス23a、23bとGPUサーバ25との間で行われる処理について、説明しておく。
まず、図6に示すように、AI推論インスタンス23aが、実行するNNモデルがモデルID1であるという情報と、NNモデルによる推論処理に用いるフレーム(画像)データとを、GPUサーバ25に送信すると、GPUサーバ25は、受信したフレームデータを、モデルID1の物体検出用NNモデルに対応した第1推論スレッド41aにおける推論データ用キュー42aに入れる(入力する)。推論データ用キュー42aは、入力されたフレームデータを、入力された順番に、モデルID1の物体検出用NNモデルに割り当てられたチップ14a〜14cに出力する。そして、これらの推論用のチップ14a〜14cによって、入力されたフレーム(画像)データに対する物体検出が行われる。この後、GPUサーバ25の第1推論スレッド41aは、上記の物体検出の結果を、AI推論インスタンス23aに返す。
AI推論インスタンス23aは、上記の物体検出結果を第1推論スレッド41aから受信すると、受け取った物体検出結果に基づく認識対象物(例えば、人や顔)のフレームデータと共に、実行するNNモデルがモデルID2であるという情報を、GPUサーバ25に送信する。GPUサーバ25は、受信したフレームデータを、モデルID2の物体認識用NNモデルに対応した第2推論スレッド41bにおける推論データ用キュー42bに入れる(入力する)。推論データ用キュー42bは、入力された認識対象物のフレームデータを、入力された順番に、モデルID2の物体認識用NNモデルに割り当てられたチップ14dに出力する。そして、これらの推論用のチップ14dによって、入力されたフレーム(画像)データに対する物体認識が行われる。この後、GPUサーバ25の第2推論スレッド41bは、上記の物体認識の結果を、AI推論インスタンス23aに返す。
AI推論インスタンス23bが行う処理も、基本的には、AI推論インスタンス23aが行う処理と同様であるが、認識対象物のフレームデータに対して行う物体認識処理のNNモデルが、モデルID3のNNモデルであるという点が異なる。なお、図6に示すように、GPUサーバ25において、各NNモデルに対応する推論処理を行うスレッドは、別々のスレッド(第1推論スレッド41a、第2推論スレッド41b、及び第3推論スレッド41c)に分けられており、また、これらの推論スレッド41a〜41cは、それぞれの推論データ用キュー42a〜42cを有している。
次に、上記図5を参照して説明したチップへのNNモデルの割り当て方の例について、図7を参照して、より具体的に説明する。なお、以下の説明では、GPUサーバ25が処理を行うように記載しているが、より正確に言うと、図3中のプロセッサ割当部19が、チップへのNNモデルの割り当て処理を行う。すなわち、CPU11が、GPUサーバ25(というソフトウェア)と協働して、チップへのNNモデルの割り当て処理を行う。
図7は、GPUサーバ25(正確には、プロセッサ割当部19)が行うチップへのNNモデルの割り当て処理のフローチャートである。この割り当て処理は、所定時間毎に(例えば、一時間に一度)、タイマーによるバッチ処理として行われる。図7のフローチャートに示す処理を開始する前に、GPUサーバ25は、使用する可能性のある全てのAI推論インスタンス23に含まれる全てのNNモデルについてのモデルID、モデルパス、モデル性能(値)、NNモデル自体の優先度、及びAI推論インスタンス23自体の優先度の情報を取得する。ここで、上記のモデルパスとは、ハードディスク12(図2参照)における該当のNNモデルの(格納先ファイルがある場所までの経路を示す)パスを意味する。また、上記の優先度は、(アプリケーション51(図9参照)の登録時に管理者が登録する情報である)当該NNモデル自体の優先度×このAI推論インスタンス23自体の優先度(人があまり映らないカメラの優先度は低いという基準に基づく、そのカメラに対応したAI推論インスタンス23の優先度)から算出される。
そして、GPUサーバ25は、以下の(1)〜(3)の処理を行う。
(1)上記の取得した各情報(モデルID、モデルパス、モデル性能(値)、NNモデル自体の優先度、及びAI推論インスタンス23自体の優先度の情報)に基づいて、全AI推論インスタンス23に含まれる全てのNNモデルについて、(モデルID、モデルパス、モデル性能(値)、優先度)のパラメータ群を生成することにより、パラメータ群のリストを得て、このリストを優先度順で並び替えたリストL=(l1、l2、・・・、lN)を作成する。
(2)その時点におけるチップへのNNモデルの割り当てをリセット(解除)する。
(3)上記のリストLの各要素liについて、先頭から(優先度の高いものから)順に、図7のS1以降の処理を実行して、NNモデルのチップへの割り当てを行う。
ここで、上記の優先度が負の値の場合(=当該NNモデル自体の優先度に負の値が設定されている場合)は、以下の処理で当該NNモデルがチップに割り当てられないことを許容する。そして、当該NNモデルがチップに割り当てられない場合は、当該NNモデルによる推論処理は、段落(0036)に記載したように、VMSサーバ20に蓄積されたフレーム画像を用いて、後回しで処理される。
また、上記のAI推論インスタンス23の優先度は、当該AI推論インスタンス23(に含まれている全NNモデル)の過去の推論量の実績から計算する。例えば、前一時間における当該AI推論インスタンス23の推論時間の積算値から、このAI推論インスタンス23の優先度を算出してもよいし、過去一か月程度における、各曜日・各時間帯における当該AI推論インスタンス23の推論時間の積算値から、次の一時間における当該AI推論インスタンス23の推論時間を予測し、これを優先度化するようにしてもよい。
上記(3)のリストL中のある要素li(に対応するNNモデル)についてのチップ割り当て処理を開始すると(S1でYES)、GPUサーバ25は、該当のNNモデルについて、このNNモデルへのチップの割り当てが既に行われているか否かを確認する。具体的には、GPUサーバ25は、自プロセスが管理するモデルID配列(GPUサーバ25のプログラムにおける配列)中に、上記の要素liの(パラメータ群に含まれる)モデルIDが格納されているか否か(存在するか否か)を確認することにより、このモデルIDに対応するNNモデルへのチップの割り当てが既に行われているか否かを確認する(S2)。この結果、上記のモデルID配列に、上記のモデルIDが未だ格納されていない場合には(S2でNO)、このモデルIDに対応するNNモデルの推論処理に必要なチップ数を推定する(S3)。この必要チップ数推定処理の詳細については、後述する。
次に、GPUサーバ25は、図2に示す(推論)チップ14a〜14hのうち、未だ(NNモデルに)未割当のチップが残っている場合は(S4でYES)、この未割当のチップの中から、上記S3で必要と推定されたチップ数のチップを選択して、これらのチップを、上記S2で未だ格納されていないと判定されたモデルIDに対応するNNモデルに割り当てる(S5)。そして、GPUサーバ25は、上記S2で未だ格納されていないと判定されたモデルIDを、上記のモデルID配列に追加する(格納する)(S6)。
上記S5のチップの割り当て処理の結果、この割り当て処理でチップが割り当てられたNNモデルが、分析ボックス1において使用可能になる(“True”の状態になる)(S7)。図7において、“True”は、該当のNNモデルに最低1つ以上のチップが割り当てられており、このNNモデルを使用可能な状態を意味する。これに対して、“False”は、該当のNNモデルにチップが1つも割り当てられておらず、このNNモデルを使用できない状態を意味する。“False”の場合は、当該NNモデルによる推論処理は、段落(0036)に記載したように、後回しで処理される。
上記S4の判定処理において、未割当のチップが残っていない場合は(S4でNO)、GPUサーバ25は、上記の要素liの優先度が0以上で、かつ、他の推論スレッド(図6の第1推論スレッド41a〜41cに相当)からチップを融通することが可能か否かを判定する(S8)。上記の要素liの優先度が0以上で、かつ、他の推論スレッドからチップを融通することができる場合には(S8でYES)、GPUサーバ25は、他の推論スレッドからチップを融通して、融通したチップを、上記S2で未だ格納されていないと判定されたモデルIDに対応するNNモデルに割り当てる(S9)。そして、GPUサーバ25は、上記S2で未だ格納されていないと判定されたモデルIDを、上記のモデルID配列に追加する(S10)。なお、上記の他の推論スレッドからチップを融通する処理の具体的な内容については、後述する。
上記S9のチップを融通して割り当てる処理の結果、この割り当て処理でチップが割り当てられたNNモデルが、分析ボックス1において使用可能になる(“True”の状態になる)(S11)。ただし、上記S8の判定の結果、上記の要素liの優先度が0より小さい(負の)場合、又は他の推論スレッドからチップを融通することができない場合には(S8でNO)、上記S2で未だ格納されていないと判定されたモデルIDを、分析ボックス1で使用することができない(“False”の状態になる)(S12)。なお、上記S8の判定において、上記の要素liの優先度が0より小さい(負である)と判定された場合は、上記の他の推論スレッドからのチップ融通を試みずに、“False”の値を返す(“False”の状態になる)。この“False”の状態になった場合には、既に未割当のチップが残っておらず、しかも、これ以降の要素liの優先度が負のもののみであるか、又は他の推論スレッドからチップを融通することができない状態になっている(既にチップ割り当て済みのNNモデルの数が、チップ数と同じになっている)。従って、ここで、リストL中の各要素についてのチップ割り当て処理を終了する。
上記S2の判定処理において、該当の要素liのNNモデルについて、このNNモデルへのチップの割り当てが既に行われている場合(上記のモデルID配列に、上記の要素liのモデルIDが既に格納されている場合)には(S2でYES)、チップに割り当てられるNNモデルの数が増える訳ではないが、該当のNNモデルのインスタンスが増えることになる。このため、GPUサーバ25は、該当のNNモデルについて、上記S3と同様な必要チップ数の推定処理を行う(S13)。
上記S13の推定処理では、最初に該当のNNモデルについての必要チップ数推定処理(S3の推定処理)を行った時と比べて、該当のNNモデルのインスタンス数が増えているので、物体検出用NNモデル及び物体認識用NNモデルの必要チップ数推定の基になるカメラ台数や、物体認識用NNモデルの必要チップ数推定の基になる各カメラに映りこむ平均人数(平均の認識対象物数)が、増加する。このため、GPUサーバ25は、上記S13の推定処理で求めた必要チップ数から見て、該当のNNモデルに割り当てるチップを追加する必要があるか否かを判定する(S14)。
上記S14の判定の結果、該当のNNモデルに割り当てるチップを追加する必要がある場合は(S14でYES)、GPUサーバ25は、未だ(NNモデルに)未割当のチップが残っている場合は(S15でYES)、この未割当のチップの中から、追加する必要のある枚数のチップを選択して、これらのチップを、上記S14で追加する必要があると判定されたNNモデルに追加割り当てをする(S16)。この結果、該当のNNモデルに2つ以上のチップが割り当てられた状態になるので、該当のNNモデルは、当然、上記の“True”の状態になる(S17)。
これに対して、S15の判定の結果、未割当のチップが残っていない場合は(S15でNO)、GPUサーバ25は、上記の要素liの優先度が0以上で、かつ、他の推論スレッドからチップを融通することが可能か否かを判定する(S18)。上記の要素liの優先度が0以上で、かつ、他の推論スレッドからチップを融通することができる場合には(S18でYES)、GPUサーバ25は、他の推論スレッドからチップを融通して、融通したチップを、上記S14で追加する必要があると判定されたNNモデルに追加割り当てをする(S19)。なお、GPUサーバ25は、上記S14で追加する必要があると判定されたNNモデルに対応するスレッドが、他の推論スレッドからチップを融通しないと、後述する認識レートの最も低いスレッドになる場合には、上記S19の追加割り当て処理(他の推論スレッドからのチップ融通処理)を行うが、他の推論スレッドからチップを融通しなくても、認識レートの最も低いスレッドにはならない場合には、必ずしも、他の推論スレッドからのチップの融通処理を行わない。
上記S19の追加割り当て処理を行った場合には、該当のNNモデルに2つ以上のチップが割り当てられた状態になるので、該当のNNモデルは、当然、上記の“True”の状態になる(S20)。また、上記S18の判定の結果、上記の要素liの優先度が0より小さい(負の)場合、又は他の推論スレッドからチップを融通することができない場合には(S18でNO)、該当のNNモデルへのチップの追加割り当てを行うことはできない。けれども、この場合でも、上記S2の判定結果(「該当のNNモデルへのチップの割り当てが既に行われている」という判定結果)から、該当のモデルIDに対応するNNモデルへのチップの割り当ては既に行われているはずなので、該当のNNモデルについては、当然、上記の“True”の状態になる(S21)。
上記の説明では、優先度が0以上のNNモデルについてのチップの割り当て処理が全て終了した後は、未割当チップが残っている場合に限り(S4でYES、及びS15でYES)、優先度が負のNNモデルにも、チップを割り当てた。けれども、これに限られず、未割当チップが残っていない場合でも、後述する目標性能を充分に超えていて余裕のあるNNモデルのスレッドがある場合には、このNNモデルに割り当てられたチップを、優先度が負のNNモデルに融通して割り当ててもよい。
上記S14の判定の結果、該当のNNモデルに割り当てるチップを追加する必要がない場合(S14でNO)、すなわち、該当のNNモデルのインスタンスが増えても、現在の割り当てチップ数で足りる場合にも、該当のNNモデルは、当然、上記の“True”の状態になる(S22)。
次に、上記S3及びS13の必要チップ数推定処理の詳細について、説明する。この必要チップ数推定処理は、対象となるNNモデルが、物体検出用NNモデルであるか、物体認識用NNモデルであるかによって、内容に差異がある。ただし、NNモデルが、いずれのモデルであっても、GPUサーバ25(プロセッサ割当部19)は、各NNモデルの推論処理に必要な推論時間と使用頻度とに基づいて、各NNモデルの推論処理に必要な推論用プロセッサの数を推定する。また、以下の必要チップ数推定処理の説明では、話を簡単にするために、1つの分析ボックス1に、同種類の複数のチップを搭載する場合の例について、説明する。
まず、物体検出用NNモデルについての必要チップ数推定処理について、説明する。この場合には、GPUサーバ25(プロセッサ割当部19)は、この物体検出用NNモデルによる物体検出の対象となる画像の入力元のカメラの台数Kと、この物体検出用NNモデルのモデル性能T(この物体検出用NNモデルの推論処理に必要な推論時間(秒))と、この物体検出用NNモデルの目標性能F(この物体検出用NNモデルが一定時間内(1秒間)に推論処理する目標のフレーム数(FPS(frame per second))とに基づいて、この物体検出用NNモデルの推論処理に必要なチップ数(必要性能)を、以下の式で推定する。
・必要性能(チップ数)=K*F*T
例えば、カメラ台数K=3(台)、モデル性能T=0.05(秒)、目標性能F=6(FPS)とすると、この物体検出用NNモデルの必要性能(推論処理に必要なチップ数)は、以下の式で計算される。
必要性能(チップ数)=3*6*0.05=0.9
従って、上記の例の場合は、チップが1つ必要ということになる。必要チップ数を推定するための基準値として、上記の目標性能Fが必要である。また、この目標性能Fは、他の(NNモデルに対応する)スレッドとの間で、性能やリソースの余裕度合を比較する際にも必要である。
次に、物体認識用NNモデルについての必要チップ数推定処理について、説明する。この場合には、GPUサーバ25(プロセッサ割当部19)は、この物体認識用NNモデルによる物体認識の対象となる画像の入力元の各カメラに映りこむ平均人数N1,N2,・・・(すなわち、この物体認識用NNモデルの使用頻度)と、この物体認識用NNモデルのモデル性能T(この物体認識用NNモデルの推論処理に必要な推論時間(秒))と、この物体認識用NNモデルの目標性能F(この物体認識用NNモデルが一定時間内に推論処理する目標のフレーム数(FPS))とに基づいて、この物体認識用NNモデルの推論処理に必要なチップ数(必要性能)を、以下の式で推定する。
・必要性能(チップ数)=sum(N1,N2,・・・)*F*T
(ただし、sum(N1,N2,・・・)は、N1,N2,・・・の総和(合計)を表す)
例えば、この物体認識用NNモデルへの画像の入力元のカメラが3台で、各カメラに映りこむ平均人数が、5人、2人、3人であり、モデル性能T=0.03秒、目標性能F=6FPSとすると、この物体認識用NNモデルの必要性能(推論処理に必要なチップ数)は、以下の式で計算される。
必要性能(チップ数)=(5+2+3)*6*0.03=1.8
従って、上記の例の場合は、チップが2つ必要ということになる。物体検出用NNモデルの場合と同様に、必要チップ数を推定するための基準値として、上記の目標性能Fが必要である。また、この目標性能Fは、他の(NNモデルに対応する)スレッドとの間で、性能やリソースの余裕度合を比較する際にも必要である。
次に、上記S8、S9、S18、及びS19の説明で述べた、他の推論スレッドからのチップの融通処理について、より詳細に説明する。具体的なチップの融通処理の手順を説明する前に、他の推論スレッドからチップを融通する際の基本原則について、述べる。上記S4及びS15において、未割当のチップが残っておらず、他の推論スレッドから(該当のNNモデルに)チップを融通する時には、一度に複数のチップの割り当てを変更せず、1つのチップの割り当てだけを変更すべきである。何故なら、一度に複数のチップの割り当てを変更した場合には、物体検出用NNモデル(スレッド)に割り当てるチップ数が増減する可能性がある程度高くなり、もし、物体検出用NNモデル(スレッド)に割り当てるチップ数が増減した場合、物体検出処理の後の物体認識処理を行う物体認識用NNモデル(スレッド)へのデータ(主に、認識対象物のフレームデータ)の流入量が大きく増減するため、各NNモデル(のスレッド)についての必要チップ数を再度推定する(推定し直す)必要があるからである。
次に、他の推論スレッドからチップを融通する処理の具体的な手順について、説明する。
1.まず、複数のチップが割り当てられているNNモデルのスレッドを列挙する。
2.上記1で列挙したスレッドのうち、後述するデータ損失率が0のスレッドがあれば、それらのスレッドを改めて列挙する。これに対して、上記1で列挙したスレッドの中に、データ損失率が0のスレッドがない場合は、上記1で列挙したスレッドを、まず優先度について昇順にソートし、優先度の同じNNモデルのスレッドが複数ある場合は、それらについてさらに、後述する認識レートが大きい順に(認識レートの降順に)ソートする。
3.上記2において、データ損失率が0のスレッドがあった場合には、列挙したデータ損失率が0のスレッドのうち、最上位(最初)のスレッドから、チップを1つ解放する。なお、正確に言うと、データ損失率が0のスレッドが複数あった場合には、もっとも優先度の低い(NNモデルが使用されている)スレッドからチップを1つ解放する。また、上記2において、データ損失率が0のスレッドがなく、認識レートの降順にソートをした場合には、最上位のスレッドから、チップを1つ解放する。
4.上記3で解放したチップを、チップを必要としている(NNモデルの)スレッド(チップが未割当のNNモデルのスレッド、又は認識レートの最も低いスレッド)に、割り当てる。
次に、上記のデータ損失率について、説明する。このデータ損失率とは、物体検出用NNモデル及び物体認識用NNモデルの各々に対応する各スレッドに流入するデータのうち、検出又は認識されずに捨てられたデータの割合である。
また、上記の認識レートRを、上記の目標性能Fa(FPS)と、実性能Fr(FPS)とで表すと、以下のようになる。
R=Fr/Fa
上記の式において、実性能Frは、該当の(NNモデルの)スレッドが、一定時間内(1秒間)に推論処理したデータ数(フレーム数)の実測値を示す。この実性能Frは、上記のデータ損失率>0のときだけ、意味がある。何故なら、データ損失率=0の場合は、該当のスレッドが一定時間内(1秒間)に推論可能なデータ数(フレーム数)は、上記の実測値(すなわち、実性能Fr)以上であるからである。また、上記の式中の目標性能Faは、上記の物体検出用NNモデル及び物体認識用NNモデルの目標性能Fと実質的に同じものであり、各NNモデルに対応するスレッドが、一定時間内(1秒間)に推論処理する目標のフレーム数(FPS)を表す。
次に、図8及び図9を参照して、上記の画像分析システム10におけるアプリケーショングループ(以下、「アプリグループ」という)について、説明する。図8に示すように、画像分析システム10内の各分析ボックス1に接続されたカメラ2(カメラ2a〜2d等)は、複数のカメラのグループ(第1カメラグループ、第2カメラグループ等)に分類される。これらのカメラグループのそれぞれに対応するアプリケーション51(図9参照:請求項における「画像分析プログラム」)は、互いに異なるNNモデル(物体検出用NNモデル及び物体認識用NNモデル)の組み合わせで構成されている。図8における各アプリグループ24a、24bは、それぞれ、同じ種類のアプリケーション51のインスタンス(AI推論インスタンス)から構成されている。すなわち、第1アプリグループ24aに属するAI推論インスタンス23a、23b(第1カメラグループに属する入口のカメラ2aと出口のカメラ2bからの画像を処理する2つのAI推論インスタンス)は、互いに同じ種類のアプリケーション51のインスタンスであり、第2アプリグループ24bに属する各AI推論インスタンス(店舗内の通路の各所に配されたカメラ2c、2d等からの画像を処理するAI推論インスタンス23c、23d等)は、互いに同じ種類のアプリケーション51のインスタンスである。
図9は、上記のアプリグループの一例を示す。図9における出入口顔認識アプリグループ50は、図8における第1アプリグループ24aのように、各店舗の入口にあるカメラ2aと出口にあるカメラ2bからの画像を処理するAI推論インスタンス23のグループである。図9におけるアプリケーション51は、上記のAI推論インスタンス23a、23bのクラス(class)に相当するアプリケーション・プログラムであり、人物・顔検出モデル52、ベクトル化モデル53、顔認識モデル54、及びスクリプト55を含むパッケージ・プログラムである。人物・顔検出モデル52は、各店舗の入口にあるカメラ2aと出口にあるカメラ2bから取得した画像に含まれる人と顔を検出する物体検出用NNモデルである。ベクトル化モデル53は、人物・顔検出モデル52で検出した人の画像に対してベクトル化処理を行う物体認識用NNモデルである。顔認識モデル54は、人物・顔検出モデル52で検出した顔に基づいて、検出した人の性別・年齢を推定する物体認識用NNモデルである。スクリプト55は、上記の人物・顔検出モデル52、ベクトル化モデル53、顔認識モデル54の処理手順等を記述した制御用の簡易なプログラムである。
なお、上記図7で説明した各NNモデルのチップへの割り当て処理に使用した各NNモデル自体の優先度の登録は、以下のようにして行う。すなわち、管理者が、管理サーバ7から、上記のアプリケーション51(図9参照)に含まれる各NNモデル52〜54(自体)の優先度の入力を行うと、管理サーバ7が、入力された各NNモデル毎の優先度を登録する。この各NNモデル毎の優先度の情報は、図11で説明する管理サーバ7から分析ボックス1への各アプリケーションのダウンロード時に、管理サーバ7から分析ボックス1へ送信される。
一方、図8における第2アプリグループ24bのAI推論インスタンス23c、23d等(店舗内の通路の各所に配されたカメラ2c、2d等からの画像を処理するAI推論インスタンス)のクラス(class)に相当するアプリケーション51は、例えば、人を検出する物体検出用NNモデルと、この物体検出用NNモデルで検出した人の画像に基づいて、かごを持っている人を判別する物体認識用NNモデルと、上記の物体検出用NNモデルで検出した人の画像に基づいて、売り場を担当している店員を判別する物体認識用NNモデルと、スクリプト55とを含むパッケージ・プログラムである。
GPUサーバ25(プロセッサ割当部19)は、上記図7の説明で述べた、リストLの各要素liについての処理を行うことにより、できるだけデータ損失(認識されずに捨てられるデータ)が生じないで、物体検出及び物体認識が行えるように、物体検出用NNモデル及び物体認識用NNモデルの各々に、チップ14a,14b等を割り当てる。GPUサーバ25(プロセッサ割当部19)は、物体検出のフレームレートを一定に保ちつつ(物体検出のフレームレートを下げないように)、優先度の高い物体認識処理を最大限行えるように、各NNモデルへのチップ14a,14b等の割り当てを行う。ここで、図9に示すように、リアルタイムの処理に間に合わなかった物体認識処理については、CPU11が、VMSサーバ20(図4参照)に格納されたフレーム画像を用いて、後で行う。また、上記のように、物体検出のフレームレートを一定に保つのは、分析ボックス1による物体認識結果を用いたAI分析サーバ6による処理(分析等)の精度を保つためである。
ここで、上記図9におけるベクトル化モデル53が行うベクトル化処理について、図10を参照して説明する。図3に示すCPU11の画像分析部18は、AI推論インスタンスに含まれるベクトル化モデル53(図9参照)を用いて、以下のベクトル化処理を行う。すなわち、画像分析部18は、図10に示すように、各カメラ2a、2bで撮影したフレーム画像33a、33bについて人物・顔検出モデル52で検出した人の画像57a、57bを、ベクトル化モデル53(のDNNモデル)に入力することにより、ベクトル化モデル53が、図10に示すように、上記のフレーム画像33a、33bを、ベクトルV1、V3に変換して出力する。これらのベクトルV1、V3は、例えば、128次元のベクトルである。
カメラ2aで撮影したフレーム画像33aで検出された人の画像57aから求めたベクトルV1と、カメラ2bで撮影したフレーム画像33bで検出された人の画像57bから求めたベクトルV3とを、Dist関数に入力すると、上記の画像57aに写っていた人58aと、画像57bに写っていた人58bとが、同じである場合には、Dist関数の出力値が所定の値(例えば、15)よりも小さくなる。これに対して、図10に示す例の場合は、Dist関数の出力値(32)が所定の値(15)以上であるので、画像57aに写っていた人58aと、画像57bに写っていた人58bとが、違う人ということになる。
従って、CPU11の画像分析部18は、各カメラ2a、2bで撮影したフレーム画像において検出した、ある人の画像のうち、少なくとも一つのその人の画像(例えば、図10中の人の画像57aや57b)について、上記のベクトル化処理を行うことにより、カメラ2aで映した人と、カメラ2bで映した人とが、同じ人か否かを判定することができる。
図11は、管理サーバ7と店舗内の各分析ボックス1と各カメラ2との接続を示す図である。この図11では、管理サーバ7と、ある店舗S内の各分析ボックス1a、1b及び各カメラ2a〜2fとの接続のみを示している。また、分析ボックス1a、1b内の各アプリケーション51a〜51cと各カメラ2a〜2fとの対応関係を分かり易く示すために、各アプリケーション51a〜51cと各カメラ2a〜2fとの間を、破線と実線でつないでいる。管理サーバ7と、各分析ボックス1a、1bと、各カメラ2a〜2fとを接続する際には、まず、管理サーバ7に、接続する分析ボックス1a、1bを登録した上で、店舗S内の各カメラ2a〜2fを、分析ボックス1a、1bのいずれかに登録する必要がある。そして、上記の各カメラ2a〜2fの各分析ボックス1a、1bへの登録時に、各カメラ2a〜2fと各アプリケーション51(第1アプリケーション51a、第2アプリケーション52b、及び第3アプリケーション52c)との対応付け(すなわち、各カメラと上記のアプリグループ(図8及び図9参照)との対応付け)を行うためのアプリケーションの選択処理や、その他の設定処理を行う。
この時、各カメラ2a〜2fについて選択したアプリケーション51が、既に分析ボックス1(分析ボックス1a又は分析ボックス1b)にインストール済みのアプリケーションであれば、該当のカメラ2と、選択したアプリケーション51との紐づけだけを行う。これに対して、選択したアプリケーション51が、未だ該当の分析ボックス1にインストールされていない新規のアプリケーション51であれば、分析ボックス1(のCPU11)は、管理サーバ7から、このアプリケーション51をダウンロードして、インストールした上で、このアプリケーション51と該当のカメラ2との紐づけを行う。
なお、図11では、分析ボックス1aの第1アプリケーション51aとカメラ2aとが紐づけされており、分析ボックス1aの第2アプリケーション52bとカメラ2bとが紐づけされている。また、分析ボックス1bの第1アプリケーション51aとカメラ2c、2dとが紐づけされており、分析ボックス1bの第3アプリケーション52cとカメラ2e、2fとが紐づけされている。
上記の各アプリケーション51a〜51cは、図8における各アプリグループに対応する。また、分析ボックス1a、1bに接続されたカメラ2a〜2fは、上記の各アプリケーション51a〜51cに対応した3つのカメラグループに分類される。具体的には、図11に示すカメラ2a〜2fは、第1アプリケーション51aに紐づけされたカメラ2a、2c、2dと、第2アプリケーション52bに紐づけされたカメラ2bと、第3アプリケーション52cに紐づけされたカメラ2e、2fの3つのカメラグループに分類される。
上記図11では、1つの店舗S内の各カメラ2a〜2fと各アプリケーション51a〜51cとの対応関係について説明したが、画像分析システム10内の全ての分析ボックス1に接続されたカメラは、各アプリケーション51に対応するカメラグループに分類され、これらのカメラグループのそれぞれに対応するアプリケーション51は、互いに異なる物体検出用NNモデル及び物体認識用NNモデルの組み合わせで構成されている。
なお、上記図8、図9及び図11等の説明では、管理サーバ7が、画像分析システム10内のカメラ2を、アプリケーション51単位で管理する場合の例を示したが、管理サーバ7によるカメラ2の管理の単位は、これに限らない。図12は、管理サーバ7による、画像分析システム10内の各分析ボックス1に接続されたカメラ2の管理の単位の例を示す。管理サーバ7は、画像分析システム10内のカメラ2を、エリア単位(Aエリアグループ61a、Bエリアグループ61b)、店単位(A店グループ62a〜D店グループ62d)、アプリケーション単位(出入口顔認識アプリグループ63a(図9中の出入口顔認識アプリグループ50に相当)、万引き検出アプリグループ63b)等の単位(グループ)で管理することができる。図12中の各グループは、上記のカメラグループに相当する。管理者は、カメラ2の管理の単位を変更するときは、管理サーバ7から、グループ単位の切り替え操作を行う。
管理サーバ7は、各カメラ2を、グループ単位に管理することもできるし、個別に管理することもできるが、管理の効率性を考えると、グループ単位で管理することが望ましい。管理サーバ7が、各分析ボックス1に接続されたカメラ2をグループ単位で管理することにより、管理サーバ7は、例えば、グループ内のカメラ2を管理する各分析ボックス1に対して、更新したアプリケーション51を一括配信することや、グループ内のカメラ2に対して、一斉に、起動・停止を指示することができる。
上記のように、本実施形態の分析ボックス1によれば、各AI推論インスタンス23に含まれるNNモデル(物体検出用NNモデル及び物体認識用NNモデル)の各々の推論時間と使用頻度とに基づいて、複数のチップのうち、上記の(各AI推論インスタンス23に含まれる)物体検出用NNモデル及び物体認識用NNモデルの各々における推論処理に用いるチップ14の割り当てを行うようにした。これにより、複数のカメラ2のうち、あるカメラ2から入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、複数種類の物体認識及び物体検出に対応した各NNモデルの処理時間(推論時間)と使用頻度とを考慮して、これらの物体認識と物体検出の各々に対応したNNモデル毎に、これらのNNモデルの各々の推論処理に適切なチップ14を割り当てることができる。従って、限られた数のチップ14を用いて、複数のカメラ2の各々から入力された画像に対する効率的な物体認識を行うことができる。
また、本実施形態の分析ボックス1によれば、物体認識用NNモデルの各々における推論処理に必要な推論時間と、物体認識用NNモデルの各々の使用頻度に基づいて、物体認識用NNモデルの各々の推論処理に必要なチップ14の数を推定するようにした。これにより、複数のカメラ2のうち、あるカメラ2から入力された画像に対する物体認識の種類が、他のカメラから入力された画像に対する物体認識の種類と異なる場合でも、複数種類の物体認識に対応した各NNモデルの処理時間(推論時間)と使用頻度とを考慮して、これらの物体認識の各々に対応したNNモデル毎に、これらのNNモデルの各々の推論処理に適切な数のチップ14を割り当てることができる。
また、本実施形態の分析ボックス1によれば、物体検出用NNモデルにおける推論処理に必要な推論時間と、物体検出用NNモデルによる物体検出の対象となる画像の入力元のカメラ2の台数に基づいて、物体検出用NNモデルの推論処理に必要なチップ14の数を推定するようにした。ここで、物体検出用NNモデルの使用頻度は、この物体検出用NNモデルによる物体検出の対象となる画像の入力元のカメラ2の台数に応じて異なるので、上記のように、物体検出用NNモデルによる物体検出の対象となる画像の入力元のカメラ2の台数と、物体検出用NNモデルにおける推論処理に必要な推論時間とに基づいて、物体検出用NNモデルの推論処理に必要なチップ14の数を推定することにより、この物体検出用NNモデルに、適切な数のチップ14を割り当てることができる。
また、本実施形態の分析ボックス1によれば、物体認識用NNモデルの各々における推論処理に必要な推論時間と、物体認識用NNモデルの各々の使用頻度と、物体認識用NNモデルの各々が一定時間内に推論処理する目標のフレーム数に基づいて、物体認識用NNモデルの各々の推論処理に必要なチップ14の数を推定するようにした。ここで、例えば、上記の目標のフレーム数を、物体認識用NNモデルの各々が行う物体認識処理の優先度に応じて変更することにより、上記に記載の効果に加えて、物体認識用NNモデルの各々が行う物体認識処理の優先度を考慮して、これらのNNモデルの各々の推論処理に適切な数のチップ14を割り当てることができる。
また、本実施形態の分析ボックス1によれば、物体検出用NNモデルにおける推論処理に必要な推論時間と、物体検出用NNモデルによる物体検出の対象となる画像の入力元のカメラ2の台数と、物体検出用NNモデルが一定時間内に推論処理する目標のフレーム数に基づいて、物体検出用NNモデルの推論処理に必要なチップ14の数を推定するようにした。ここで、例えば、上記の目標のフレーム数を、物体検出用NNモデルの各々が行う物体検出処理の優先度(物体認識用NNモデルの各々が行う物体認識処理や、他の種類の物体検出用NNモデルが行う物体検出処理と比較した優先度)に応じて変更することにより、上記に記載の効果に加えて、この物体検出用NNモデルが行う物体検出処理の優先度を考慮して、この物体検出用NNモデルの物体検出処理に適切な数のチップ14を割り当てることができる。
また、本実施形態の分析ボックス1によれば、カメラ2の各々から入力された画像を蓄積するVMSサーバ20(のストレージ22)をさらに備え、ある時点において、プロセッサ割当部19が推論用のチップ14を割り当てることができなかった、物体検出用NNモデル又は物体認識用NNモデルの推論処理について、その後に、プロセッサ割当部19が該当の物体検出用NNモデル又は物体認識用NNモデルの推論処理にチップ14を割り当てることができるようになった後で、CPU11が、VMSサーバ20に蓄積された過去の画像に基づいて、該当の物体検出用NNモデル又は物体認識用NNモデルの推論処理を、非リアルタイムで行うようにした。これにより、ある時点において、プロセッサ割当部19が、ある物体検出用NNモデル又は物体認識用NNモデルの推論処理に、推論用のチップ14を割り当てることができなかった場合でも、CPU11が、VMSサーバ20に蓄積された過去の画像に基づいて、後追いで、該当の物体検出用NNモデル又は物体認識用NNモデルの推論処理を行うことができる。
また、本実施形態の画像分析システム10によれば、上記の効果に加えて、管理サーバ7を用いて、分析ボックス1へのアプリケーション51のインストールを含む、分析ボックス1の管理を行うことができる。
変形例:
なお、本発明は、上記の各実施形態の構成に限られず、発明の趣旨を変更しない範囲で種々の変形が可能である。次に、本発明の変形例について説明する。
変形例1:
上記の実施形態では、プロセッサ割当部19(GPUサーバ25)が、各NNモデル(物体検出用NNモデル及び物体認識用NNモデルの各々)の推論処理に必要なチップ14(推論用プロセッサ)の数を推定し、推定した数のチップ14を、各NNモデル(の推論処理)に割り当てる場合の例を示した。けれども、1つの分析ボックスに、複数の種類のチップ(推論用プロセッサ)が搭載されており、これらのチップが、異なる性能のチップから構成されている場合には、プロセッサ割当部が、各NNモデルの推論処理に用いるチップの種類と数を決定し、決定した種類と数のチップを、各NNモデルに割り当ててもよいし、各NNモデルの推論処理に用いるチップの種類のみを決定し、決定した種類のチップを、各NNモデルに割り当ててもよい
変形例2:
上記の実施形態における物体検出用NNモデルの必要チップ数推定処理では、プロセッサ割当部19(GPUサーバ25)が、物体検出用NNモデルによる物体検出の対象となる画像の入力元のカメラの台数Kと、物体検出用NNモデルのモデル性能T(この物体検出用NNモデルの推論処理に必要な推論時間)と、この物体検出用NNモデルの目標性能F(この物体検出用NNモデルが一定時間内に推論処理する目標のフレーム数)とに基づいて、この物体検出用NNモデルの推論処理に必要なチップ数(必要性能)を推定するようにした。けれども、これに限られず、例えば、プロセッサ割当部19が、上記の画像の入力元のカメラの台数Kと、物体検出用NNモデルのモデル性能Tのみに基づいて、物体検出用NNモデルの推論処理に必要なチップ数を推定するようにしてもよい。
また、上記の実施形態における物体認識用NNモデルの必要チップ数推定処理では、プロセッサ割当部19(GPUサーバ25)が、物体認識用NNモデルによる物体認識の対象となる画像の入力元の各カメラに映りこむ平均人数N1,N2,・・・(すなわち、この物体認識用NNモデルの使用頻度)と、この物体認識用NNモデルのモデル性能T(この物体認識用NNモデルの推論処理に必要な推論時間(秒))と、この物体認識用NNモデルの目標性能F(この物体認識用NNモデルが一定時間内に推論処理する目標のフレーム数)とに基づいて、この物体認識用NNモデルの推論処理に必要なチップ数を推定するようにした。けれども、これに限られず、例えば、プロセッサ割当部19が、上記の画像の入力元の各カメラに映りこむ平均人数N1,N2,・・・と、物体認識用NNモデルのモデル性能Tのみに基づいて、物体検出用NNモデルの推論処理に必要なチップ数を推定するようにしてもよい。
変形例3:
上記の実施形態では、画像分析システム10が、クラウドC上に、AI分析サーバ6と管理サーバ7とを備える場合の例を示したが、画像分析システムの構成はこれに限られず、例えば、クラウド上に、管理サーバのみを備えてもよい。
1 分析ボックス(画像分析装置)
2 ネットワークカメラ(カメラ)
7 管理サーバ
10 画像分析システム
14a〜14h チップ(推論用プロセッサ)
18 画像分析部
19 プロセッサ割当部
20 VMSサーバ
22 ストレージ(画像蓄積部)
23,23a,23b,23c AI推論インスタンス(画像分析プログラムのインスタンス)
51 アプリケーション(画像分析プログラム)
K カメラの台数
T モデル性能(学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間、及び学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間)
F 目標性能(学習済物体認識用ニューラルネットワークモデルの各々が一定時間内に推論処理する目標のフレーム数、及び学習済物体検出用ニューラルネットワークモデルが一定時間内に推論処理する目標のフレーム数)

Claims (9)

  1. 複数のカメラと接続される画像分析装置であって、
    前記カメラの各々から入力された画像に映り込んだ物体を検出するための学習済物体検出用ニューラルネットワークモデルと、前記学習済物体検出用ニューラルネットワークモデルにより検出された物体を認識するための1種類以上の学習済物体認識用ニューラルネットワークモデルとを含む画像分析プログラムの各インスタンスを用いて、前記複数のカメラの各々から入力された画像を分析する画像分析部と、
    前記学習済物体検出用ニューラルネットワークモデル、及び前記学習済物体認識用ニューラルネットワークモデルにおける推論処理を行うための複数の推論用プロセッサと、
    前記画像分析プログラムの各インスタンスに含まれる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論時間と使用頻度とに基づいて、前記複数の推論用プロセッサのうち、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理、及び前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に用いる推論用プロセッサの割り当てを行うプロセッサ割当部とを備える画像分析装置。
  2. 前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項1に記載の画像分析装置。
  3. 前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項1又は請求項2に記載の画像分析装置。
  4. 前記プロセッサ割当部は、前記学習済物体認識用ニューラルネットワークモデルの各々における推論処理に必要な推論時間と、前記学習済物体認識用ニューラルネットワークモデルの各々の使用頻度と、前記学習済物体認識用ニューラルネットワークモデルの各々が一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体認識用ニューラルネットワークモデルの各々の推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項2に記載の画像分析装置。
  5. 前記プロセッサ割当部は、前記学習済物体検出用ニューラルネットワークモデルにおける推論処理に必要な推論時間と、前記学習済物体検出用ニューラルネットワークモデルによる物体検出の対象となる画像の入力元のカメラの台数と、前記学習済物体検出用ニューラルネットワークモデルが一定時間内に推論処理する目標のフレーム数に基づいて、前記学習済物体検出用ニューラルネットワークモデルの推論処理に必要な推論用プロセッサの数を推定することを特徴とする請求項3に記載の画像分析装置。
  6. 前記カメラの各々から入力された画像を蓄積する画像蓄積部をさらに備え、
    ある時点において、前記プロセッサ割当部が前記推論用プロセッサを割り当てることができなかった、前記学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理について、その後に、前記プロセッサ割当部が、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理に前記推論用プロセッサを割り当てることができるようになった後で、前記画像蓄積部に蓄積された過去の画像に基づいて、該当の学習済物体検出用ニューラルネットワークモデル又は前記学習済物体認識用ニューラルネットワークモデルの推論処理を、非リアルタイムで行うことを特徴とする請求項1乃至請求項5のいずれか一項に記載の画像分析装置。
  7. 前記画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていることを特徴とする請求項1乃至請求項6のいずれか一項に記載の画像分析装置。
  8. 前記請求項1乃至請求項7のいずれか一項に記載の画像分析装置を複数備え、
    前記画像分析装置の各々に接続された複数のカメラと、
    前記画像分析装置への前記画像分析プログラムのインストールを含む、前記画像分析装置及び前記カメラの管理を行う管理サーバとをさらに備える画像分析システム。
  9. 前記画像分析システム内の複数の画像分析装置に接続されたカメラは、複数のカメラのグループに分類され、これらのグループのそれぞれに対応する前記画像分析プログラムは、互いに異なる前記学習済物体検出用ニューラルネットワークモデル及び前記学習済物体認識用ニューラルネットワークモデルの組み合わせで構成されていることを特徴とする請求項8に記載の画像分析システム。
JP2019085621A 2019-04-26 2019-04-26 画像分析装置、及び画像分析システム Active JP6644231B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2019085621A JP6644231B1 (ja) 2019-04-26 2019-04-26 画像分析装置、及び画像分析システム
CN202010248807.2A CN111860478A (zh) 2019-04-26 2020-04-01 图像分析装置以及图像分析系统
US16/857,334 US11475237B2 (en) 2019-04-26 2020-04-24 Image analysis device and image analysis system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019085621A JP6644231B1 (ja) 2019-04-26 2019-04-26 画像分析装置、及び画像分析システム

Publications (2)

Publication Number Publication Date
JP6644231B1 JP6644231B1 (ja) 2020-02-12
JP2020181488A true JP2020181488A (ja) 2020-11-05

Family

ID=69412209

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019085621A Active JP6644231B1 (ja) 2019-04-26 2019-04-26 画像分析装置、及び画像分析システム

Country Status (3)

Country Link
US (1) US11475237B2 (ja)
JP (1) JP6644231B1 (ja)
CN (1) CN111860478A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12067078B2 (en) 2020-12-08 2024-08-20 Canon Kabushiki Kaisha Edge device, storage medium, and method of controlling edge device

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11321618B2 (en) * 2018-04-25 2022-05-03 Om Digital Solutions Corporation Learning device, image pickup apparatus, image processing device, learning method, non-transient computer-readable recording medium for recording learning program, display control method and inference model manufacturing method
US11599392B1 (en) * 2019-08-14 2023-03-07 Kuna Systems Corporation Hybrid cloud/camera AI computer vision system
JP2020188323A (ja) * 2019-05-10 2020-11-19 ソニーセミコンダクタソリューションズ株式会社 撮像装置および撮像方法
CN110381322B (zh) * 2019-07-15 2023-03-14 腾讯科技(深圳)有限公司 视频流解码方法、装置、终端设备及存储介质
JP7400579B2 (ja) * 2020-03-24 2023-12-19 カシオ計算機株式会社 画像処理装置、画像処理方法、及び、プログラム
US20220083824A1 (en) * 2020-09-11 2022-03-17 Actapio, Inc. Execution control apparatus, execution control method, and a non-transitory computer-readable storage medium
US20220103831A1 (en) * 2020-09-30 2022-03-31 Alibaba Group Holding Limited Intelligent computing resources allocation for feature network based on feature propagation
CN112437275B (zh) * 2020-11-20 2023-03-24 品茗科技股份有限公司 一种基于智能摄像头的视频分析方法
KR20220078787A (ko) 2020-12-03 2022-06-13 삼성전자주식회사 컴퓨팅 장치의 동작 방법 그리고 명령들을 저장하는 컴퓨터로 독출 가능한 저장 매체
CN113010281B (zh) * 2021-02-24 2024-04-02 厦门树冠科技有限公司 多相机检测系统的线程处理方法、装置、存储介质和终端
JP7088391B1 (ja) 2021-07-09 2022-06-21 トヨタ自動車株式会社 情報処理装置
CN115984675B (zh) * 2022-12-01 2023-10-13 扬州万方科技股份有限公司 一种用于实现多路视频解码及ai智能分析的系统及方法
CN118411574B (zh) * 2024-07-02 2024-09-20 浙江果纳半导体技术有限公司 一种基片载体识别方法、系统和可存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10143380A (ja) * 1996-11-07 1998-05-29 Hitachi Ltd マルチプロセッサシステム
CN101218770B (zh) * 2005-07-08 2015-07-15 富士通株式会社 无线资源分配方法、通信装置
JP2008065498A (ja) * 2006-09-06 2008-03-21 Matsushita Electric Ind Co Ltd 信号処理装置、信号処理方法および信号処理プログラム
JP5100596B2 (ja) * 2008-10-03 2012-12-19 キヤノン株式会社 情報処理装置及び情報処理方法
JP2011221920A (ja) * 2010-04-13 2011-11-04 Mitsubishi Electric Corp 画像解析装置
JP5618670B2 (ja) * 2010-07-21 2014-11-05 キヤノン株式会社 データ処理装置及びその制御方法
WO2012037637A1 (en) * 2010-09-23 2012-03-29 Research In Motion Limited System and method for dynamic coordination of radio resources usage in a wireless network environment
JP6237170B2 (ja) * 2013-12-03 2017-11-29 日本電気株式会社 割当判定装置、制御方法、及びプログラム
JP6746112B2 (ja) 2016-06-14 2020-08-26 株式会社エンルート 監視装置及び監視方法
US10304154B2 (en) * 2017-04-24 2019-05-28 Intel Corporation Coordination and increased utilization of graphics processors during inference
US10769448B2 (en) * 2017-05-31 2020-09-08 Panasonic I-Pro Sensing Solutions Co., Ltd. Surveillance system and surveillance method
US10579901B2 (en) * 2017-12-05 2020-03-03 Canon Kabushiki Kaisha Method, system and apparatus for comparing objects in images
US11126863B2 (en) * 2018-06-08 2021-09-21 Southwest Airlines Co. Detection system
CN109254946B (zh) * 2018-08-31 2021-09-17 郑州云海信息技术有限公司 图像特征提取方法、装置、设备及可读存储介质
US11003956B2 (en) * 2019-05-16 2021-05-11 Naver Corporation System and method for training a neural network for visual localization based upon learning objects-of-interest dense match regression
US11203361B2 (en) * 2020-05-05 2021-12-21 StradVision, Inc. Method for performing on-device learning of machine learning network on autonomous vehicle by using multi-stage learning with adaptive hyper-parameter sets and device using the same

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12067078B2 (en) 2020-12-08 2024-08-20 Canon Kabushiki Kaisha Edge device, storage medium, and method of controlling edge device

Also Published As

Publication number Publication date
US11475237B2 (en) 2022-10-18
CN111860478A (zh) 2020-10-30
JP6644231B1 (ja) 2020-02-12
US20200342258A1 (en) 2020-10-29

Similar Documents

Publication Publication Date Title
JP6644231B1 (ja) 画像分析装置、及び画像分析システム
US11064162B2 (en) Intelligent video analysis system and method
US10530846B2 (en) Scheduling packets to destination virtual machines based on identified deep flow
JP7060724B2 (ja) タスクスケジューリング方法、リソース共有使用方法、スケジューラ、コンピュータ可読記憶媒体および装置
US10031774B2 (en) Scheduling multi-phase computing jobs
US9697045B2 (en) Selecting resource allocation policies and resolving resource conflicts
CN108062499B (zh) 一种人脸识别的方法、系统及平台
WO2021136137A1 (zh) 一种资源调度方法、装置及相关设备
US20180032373A1 (en) Managing data processing resources
US20180129892A1 (en) Live video analytics at scale
US10216543B2 (en) Real-time analytics based monitoring and classification of jobs for a data processing platform
CN109815019A (zh) 任务调度方法、装置、电子设备及可读存储介质
US10778807B2 (en) Scheduling cluster resources to a job based on its type, particular scheduling algorithm,and resource availability in a particular resource stability sub-levels
US20150326658A1 (en) Apparatus and method for controlling virtual machine migrations based on flow information
US10606650B2 (en) Methods and nodes for scheduling data processing
WO2016197706A1 (zh) 数据的迁移方法及装置
KR102477845B1 (ko) 대용량 데이터 배치 처리를 위한 영상 데이터 처리 시스템 및 방법과 이를 위한 컴퓨터 프로그램
US11489776B2 (en) Multicore offloading of network processing
KR20180134219A (ko) 가상머신 패킷의 처리방법과 그 장치
WO2020050094A1 (ja) リソース割当装置、リソース割当方法およびリソース割当プログラム
Lai et al. Machine learning based intrusion detection as a service: Task assignment and capacity allocation in a multi-tier architecture
KR102091152B1 (ko) 계층적 네트워크에서 다중코어를 이용한 패킷 처리 방법 및 그 장치
JP7151795B2 (ja) データストリーム割り当て方法、システムおよびプログラム
JP4040482B2 (ja) 負荷分散並列処理装置
US20220365809A1 (en) Analysis processing apparatus, system, method, and non-transitory computer readable medium storing program

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191025

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20191025

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20191101

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191125

R150 Certificate of patent or registration of utility model

Ref document number: 6644231

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250