以下、本発明を具体化した実施形態によるデータセット生成システム、サーバ、及びデータセット生成プログラムについて、図面を参照して説明する。図1は、本実施形態によるデータセット生成システム10の概略の構成を示すブロック構成図である。図1に示すように、本実施形態では、所定の撮影エリアを撮影する監視用のネットワークカメラである複数の固定カメラ3と、各固定カメラ3からの映像の分析を行う分析ボックス2とが、チェーン店等の店舗Sc等に配置され、内蔵カメラ5を備えた、ディジタルサイネージ用のタブレット端末であるサイネージ4(サイネージ4a、4b等の総称)が、チェーン店等の店舗Sa、Sb等に配される場合の例について説明する。
上記のデータセット生成システム10は、主に、各店舗S(店舗Sa、Sb、Sc等の総称)に設置された、上記の複数の固定カメラ3と、分析ボックス2と、サイネージ4と、これらの分析ボックス2及びサイネージ4とインターネットを介して接続された、クラウドC上の学習サーバ1(請求項における「サーバ」、及び「コンピュータ」に相当)とから構成される。
上記のデータセット生成システム10は、図1に示すように、上記の固定カメラ3及び分析ボックス2が配される店舗Scに、ハブ7と、ルータ8とを備えている。また、データセット生成システム10は、サイネージ4が配される店舗Sa、Sb等には、無線LANルータ6を備えている。なお、サイネージ4側のカメラは、サイネージ4の筐体内に配設された内蔵カメラ5である場合と、サイネージ4に取り付けられたWebカメラの場合があるが、以下の説明では、サイネージ4側のカメラが、内蔵カメラ5である場合の例を中心に説明する。請求項における「複数のカメラ」には、各サイネージ4の内蔵カメラ5と、各分析ボックス2に接続された各固定カメラ3とが、含まれる。
上記の固定カメラ3は、IPアドレスを持ち、ネットワークに直接接続することが可能である。図1に示すように、分析ボックス2は、LAN(Local Area Network)とハブ7とを介して、複数の固定カメラ3と接続され、これらの固定カメラ3の各々から入力された画像を分析する。具体的には、分析ボックス2は、固定カメラ3の各々から入力された画像に対する物体検出処理(顧客や、顧客の頭/顔の検出処理)や、この物体検出処理で検出された物体の画像に対する物体認識処理(顧客の属性(性別及び年齢(年代))推定や、姿勢推定等の認識処理)等を行う。
サイネージ5は、主に店舗S内の商品棚に設置されて、そのタッチパネルディスプレイ14(図2参照)上に、店舗Sに来店した顧客に対する広告等のコンテンツを表示すると共に、その内蔵カメラ4からのフレーム画像に対する物体検出処理(顧客や、顧客の頭/顔の検出処理)や、この物体検出処理で検出された物体の画像に対する物体認識処理等を行う。
上記の学習サーバ1は、店舗Sの管理部門(本社等)に設置されたサーバである。詳細については後述するが、学習サーバ1は、所定の推論処理用のDNN(Deep Neural Networks)モデルの学習用データセット(に適したデータセット)を生成し、生成した学習用データセットを用いて、元の推論処理用の学習済DNNモデルのファインチューニングを行い、ファインチューニング後の学習済DNNモデルを、各分析ボックス2や各サイネージ4に送信してインストールさせる。
次に、図2を参照して、上記のサイネージ4のハードウェア構成について説明する。サイネージ4は、上記の内蔵カメラ5に加えて、SoC(System-on-a-Chip)11と、タッチパネルディスプレイ14と、スピーカ15と、各種のデータやプログラムを記憶するメモリ16と、通信部17と、二次電池18と、充電端子19とを備えている。SoC11は、装置全体の制御及び各種演算を行うCPU12と、各種の推論処理用学習済DNN(Deep Neural Networks)モデル20の推論処理等に用いられるGPU13とを備えている。
上記のメモリ16には、推論処理用学習済DNNモデル20が格納されている。この推論処理用学習済DNNモデル20には、複数の種類の推論処理用学習済DNNモデルが含まれており、例えば、顧客(人)の検出用の学習済DNNモデル(顧客の顔又は頭の検出用の学習済DNNモデルを含む)や、この検出処理で検出された顧客(人)や、顧客の頭/顔の画像に対する物体認識処理(顧客の属性(性別及び年齢(年代))推定や、姿勢推定等の認識処理)用の学習済DNNモデルを含んでいる。なお、メモリ16に格納されるプログラムには、図7中の「エッジ側コアエンジン」に相当するプログラムであるサイネージ制御プログラム29が含まれている。
上記の通信部17は、通信ICとアンテナを備えている。サイネージ4は、通信部17とインターネットとを介して、クラウドC上の学習サーバ1と接続されている。また、二次電池18は、リチウムイオン電池等の、充電により繰り返し使用することが可能な電池であり、AC/DCコンバータにより直流電力に変換した後の商用電源からの電力を、蓄電して、サイネージ4の各部に供給する。
次に、図3を参照して、分析ボックス2のハードウェア構成について説明する。分析ボックス2は、装置全体の制御及び各種演算を行うCPU21と、各種のデータやプログラムを格納するハードディスク22と、RAM(Random Access Memory)23と、DNN(Deep Neural Networks)推論用プロセッサである推論チップ(以下、「チップ」と略す)24a~24hと、通信制御IC25とを備えている。CPU21は、一般的な汎用CPU、又は多数の映像ストリームを同時処理するため並列処理性能を高めるように設計されたCPUである。また、ハードディスク22に格納されるデータには、固定カメラ2の各々から入力された映像ストリーム(のデータ)をデコードした後の映像データが含まれている。また、ハードディスク22に格納されるプログラムには、人検出処理、顔検出処理、属性認識処理、姿勢推定処理等の推論処理用の学習済DNNモデル(各種推論処理用学習済DNNモデル)と、分析ボックス制御プログラムとが含まれている。なお、上記の分析ボックス制御プログラムには、図7中の「エッジ側コアエンジン」に相当するプログラムが含まれている。
次に、図4を参照して、学習サーバ1のハードウェア構成について説明する。学習サーバ1は、装置全体の制御及び各種演算を行うCPU31と、各種のデータやプログラムを格納するハードディスク32と、RAM(Random Access Memory)33と、ディスプレイ34と、操作部35(請求項における「設定操作手段」に相当)と、通信部36とを備えている。上記のハードディスク32に格納されるプログラムには、データセット生成プログラム37が含まれている。
図5は、主に、上記の学習サーバ1の機能ブロックを示す。下記の図5の説明では、図中の各機能ブロックと請求項における各構成要件(各手段)との対応関係と、これらの各機能ブロックの機能の概要を説明する。学習サーバ1は、機能ブロックとして、レイアウト・フレーム画像収集部40と、画像特徴抽出部41と、画像クラスタリング部42と、カメラ分類部43と、代表カメラ選択部44と、フレーム画像収集部45と、評価用推論部46と、データセット評価部47と、擬似ラベリング部48と、再学習部49と、精度向上評価部50とを備えている。上記のレイアウト・フレーム画像収集部40、画像特徴抽出部41、画像クラスタリング部42、カメラ分類部43、代表カメラ選択部44、フレーム画像収集部45、評価用推論部46、データセット評価部47、擬似ラベリング部48、再学習部49、精度向上評価部50は、それぞれ、請求項における第2の撮影画像収集手段、画像特徴抽出手段、画像クラスタリング手段、カメラ分類手段、代表カメラ選択手段、撮影画像収集手段、評価用推論手段、データセット評価手段、擬似ラベリング手段、再学習手段、及び精度向上評価手段に相当する。また、上記のレイアウト・フレーム画像収集部40とフレーム画像収集部45とは、主に、図4中の通信部36とCPU31とデータセット生成プログラム37とにより実現される。また、上記の画像特徴抽出部41と、画像クラスタリング部42と、カメラ分類部43と、代表カメラ選択部44と、評価用推論部46と、データセット評価部47と、擬似ラベリング部48と、再学習部49と、精度向上評価部50とは、図4中のCPU31とデータセット生成プログラム37により実現される。
上記のレイアウト・フレーム画像収集部40は、デバイスDB(図7参照)をチェックした結果、新しいデータソース(新しい顧客の店舗に設置されたカメラ(サイネージ4の内蔵カメラ5と、分析ボックス2に接続された固定カメラ3の両方を含む)、又は既存客の店舗に新たに設置されたカメラ)を見つけると、新しい(複数の)カメラの各々から、人が映っていない撮影画像(フレーム画像)を収集する。この人が映っていない、店舗の背景のみが映ったフレーム画像を、以下の説明では、レイアウト・フレーム画像と呼ぶ。画像特徴抽出部41は、レイアウト・フレーム画像収集部40により収集した、レイアウト・フレーム画像(人が映っていない撮影画像)の各々から特徴を抽出する。画像クラスタリング部42は、レイアウト・フレーム画像収集部40により収集したレイアウト・フレーム画像を、画像特徴抽出部41により抽出した特徴に基づいて、グループ分けする。カメラ分類部43は、画像クラスタリング部42によるレイアウト・フレーム画像のグループ分け結果に基づいて、これらのレイアウト・フレーム画像を撮影したカメラ(内蔵カメラ5及び固定カメラ3)のグループ分けを行うことにより、上記の新しい複数のカメラのグループ分けを行う。代表カメラ選択部44は、上記カメラ分類部43によりグループ分けをした各グループにおける代表カメラを選択する。
フレーム画像収集部45は、代表カメラ選択部44により選択された代表カメラの各々から、マウス等の操作部35を用いてシステム管理者が設定した選択基準に合致した、人が映ったフレーム画像を収集する。この際、フレーム画像収集部45は、一つ前のフレーム画像から見て、人数の増加、所定の割合以上の人の位置移動、又は所定の割合以上の人の姿勢変化があったフレーム画像を収集する事が望ましい。なお、本実施形態では、ターゲットとなる所定の推論処理用DNNモデルが行う推論処理(エッジ側デバイスの推論処理用学習済DNNモデルが行う推論処理と同じ種類の推論処理)が、人に関する推論処理であるので(認識対象物が人(正確に言うと、人、顔、又は頭)なので)、フレーム画像収集部45が収集するフレーム画像が、人が映ったフレーム画像である場合を例に説明するが、フレーム画像収集部45が収集するフレーム画像は、人が映ったフレーム画像である必要はなく、動物、車両、商品等の、人以外の認識対象物が映ったフレーム画像であってもよい。なお、認識対象物が人以外である場合には、フレーム画像収集部45は、一つ前のフレーム画像から見て、認識対象物の数の増加、所定の割合以上の認識対象物の位置移動、又は所定の割合以上の認識対象物の姿勢変化があったフレーム画像を収集する事が望ましい。評価用推論部46は、フレーム画像収集部45により収集したフレーム画像の各々に対して、評価用の推論処理を行う。
データセット評価部47は、評価用推論部46による推論処理の結果に基づいて、フレーム画像収集部45により収集したフレーム画像から構成されるデータセットが、所定の推論処理用のDNNモデルの学習用データセットに適しているか否かを評価する。より詳細に言うと、データセット評価部47は、評価用推論部46による推論処理の結果に基づいて、フレーム画像収集部45により収集したフレーム画像から構成されるデータセットが、上記の所定の推論処理用の学習済DNNモデルのファインチューニング用の学習用データセットに適しているか否かを評価する。上記のデータセット評価部47によるデータセットの評価値が、目標値以上になっていなければ(S1でNO)、学習サーバ1のCPU31は、上記の評価値が目標値以上になるまで、フレーム画像収集部45による人が映ったフレーム画像の収集を繰り返す。システム管理者は、上記の繰り返しの途中において、必要だと判断した場合には、操作部35を用いて、フレーム画像の選択基準の追加・変更を行った後、学習サーバ1のCPU31に対して、フレーム画像収集部45による人が映ったフレーム画像の収集を繰り返すように指示する。なお、学習サーバ1のCPU31は、上記S1の判定で、データセット評価部47によるデータセットの評価値が、目標値以上になっていないと判定した場合に、データセット内の各フレーム画像のクラスにバイアスがある(クラスの不均衡がある)と判定したときは、多数派のクラスに属するフレーム画像の一部を、データセットから除去(削除)する処理を行う。
上記のデータセット評価部47によるデータセットの評価値が、目標値以上になっていれば(S1でYES)、再学習部49が、フレーム画像収集部45により収集したフレーム画像から構成されるデータセットを学習用データセットとして用いて、上記所定の推論処理用の学習済DNNモデルのファインチューニング(一種の再学習)を行う。より詳細に言うと、データセットの評価値が、目標値以上になっていれば(S1でYES)、擬似ラベリング部48は、フレーム画像収集部45により収集したフレーム画像の各々に対して、擬似ラベリング処理を行う。そして、再学習部49は、フレーム画像収集部45により収集したフレーム画像と、擬似ラベリング部48により各フレーム画像に付与された正解ラベルとに基づいて、上記所定の推論処理用の学習済DNNモデルのファインチューニングを行う。
精度向上評価部50は、上記の再学習部49によるファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上しているか否かを評価する。上記のファインチューニング後の学習済DNNモデルによる推論処理の精度が、所定の値以上向上していなければ(S2でNO)、学習サーバ1のCPU31は、上記の推論処理の精度が所定の値以上向上するまで、フレーム画像収集部45による人が映ったフレーム画像の収集と、擬似ラベリング部48による擬似ラベリング処理と、再学習部49による推論処理用学習済DNNモデルのファインチューニング処理と、精度向上評価部50による精度の評価処理とを繰り返す。システム管理者は、上記の繰り返しの途中において、必要だと判断した場合には、操作部35を用いて、フレーム画像の選択基準の追加・変更を行った後、学習サーバ1のCPU31に対して、上記のフレーム画像収集部45と、擬似ラベリング部48と、再学習部49と、精度向上評価部50による処理を繰り返すように指示する。
なお、学習用データセット(のフレーム画像)における、クラスの均衡(バランス化)を図る観点からは、上記のファインチューニング後の学習済DNNモデルによる推論処理の精度が、所定の値以上向上していなかったときに(S2でNO)、学習サーバ1のCPU31は、上記の推論処理の精度が所定の値以上向上するまで、フレーム画像収集部45による人が映ったフレーム画像の収集(、又はデータセット内の各フレーム画像が属するクラスのバランスを図るためのフレーム画像の削除)と、評価用推論部46による推論処理と、データセット評価部47によるデータセットの評価処理と、上記S1のデータセットの評価値が目標値以上になっているか否かの判定処理と、擬似ラベリング部48による擬似ラベリング処理と、再学習部49による推論処理用学習済DNNモデルのファインチューニング処理とを繰り返すことが望ましい。
上記の精度向上評価部50による評価値が、所定の値以上向上していれば(S2でYES)、学習サーバ1のCPU31は、通信部36を用いて、上記の再学習部49によるファインチューニング後の学習済DNNモデルを、上記の新しいデータソースに含まれるカメラに対応するエッジ側デバイス(新しい内蔵カメラ5に対応するサイネージ4と、新しい固定カメラ3に接続された分析ボックス2)に送信して格納させる。より詳細に説明すると、学習サーバ1のCPU31は、上記の再学習部49によるファインチューニング後の学習済DNNモデルを、推論処理用学習済DNNモデル20として、新しい内蔵カメラ5に対応するサイネージ4のメモリ16に格納させると共に、各種推論処理用学習済DNNモデル28として、新しい固定カメラ3に接続された分析ボックス2のハードディスク22に格納させる。
次に、図6乃至図13を参照して、本データセット生成システム10における全体の処理の流れと、学習サーバ1側においてシステム管理者が用いるユーザインタフェース(UI)用の画面について、説明する。図6のフローチャートにおいて、学習サーバ1のCPU31が、図7に示すデバイスDB50をチェックした結果、新しいデータソース(新しい顧客の店舗に設置されたカメラ(サイネージ4の内蔵カメラ5と、分析ボックス2に接続された固定カメラ3の両方を含む)、又は既存客の店舗に新たに設置されたカメラ)を見つけると(S11でYES)、新しいカメラの各々から、上記のレイアウト・フレーム画像(人が映っていない撮影画像)を収集して、収集したレイアウト・フレーム画像の各々の特徴に基づいて、上記の収集したレイアウト・フレーム画像を撮影したカメラ(内蔵カメラ5及び固定カメラ3)のグループ分け(クラスタリング)を行う(S12)。そして、学習サーバ1のCPU31(の代表カメラ選択部44)は、上記のグループ分けをした各グループにおける代表カメラを選択する(S13)。
上記図6のフローチャートにおけるS11~S13の処理(クラスタリング処理)の詳細について、図7のフローチャートを参照して説明する。上記図6のS11で述べたように、学習サーバ1のCPU31が、決められた日時に、デバイスDB50にアクセスして、新しい顧客とカメラ(新しい顧客の店舗に設置されたカメラ(内蔵カメラ5と固定カメラ3の両方を含む)、又は既存客の店舗に新たに設置されたカメラ)をチェックする(S31)。そして、新しい顧客とカメラ(要するに、新しいカメラ)があれば、学習サーバ1のCPU31が、上記の新しいカメラの情報(正確に言うと、内蔵カメラ5を有するサイネージ4の情報と、固定カメラ3に接続された分析ボックス2の情報を含む)を、デバイスDB50から収集する(S32)。そして、学習サーバ1のCPU31は、上記の新しいカメラに対応するエッジ側のデバイス(要するに、新しい内蔵カメラ5に対応するサイネージ4と、新しい固定カメラ3に接続された分析ボックス2)に対する、レイアウト・フレーム画像収集要求(のコマンド)をコンパイルして(S33)、コンパイル後のレイアウト・フレーム画像収集要求を、通信部36を用いて、上記の新しいカメラに対応するエッジ側のデバイスに送信する(S34)。
上記の新しいカメラに対応するエッジ側のデバイス(サイネージ4及び分析ボックス2)は、学習サーバ1から、上記のレイアウト・フレーム画像収集要求(のファイル)を受信すると(S35)、このレイアウト・フレーム画像収集要求で指定された日時に自デバイスに接続された各カメラ(固定カメラ3又はサイネージ4)で撮影した撮影画像からフレーム画像を抽出して、抽出した各カメラのフレーム画像の中に、レイアウト・フレーム画像があれば(S37でYES)、各カメラのレイアウト・フレーム画像を、学習サーバ1に送信する(S38)。ここで、上記のレイアウト・フレーム画像収集要求で指定された日時(各カメラのフレーム画像の撮影日時)は、開店前、(開店後の)午前中、お昼、夜等の複数の時間帯の日時であることが望ましい。このように、複数の時間帯に撮影したフレーム画像から見つけたレイアウト・フレーム画像を収集する事により、収集したレイアウト・フレーム画像から、時間的なバイアス(偏り)を除去することができる。
学習サーバ1は、上記の新しいカメラに対応するエッジ側のデバイス(サイネージ4及び分析ボックス2)から、各カメラのレイアウト・フレーム画像を受信すると(S39)、これらのレイアウト・フレーム画像を、データDB51に格納する(S40)。
全ての新しいカメラのレイアウト・フレーム画像がデータDB51に格納されると、学習サーバ1のCPU31は、基準モデルDB52に格納された最先端の画像特徴抽出用のAIモデル(例えば、pretrained ResNet50)を用いて、データDB51に格納された上記の新しいカメラのレイアウト・フレーム画像の各々から特徴ベクトル(例えば、2048次元の特徴ベクトル)を抽出する(S41)。例えば、新しいカメラの数が200個であるとすれば、これらのカメラのレイアウト・フレーム画像(合計200枚)の各々から抽出された200の特徴ベクトルが抽出される。
次に、学習サーバ1のCPU31は、基準モデルDB52に格納された最先端のクラスタリング用の機械学習アルゴリズムを用いて、上記の抽出された各レイアウト・フレーム画像の特徴ベクトルに基づき、データDB51に格納された上記の新しいカメラのレイアウト・フレーム画像のクラスタリング(グループ分け)を行う(S42)。このクラスタリングに用いられる機械学習アルゴリズムとしては、例えば、t-SNE(t-distributed Stochastic Neighbor Embedding)、GMM(Gaussian mixture model)、KNN(K-Nearest Neighbor Algorithm(K近傍法))、PCA(Principal Component Analysis(主成分分析))等が挙げられる。
次に、学習サーバ1のCPU31は、基準モデルDB52に格納された最先端の代表フレーム画像選択用のアルゴリズムを用いて、上記S42でグループ分けをされた各クラスタ(各グループ)に属するレイアウト・フレーム画像の中から、各クラスタのレイアウト・フレーム画像を代表するフレーム画像(以下、「代表フレーム画像」という)を選択する(S43)。ここで、上記S42におけるレイアウト・フレーム画像のクラスタ化(グループ分け)は、これらのレイアウト・フレーム画像を撮影したカメラ(内蔵カメラ5及び固定カメラ3)のグループ分けを行うことと同じである。従って、上記S43における、各グループに属するレイアウト・フレーム画像の中から、代表フレーム画像を選択する処理は、グループ分けをした各カメラグループにおける代表カメラを選択する処理と、実質的に同じである。上記の代表フレーム画像選択用のアルゴリズムとしては、例えば、各クラスタの中心に位置するレイアウト・フレーム画像を、各クラスタの代表フレーム画像として選択するという方法や、各クラスタにおいて、近隣のレイアウト・フレーム画像の数(類似したレイアウト・フレーム画像の数)が一番多いレイアウト・フレーム画像を、各クラスタの代表フレーム画像として選択するという方法が挙げられる。
図8は、学習サーバ1側においてシステム管理者が、上記の新しいデータソース(新しいカメラ)のクラスタリング処理のサブシステムの設計時に用いるユーザインタフェース(UI)用の画面(データソースクラスタリングUI55)を示す。なお、以下の説明において、「サブシステム」は、学習サーバ1のデータセット生成プログラム37に含まれるソフトウェア・モジュール群を意味する。上記のデータソースクラスタリングUI55は、ツールボックス欄56と、システム編集欄57と、結果欄58とを有している。ツールボックス欄56には、上記図7のS42で説明したレイアウト・フレーム画像のクラスタリング処理に用いる機械学習アルゴリズム(クラスタリング・アルゴリズム)の選択ボタンと、図7のS39で受信したレイアウト・フレーム画像の評価基準の選択ボタンが表示される。図8に示す例では、クラスタリング・アルゴリズムとして、GMM、KNN、PCA、及びt-SNEを選択することが可能であり、評価基準として、「検出」、「姿勢推定」、「顔認識」を選択することが可能である。ただし、データソースクラスタリングUI55では、システム編集欄57における評価の機能ブロック(評価ブロック)65において、人がいないことの評価しか行わないので、上記の評価基準のうち、(人の)「検出」しか使用しない。
図8におけるシステム編集欄57では、システム管理者がシステム設計時に使用することができる機能ブロックのうち、初期化ブロック59、選択基準定義ブロック60、フィルタ設定61、画像データ収集要求ブロック62、収集要求送信ブロック63、応答受信ブロック64,評価ブロック65、クラスタリングブロック66、及びビジュアライザブロック67が用いられている。
上記の59~66の機能ブロックにより実現されるクラスタリング処理については、図7等で説明した通りであるが、このデータソースクラスタリングUI55を用いた設定処理(設計)で重要な点は、以下の2つである。第1に、画像データ(フレーム画像)の選択基準の設定方法(画像データ収集フィルタの設定方法)を、どのように設定するかである。例えば、システム管理者が、操作部35でフィルタ設定61をクリックすることにより、Config欄68に示される画像データ収集フィルタの設定(フレーム画像の選択基準の設定)を行うことができる。クラスタリングのためのレイアウト・フレーム画像の収集時には、フレーム画像の選択基準は、例えば、図8のConfig欄68に示すように、(撮影)開始時間=2022年5月17日の午前8時(開店前)、期間=10秒、人の数=0名である。このようなフレーム画像の選択基準を採用することにより、学習サーバ1は、新しい(複数の)カメラの各々から、2022年5月17日の午前8時ジャストから午前8時0分10秒の間の人が映っていない撮影画像(フレーム画像)を、少なくとも1枚収集する。なお、実際には、上記のように、複数の時間帯に撮影した各カメラのフレーム画像から、少なくとも1枚のレイアウト・フレーム画像を収集することが望ましい。
また、このデータソースクラスタリングUI55を用いた設定処理(設計)で重要な2つ目の点は、ツールボックス欄56に表示されたクラスタリング・アルゴリズムの選択処理である。図8の結果欄58の左側には、システム管理者が、操作部35を用いて、ツールボックス欄56に表示されたクラスタリング・アルゴリズムの中からKNNを選択した場合におけるクラスタリング結果を示す。ただし、図7のS41で説明したように、新しいカメラのレイアウト・フレーム画像の各々から2048次元の特徴ベクトルを抽出した場合には、図8の結果欄58の左側に示すような2次元のクラスタリング結果を得るためには、上記の2048次元の特徴ベクトルを2次元に次元削減した上で、KNNでクラスタリングする必要がある。
データソースクラスタリングUI55の右側のConfig欄69は、エッジ側のデバイス(サイネージ4及び分析ボックス2)から受信したフレーム画像(レイアウト・フレーム画像)の評価の基準を示し、結果欄58の右側は、エッジ側のデバイスから受信したフレーム画像の評価の結果を示す。クラスタリング処理で使用するフレーム画像は、人が映っていないレイアウト・フレーム画像なので、Config欄69に示される評価の基準においても、結果欄58の右側に示される評価の結果においても、フレーム画像に映っている人の数(“nbr of p”)は、0人であり、各フレーム画像毎の(検出した人、顔、又は頭に対応する)バウンドボックスの数(“bbx/frame”)は、0になる。
上記のクラスタリング処理が完了すると、学習サーバ1のCPU31は、ターゲットとなる所定の推論処理用DNNモデルの学習用データセットの生成に必要なフレーム画像の収集を開始する。具体的には、学習サーバ1のCPU31は、まず、図9に示すデータ収集選択UI72で編集した仕組みに基づいて、上記の学習用データセットに必要な最小限度の数の、人が映ったフレーム画像を集める処理を行う。
上記の必要な最小限度の数のフレーム画像を集める処理は、以下のようにして行われる。まず、図9に示すデータ収集選択UI72で、システム管理者が、例えば、操作部35でフィルタ設定80をクリックすることにより、Config欄87に示される画像データ収集フィルタの設定(フレーム画像の選択基準の設定)を行うことができる。この図9に示すConfig欄87の例では、フレーム画像の選択基準が数式で表されている。システム管理者は、Config欄87に数式を書き込むことに加えて、Config欄88に記載された画像データ収集要求のプログラムを編集する事により、フレーム画像の選択基準の設定(画像データ収集フィルタの設定)を行うことができる。このフレーム画像の選択基準の設定操作が完了すると(図6のS14)、学習サーバ1のCPU31は、図9に示すデータ収集選択UI72で編集した処理を実行して、必要な最小限度の数のフレーム画像の収集が完了するまで、上記S13で選択した(各カメラグループにおける)代表カメラから、上記S14で設定した選択基準に合致した、多様性のある、人が映ったフレーム画像を収集する(S15及びS16)。図9に示される例では、代表カメラから多様性のあるフレーム画像を収集するために、Config欄87に示す数式は、一つ前のフレーム画像から見て、人数が増えたフレーム画像、又は動きがあった(人の位置の移動又は人の姿勢の変化があった)フレーム画像を選択するという内容になっている。また、図9に示される例では、Config欄88に記載された画像データ収集要求のプログラムは、検出された人の数が5人以上で、頭は検出され、顔は検出されないという内容になっている。
次に、図10を参照して、上記図6のS14で設定された選択基準に応じた、フレーム画像の選択アルゴリズムの例について、説明する。学習サーバ1のCPU31は、上記の代表カメラが撮影したフレーム画像で検出した人毎に、トラッキングIDを付与する。より詳細に言うと、学習サーバ1のCPU31は、例えば、同じ代表カメラで撮影した各フレーム画像の撮影時刻と、これらのフレーム画像について人検出用学習済DNNモデルが検出した人92の座標位置(又は人の座標位置及びサイズ)とに基づいて、フレームを越えて同じ顧客に同じIDを付与することで、同じ代表カメラで撮影した顧客(人92)の追跡処理(トラッキング処理)を行う。そして、学習サーバ1のCPU31は、上記のトラッキングIDを用いて(トラッキング処理を利用して)、ある代表カメラで撮影したフレーム画像のうち、上記のデータ収集選択UI72で設定した選択基準における「最少人数」の基準(図9及び図10の例では、5人)を満たす最初のフレーム画像(図10の例では、撮影時刻t_0のフレーム画像)を、(収集対処のフレーム画像として)選択する。図10の例では、各代表カメラから送られるフレーム画像のフレームレートが1fpsであると想定して、下記の説明を行う。
学習サーバ1のCPU31は、上記の撮影時刻t_0のフレーム画像の選択処理を完了すると、次の撮影時刻t_1(=t_0+1s)のフレーム画像が、データ収集選択UI72で設定した選択基準を満たしているか否かをチェックする。この場合(その前のフレーム画像が「最少人数」の基準を満たすフレーム画像である場合)のフレーム画像の選択基準は、上記の「最少人数」の基準(5人)に加えて、一つ前のフレーム画像から見て、(1)人数が増加したか、(2)人の位置が移動したか(正確に言うと、20%以上の人が、一つ前のフレーム画像における位置から移動したか)、(3)人の姿勢が変化したか(正確に言うと、20%以上の人が、一つ前のフレーム画像から見て、体/頭/顔の姿勢が変化したか)のいずれかの条件を充たすことである。撮影時刻t_1のフレーム画像は、上記(1)~(3)のいずれの条件も満たさないので、学習サーバ1のCPU31は、この撮影時刻t_1のフレーム画像を選択しない。これに対して、撮影時刻t_1の次の撮影時刻t_2(=t_1+1s)のフレーム画像は、上記(1)の条件を満たさないが、(2)の条件を満たすので、学習サーバ1のCPU31は、この撮影時刻t_2のフレーム画像を選択する。また、撮影時刻t_2の次の撮影時刻t_3(=t_2+1s)のフレーム画像は、上記(1)の条件を満たすので、学習サーバ1のCPU31は、この撮影時刻t_3のフレーム画像を選択する。そして、撮影時刻t_i(=t_(i-1)+1s)のフレーム画像は、上記(1)及び(2)の条件を満たさないが、(3)の条件を満たすので、学習サーバ1のCPU31は、この撮影時刻t_iのフレーム画像を選択する。
上記図10に示すフレーム画像の選択処理をまとめると、その前のフレーム画像が「最少人数」の基準を満たすフレーム画像であったときには、一つ前のフレーム画像から見て変化がない(上記(1)~(3)のいずれの条件も満たさない)フレーム画像については選択せず、一つ前のフレーム画像から見て変化がある(上記(1)~(3)のうちのいずれかの条件を満たす)フレーム画像のみを選択することにより、代表カメラから、多様性のある、人が映ったフレーム画像を効率的に収集することを実現している。
次に、図9に示すデータ収集選択UI72の詳細について、説明する。このデータ収集選択UI72は、学習サーバ1側においてシステム管理者が、上記の代表カメラからのフレーム画像の選択と収集のサブシステム(ソフトウェア・モジュール群)の設計時に用いるユーザインタフェース(UI)用の画面である。上記のデータ収集選択UI72は、AIツールボックス欄73と、システムツールボックス欄74と、システム編集欄75と、結果欄76とを有している。また、上記のシステム編集欄75は、上部の収集エリア75aと、下部の評価エリア75bとに分けられている。システム管理者は、収集エリア75aに、フレーム画像の選択と収集に関連する機能ブロックを配置し、評価エリア75bに、収集したフレーム画像の評価に関連する機能ブロックを配置すると共に、上記のConfig欄87とConfig欄88への選択基準の設定操作を行うことにより、上記の代表カメラからのフレーム画像の選択と収集のサブシステムの設計を行う。
データ収集選択UI72におけるシステム編集欄75では、システム管理者がシステムツールボックス欄74から選択することができる機能ブロックのうち、初期化ブロック78、選択基準定義ブロック79、フィルタ設定80、画像データ収集要求ブロック81、収集要求送信ブロック82、応答/データ受信ブロック83、評価ブロック84、処理結果ブロック85、及びビジュアライザ86が用いられている。
上記の機能ブロックのうち、収集エリア75aに配置された78~82の機能ブロックと、評価エリア75bに配置された応答/データ受信ブロック83は、上記図6のS14のシステム管理者によるフレーム画像選択基準の設定操作と、S15の各代表カメラからのフレーム画像収集処理に用いられる。また、評価エリア75bに配置された評価ブロック84は、応答/データ受信ブロック83により各代表カメラから受信したフレーム画像の評価に必要な推論処理を行う。このデータ収集選択UI72では(すなわち、必要な最小限度の数のフレーム画像を収集するステージでは)、評価ブロック84が行う推論処理は、各フレーム画像における人の検出処理と、ターゲットとなる所定の推論処理用DNNモデルが行う推論処理と同じ種類の推論処理(エッジ側デバイスの推論処理用学習済DNNモデルが行う推論処理と同じ種類の推論処理)である。ただし、評価ブロック84が行う推論処理では、エッジ側デバイスの推論処理用学習済DNNモデルよりも重くて、精度の高い推論処理用学習済DNNモデルが用いられる。また、この評価ブロック84は、各代表カメラから収集したフレーム画像の評価基準の設定に用いられる。例えば、システム管理者が操作部35で評価ブロック84をクリックすることにより、Config欄89に示されるフレーム画像の評価基準の設定入力を行うことができる。Config欄89では、(評価の)基準と、その範囲(正常値とみなされる最小値と最大値)の設定入力を行うことができる。
また、処理結果ブロック85は、上記の評価ブロック84で行った評価のための推論処理の結果を、S51の評価値の判定ブロックと、結果欄76の右側の評価表91に出力する。
図9のS51の判定ブロックでは、学習サーバ1のCPU31が、応答/データ受信ブロック83により各代表カメラから受信したフレーム画像に対する評価値が、KPI(目標)に達したか否かを判定する。具体的には、このデータ収集選択UI72で設計されたシステムでは、学習用データセットに必要な最小限度の数の、人が映ったフレーム画像を集めることが目的なので、S51におけるKPIは、以下の3つになる。
一つ目のKPI(目標)は、所定の数以上の(必要な最小限度の数の)フレーム画像を集めることである。例えば、各代表カメラから1000枚のフレーム画像を集めることである。また、二つ目のKPI(目標)は、各フレーム画像が人を含んでいることである。例えば、処理結果ブロック85が、応答/データ受信ブロック83により各代表カメラから受信したフレーム画像の全てに対して、人の検出処理を行って、その結果、全てのフレーム画像に人が検出されることである。三つ目のKPI(目標)は、応答/データ受信ブロック83により各代表カメラから受信したフレーム画像に対して、評価ブロック84がエッジ側デバイスの推論処理用学習済DNNモデルと同じ種類の推論処理を行った結果、上記の各代表カメラから受信した全てのフレーム画像が、いずれかのクラスに含まれる内容を持つことである。具体的に言うと、例えば、エッジ側デバイスの推論処理用学習済DNNモデル(ターゲットとなる所定の推論処理用DNNモデル)が、頭/顔検出用の学習済DNNモデルであった場合に、各代表カメラから受信した全てのフレーム画像に対して、評価ブロック84が頭/顔検出処理を行った結果、上記の各代表カメラから受信した全てのフレーム画像において、頭/顔検出用の学習済DNNモデルにより付与可能ないずれかのクラスに含まれるもの(すなわち、「頭」又は「顔」)が、一つ以上検出されることが、三つ目のKPIである。この三つ目のKPIを設ける目的は、学習用データセット内のフレーム画像に含まれる物体(正確に言うと、人)のクラスのアンバランスさを削減するためである。このようなクラスのアンバランスさは、少数派のクラスについての推論精度を低下させてしまう。
上記S51の判定において、学習サーバ1のCPU31が、応答/データ受信ブロック83により各代表カメラから受信したフレーム画像に対する評価値が、KPI(目標)に達していないと判定した場合(上記の3つのKPIのうち、達成されていないKPIがあると判定した場合)には(S51でNO)、システム管理者は、必要な場合は、操作部35を用いて、Config欄87とConfig欄88における、フレーム画像の選択基準の追加・変更を行う。そして、システム管理者は、操作部35により、学習サーバ1のCPU31に対して、上記評価値がKPI(目標)に達するまで(上記の3つのKPIの全てが達成されるまで)、選択基準定義ブロック79、画像データ収集要求ブロック81、収集要求送信ブロック82、応答/データ受信ブロック83、評価ブロック84、及び処理結果ブロック85の処理を繰り返すように指示する。
上記データ収集選択UI72における結果欄76の右側には、Config欄89に入力されたフレーム画像の評価基準に対して、各代表カメラから受信したフレーム画像に対する評価結果が、どうであったかを示す評価表91が表示される。評価表91に表示される評価結果は、各代表カメラから受信したフレーム画像の数(”nbr of frames”)以外は、評価ブロック84により実行された推論処理の結果から得られた評価結果である。
上記データ収集選択UI72における結果欄76の左側には、ビジュアライザ86により得られた複数のサンプル画像90が表示される。これらのサンプル画像90は、各代表カメラから受信したフレーム画像からサンプリングされたフレーム画像であり、これらのサンプル画像90には、評価ブロック84により実行された推論処理の結果(例えば、人や頭のバウンディングボックス)が、処理結果の視覚化のために、オーバーラップされる。すなわち、ビジュアライザ86は、正解ラベル付きのフレーム画像90をサンプル表示するための視覚化ツールであり、特に、各代表カメラから受信したフレーム画像に対する評価値が、KPI(目標)に達しない場合等に、システム管理者が、今何が起こっているのかを確認するために用いられるツールである。
上記図9のS51の判定において、代表カメラから受信したフレーム画像に対する評価値が、KPI(目標)に達した場合、すなわち、図6のフローチャートのS16において、必要な最小限度の数のフレーム画像の収集が完了した場合には(S16でYES)、学習サーバ1のCPU31は、各代表カメラから収集済のフレーム画像の各々に対して、評価用の擬似ラベリング処理(請求項における「評価用の推論処理」)を行う(S17)。そして、これらのフレーム画像に対する擬似ラベリング処理の結果に基づいて、上記の各代表カメラより収集したフレーム画像から構成されるデータセットの品質の評価を行う(S18)。より具体的に言うと、各代表カメラより収集したフレーム画像に対する擬似ラベリング処理の結果に基づいて、上記の各代表カメラより収集したフレーム画像から構成されるデータセットが、ターゲットとなる所定の推論処理用DNNモデルのファインチューニング用の学習用データセットに適しているか否かを評価する。
上記の擬似ラベリング処理の結果に基づく、データセットの品質の評価は、以下のようなものである。すなわち、データセットに含まれるフレーム画像に対する擬似ラベリング処理の結果は、このデータセットが、何らかのバイアスを持つか否かを教示してくれる。例えば、ターゲットとなる所定の推論処理用DNNモデルが、顔の検出用のDNNモデルや、顔の検出用のDNNモデルで検出された顔の画像に対する推論処理用のDNNモデル(例えば、性別及び年齢の推定処理、顔ベクトル抽出処理、人の同定処理等の推論処理用のDNNモデル)である場合に、データセットに含まれるフレーム画像のうち、80%以上が、映った顔のサイズが所定のサイズより小さいフレーム画像である場合には、このデータセットは、フレーム画像に映った顔のサイズが小さいというバイアスを持つので、ターゲットとなる推論処理用DNNモデルのファインチューニング用の学習用データセットに適していない。上記のようなデータセットの質の評価を行うために、学習サーバ1のCPU31は、各代表カメラより収集したフレーム画像の各々に対して、擬似ラベリング処理として、顔検出用の学習済DNNモデルによる顔検出処理を行って、顔のバウンディングボックスのサイズを得る。そして、各フレーム画像に対する顔検出処理(擬似ラベリング処理)により得た顔のバウンディングボックスのサイズが、図11のConfig欄111に示される顔のサイズ(face size)の正常値の範囲(最小値~最大値の範囲)に入っているか否かを判定する。この判定の結果、データセットに含まれるフレーム画像のうち、顔のサイズが正常値の範囲に入っているフレーム画像が多ければ、図11のS53の判定における(データセットの品質の)「総合評価値」は、高くなり、逆に、顔のサイズが正常値の範囲に入っているフレーム画像が少なければ、上記の「総合評価値」は、低くなる。
また、ターゲットとなる所定の推論処理用DNNモデルの現行バージョンの学習済DNNモデルを用いて、データセットに含まれるフレーム画像に対する擬似ラベリング処理を行って、この現行バージョンの学習済DNNモデルによる擬似ラベリング処理の結果と、この現行バージョンの学習済DNNモデルよりも重くて、精度の高い推論処理用学習済DNNモデルによる推論処理の結果とを突き合わせて、下記のFalse Positive(偽陽性)と判定される確率が高ければ、このデータセットは、False Positiveと判定される可能性が高いフレーム画像を多く含むというバイアスを持つので、ターゲットとなる推論処理用DNNモデルのファインチューニング用の学習用データセットに適していない。なお、現行バージョンの学習済DNNモデルによる擬似ラベリング処理(推論処理)の結果が、正(Positive)であったにも拘らず、上記の精度の高い推論処理用学習済DNNモデルによる推論処理の結果が、負(Negative)であった場合に、上記のFalse Positive(偽陽性)という判定が行われる。例えば、ターゲットとなる推論処理用DNNモデルが、顔の検出用のDNNモデルである場合に、あるフレーム画像について、現行バージョンの顔検出用の学習済DNNモデルによる擬似ラベリング処理(推論処理)の結果、顔の正解ラベルが付されたが、この現行バージョンの顔検出用学習済DNNモデルよりも重くて、精度の高い顔検出用学習済DNNモデルによる推論処理の結果、(上記のフレーム画像に)顔が検出されなければ、False Positiveという判定が行われる。データセットに含まれる各フレーム画像について、上記の判定を行って、この結果、False Positive(偽陽性)と判定される確率が高ければ、図11のS53の判定における(データセットの質の)「総合評価値」は、低くなり、逆に、False Positiveと判定される確率が低ければ、上記の「総合評価値」は、高くなる。
さらにまた、ターゲットとなる所定の推論処理用DNNモデルが、人の性別推定用のDNNモデルである場合に、データセットに含まれるフレーム画像のうち、80%以上が、女性だけが映ったフレーム画像である場合には、このデータセットは、フレーム画像に映った人に女性が多いというバイアスを持つので、ターゲットとなる人の性別推定用のDNNモデルのファインチューニング用の学習用データセットに適していない。上記のようなデータセットの質の評価を行うために、学習サーバ1のCPU31は、各代表カメラより収集したフレーム画像の各々に対して、擬似ラベリング処理として、人の性別推定用の学習済DNNモデルによる性別推定処理を行って、各フレーム画像に、「男性」又は「女性」の正解ラベルを付与する。そして、これらの正解ラベル全体に占める「男性」の比率、又は「女性」の比率が、正常値の範囲に入っているか否かを判定する。この判定の結果、「男性」の比率又は「女性」の比率が、正常値の範囲に入っていれば、図11のS53の判定における(データセットの質の)「総合評価値」は、高くなり、逆に、上記の比率が、正常値の範囲に入っていなければ、上記の「総合評価値」は、低くなる。なお、上記の擬似ラベリング処理に用いられる性別推定用の学習済DNNモデルは、エッジ側のデバイスで用いられる性別推定用の学習済DNNモデルよりも重くて、精度の高い推論処理用学習済DNNモデルであることが望ましい。
上記の擬似ラベリング処理の結果に基づく、データセットの品質の評価のうち、最も簡単なものには、以下の例がある。ターゲットとなる所定の推論処理用DNNモデルが、人、顔又は頭の検出用のDNNモデルや、人又は顔についての物体認識用のDNNモデルである場合には、図11のConfig欄111に示すように、フレーム画像に映っている人の数(”nbr of p”)は、ある程度の範囲内(例えば、2人から10人)に収まっていることが好ましい。このような場合に、学習サーバ1のCPU31は、各代表カメラより収集したフレーム画像の各々に対して、擬似ラベリング処理として、人検出用の学習済DNNモデルによる人検出処理を行って、各フレーム画像に映っている人の数を求める。そして、データセットに含まれるフレーム画像のうち、フレーム画像に映っている人の数が、図11のConfig欄111に示される人数の範囲内に入っているフレーム画像の比率を求める。この結果、データセットに含まれるフレーム画像のうち、フレーム画像に映っている人の数が、図11のConfig欄111に示される人数の範囲内に入っているフレーム画像の比率が高ければ、図11のS53の判定における(データセットの質の)「総合評価値」は、高くなり、逆に、上記の人数の範囲内に入っているフレーム画像の比率が低ければ、上記の「総合評価値」は、低くなる。
上記のように、データセットに含まれるフレーム画像に対する擬似ラベリング処理の結果は、このデータセットが、何らかのバイアスを持つか否かを教示してくれるので、上記のように、データセットに含まれるフレーム画像に対して、人検出用、顔検出用、頭検出用、姿勢推定用等の何らかの疑似ラベリングモデルを用いて、正解ラベルを付与することにより、現在のデータセットが、図11のConfig欄111に示される各評価基準の正常値の範囲(最小値~最大値の範囲)内に入っているか否かを判定して、これらの判定結果から、(データセットの品質の)「総合評価値」を求めることができる。
上記S18におけるデータセットの品質の評価の結果、上記の(データセットの品質の)「総合評価値」が、KPI(目標)に達していないと判定された場合(S19でNO)、システム管理者は、必要な場合は、操作部35を用いて、図11のConfig欄109とConfig欄110における、フレーム画像の選択基準の追加・変更を行った上で、操作部35により、学習サーバ1のCPU31に対して、上記のデータセットの品質の評価結果に応じて、データセットの改善(フレーム画像の補充・削除)を行うように指示する。これにより、学習サーバ1のCPU31は、上記総合評価値がKPI(目標)に達するまで、上記S17乃至S20の処理を繰り返して、各代表カメラからの人が映ったフレーム画像の補充や、余分なフレーム画像の削除(S20)を行い、データセットの品質を改善する。例えば、各代表カメラから受信したフレーム画像の数(”nbr of frames”)が、所定の枚数に達しない場合には、学習サーバ1のCPU31は、各代表カメラから人が映ったフレーム画像を収集して、これらのフレーム画像をデータセットに補充する。また、S17の擬似ラベリング処理の結果、データセット内の各フレーム画像に付与されたラベル(クラス)にバイアスがある(クラスの不均衡がある)場合には、学習サーバ1のCPU31は、多数派のクラスに属するフレーム画像の一部を、データセットから除去(削除)することにより、データセット(のフレーム画像)における、クラスの均衡(バランス化)を図る。
次に、図11に示すデータ品質評価UI93の詳細について、説明する。このデータ品質評価UI93は、学習サーバ1側においてシステム管理者が、各代表カメラより収集したフレーム画像から構成されるデータセットの品質の評価と、このデータセットへのフレーム画像データの補充(追加)を行うためのサブシステムの設計時に用いるユーザインタフェース(UI)用の画面である。このデータ品質評価UI93は、AIツールボックス欄94と、システムツールボックス欄96と、システム編集欄95と、結果欄97とを有している。また、上記のシステム編集欄95は、上部の収集エリア95aと、下部の疑似ラベリング評価エリア95bとに分けられている。システム管理者は、収集エリア95aに、フレーム画像の選択と収集に関連する機能ブロックを配置し、疑似ラベリング評価エリア95bに、収集したフレーム画像から構成されるデータセットの品質の(擬似ラベリングを介した)評価に関連する機能ブロックを配置すると共に、上記のConfig欄110とConfig欄111への選択基準の追加・変更の設定操作を行うことにより、上記のデータセットの品質の評価と、データセットへのフレーム画像データの補充を行うためのサブシステムの設計を行う。
データ品質評価UI93におけるシステム編集欄95では、システム管理者がシステムツールボックス欄96から選択することができる機能ブロックのうち、初期化ブロック100、選択基準定義ブロック101、フィルタ設定102、画像データ収集要求ブロック103、収集要求送信ブロック104、補充データ受信ブロック105、疑似ラベリングブロック106、処理結果ブロック107、及びビジュアライザ108が用いられている。
上記の機能ブロックのうち、収集エリア95aに配置された100~104の機能ブロックと、疑似ラベリング評価エリア95bに配置された補充データ受信ブロック105は、上記図6のS20の説明で述べた、システム管理者によるフレーム画像選択基準の追加・変更操作と、各代表カメラからのフレーム画像収集(補充)処理に用いられる。また、疑似ラベリング評価エリア95bに配置された疑似ラベリングブロック106は、図5における評価用推論部46に相当し、各代表カメラから受信したフレーム画像の各々に対して、評価用の擬似ラベリング処理(請求項における「評価用の推論処理」)を行う(すなわち、図6中のS17の処理を行う)。また、この疑似ラベリングブロック106は、各代表カメラから収集したフレーム画像の評価基準の設定に用いられる。例えば、システム管理者が操作部35で疑似ラベリングブロック106をクリックすることにより、Config欄111に示されるフレーム画像(データセット)の品質の評価基準の設定入力を行うことができる。Config欄111では、フレーム画像(データセット)の品質の各評価基準と、その正常範囲(正常値とみなされる最小値と最大値)の設定入力を行うことができる。
また、処理結果ブロック107は、上記の疑似ラベリングブロック106で行った評価用の擬似ラベリング処理の結果を出力する。この評価用の擬似ラベリング処理の結果は、S53の総合評価値の判定ブロックにおける判定処理と、結果欄97の右側の評価表113における各基準に対応する値の出力に用いられる。
図11のS53の判定ブロックでは、学習サーバ1のCPU31が、擬似ラベリング処理を介した、データセットの品質の総合評価値が、KPI(目標)に達したか否かを判定する。
上記S53の判定において、学習サーバ1のCPU31が、データセットの品質の総合評価値が、KPI(目標)に達していないと判定した場合には(S53でNO)、システム管理者は、必要な場合は、操作部35を用いて、Config欄109とConfig欄110における、フレーム画像の選択基準の追加・変更を行う。そして、システム管理者は、上記のデータセットの品質の評価の結果、各代表カメラから受信したフレーム画像の数(”nbr of frames”)が、所定の枚数に達しない場合には、操作部35により、学習サーバ1のCPU31に対して、上記総合評価値がKPI(目標)に達するまで、画像データ収集要求ブロック103、収集要求送信ブロック104、補充データ受信ブロック105、疑似ラベリングブロック106、処理結果ブロック107、及びS53の総合評価値の判定ブロックの処理を繰り返すように指示する。ただし、擬似ラベリング処理の結果、データセット内の各フレーム画像に付与されたラベル(クラス)にバイアスがある(クラスの不均衡がある)場合には、学習サーバ1のCPU31は、多数派のクラスに属するフレーム画像の一部を、データセットから除去(削除)することにより、データセット(のフレーム画像)における、クラスの均衡(バランス化)を図る。この場合には、学習サーバ1のCPU31は、上記の多数派のクラスに属するフレーム画像の一部を削除する処理を行った後、再度、上記S53の判定処理を繰り返す。
なお、図6で説明した処理の流れから分かるように、データ収集選択UI72で定義した必要な最小限度の数のフレーム画像の収集が完了した直後に行われるデータ品質評価UI93側の処理は、疑似ラベリングブロック106及び処理結果ブロック107の処理と、判定ブロックS53による総合評価値の判定処理である。そして、第1回目のS53の判定において、学習サーバ1のCPU31が、データセットの品質の総合評価値が、KPIに達していると判定した場合には、上記101~105のブロックの処理は、一度も行われない。
上記データ品質評価UI93における結果欄97の右側には、Config欄111に入力されたデータセットの評価基準に対して、各代表カメラから受信したフレーム画像から構成されるデータセットに対する評価結果が、どうであったかを示す評価表113が表示される。評価表113に表示される評価結果は、疑似ラベリングブロック106により実行された評価用の擬似ラベリング処理の結果から得られた評価結果である。
上記データ品質評価UI93における結果欄97の左側には、ビジュアライザ108により得られた複数のサンプル画像112が表示される。これらのサンプル画像112は、各代表カメラから受信したフレーム画像からサンプリングされたフレーム画像であり、これらのサンプル画像112には、疑似ラベリングブロック106により実行された評価用の擬似ラベリング処理の結果(例えば、人や頭のバウンディングボックス)が、処理結果の視覚化のために、オーバーラップされる。すなわち、ビジュアライザ108は、疑似ラベリング処理により得られた、正解ラベル付きのフレーム画像112をサンプル表示するための視覚化ツールであり、特に、データセットの品質の総合評価値が、KPI(目標)に達しない場合等に、システム管理者が、今何が起こっているのかを確認するために用いられるツールである。
上記図11のS53の判定(図6のS19の判定に対応)において、データセットの品質の総合評価値が、KPI(目標)に達した場合、すなわち、ターゲットとなる推論処理用DNNモデルのファインチューニング用の学習用データセットに適していると思われるデータセットの生成が完了した場合には、学習サーバ1のCPU31は、このデータセット(代表カメラから収集したフレーム画像から構成されるデータセット)を学習用データセットとして用いて、元の推論処理用の学習済DNNモデルのファインチューニングを行う(図6のS21)。ここで、元の推論処理用の学習済DNNモデルとは、エッジ側デバイスの推論処理用学習済DNNモデル(ターゲットとなる所定の推論処理用DNNモデル)の現行バージョンの学習済DNNモデルであっても良いし、公開されている(一般の人が使用可能な)学習用データセットで機械学習を行った汎用的な学習済DNNモデルであってもよい。
上記S21の学習済DNNモデルのファインチューニングが完了すると、学習サーバ1のCPU31は、上記ファインチューニング後の学習済DNNモデルの評価をする(S22)。具体的には、学習サーバ1のCPU31は、上記データ品質評価UI93に示す手順と同様な手順で別途収集した未知のテスト用データセットに含まれるフレーム画像について、上記ファインチューニング前の学習済DNNモデルと、ファインチューニング後の学習済DNNモデルの両方で推論処理を行って、ファインチューニング前と後の学習済DNNモデルによる推論処理の精度を比較する。その結果、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上している場合(例えば、ファインチューニング後の学習済DNNモデルのF1スコアが、ファインチューニング前の学習済DNNモデルのF1スコアよりも、5%以上向上している場合)には、学習サーバ1のCPU31は、ファインチューニング後の学習済DNNモデルによる処理結果の評価値(F1スコア)が、KPI以上(目標に達している)と判定する。この場合には(S23でNO)、学習サーバ1のCPU31は、ターゲットとなる推論処理用DNNモデルの一般化が完了したと見做して(S25)、上記のファインチューニング後の学習済DNNモデルを、エッジ側デバイスに配布する。
上記のテスト用データセットは、上記データ品質評価UI93に示す手順と同様な手順で収集されたデータセットであり、データ品質評価UI93のS53の判定において、データセットの品質の総合評価値が、KPI(目標)に達するまで、画像データ収集要求ブロック103、収集要求送信ブロック104、補充データ受信ブロック105、疑似ラベリングブロック106、処理結果ブロック107、及びS53の総合評価値の判定ブロックの処理を繰り返すことにより、得られたデータセットである。なお、テスト用データセットの生成時には、図11のConfig欄111に示されるデータセットの評価基準の項目自体は、上記の学習用データセットの生成時と同じであるが、評価基準の各項目の値は異なる。例えば、データセットの評価基準のうち、フレーム画像の数(”nbr of frames”)は、学習用データセットの生成時には、各カメラにつき、1000枚以上であるが、テスト用データセットの生成時には、各カメラにつき、100枚以上で充分である。
また、上記のテスト用データセットを構成するフレーム画像は、学習用データセットの生成時のように、各代表カメラから取得したフレーム画像である必要はなく、各カメラグループにおける代表カメラ以外のカメラから取得したフレーム画像であってもよい。上記の代表カメラ以外のカメラから取得したフレーム画像から構成されるデータセットを、テスト用データセットとして用いることにより、ファインチューニング後の学習済DNNモデルが、空間的に一般化されているか否かをチェックすることができる。ここで、学習済DNNモデルの「一般化」とは、学習済DNNモデルが、未知の入力データ(この場合は、未知のフレーム画像)に対して、正しい結果を出力することができることを意味する。また、この場合の「学習済DNNモデルが、空間的に一般化されている」とは、学習済DNNモデルに、学習用データセットに含まれない、代表カメラとは異なるカメラから取得したフレーム画像が入力された場合であっても、学習済DNNモデルが、代表カメラから取得したフレーム画像が入力された場合と同様に、正しい結果を出力することができることを意味する。
また、上記のテスト用データセットを構成するフレーム画像は、上記の学習用データセット用のフレーム画像取得時とは異なる日時に上記の各代表カメラで撮影されたフレーム画像であってもよい。上記の学習用データセット用のフレーム画像撮影時とは異なる日時に代表カメラで撮影されたフレーム画像から構成されるデータセットを、テスト用データセットとして用いることにより、ファインチューニング後の学習済DNNモデルが、時間的に一般化されているか否かをチェックすることができる。この場合の「学習済DNNモデルが、時間的に一般化されている」とは、学習済DNNモデルに、学習用データセット用のフレーム画像撮影時とは異なる日時に撮影されたフレーム画像が入力された場合であっても、学習済DNNモデルが、学習用データセット用のフレーム画像が入力された場合と同様に、正しい結果を出力することができることを意味する。
これに対して、ファインチューニング後の学習済DNNモデルによる推論処理の精度(F1スコア)が、ファインチューニング前の学習済DNNモデルによる推論処理の精度(F1スコア)よりも、所定の値以上向上していない場合には、学習サーバ1のCPU31は、ファインチューニング後の学習済DNNモデルによる処理結果の評価値が、KPI(目標)に達していないと判定する(S23でYES)。このように、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上していない場合(特に、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、低下している場合)は、ファインチューニング後の学習済DNNモデルが、学習用データセットのバイアスに過適合した状態(過学習の状態)であって、一般化(汎化)されていないことを意味する。要するに、ファインチューニング後の学習済DNNモデルが、学習用データセットのデータについては学習しているが、未知のテスト用データセットに含まれるデータについては適合できていないことを意味する。
上記S23でYESの場合(ファインチューニング後の学習済DNNモデルによる処理結果の評価値(F1スコア)が、KPI(目標)に達していない場合)には、システム管理者は、必要な場合は、操作部35を用いて、図12のConfig欄137とConfig欄138における、フレーム画像の選択基準の追加・変更を行った上で、操作部35により、学習サーバ1のCPU31に対して、各代表カメラから人が映ったフレーム画像の収集(補充)を行うように指示する。これにより、上記評価値(F1スコア)がKPI(目標)に達するまで、上記S21乃至S24の処理が繰り返されて、各代表カメラからの人が映ったフレーム画像の補充(S24)が繰り返される。この理由は、ファインチューニング後の学習済DNNモデルによる処理結果の評価値(精度)がKPI(目標)に達しないという事は、このファインチューニングに用いた学習用データセットのサイズが充分に大きくないということであり、学習用データセットに、さらに多くのフレーム画像を補充する必要があるからである。なお、上記S24に示すフレーム画像の補充処理が終了すると、学習サーバ1のCPU31は、再度、上記S17の処理に戻って、S24で補充したフレーム画像に対する擬似ラベリング処理(S17)や、擬似ラベリング処理の結果に基づいたデータセットの品質の評価処理(S18)を行う。そして、上記S24に示す学習用データセットへのフレーム画像の補充処理の結果、データセット内の各フレーム画像に付与されたラベル(クラス)にバイアスが生じた(クラスの不均衡が生じた)場合には、学習サーバ1のCPU31は、上記S20の処理で、多数派のクラスに属するフレーム画像の一部を、データセットから除去(削除)することにより、データセット(のフレーム画像)における、クラスの均衡(バランス化)を図る。ただし、余り好ましくはないが、上記S24に示すフレーム画像の補充処理が終了すると、学習サーバ1のCPU31は、S17の処理ではなく、S21の処理に戻ってもよい。
次に、図12に示すデータバイアス評価UI120について、説明する。このデータバイアス評価UI120は、上記S19で品質の総合評価値がKPIに達していると判定されたデータセットのファインチューニングを介した評価と、このデータセットへのフレーム画像データの補充(追加)を行うためのサブシステムの設計時に用いるユーザインタフェース(UI)用の画面である。図11に示すデータ品質評価UI93を用いて設計したサブシステムを用いて、ターゲットとなる所定の推論処理用DNNモデルのファインチューニング用の学習用データセットに適していると思われるデータセットを生成することができるが、このデータセットを用いて、元の推論処理用の学習済DNNモデルのファインチューニングを行ったところ、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の(元の)学習済DNNモデルによる推論処理の精度よりも下がってしまったり、殆ど精度が向上しなかったということが、実際には起こり得る。図12に示すデータバイアス評価UI120は、このような場合でも、このデータセットに、必要なフレーム画像データを補充して、ターゲットとなる所定の推論処理用DNNモデルのファインチューニング用の学習用データセットの生成を完了させるためのサブシステムの設計時に用いるユーザインタフェース用の画面である。
このデータバイアス評価UI120は、AIツールボックス欄121と、システムツールボックス欄122と、システム編集欄123と、結果欄124とを有している。また、上記のシステム編集欄123は、上部の収集エリア123aと、下部のファインチューニング評価エリア123bとに分けられている。システム管理者は、収集エリア123aに、フレーム画像の選択と収集に関連する機能ブロックを配置し、ファインチューニング評価エリア123bに、収集したフレーム画像から構成されるデータセットの、ファインチューニングを介した評価に関連する機能ブロックを配置すると共に、上記のConfig欄137とConfig欄138への選択基準の追加・変更の設定操作を行うことにより、上記のファインチューニングを介したデータセットの評価と、データセットへのフレーム画像データ補充を行うためのサブシステムの設計を行う。
データバイアス評価UI120におけるシステム編集欄123では、システム管理者がシステムツールボックス欄122から選択することができる機能ブロックのうち、初期化ブロック128、選択基準定義ブロック129、フィルタ設定130、画像データ収集要求ブロック131、収集要求送信ブロック132、補充データ受信ブロック133、ファインチューニングブロック134、処理結果ブロック135、及びビジュアライザ136が用いられている。
上記の機能ブロックのうち、収集エリア123aに配置された128~132の機能ブロックと、ファインチューニング評価エリア123bに配置された補充データ受信ブロック133は、上記図6のS24の説明で述べた、システム管理者によるフレーム画像選択基準の追加・変更操作と、各代表カメラからのフレーム画像収集(補充)処理に用いられる。また、ファインチューニング評価エリア123bに配置されたファインチューニングブロック134は、各代表カメラから収集したフレーム画像から構成されるデータセットを学習用データセットとして用いて、元の推論処理用の学習済DNNモデルのファインチューニング処理(すなわち、図6中のS21の処理)を行う。このファインチューニングブロック134は、図5における再学習部49に相当する。
また、処理結果ブロック135は、上記のファインチューニングブロック134で行ったファインチューニング後の学習済DNNモデルによる推論処理の結果を出力する。このファインチューニング後の学習済DNNモデルによる推論処理の結果は、S71のF1スコアの判定ブロックにおける判定処理と、結果欄124の右側の表141におけるF1スコアの出力に用いられる。
図12のS71の判定ブロックでは、学習サーバ1のCPU31が、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、KPI(目標)に達しているか否か(具体的には、ファインチューニング後の学習済DNNモデルによる推論処理の精度(F1スコア)が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上しているか否か)を判定する。
上記S71の判定において、学習サーバ1のCPU31が、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、KPI(目標)に達していないと判定した場合には(S71でNO)、システム管理者は、必要な場合は、操作部35を用いて、Config欄137とConfig欄138における、フレーム画像の選択基準の追加・変更を行う。そして、システム管理者は、操作部35により、学習サーバ1のCPU31に対して、上記ファインチューニング後の学習済DNNモデルによる推論処理の精度がKPI(目標)に達するまで、画像データ収集要求ブロック131、収集要求送信ブロック132、補充データ受信ブロック133、ファインチューニングブロック134、処理結果ブロック135、及びS71のF1スコア(精度)の判定ブロックの処理を繰り返すように指示する。
なお、図6で説明した処理の流れから分かるように、データ品質評価UI93で設計(定義)したサブシステムで、ターゲットとなる所定の推論処理用DNNモデルのファインチューニング用の学習用データセットに適していると思われるデータセットの生成が完了した(データセットの品質の総合評価値が、KPIに達した)直後に行われるデータバイアス評価UI120側の処理は、ファインチューニングブロック134及び処理結果ブロック135の処理と、判定ブロックS71によるF1スコア(精度)の判定処理である。そして、第1回目のS71の判定において、学習サーバ1のCPU31が、ファインチューニング後の学習済DNNモデルによる推論処理の精度がKPI(目標)に達していると判定した場合には、上記129~133のブロックの処理は、一度も行われない。
上記データバイアス評価UI120における結果欄124の右側には、ファインチューニングブロック134で行ったファインチューニング後の学習済DNNモデルによる推論処理の結果(F1スコアを含む)が、どうであったかを示す表141が表示される。
上記データバイアス評価UI120における結果欄124の左側には、ビジュアライザ136により得られた複数のサンプル画像140が表示される。これらのサンプル画像140は、ファインチューニング後の学習済DNNモデルによる推論処理のテストに用いられる、上記の未知のテスト用データセットに含まれるフレーム画像をサンプリングして得たフレーム画像であり、これらのサンプル画像140には、ファインチューニング後の学習済DNNモデルによる推論処理の結果(例えば、人や頭のバウンディングボックス)が、処理結果の視覚化のために、オーバーラップされる。すなわち、ビジュアライザ134は、ファインチューニング後の学習済DNNモデルによる推論処理により得られた、正解ラベル付きのフレーム画像140をサンプル表示するための視覚化ツールであり、特に、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、KPI(目標)に達しない場合等に、システム管理者が、今何が起こっているのかを確認するために用いられるツールである。
ファインチューニング後の学習済DNNモデルによる推論処理の精度(F1スコア)が、KPI(目標)に達しているか否かの判定は、例えば、ファインチューニング後の学習済DNNモデルによる推論処理の結果を、この推論処理用DNNモデルよりも重くて精度の高い、同種の推論処理用学習済DNNモデルによる推論処理の結果と比較することにより、行うことができる。上記のように、ファインチューニング後の学習済DNNモデルによる推論処理の精度(F1スコア)が、KPI(目標)に達しているか否かの判定は、学習サーバ1のCPU31が自動的に行うのが、基本であるが、システム管理者が、上記のビジュアライザ134を用いて、複数のサンプル画像140を、次々に表示させて、目視で判定してもよい。
上記図12に示すデータバイアス評価UI120を用いて設計したサブシステムは、データソース(エッジ側デバイス)から収集したフレーム画像から構成される学習用データセットのデータが、ターゲットとなる推論処理用DNNモデルの一般化をサポートするか否かを判定する。すなわち、現時点で収集済のフレーム画像から構成される学習用データセットを用いてファインチューニングした推論処理用の学習済DNNモデルが、時間的、空間的に一般化されたものになっているか否かを判定する。例えば、店舗A(のエッジ側デバイス)から収集されたデータ(学習用データセット)に基づいて学習(訓練)された推論処理用の学習済DNNモデルは、例え、店舗Aと店舗Bが同じグループ(同じフランチャイズチェーン等)に属する店舗であっても、店舗Bにまで一般化されたものではない(店舗Aのフレーム画像が入力された場合と同様に、店舗Bのフレーム画像が入力された場合にも、正しい結果を出力することができるものではない)かもしれない。或いは、夏に収集されたデータ(学習用データセット)に基づいて学習(訓練)された推論処理用の学習済DNNモデルは、雪の影響による顧客環境の変化のために、雪の多い北海道の冬には、正確さが低下するかもしれない。また、店舗を訪問する顧客の属性は、かなり変化し、例えば、学習用データセットのデータの収集時と比べて、人口における年齢構成は変化し得る。我々は、「空間/時間(の属性)を隔てたバイアス」の概念を導入する。この空間/時間を隔てたバイアスは、上記の未知のテスト用データセットに含まれるフレーム画像に対して、現在の学習用データセットで訓練した推論処理用DNNモデルで推論処理した結果の精度に基づいて、自動的に見つけられる。
次に、図13を参照して、このデータセット生成システム10における(フレーム画像)データの収集の流れについて、説明する。図13におけるデータソース・コレクタモジュール150及びデータ・コレクタモジュール151は、図4に示すデータセット生成プログラム37に含まれるプログラムである。上記図6のS12で説明したカメラのクラスタリング(グループ化)が完了すると(図13のS61でYES)、学習サーバ1のデータソース・コレクタモジュール150が、グループ分けした各グループにおける代表カメラを選択して、これらの代表カメラのリスト(デバイスリスト)を、データ・コレクタモジュール151側に送信する。この後、学習サーバ1側のシステム管理者が、操作部35と、上記図9のデータ収集選択UI72を用いて、上記の代表カメラからのフレーム画像の選択と収集のサブシステム(以下、「選択収集サブシステム」と略す)の定義(設計)を行うか、既に定義済の既存の選択収集サブシステムをロードするように、操作部35を用いて、学習サーバ1のCPU31に指示する(S62)。そして、システム管理者は、操作部35を用いて、上記の選択収集サブシステムを起動する(S63)。
上記S63における選択収集サブシステムの起動が完了すると、この(学習サーバ1側の)選択収集サブシステムは、データソース(エッジ側デバイス(固定カメラ3及びサイネージ4))152に、図9の画像データ収集要求ブロック81によるデータ収集要求ファイルの送信を行う。データソース(エッジ側デバイス)152は、学習サーバ1側の選択収集サブシステムから、上記のデータ収集要求ファイルを受信すると、各代表カメラからのデータ(フレーム画像と情報ファイル)を、学習サーバ1側に送信して、学習サーバ1のDB153に格納させる。学習サーバ1(のデータソース・コレクタモジュール150)は、データソース(エッジ側デバイス)152より、各代表カメラからのデータの収集が完了すると(S65でYES)、上記S61のクラスタリング(グループ化)完了時と同様に、グループ分けした各グループにおける代表カメラのリスト(デバイスリスト)を、データ・コレクタモジュール151側に送信する。
データ・コレクタモジュール151は、受信した代表カメラのリスト(デバイスリスト)に基づいて、学習サーバ1のDB153に格納したデータにアクセスして、上記図11の疑似ラベリングブロック106による処理(S66)、処理結果ブロック107による処理(S67)、及びビジュアライザ108による結果の視覚化の処理(S68)(要するに、擬似ラベリングを介したデータセットの品質の評価)を行って、データセットの品質の総合評価値がKPI(目標)に達するか否かを判定する。この判定の結果、データセットの品質の総合評価値がKPI(目標)に達しておらず、かつ、繰り返し回数が所定の限界値に達していない場合には(S69でYES)、学習サーバ1のCPU31は、データソース(エッジ側デバイス)152からの収集データの補充(学習サーバ1のDB153へのデータの追加格納)の処理、又は多数派のクラスに属するフレーム画像の一部をデータセットから除去(削除)する処理を行った上で、S69の判定において、データセットの品質の総合評価値がKPI(目標)に達するか、繰り返し回数が所定の限界値に達するまで、上記の疑似ラベリングブロック106による処理、処理結果ブロック107による処理、及びビジュアライザ108による結果の視覚化の処理(図13のS66~S68の処理)を繰り返す。
そして、S69の判定において、データセットの品質の総合評価値がKPI(目標)に達すると、データ・コレクタモジュール151は、受信した代表カメラのリスト(デバイスリスト)に基づいて、学習サーバ1のDB153に格納したデータにアクセスして、上記図12のファインチューニングブロック134による処理(S66)、処理結果ブロック135による処理(S67)、及びビジュアライザ136による結果の視覚化の処理(S68)(要するに、ファインチューニングを介したデータセットの品質の評価)を行って、評価値(ファインチューニング後の学習済DNNモデルによる推論処理の精度)がKPI(目標)に達するか否かを判定する。この判定の結果、ファインチューニング後の学習済DNNモデルによる推論処理の精度がKPI(目標)に達しておらず、かつ、繰り返し回数が所定の限界値に達していない場合には(S69でYES)、学習サーバ1のCPU31は、データソース(エッジ側デバイス)152からの収集データの補充(学習サーバ1のDB153へのデータの追加格納)を行った上で、S69の判定において、ファインチューニング後の学習済DNNモデルによる推論処理の精度がKPI(目標)に達するか、繰り返し回数が所定の限界値に達するまで、上記のファインチューニングブロック134による処理、処理結果ブロック135による処理、及びビジュアライザ136による結果の視覚化の処理(図13のS66~S68の処理)を繰り返す。
上記S69の判定において、ファインチューニング後の学習済DNNモデルによる推論処理の精度がKPI(目標)に達すると、本データセット生成システム10による学習用データセットの生成が完了したとみなして、このファインチューニングに使用されたデータセットを、ターゲットとなる所定の推論処理用DNNモデルの最終的な学習用データセットとする。これに対して、S69の判定において、評価値(データセットの品質の総合評価値、又はファインチューニング後の学習済DNNモデルによる推論処理の精度)がKPI(目標)に達する前に、繰り返し回数が所定の限界値に達した場合には、システム管理者は、図8のデータソースクラスタリングUI55、図9のデータ収集選択UI72、図11のデータ品質評価UI93、及び図12のデータバイアス評価UI120を用いた各サブシステムの設計を見直す。
上記図6及び図13のフローから、本データセット生成システム10によれば、できるだけ少ない数のフレーム画像から構成される学習用データセットを用いて、数千、数万の店舗で使用する推論処理用学習済DNNモデルのファインチューニングを行うことができる。この理由は、以下の通りである。
(1)先ず、クラスタリング(カメラのグループ化)を利用して、各カメラグループの代表カメラのみからフレーム画像を収集することにより、各カメラグループから収集するフレーム画像の数を絞る。これにより、例えば、あるカメラグループに属するカメラが多い場合でも、各カメラグループのフレーム画像は、似たようなフレーム画像であることが多いので、各カメラグループの代表カメラ(各代表カメラ)のみからフレーム画像を集めて、学習用データセットを生成すれば、この学習用データセットを用いてファインチューニングした推論処理用学習済DNNモデルは、どのカメラグループのフレーム画像に対しても、同様な精度の推論をすることができる。なお、上記のクラスタリング時に使用するフレーム画像は、各カメラからの1枚のレイアウト・フレーム画像(人が映っていないフレーム画像)で良いので、クラスタリング時に使用するフレーム画像の数は、少なくて済む。
(2)また、データ収集選択UI72で編集したサブシステムを用いて、一つ前のフレーム画像から見て変化がある(人数が増加したか、人の位置が移動したか、人の姿勢が変化したかのいずれかの条件を充たす)フレーム画像のみを選択することにより、収集するフレーム画像の数は少なくても、代表カメラから、多様性のある、人が映ったフレーム画像を効率的に収集することができる。実際問題、録画された撮影画像から切り出したフレーム画像は、反復的(同様なフレーム画像の繰り返し)であり、連続したフレーム画像を収集しても、殆ど役に立たない。データ収集選択UI72で編集したサブシステムにおいて、推論処理用学習済DNNモデルを用いて、一つ前のフレーム画像から見て、人数が増加したか、人の位置が移動したか、又は人の姿勢が変化したかを判定して、これらのいずれかの条件を充たすフレーム画像のみを選択することにより、学習用データセットに含まれるデータ(フレーム画像)の数を少なくしつつ、データの質を向上させて、データにおける多様性を高めることができる。
(3)また、図6及び図13のフローに示すように、必要な最小限度の数のフレーム画像の収集が完了した後は(図6のS16でYES、又は図13のS65でYES)、図6のS19の判定において、データセットの品質の「総合評価値」がKPI(目標)に達し、S23の判定において、ファインチューニング後の学習済DNNモデルによる処理結果の評価値(F1スコア)がKPI(目標)に達するまで、各代表カメラから人が映ったフレーム画像の補充を繰り返す(S20及びS24)(S20では、データセット内の各フレーム画像に付与されたラベル(クラス)にバイアスがある場合には、多数派のクラスに属するフレーム画像の一部を、データセットから除去(削除)する処理も行う)。上記のフレーム画像の補充処理では、各代表カメラからのフレーム画像を、少しずつ学習用データセットに補充するので、学習用データセットに含まれるデータ(フレーム画像)をインクリメンタルに、少しずつ増やすことができる。そして、S19の判定において、データセットの品質の「総合評価値」がKPI(目標)に達した後、S23の判定において、ファインチューニング後の学習済DNNモデルによる処理結果の評価値(F1スコア)がKPI(目標)に達すると、その時点で、各代表カメラからのフレーム画像の収集を止めることができるので、学習用データセットに含まれるフレーム画像の数を、できるだけ少なく抑えることができる。
(4)また、上記のように、図6のS20の処理では、擬似ラベリング処理の結果、データセット内の各フレーム画像に付与されたラベル(クラス)にバイアスがある(クラスの不均衡がある)場合には、学習サーバ1のCPU31は、多数派のクラスに属するフレーム画像の一部を、データセットから削除するようにしたので、学習用データセットから、冗長な学習データ(削除対象のフレーム画像と、これらのフレーム画像の擬似ラベル)を除去することができる。
従って、上記(1)~(4)の工夫が無ければ、例えば、10万枚のフレーム画像を集めなければいけない所を、千枚のフレーム画像を集めれば良いようにすることが可能である。
上記のように、本実施形態のデータセット生成システム10、学習サーバ1、及びデータセット生成プログラム37によれば、各カメラグループにおける少なくとも一つ以上のカメラ(固定カメラ3又は内蔵カメラ5)から、操作部35を用いてユーザが(Config欄87、88、109、110、137、及び138で)設定した選択基準に合致したフレーム画像を収集して、その時点において収集したフレーム画像から構成されるデータセットが、ターゲットとなる推論処理用DNNモデル(エッジ側デバイスの推論処理用学習済DNNモデル)の学習用データセットに適しているか否かを評価することができる。これにより、その時点において収集したフレーム画像から構成されるデータセットの評価値(総合評価値)が、目標値以上になったとき(KPI(目標)に達したとき)に、フレーム画像の収集を終了して、その時点において収集済のフレーム画像から構成されるデータセットを、上記ターゲットとなる推論処理用DNNモデルの学習用データセットにすることができるので、ターゲットとなる推論処理用DNNモデルの学習用データセットに含まれるフレーム画像の数を、できるだけ少なくすることができる。従って、できるだけ少ないフレーム画像を用いて、多数の店舗等の施設のカメラのフレーム画像を対象にした、ターゲットとなる推論処理用DNNモデルの機械学習を行うことができる。従って、ターゲットとなる推論処理用DNNモデルの学習用データセットの生成に要する処理時間や、この学習用データセットを用いた上記推論処理用DNNモデルの機械学習に要する処理時間を短縮することができると共に、カメラ側(エッジデバイス側)から学習サーバ1にカメラのフレーム画像を転送するのに必要なコスト(通信費用や電気代等)や、学習サーバ1がエッジデバイス側から受信したフレーム画像を保存しておくのに必要なコスト(学習サーバ1における記憶領域の確保に必要なコスト)を削減することができる。
また、本実施形態のデータセット生成システム10によれば、グループ分けをした各カメラグループにおける代表カメラを選択して、選択した代表カメラの各々から、ユーザが設定した選択基準に合致したフレーム画像を収集するようにした。これにより、各カメラグループにおける代表カメラのみから、選択基準に合致したフレーム画像を収集することができるので、ターゲットとなる推論処理用DNNモデルの学習用データセットに含まれるフレーム画像の数を、確実に少なくすることができる。
また、本実施形態のデータセット生成システム10によれば、一つ前のフレーム画像から見て、人数の増加、人の位置の移動、又は人の姿勢の変化があったフレーム画像を収集するようにした。このように、一つ前のフレーム画像から見て変化があるフレーム画像のみを選択することにより、収集するフレーム画像の数は少なくても、カメラ(固定カメラ3又は内蔵カメラ5)から、多様性のあるフレーム画像を効率的に収集することができる。
また、本実施形態のデータセット生成システム10によれば、データセットの品質の「総合評価値」が、KPI(目標)に達したときに、この時点で収集済みのフレーム画像から構成されるデータセットを学習用データセットとして用いて、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニングを行って、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上しているか否かを評価するようにした。上記のように、評価用の推論処理(例えば、擬似ラベリング処理)の結果に基づいて、各カメラより収集したフレーム画像から構成されるデータセットが、ターゲットとなる推論処理用DNNモデルのファインチューニング用の学習用データセットに適しているか否かを評価することができるのであるが、上記ファインチューニング用の学習用データセットに適していると評価されたデータセットを学習用データセットとして用いて、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニングを行うと、実際には、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、思ったように向上しないという事が起こり得る。従って、上記のように、品質の「総合評価値」がKPI(目標)に達した(ターゲットとなる推論処理用の学習済DNNモデルのファインチューニング用の学習用データセットに適していると評価された)データセットを学習用データセットとして用いて、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニングを行って、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上しているか否かを確認しないと、品質の「総合評価値」がKPI(目標)に達したデータセットを、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニング用の学習用データセットとして採用して良いか否かの最終的な判断を下すことができない。
また、本実施形態のデータセット生成システム10によれば、各カメラより収集したフレーム画像の各々に対して、擬似ラベリング処理を行って、各カメラより収集したフレーム画像と、上記の擬似ラベリング処理によりフレーム画像に付与された正解ラベルとに基づいて、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニングを行うようにした。上記のように、擬似ラベリング処理を用いて、収集したフレーム画像に正解ラベルを付与するようにしたことにより、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニングを、自動的に行うことができる。
また、本実施形態のデータセット生成システム10によれば、複数のカメラの各々から、人が映っていないフレーム画像(レイアウト・フレーム画像)を収集して、収集したフレーム画像の各々から特徴を抽出し、抽出した特徴に基づいて、上記の収集したフレーム画像をグループ分けする。そして、上記の収集したフレーム画像のグループ分け結果に基づいて、これらのフレーム画像を撮影したカメラのグループ分けを行う。これにより、収集したフレーム画像をグループ分けする際に、フレーム画像に映りこんだ人の影響を除去することができるので、各カメラが撮影した店舗等の施設のフレーム画像の特徴に基づいて、フレーム画像を撮影したカメラのグループ分けを行うことができる。
変形例:
なお、本発明は、上記の各実施形態の構成に限られず、発明の趣旨を変更しない範囲で種々の変形が可能である。次に、本発明の変形例について説明する。
変形例1:
上記の実施形態では、データセットの品質の「総合評価値」がKPIに達したときに(データセットの品質の評価値が目標値以上になったときに)、この時点で収集済みのフレーム画像から構成されるデータセットを学習用データセットとして用いて、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニングを行って、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上しているか否かを評価するようにした。けれども、本発明では、必ずしも、ファインチューニング後の学習済DNNモデルによる推論処理の精度が、ファインチューニング前の学習済DNNモデルによる推論処理の精度よりも、所定の値以上向上しているか否かを評価する必要はなく、データセットの品質の評価値が、目標値以上になったときに、この時点で収集済みのフレーム画像から構成されるデータセットを、ターゲットとなる推論処理用の学習済DNNモデルのファインチューニング用の学習用データセットとして採用しても良い。
変形例2:
上記の実施形態では、各カメラより収集したフレーム画像に対する擬似ラベリング処理の結果に基づいて、上記の各カメラより収集したフレーム画像から構成されるデータセットが、ターゲットとなる所定の推論処理用DNNモデルのファインチューニング用の学習用データセットに適しているか否かを評価するようにした。けれども、本発明は、これに限られず、各カメラより収集したフレーム画像の各々に対して、評価用の推論処理を行って、これらの推論処理の結果に基づいて、各カメラより収集したフレーム画像から構成されるデータセットが、ターゲットとなる推論処理用DNNモデルの学習用データセットに適しているか否かを評価するものであれば良い。
変形例3:
上記の実施形態では、グループ分けをした各(カメラ)グループにおける代表カメラを選択して、選択した代表カメラの各々から、操作部35を用いて設定した選択基準に合致したフレーム画像を収集するようにした。けれども、本発明は、これに限られず、グループ分けをした各(カメラ)グループにおける複数のカメラから、操作部を用いて設定した選択基準に合致したフレーム画像を収集するようにしても良い。
変形例4:
上記の実施形態では、一つ前のフレーム画像から見て、人数の増加、所定の割合以上の人の位置移動、又は所定の割合以上の人の姿勢変化があったフレーム画像を収集するようにしたが、本発明は、これに限られず、例えば、一つ前のフレーム画像から見て、人数の増加又は減少、人の位置の移動、又は人の姿勢の変化があったフレーム画像を収集するようにしても良いし、一つ前のフレーム画像から見て、人数の増加、又は所定の割合以上の人の位置移動があったフレーム画像を収集するようにしても良い。
変形例5:
上記の実施形態では、請求項における「再学習」が、ファインチューニングである場合の例を示したが、本発明における「再学習」は、これに限られず、例えば、転移学習であっても良い。ここで、転移学習とは、元の(既存の)学習済DNNモデルにおける重みを固定したままで、新たに追加した層の重みのみを学習することを意味する。
変形例6:
上記の実施形態では、カメラが接続されたエッジ側のデバイスが、サイネージ4及び分析ボックス2である場合の例を示したが、エッジ側のデバイスは、これに限られず、例えば、いわゆるAIカメラであっても良い。