(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024091182
(43)【公開日】2024-07-04
(54)【発明の名称】アラート生成プログラム、アラート生成方法および情報処理装置
(51)【国際特許分類】
G06Q 20/20 20120101AFI20240627BHJP
【FI】
G06Q20/20 360
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022207690
(22)【出願日】2022-12-23
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】大日方 裕也
(72)【発明者】
【氏名】山本 琢麿
(72)【発明者】
【氏名】内田 大輔
【テーマコード(参考)】
5L020
5L055
【Fターム(参考)】
5L020AA42
5L055AA42
(57)【要約】
【課題】セルフレジにおける購入個数をごまかす不正行為を抑制することを課題とする。
【解決手段】情報処理装置は、会計機に登録する商品を把持する人物の映像を取得し、取得した映像を、機械学習モデルに入力することで、予め設定された複数の商品候補の中から、映像に含まれる商品に対応する商品候補と商品候補の個数を特定し、会計機が出力する複数の商品候補の中から、人物が入力した商品の項目と、商品の項目の個数とを取得し、取得した商品の項目および商品の項目の個数と、特定した商品候補および商品候補の個数とに基づいて、会計機に登録された商品の異常を示すアラートを生成する。
【選択図】
図43
【特許請求の範囲】
【請求項1】
会計機に登録する商品を把持する人物の映像を取得し、
取得した映像を、機械学習モデルに入力することで、予め設定された複数の商品候補の中から、前記映像に含まれる商品に対応する商品候補と前記商品候補の個数を特定し、
前記会計機が出力する複数の商品候補の中から、前記人物が入力した商品の項目と、前記商品の項目の個数とを取得し、
取得した商品の項目および前記商品の項目の個数と、特定した商品候補および前記商品候補の個数とに基づいて、前記会計機に登録された商品の異常を示すアラートを生成する、
処理をコンピュータに実行させることを特徴とするアラート生成プログラム。
【請求項2】
前記特定する処理は、前記機械学習モデルが有する画像エンコーダに対して前記映像を入力すると共に、前記機械学習モデルが有するテキストエンコーダに対して前記複数の商品候補と前記商品候補の個数に対応する複数のテキストを入力し、前記画像エンコーダが出力する前記映像のベクトル及び前記テキストエンコーダが出力する前記テキストのベクトルの類似度に基づいて前記映像に含まれる商品に対応する商品候補と前記商品候補の個数を特定する処理を含む、
ことを特徴とする請求項1に記載のアラート生成プログラム。
【請求項3】
前記機械学習モデルは、複数の階層毎に商品の属性が対応付けられた参照元データを参照し、
前記特定する処理は、前記画像エンコーダに対して前記映像を入力すると共に、前記テキストエンコーダに対して第一の階層の商品の属性ごとにテキストを入力し、前記画像エンコーダが出力する前記映像のベクトル及び前記テキストエンコーダが出力する前記テキストのベクトルの類似度に基づいて前記第一の階層の商品の属性のうち前記映像に含まれる商品に対応する属性を絞り込み、前記画像エンコーダに対して前記映像を入力すると共に、前記テキストエンコーダに対して前記第一の階層の物体の属性の中から絞り込んだ第二の階層の商品の個数ごとにテキストを入力し、前記画像エンコーダが出力する前記映像のベクトル及び前記テキストエンコーダが出力する前記テキストのベクトルの類似度に基づいて前記第二の階層の商品の個数のうち前記映像に含まれる商品に対応する個数を特定することで、前記商品候補と前記商品候補の個数を特定する処理を含む、
ことを特徴とする請求項2に記載のアラート生成プログラム。
【請求項4】
前記機械学習モデルは、複数の階層毎に商品の属性が対応付けられた参照元データを参照し、
前記特定する処理は、前記画像エンコーダに対して前記映像を入力すると共に、前記テキストエンコーダに対して第一の階層の商品の個数ごとにテキストを入力し、前記画像エンコーダが出力する前記映像のベクトル及び前記テキストエンコーダが出力する前記テキストのベクトルの類似度に基づいて前記第一の階層の商品の個数のうち前記映像に含まれる商品に対応する個数を絞り込み、前記画像エンコーダに対して前記映像を入力すると共に、前記テキストエンコーダに対して前記第一の階層の個数の属性の中から絞り込んだ第二の階層の商品の属性ごとにテキストを入力し、前記画像エンコーダが出力する前記映像のベクトル及び前記テキストエンコーダが出力する前記テキストのベクトルの類似度に基づいて前記第二の階層の商品の属性のうち前記映像に含まれる商品に対応する属性を特定することで、前記商品候補と前記商品候補の個数を特定する処理を含む、
ことを特徴とする請求項2に記載のアラート生成プログラム。
【請求項5】
前記会計機は、表示領域に出力させた、店内で販売されている商品の一覧の中から、前記人物が選択または検索をした商品の項目と、前記商品の項目の個数とを登録し、
前記取得する処理は、前記会計機に登録された商品の項目と、前記商品の項目の個数とを、前記会計機から取得する処理を含む、
ことを特徴とする請求項1に記載のアラート生成プログラム。
【請求項6】
前記生成する処理は、特定した商品候補の個数と、前記会計機から取得した商品の項目の個数との不一致を警告するアラートを生成する処理を含む、
ことを特徴とする請求項1に記載のアラート生成プログラム。
【請求項7】
前記生成する処理は、特定した商品候補の個数と、前記会計機から取得した商品の項目の個数とに基づく購入金額の差額、または、前記会計機の識別情報のいずれかを含むアラートを生成する処理を含む、
ことを特徴とする請求項1に記載のアラート生成プログラム。
【請求項8】
前記アラートを店員の有する端末に送信する処理を前記コンピュータにさらに実行させる、
ことを特徴とする請求項7に記載のアラート生成プログラム。
【請求項9】
前記会計機は、セルフレジ端末であることを特徴とする請求項1に記載のアラート生成プログラム。
【請求項10】
会計機に登録する商品を把持する人物の映像を取得し、
取得した映像を、機械学習モデルに入力することで、予め設定された複数の商品候補の中から、前記映像に含まれる商品に対応する商品候補と前記商品候補の個数を特定し、
前記会計機が出力する複数の商品候補の中から、前記人物が入力した商品の項目と、前記商品の項目の個数とを取得し、
取得した商品の項目および前記商品の項目の個数と、特定した商品候補および前記商品候補の個数とに基づいて、前記会計機に登録された商品の異常を示すアラートを生成する、
処理をコンピュータが実行することを特徴とするアラート生成方法。
【請求項11】
会計機に登録する商品を把持する人物の映像を取得し、
取得した映像を、機械学習モデルに入力することで、予め設定された複数の商品候補の中から、前記映像に含まれる商品に対応する商品候補と前記商品候補の個数を特定し、
前記会計機が出力する複数の商品候補の中から、前記人物が入力した商品の項目と、前記商品の項目の個数とを取得し、
取得した商品の項目および前記商品の項目の個数と、特定した商品候補および前記商品候補の個数とに基づいて、前記会計機に登録された商品の異常を示すアラートを生成する、
処理を実行する制御部を含むことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アラート生成プログラム等に関する。
【背景技術】
【0002】
画像から特定の物体を認識する画像認識技術は、広く普及している。この技術では、例えば、画像における特定の物体の領域がバウンディングボックス(Bbox)として特定される。また、物体の画像認識を機械学習を用いて行う技術も存在する。そして、このような画像認識技術は、例えば、店舗における顧客の購買動作の監視や、工場における作業者の作業管理に応用することが考えられている。
【0003】
また、スーパーマーケットやコンビニエンスストア等の店舗において、セルフレジが普及している。セルフレジは、商品を購入する利用者自身が、商品のバーコードの読み取りから精算までを行うPOS(Point of sale)レジシステムである。たとえば、セルフレジを導入することで、人口減少による人手不足の改善、人件費の抑制を実現することができる。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、映像から抽出されるBboxの位置関係は2次元空間によるものなので、例えば、Bbox間の奥行きについては分析できず、人物と物体との関係を識別することが難しい。
【0006】
また、上記のセルフレジでは、商品コードのスキャンや精算が利用者自身に委ねられるので、1種類の購入商品につき実際に購入する個数よりも少ない個数の手動入力またはスキャンのレジ登録を行う不正行為を抑制することが困難である側面がある。
【0007】
1つの側面では、セルフレジにおける購入個数をごまかす不正行為を抑制できるアラート生成プログラム、アラート生成方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
第1の案では、アラート生成プログラムは、会計機に登録する商品を把持する人物の映像を取得し、取得した映像を、機械学習モデルに入力することで、予め設定された複数の商品候補の中から、前記映像に含まれる商品に対応する商品候補と前記商品候補の個数を特定し、前記会計機が出力する複数の商品候補の中から、前記人物が入力した商品の項目と、前記商品の項目の個数とを取得し、取得した商品の項目および前記商品の項目の個数と、特定した商品候補および前記商品候補の個数とに基づいて、前記会計機に登録された商品の異常を示すアラートを生成する、処理をコンピュータに実行させる。
【発明の効果】
【0009】
一実施形態によれば、セルフレジにおける購入個数をごまかす不正行為を抑制できる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施例1にかかるセルフレジシステムの全体構成例を示す図である。
【
図2】
図2は、実施例1にかかる情報処理装置の機能構成を示す機能ブロック図である。
【
図3】
図3は、第一の機械学習モデルの訓練データの例を説明する図である。
【
図4】
図4は、第一の機械学習モデルの機械学習を説明する図である。
【
図5】
図5は、第二の機械学習モデルの機械学習を説明する図である。
【
図7】
図7は、テンプレートの一例を示す図である。
【
図8】
図8は、階層構造データの生成を説明する図(1)である。
【
図9】
図9は、階層構造データの生成を説明する図(2)である。
【
図11】
図11は、手持ち商品画像の生成を説明する図(1)である。
【
図12】
図12は、手持ち商品画像の生成を説明する図(2)である。
【
図13】
図13は、セルフレジの表示例を示す図(1)である。
【
図14】
図14は、セルフレジの表示例を示す図(2)である。
【
図15】
図15は、手持ち商品画像の生成を説明する図(3)である。
【
図16】
図16は、手持ち商品画像の生成を説明する図(4)である。
【
図17】
図17は、商品アイテムを特定する事例1を示す模式図(1)である。
【
図18】
図18は、商品アイテムを特定する事例1を示す模式図(2)である。
【
図19】
図19は、商品アイテムを特定する事例1を示す模式図(3)である。
【
図20】
図20は、商品アイテムを特定する事例2を示す模式図(1)である。
【
図21】
図21は、商品アイテムを特定する事例2を示す模式図(2)である。
【
図26】
図26は、実施例1にかかるデータ生成処理の流れを示すフローチャートである。
【
図27】
図27は、実施例1にかかる映像取得処理の流れを示すフローチャートである。
【
図28】
図28は、実施例1にかかる第一の検出処理の流れを示すフローチャートである。
【
図29】
図29は、実施例1にかかる第二の検出処理の流れを示すフローチャートである。
【
図30】
図30は、実施例1にかかる特定処理の流れを示すフローチャートである。
【
図32】
図32は、商品アイテムを特定する事例3を示す模式図(1)である。
【
図33】
図33は、商品アイテムを特定する事例3を示す模式図(2)である。
【
図34】
図34は、商品アイテムを特定する事例3を示す模式図(3)である。
【
図37】
図37は、応用例1にかかる第一の検出処理の流れを示すフローチャートである。
【
図39】
図39は、セルフレジの表示例を示す図(3)である。
【
図40】
図40は、商品アイテムを特定する事例4を示す模式図(1)である。
【
図41】
図41は、商品アイテムを特定する事例4を示す模式図(2)である。
【
図42】
図42は、商品アイテムを特定する事例4を示す模式図(3)である。
【
図45】
図45は、応用例2にかかる第二の検出処理の流れを示すフローチャートである。
【
図48】
図48は、情報処理装置のハードウェア構成例を説明する図である。
【
図49】
図49は、セルフレジのハードウェア構成例を説明する図である。
【発明を実施するための形態】
【0011】
以下に、本願の開示するアラート生成プログラム、アラート生成方法および情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、各実施例は、矛盾のない範囲内で適宜組み合わせることができる。
【実施例0012】
<全体構成>
図1は、実施例1にかかるセルフレジシステム5の全体構成例を示す図である。
図1に示すように、セルフレジシステム5は、カメラ30と、セルフレジ50と、管理者端末60と、情報処理装置100とを有する。
【0013】
情報処理装置100は、カメラ30およびセルフレジ50に接続されるコンピュータの一例である。情報処理装置100は、ネットワーク3を介して、管理者端末60に接続される。ネットワーク3は、有線や無線を問わず様々な通信網であってよい。なお、カメラ30およびセルフレジ50は、ネットワーク3を介して、情報処理装置100に接続されてもよい。
【0014】
カメラ30は、セルフレジ50を含む領域の映像を撮影する撮像装置の一例である。カメラ30は、映像のデータを、情報処理装置100に送信する。以下の説明では、映像のデータを「映像データ」と表記する場合がある。
【0015】
映像データには、時系列の複数の画像フレームが含まれる。各画像フレームには、時系列の昇順に、フレーム番号が付与される。1つの画像フレームは、カメラ30があるタイミングで撮影した静止画像の画像データである。
【0016】
セルフレジ50は、商品を購入するユーザ2自身が購入商品のレジ登録および精算(支払い)を行う会計機の一例であり、“Self checkout”、“automated checkout”、“self-checkout machine”や“self-check-out register”などと呼ばれる。例えば、ユーザ2が、購入対象の商品を、セルフレジ50のスキャン領域に移動させると、セルフレジ50は、商品に印刷または貼付されたコードをスキャンして、購入対象の商品を登録する。以下、セルフレジ50に商品が登録されることを指して「レジ登録」と記載する場合がある。なお、ここで言う「コード」は、JAN(Japanese Article Number)やUPC(Universal Product Code)、EAN(European Article Number)などの規格に対応するバーコードであってもよいし、その他の2次元コードなどあってもよい。
【0017】
ユーザ2は、上記のレジ登録の動作を繰り返し実行し、商品のスキャンが完了すると、セルフレジ50のタッチパネル等を操作し、精算要求を行う。セルフレジ50は、精算要求を受け付けると、購入対象の商品の数、購入金額等を提示し、精算処理を実行する。セルフレジ50は、ユーザ2がスキャンを開始してから、精算要求を行うまでの間にスキャンした商品の情報を、記憶部に登録しておき、セルフレジデータ(商品情報)として、情報処理装置100に送信する。
【0018】
管理者端末60は、店舗の管理者が利用する端末装置の一例である。例えば、管理者端末60は、店舗の管理者により携帯される携帯端末装置であってもよい。また、管理者端末60は、デスクトップ型またはラップトップ型のパーソナルコンピュータであってもよい。この場合、管理者端末60は、店舗内、例えばバックヤードなどに配置されてもよいし、あるいは店舗外のオフィスなどに配置されてもよい。1つの側面として、管理者端末60は、情報処理装置100から、各種の通知を受け付ける。なお、ここでは、店舗の管理者が利用する端末装置を例に挙げたが、店舗の関係者全般が利用する端末装置であってもよい。
【0019】
このような構成において、情報処理装置100は、セルフレジ50に登録する商品を把持する人物の映像を取得する。そして、情報処理装置100は、取得した映像を、機械学習モデル(ゼロショット画像分類器)に入力することで、予め設定された複数の商品候補(テキスト)の中から、映像に含まれる商品に対応する商品候補と商品候補の個数を特定する。その後、情報処理装置100は、セルフレジ50が出力する複数の商品候補の中から、人物が入力した商品の項目と、商品の項目とを取得する。その上で、情報処理装置100は、取得した商品の項目および商品の項目の個数と、特定した商品候補および商品候補の個数とに基づいて、セルフレジ50に登録された商品の異常を示すアラートを生成する。
【0020】
この結果、情報処理装置100は、セルフレジ50で1種類の購入商品につき実際に購入する個数よりも少ない個数の手動入力又はスキャンのレジ登録を行う不正検出時にアラートを出力できるので、セルフレジ50における購入個数をごまかす不正を抑制できる。
【0021】
<2.機能構成>
図2は、実施例1にかかる情報処理装置100の機能構成を示す機能ブロック図である。
図2に示すように、情報処理装置100は、通信部101、記憶部102、制御部110を有する。
【0022】
<2-1.通信部>
通信部101は、他の装置との間の通信を制御する処理部であり、例えば通信インタフェースなどにより実現される。例えば、通信部101は、カメラ30から映像データを受信し、制御部110による処理結果を管理者端末60に送信する。
【0023】
<2-2.記憶部>
記憶部102は、各種データや制御部110が実行するプログラムなどを記憶する処理部であり、メモリやハードディスクなどにより実現される。記憶部102は、訓練データDB103、機械学習モデル104、階層構造DB105、映像データDB106、セルフレジデータDB107を記憶する。
【0024】
<2-2-1.訓練データDB>
訓練データDB103は、第一の機械学習モデル104Aの訓練に使用されるデータを記憶するデータベースである。例えば、
図3を用いて、第一の機械学習モデル104AにHOID(Human Object Interaction Detection)が採用されている例で説明する。
図3は、第一の機械学習モデル104Aの訓練データの例を説明する図である。
図3に示すように、各訓練データは、入力データとなる画像データと、当該画像データに対して設定された正解情報とを有する。
【0025】
正解情報には、検出対象であるヒトとモノのクラスと、ヒトとモノの相互作用を示すクラスと、各クラスの領域を示すBbox(Bounding Box:物体の領域情報)とが設定される。例えば、正解情報として、商品等の物体であってレジ袋以外の物体を示すSomethingクラスの領域情報、商品を購入するユーザを示すヒトのクラスの領域情報、Somethingクラスとヒトのクラスとの相互作用を示す関係性(把持クラス)とが設定される。すなわち、正解情報として、人が把持している物体に関する情報が設定される。
【0026】
また、正解情報として、レジ袋を示すレジ袋のクラスの領域情報と、レジ袋を使用するユーザを示すヒトのクラスの領域情報と、レジ袋のクラスとヒトのクラスとの相互作用を示す関係性(把持クラス)とが設定される。すなわち、正解情報として、人が把持しているレジ袋に関する情報が設定される。
【0027】
一般的に、通常の物体識別(物体認識)でSomethingクラスを作ると、すべての背景、服装品、小物などタスクと関係ないものをすべて検出することになる。かつ、それらはすべてSomethingなので、画像データ内に大量のBboxが識別されるだけで何も分からない。HOIDの場合は、ヒトが持っているモノという特殊な関係性(座っている、操作している、など他の関係の場合もある)であることが分かるので、意味のある情報としてタスク(例えばセルフレジの不正検出タスク)に利用することができる。物体をSomethingで検出した上で、レジ袋などをBag(レジ袋)という固有のクラスとして識別する。このレジ袋は、セルフレジの不正検出タスクでは価値のある情報だが、他のタスクでは重要な情報ではないので、商品はカゴ(買い物かご)から取り出され袋に収納されるというセルフレジの不正検出タスクの固有の知見に基づいて利用することに価値があり、有用な効果が得られる。
【0028】
<2-2-2.機械学習モデル>
図2に戻り、機械学習モデル104は、セルフレジ50の不正検出タスクに用いる機械学習モデルを指す。このような機械学習モデル104の例として、ユーザ2が把持する物体、例えば商品を特定する側面から用いる第一の機械学習モデル104Aと、商品の項目を特定する側面から用いる第二の機械学習モデル104Bとが含まれ得る。
【0029】
第一の機械学習モデル104Aは、あくまで一例として、上記のHOIDにより実現されてよい。この場合、第一の機械学習モデル104Aは、入力された画像データから、ヒト、商品、ヒトと商品の関係性を識別して識別結果を出力する。例えば、「ヒトのクラスと領域情報、商品(モノ)のクラスと領域情報、ヒトと商品の相互作用」が出力される。なお、ここでは、第一の機械学習モデル104AがHOIDにより実現される例を挙げるが、各種ニューラルネットワークなどを用いた機械学習モデルにより実現されてもよい。
【0030】
第二の機械学習モデル104Bは、あくまで一例として、ゼロショット画像分類器により実現されてよい。この場合、第二の機械学習モデル104Bは、テキストのリストおよび画像を入力とし、テキストのリストのうち画像に対する類似度が最高であるテキストを当該画像のラベルとして出力する。
【0031】
ここで、上記のゼロショット画像分類器の例として、CLIP(Contrastive Language-Image Pre-training)が挙げられる。CLIPとは、画像およびテキストの複数種類、いわゆるマルチモーダルの特徴量空間への埋め込みを実現する。すなわち、CLIPでは、画像エンコーダおよびテキストエンコーダを訓練することにより、意味が近い画像およびテキストのペア間でベクトルの距離が近くなる埋め込みが実現される。例えば、画像エンコーダは、ViT(Vision Transformer)により実現されてもよいし、畳み込み系のニューラルネットワーク、例えばResNetなどにより実現されてもよい。また、テキストエンコーダは、GPT(Generative Pre-trained Transformer)ベースのTransformerにより実現されてもよいし、回帰型のニューラルネットワーク、例えばLSTM(Long short-term memory)により実現されてもよい。
【0032】
<2-2-3.階層構造DB>
階層構造DB105は、複数の階層ごとに商品の属性がリスト化された階層構造を記憶するデータベースである。この階層構造DB105は、後述のデータ生成部112により生成されるデータであり、第二の機械学習モデル104Bの一例として用いられるゼロショット画像分類器が参照する参照データの一例に対応する。例えば、ゼロショット画像分類器のテキストエンコーダには、階層構造DB105に含まれる階層のうち上位の階層、すなわち浅い階層から順に、同一の階層に属する商品の属性に対応するテキストがリスト化されたリストが参照される。
【0033】
<2-2-4.映像データDB>
映像データDB106は、セルフレジ50に設置されるカメラ30により撮像された映像データを記憶するデータベースである。例えば、映像データDB106は、セルフレジ50ごと、または、カメラ30ごとに、カメラ30から取得される画像データ、当該画像データがHOIDへ入力されたHOIDの出力結果などをフレーム単位で記憶する。
【0034】
<2-2-5.セルフレジデータDB>
セルフレジデータDB107は、セルフレジ50から取得した各種データを記憶するデータベースである。例えば、セルフレジデータDB107は、セルフレジ50ごとに、購入対象としてレジ登録された商品の項目名や購入数、購入対象の全商品の金額の合計である請求金額などを記憶する。
【0035】
<2-3.制御部>
制御部110は、情報処理装置100全体を司る処理部であり、例えばプロセッサなどにより実現される。この制御部110は、機械学習部111、データ生成部112、映像取得部113、セルフレジデータ取得部114、不正検出部115、アラート生成部118を有する。なお、機械学習部111、データ生成部112、映像取得部113、セルフレジデータ取得部114、不正検出部115、アラート生成部118は、プロセッサが有する電子回路やプロセッサが実行するプロセスなどにより実現される。
【0036】
<2-3-1.機械学習部>
機械学習部111は、機械学習モデル104の機械学習を実行する処理部である。1つの側面として、機械学習部111は、訓練データDB103に記憶される各訓練データを用いて、第一の機械学習モデル104Aの機械学習を実行する。
図4は、第一の機械学習モデル104Aの機械学習を説明する図である。
図4では、第一の機械学習モデル104AにHOIDを用いた例を図示している。
図4に示すように、機械学習部111は、訓練データの入力データをHOIDに入力し、HOIDの出力結果を取得する。この出力結果には、HOIDが検出したヒトのクラスと、モノのクラスと、ヒトとモノの相互作用などが含まれる。そして、機械学習部111は、訓練データの正解情報と、HOIDの出力結果との誤差情報を算出し、誤差が小さくなるように、誤差逆伝播によりHOIDの機械学習を実行する。これにより、訓練済みの第一の機械学習モデル104Aが生成される。このように生成された訓練済みの第一の機械学習モデル104Aが記憶部102に記憶される。
【0037】
他の側面として、機械学習部111は、第二の機械学習モデル104Bの機械学習を実行する。ここでは、情報処理装置100の機械学習部111により第二の機械学習モデル104Bが訓練される例を挙げるが、訓練済みの第二の機械学習モデル104Bはインターネットなどで公開されているので、必ずしも機械学習部111による機械学習は実行されずともよい。また、機械学習部111は、訓練済みの第二の機械学習モデル104Bがセルフレジシステム5の運用に適用された後、制度不足の場合にfine-tuneを実行することができる。
【0038】
図5は、第二の機械学習モデル104Bの機械学習を説明する図である。
図5には、第二の機械学習モデル104Bの例として、CLIPモデル10が示されている。
図5に示すように、CLIPモデル10の訓練には、画像およびテキストのペアが訓練データとして用いられる。このような訓練データには、インターネット上のWebページから画像および画像のキャプションとして記述されたテキストのペアが抽出されたデータセット、いわゆるWIT(WebImageText)を用いることができる。例えば、犬が撮影された写真、あるいは犬のイラストが描画された絵などの画像と、そのキャプションとして記述されたテキスト「犬の写真」とのペアが訓練データとされる。このようにWITを訓練データに用いることで、ラベル付けの作業を不要化すると共に大量の訓練データを獲得できる。
【0039】
これら画像およびテキストのペアのうち、画像が画像エンコーダ10Iへ入力されると共に、テキストがテキストエンコーダ10Tへ入力される。このように画像が入力された画像エンコーダ10Iは、当該画像を特徴量空間に埋め込むベクトルを出力する。一方、テキストが入力されたテキストエンコーダ10Tは、当該テキストを特徴量空間に埋め込むベクトルを出力する。
【0040】
例えば、
図5には、画像1およびテキスト1のペア、画像2およびテキスト2のペア、・・・、画像NおよびテキストNのN個のペアの訓練データを含むバッチサイズNのミニバッチが例示されている。この場合、N個のペアの画像およびテキストの各々を画像エンコーダ10Iおよびテキストエンコーダ10Tへ入力することにより、N×N個の埋め込みベクトルの類似度行列M1を得ることができる。なお、ここで言う「類似度」は、あくまで一例として、埋め込みベクトル間の内積やコサイン類似度であってよい。
【0041】
ここで、CLIPモデル10の訓練には、Webのテキストのキャプションの形式が様々であることからラベルが不定となるので、Contrastive objectiveと呼ばれる目的関数が用いられる。
【0042】
Contrastive objectiveでは、ミニバッチのi番目の画像であればi番目のテキストが正しいペアに対応するので、i番目のテキストを正例とする一方で、それ以外の全てのテキストが負例とされる。つまり、訓練データごとに1つの正例およびN-1個の負例が設定されるので、ミニバッチ全体ではN個の正例およびN2-N個の負例が生成されることになる。例えば、類似度行列M1の例で言えば、白黒の反転表示がなされたN個の対角成分の要素を正例とし、白地の表示がなされたN2-N個の要素が負例とされる。
【0043】
このような類似度行列M1の下、正例に対応するN個のペアの類似度を最大化すると共に、負例に対応するN2-N個のペアの類似度を最小化する画像エンコーダ10Iおよびテキストエンコーダ10Tのパラメータが訓練される。
【0044】
例えば、1番目の画像1の例で言えば、1番目のテキストを正例とし、2番目以降のテキストを負例とし、類似度行列Mの行方向に損失、例えばクロスエントロピー誤差を算出する。このような損失の計算をN個の画像ごとに実行することで、画像に関する損失が求まる。一方、2番目のテキスト2の例で言えば、2番目の画像を正例とし、2番目以外の全ての画像を負例とし、類似度行列Mの列方向に損失を算出する。このような損失の計算をN個のテキストごとに実行することで、テキストに関する損失が求まる。これら画像に関する損失およびテキストに関する損失の統計値、例えば平均を最小化するパラメータの更新が画像エンコーダ10Iおよびテキストエンコーダ10Tに実行される。
【0045】
このようなContrastive objectiveを最小化する画像エンコーダ10Iおよびテキストエンコーダ10Tの訓練により、訓練済みのCLIPモデル10が生成される。
【0046】
<2-3-2.データ生成部>
図2の説明に戻り、データ生成部112は、第二の機械学習モデル104Bが参照する参照データを生成する処理部である。あくまで一例として、データ生成部112は、第二の機械学習モデル104Bの一例であるゼロショット画像分類器に入力されるテキスト、いわゆるクラスキャプションのリストを生成する。
【0047】
より詳細には、データ生成部112は、スーパーマーケットやコンビニエンスストア等の店舗の商品リストを取得する。このような商品リストの取得は、あくまで一例として、店舗の商品がデータベース化された商品マスタに登録された商品の一覧を取得することにより実現することができる。これにより、あくまで一例として、
図6に示す商品リストが取得される。
図6は、商品リストの一例を示す図である。
図6には、店舗で販売される商品全体のうち果物「ぶどう」に関する商品アイテムの例として、「シャインマスカット」、「高級巨峰」、「安いぶどうA」、「安いぶどうB」および「訳ありぶどうA」が抜粋して示されている。
【0048】
さらに、データ生成部112は、あくまで一例として、
図7に示す階層構造のテンプレートを取得する。この階層構造のテンプレートの取得については、店舗で販売する商品のカテゴリ、例えば「果物」や「魚」、「肉」などを第一の階層の要素として設定することにより生成できる。
図7は、テンプレートの一例を示す図である。
図7に示すように、テンプレートは、rootを最上位とする階層構造を有する。さらに、rootからの深さが「1」である第一の階層には、「果物」、「魚」、「肉」、・・・、「乳製品」などのカテゴリが要素(ノード)として含まれる。なお、
図7では、説明を簡素化する側面から、商品のカテゴリを第一の階層とするテンプレートを例示したが、商品の大分類、例えば果物や魚などの分類を第一の階層とし、商品の小分類、例えばぶどうやりんごなどの分類を第二の階層とすることとしてもよい。
【0049】
続いて、データ生成部112は、階層構造のテンプレートの最下層、例えばこの時点では第一の階層の要素ごとにシステム定義またはユーザ定義により指定された属性、例えば「価格」に関する属性などを付加する。以下、「価格」に関する属性のことを指して「価格属性」と記載する場合がある。なお、以下では、属性のあくまで一例として、価格属性を例に挙げるが、詳細は後述するが、他の属性、例えば「色」や「形」、「在庫数」などが付加されてもよい点をあらかじめ付言しておく。
【0050】
図8は、階層構造データの生成を説明する図(1)である。
図8には、
図7に示すテンプレートに対応する部分の要素が白地で示されると共に、各要素に付加された属性の部分がハッチングで示されている。
図8に示すように、第一の階層の各要素には、「価格」に関する属性が付加される。例えば、第一の階層の要素「果物」の例で言えば、第一の階層の要素「果物」には、第二の階層の要素「高価格ぶどう」および第二の階層の要素「低価格ぶどう」が付加されている。ここで、
図8には、あくまで一例として、1つの要素につき2つの価格属性を付加する例を挙げるが、これに限定されず、1つの要素につき2つ未満、あるいは3つ以上の価格属性を付加することとしてもよい。例えば、第一の階層の要素「果物」には、第二の階層の要素「高価格ぶどう」、第二の階層の要素「中価格ぶどう」および第二の階層の要素「低価格ぶどう」の3つの価格属性を付加することとしてもよい。この他、第一の階層の要素に応じて付与される価格属性の数を変更することもできる。この場合、第一の階層の要素に属する商品アイテムの数、あるいは価格の分散が大きくなるに連れて価格属性の数を大きくすることができる。
【0051】
そして、データ生成部112は、生成中の階層構造の最下層の要素、すなわち現時点では第二の階層に属する価格属性の要素kごとに当該要素kに対する類似度が閾値th1以上である商品アイテムを抽出する。
【0052】
図9は、階層構造データの生成を説明する図(2)である。
図9には、商品のカテゴリ「果物」に関する例が抜粋して示されている。例えば、
図9に示す第二の階層の要素「高価格ぶどう」に関する商品アイテムの抽出例を挙げる。この場合、第二の階層の要素「高価格ぶどう」に対応するテキスト「高価格ぶどう」をCLIPモデル10のテキストエンコーダ10Tへ入力することにより、第二の階層の要素「高価格ぶどう」の埋め込みベクトルが得られる。一方、
図7に示す商品リストに含まれる商品アイテムごとに当該商品アイテムに対するテキストをCLIPモデル10のテキストエンコーダ10Tへ入力することにより、各商品アイテムの埋め込みベクトルが得られる。そして、第二の階層の要素「高価格ぶどう」の埋め込みベクトルと、各商品アイテムの埋め込みベクトルとの類似度が算出される。この結果、第二の階層の要素「高価格ぶどう」には、第二の階層の要素「高価格ぶどう」の埋め込みベクトルに対する類似度が閾値th1以上である商品アイテム「シャインマスカット」および「高級巨峰」が抽出される。これと同様にして、第二の階層の要素「低価格ぶどう」には、第二の階層の要素「低価格ぶどう」の埋め込みベクトルに対する類似度が閾値th1以上である商品アイテム「安いぶどうA」、「安いぶどうB」および「訳ありぶどうA」が抽出される。なお、ここでは、テキスト間の埋め込みベクトルのマッチングにより商品アイテムを抽出する例を挙げたが、一方または両方を画像の埋め込みベクトルとすることもできる。
【0053】
その後、データ生成部112は、生成中の階層構造の全M階層のうち第一の階層から最下層であるM階層を除くM-1階層までm階層の要素nごとに当該要素nに属する商品アイテムの価格の分散Vを算出する。その上で、データ生成部112は、価格の分散Vが閾値th2以下であるか否かを判定する。このとき、価格の分散Vが閾値th2以下である場合、データ生成部112は、要素nよりも下位の階層の探索の打ち切りを決定する。一方、価格の分散Vが閾値th2以下でない場合、データ生成部112は、階層のループカウンタmを1つインクリメントし、1つ下位の階層の各要素について価格の分散の算出および分散の閾値判定を反復する。
【0054】
あくまで一例として、
図9に示す第一の階層をm層とし、第一の階層の要素「果物」を要素nとする場合を例に挙げる。この場合、第一の階層の要素「果物」には、
図9に破線の枠で示す通り、シャインマスカット(4500円)、高級巨峰(3900円)、安いぶどうA(350円)、安いぶどうB(380円)及び訳ありぶどうA(350円)などの5つの商品アイテムが含まれる。このとき、価格の分散V
11は閾値th2以下とならないので(図中の判定1)、下層の探索が継続される。すなわち、階層のループカウンタmを1つインクリメントし、第二の階層がm層とされる。
【0055】
次に、
図9に示す第二の階層をm層とし、第二の階層の要素「高価格ぶどう」を要素nとする場合を例に挙げる。この場合、第二の階層の要素「高価格ぶどう」には、
図9に一点鎖線の枠で示す通り、シャインマスカット(4500円)および高級巨峰(3900円)などの2つの商品アイテムが含まれる。このとき、価格の分散V
21は閾値th2以下とはならないが(図中の判定2)、第二の階層の要素「高価格ぶどう」は最下層である第三の階層の1つ下位の階層の要素であるので、探索が終了される。
【0056】
さらに、
図9に示す第二の階層をm層とし、第二の階層の要素「低価格ぶどう」を要素nとする場合を例に挙げる。この場合、第二の階層の要素「低価格ぶどう」には、
図9に二点鎖線の枠で示す通り、安いぶどうA(350円)、安いぶどうB(380円)および訳ありぶどうA(350円)などの3つの商品アイテムが含まれる。このとき、価格の分散V
22は閾値th2以下となるので(図中の判定3)、下層の探索の打ち切りが決定される。
【0057】
その後、データ生成部112は、第一の階層の要素ごとに開始される探索の打ち切りが決定されるか、あるいは探索が第M-1階層の全ての要素が探索されるまで探索を反復する。その上で、データ生成部112は、上記の探索時で得られた価格の分散の判定結果に基づいて階層構造の各ルート(route)の深さを決定する。
【0058】
あくまで一例として、データ生成部112は、全M階層の階層構造の最上位の要素から最下層の要素までのルートに商品アイテムの価格の分散が閾値th2以下である要素が存在する場合、当該要素を終端ノードに設定する。一方、データ生成部112は、最上位の要素から最下層の要素までのルートに商品アイテムの価格の分散が閾値th2以下である要素が存在しない場合、商品アイテムに対応する要素を終端ノードに設定する。
【0059】
例えば、
図9に示す例において、第一の階層の要素「果物」と、第二の階層の要素「高価格ぶどう」と、第三の階層の要素「シャインマスカット」または第三の階層の要素「高級巨峰」とを結ぶルートを例に挙げる。このルートでは、第一の階層の要素「果物」における価格の分散V
11および第二の階層の要素「高価格ぶどう」における価格の分散V
21のいずれにおいても閾値th2以下と判定されない。よって、本ルートでは、第三の階層の要素「シャインマスカット」および第三の階層の要素「高級巨峰」が終端ノードに設定される。
【0060】
次に、
図9に示す例において、第一の階層の要素「果物」と、第二の階層の要素「低価格ぶどう」と、第三の階層の要素「安いぶどうA」、第三の階層の要素「安いぶどうB」または第三の階層の要素「訳ありぶどうA」とを結ぶルートを例に挙げる。このルートでは、第一の階層の要素「果物」における価格の分散V
11は閾値th2以下と判定されないが、第二の階層の要素「低価格ぶどう」における価格の分散V
22が閾値th2以下と判定される。よって、本ルートでは、第二の階層の要素「低価格ぶどう」が終端ノードに設定される。
【0061】
このように
図9に示すM階層の階層構造の各ルートの深さが決定されることにより、
図10に示す階層構造が確定される。このように生成された階層構造が記憶部102の階層構造DB105に保存される。
【0062】
図10は、階層構造の一例を示す図である。
図10には、商品アイテムの価格の分散が閾値th2以下である終端ノード以降の要素が破線で示されている。
図10に示すように、階層構造には、第一の階層の要素「果物」と、第二の階層の要素「高価格ぶどう」と、第三の階層の要素「シャインマスカット」または第三の階層の要素「高級巨峰」とを結ぶルートが含まれる。さらに、階層構造には、第一の階層の要素「果物」と、第二の階層の要素「低価格ぶどう」とを結ぶルートが含まれる。
【0063】
このような階層構造に従ってクラスキャプションのリストが第二の機械学習モデル104Bの一例であるゼロショット画像分類器に入力される。例えば、第一の階層のクラスキャプションのリストとして、テキスト「果物」およびテキスト「魚」などのリストがCLIPモデル10のテキストエンコーダ10Tへ入力される。このとき、画像エンコーダ10Iへの入力画像に対応するクラスのラベルとして「果物」がCLIPモデルにより出力されたとする。この場合、第二の階層のクラスキャプションのリストとして、テキスト「高価格ぶどう」およびテキスト「低価格ぶどう」のリストがCLIPモデル10のテキストエンコーダ10Tへ入力される。
【0064】
このように、階層構造の上位の階層から順に同一の階層に属する商品の属性に対応するテキストがリスト化されたリストをCLIPモデル10のクラスキャプションとして入力する。これにより、CLIPモデル10に階層単位で商品アイテムの候補の絞り込みを実行させることができる。このため、店舗の全ての商品アイテムに対応するテキストのリストをCLIPモデル10のクラスキャプションとして入力する場合に比べてタスク実現の処理コストを削減できる。
【0065】
さらに、CLIPモデル10に参照させる階層構造では、商品アイテムの価格の分散が閾値th2以下である要素よりも下位の要素が省略されるので、不正行為の発生時の被害額の差が少ない商品アイテム同士をクラスタリングできる。これにより、更なるタスク実現の処理コストの削減を実現できる。
【0066】
また、スーパーマーケットやコンビニエンスストア等の店舗では、多数の種類の商品が存在する上、個々の商品のライフサイクルも短いので、商品の入れ替えが頻繁に起こる。
【0067】
CLIPモデル10に参照させる階層構造データは、入れ替え対象の多数の種類の商品の候補のうち、現時点にて、店内に配置される複数の商品候補である。つまり、店内に配置される商品を入れ替えることに応じて、CLIPモデル10の階層構造の一部を更新すればよい。入れ替え対象の多数の種類の商品の候補のうち、現時点にて、店内に配置される複数の商品候補を容易に管理することができる。
【0068】
<2-3-3.映像取得部>
図2の説明に戻り、映像取得部113は、カメラ30から映像データを取得する処理部である。例えば、映像取得部113は、セルフレジ50に設置されるカメラ30から映像データを任意の周期、例えばフレーム単位で取得する。そして、映像取得部113は、新規のフレームの画像データが取得された場合、当該画像データを第一の機械学習モデル104A、例えばHOIDモデルへ入力してHOIDの出力結果を取得する。その上で、映像取得部113は、フレームごとに当該フレームの画像データおよび当該フレームのHOIDの出力結果を対応付けて映像データDB106に格納する。
【0069】
<2-3-4.セルフレジデータ取得部>
セルフレジデータ取得部114は、セルフレジ50でレジ登録が行われた商品の情報をセルフレジデータとして取得する処理部である。ここで言う「レジ登録」には、商品に印刷または貼付された商品コードがスキャンされることにより実現される他、ユーザ2により商品コードが手動入力されることにより実現され得る。この場合、ユーザインタフェイスとして、個数を入力する欄も含まれ得る。後者のように商品コードをユーザ2に手動入力させる運用が実施されるのは、全ての商品にコードのラベルを印刷または貼付できるとは限らないからである。このようにセルフレジ50におけるレジ登録に応答して取得されたセルフレジデータは、セルフレジデータDB107に格納される。
【0070】
<2-3-5.不正検出部>
不正検出部115は、セルフレジ50周辺を撮像した映像データに基づき、各種の不正行為を検出する処理部である。
図2に示すように、不正検出部115は、第一の検出部116および第二の検出部117を有する。
【0071】
<2-3-5-1.第一の検出部>
第一の検出部116は、高価格商品のラベルを低価格商品のラベルに張り替えてスキャンする不正行為、いわゆるラベルスイッチを検出する処理部である。
【0072】
1つの側面として、第一の検出部116は、セルフレジ50におけるスキャンを経由して新規の商品コードが取得された場合、処理を起動する。この場合、第一の検出部116は、映像データDB106に記憶されたフレームのうち、商品コードがスキャンされた時刻に対応するフレームを検索する。そして、第一の検出部116は、検索がヒットするフレームに対応するHOIDの出力結果に基づいてユーザ2が把持する商品の画像を生成する。以下、ユーザ2が把持する商品の画像のことを指して「手持ち商品画像」と記載する場合がある。
【0073】
図11は、手持ち商品画像の生成を説明する図(1)である。
図11には、カメラ30から取得されるフレーム番号「1」~「6」の時系列に、HOIDモデルへの入力データである画像データおよびHOIDの出力結果が図示されている。例えば、
図11に示す例で言えば、セルフレジ50でレジ登録された商品コードがスキャンされた時刻を基準とし、当該時刻から最短であり、モノのBboxおよびスキャン位置の重複度が閾値以上であり、かつ相互作用が把持クラスであるフレームが検索される。この結果、検索にヒットするフレーム番号「4」のHOIDの出力結果を用いて、手持ち商品画像が生成される。これにより、ユーザ2がスキャン位置で商品を把持する商品の画像を特定できる。
【0074】
図12は、手持ち商品画像の生成を説明する図(2)である。
図12には、
図11に示すフレーム番号「4」に対応する画像データと、当該画像データがHOIDモデルへ入力された場合のHOIDの出力結果とが示されている。さらに、
図12には、ヒトのBboxが実線の枠で示されると共に、モノのBboxが破線の枠で示されている。
図12に示すように、HOIDの出力結果には、ヒトのBbox、モノのBbox、ヒトとモノの相互作用の確率値およびクラス名などが含まれる。これらのうちモノのBboxを参照して、第一の検出部116は、フレーム番号「4」の画像データからモノのBbox、すなわち
図12の破線の枠に対応する部分画像を切り出すことにより、手持ち商品画像を生成する。
【0075】
このように手持ち商品画像が生成された後、第一の検出部116は、手持ち商品画像を第二の機械学習モデル104Bの一例であるゼロショット画像分類器に入力する。さらに、第一の検出部116は、階層構造DB105に記憶された階層構造にしたがって上位の階層から順に同一の階層に属する商品の属性に対応するテキストがリスト化されたリストをゼロショット画像分類器に入力する。これにより、ゼロショット画像分類器に入力されるテキストの階層が深くなるに連れて商品アイテムの候補が絞り込まれる。その上で、第一の検出部116は、スキャン経由でレジ登録された商品アイテムと、ゼロショット画像分類器により特定された商品アイテムまたはその上位の属性に含まれる商品アイテム群とが一致するか否かを判定する。このとき、両者の商品アイテムが一致しない場合、ラベルスイッチが行われたことを検出できる。なお、ゼロショット画像分類器を用いる商品アイテムの特定についての詳細は、
図17~
図21を用いて後述する。
【0076】
<2-3-5-2.第二の検出部>
第二の検出部117は、ラベルのない高価格商品をレジ登録する代わりに低価格商品をレジ登録する不正行為、いわゆるバナナトリックを検出する処理部である。このようにラベルのない商品についてのレジ登録は、ユーザ2の手動入力により行われる。
【0077】
あくまで一例として、セルフレジ50では、
図13に示すコードなし商品の選択画面に対する操作を介して、ラベルのない商品のレジ登録を受け付ける場合がある。
【0078】
図13は、セルフレジ50の表示例を示す図(1)である。
図13に示すように、コードなし商品の選択画面200には、商品のカテゴリの表示エリア201と、選択中のカテゴリに属する商品アイテムの表示エリア202とが含まれ得る。例えば、
図13に示すコードなし商品の選択画面200には、表示エリア201に含まれる商品のカテゴリ「果物」、「魚」、「肉」、「乳製品」、「野菜」および「総菜」のうち商品のカテゴリ「果物」が選択中である例が示されている。この場合、表示エリア202には、商品のカテゴリ「果物」に属する商品アイテム「バナナ」や「シャインマスカット」、「訳ありぶどうA」などが表示される。この表示エリア202内に商品のカテゴリ「果物」に属する全ての商品アイテムが配置するスペースがない場合、スクロールバー203を介して表示エリア202の表示範囲をスクロールさせることにより、商品アイテムが配置される範囲を広げることができる。このような表示エリア202に表示された商品アイテムの中から選択操作を受け付けることで、ラベルのない商品のレジ登録を受け付けることができる。
【0079】
他の一例として、セルフレジ50では、
図14に示すコードなし商品の検索画面に対する操作を介して、ラベルのない商品のレジ登録を受け付ける場合もある。
【0080】
図14は、セルフレジ50の表示例を示す図(2)である。
図14に示すように、コードなし商品の検索画面210には、商品を検索する検索エリア211と、検索結果の一覧が表示される表示エリア212とが含まれ得る。例えば、
図14に示すコードなし商品の検索画面210には、検索キーワードとして「ぶどう」が指定される事例が示されている。この場合、表示エリア212には、検索キーワード「ぶどう」の検索結果として、商品アイテム「シャインマスカット」、「訳ありぶどうA」などが表示される。この表示エリア212内に検索結果の全ての商品アイテムが配置するスペースがない場合、スクロールバー213を介して表示エリア212の表示範囲をスクロールさせることにより、商品アイテムが配置される範囲を広げることができる。このような表示エリア212に表示された商品アイテムの中から選択操作を受け付けることで、ラベルのない商品のレジ登録を受け付けることができる。
【0081】
これらコードなし商品の選択画面200やコードなし商品の検索画面210を介してラベルのない商品の手動入力を受け付ける場合、必ずしもユーザ2が商品を把持しながらセルフレジ50の手動入力が行われるとは限らない側面がある。
【0082】
このような側面から、第二の検出部117は、セルフレジ50における手動入力を介して新規の商品コードが取得された場合、次のような処理を起動する。あくまで一例として、第二の検出部117は、映像データDB106に記憶されたフレームのうち、商品コードが手動入力された時刻から遡って直近のHOIDで把持クラスが検出されたフレームを検索する。そして、第二の検出部117は、検索がヒットするフレームに対応するHOIDの出力結果に基づいてラベルなし商品の手持ち商品画像を生成する。
【0083】
図15は、手持ち商品画像の生成を説明する図(3)である。
図15には、カメラ30から取得されるフレーム番号「1」~「6」の時系列に、HOIDモデルへの入力データである画像データおよびHOIDの出力結果が図示されている。例えば、
図15に示す例で言えば、セルフレジ50でレジ登録される商品コードが手動入力されたフレーム番号「5」に対応する時刻を基準とし、当該時刻から遡って直近であり、モノのBboxおよびスキャン位置の重複度が閾値以上であり、かつ相互作用が把持クラスであるフレームが検索される。この結果、検索にヒットするフレーム番号「4」のHOIDの出力結果を用いて、手持ち商品画像が生成される。これにより、ユーザ2がラベルなし商品を把持する画像を特定できる。
【0084】
図16は、手持ち商品画像の生成を説明する図(4)である。
図16には、
図15に示すフレーム番号「4」に対応する画像データと、当該画像データがHOIDモデルへ入力された場合のHOIDの出力結果とが示されている。さらに、
図16には、ヒトのBboxが実線の枠で示されると共に、モノのBboxが破線の枠で示されている。
図16に示すように、HOIDの出力結果には、ヒトのBbox、モノのBbox、ヒトとモノの相互作用の確率値およびクラス名などが含まれる。これらのうちモノのBboxを参照して、第二の検出部117は、フレーム番号「4」の画像データからモノのBbox、すなわち
図15の破線の枠に対応する部分画像を切り出すことにより、ラベルなし商品の手持ち商品画像を生成する。
【0085】
このように手持ち商品画像が生成された後、第二の検出部117は、手持ち商品画像を第二の機械学習モデル104Bの一例であるゼロショット画像分類器に入力する。さらに、第二の検出部117は、階層構造DB105に記憶された階層構造にしたがって上位の階層から順に同一の階層に属する商品の属性に対応するテキストがリスト化されたリストをゼロショット画像分類器に入力する。これにより、ゼロショット画像分類器に入力されるテキストの階層が深くなるに連れて商品アイテムの候補が絞り込まれる。その上で、第二の検出部117は、手動入力を介してレジ登録された商品アイテムと、ゼロショット画像分類器により特定された商品アイテムまたはその上位の属性に含まれる商品アイテム群とが一致するか否かを判定する。このとき、両者の商品アイテムが一致しない場合、バナナトリックが行われたことを検出できる。
【0086】
(1)商品アイテムの特定事例1
次に、ゼロショット画像分類器を用いる商品アイテムの特定について事例を挙げて説明する。
図17~
図19は、商品アイテムを特定する事例1を示す模式図(1)~(3)である。
図17~
図19には、手持ち商品画像20のあくまで一例として、ユーザ2により把持された商品アイテム「シャインマスカット」に対応するBboxの部分画像が生成された例が示されている。
【0087】
図17に示すように、CLIPモデル10の画像エンコーダ10Iには、手持ち商品画像20が入力される。この結果、画像エンコーダ10Iは、手持ち商品画像20の埋め込みベクトルI
1を出力する。
【0088】
一方、CLIPモデル10のテキストエンコーダ10Tには、
図10に示す階層構造に従って第一の階層の要素に対応するテキスト「果物」、「魚」、「肉」および「乳製品」がクラスキャプションのリストとして入力される。
【0089】
このとき、テキスト「果物」、「魚」、「肉」及び「乳製品」をそのままテキストエンコーダ10Tへ入力することもできるが、推論時のクラスキャプションの形式を訓練時のクラスキャプションの形式に側面から“Prompt Engineering”を行うことができる。例えば、“{物体}の写真”の{物体}の部分に商品の属性に対応するテキスト、例えば「果物」を挿入して、“果物の写真”として入力することもできる。
【0090】
この結果、テキストエンコーダ10Tは、テキスト「果物」の埋め込みベクトルT1、テキスト「魚」の埋め込みベクトルT2、テキスト「肉」の埋め込みベクトルT3、・・・、テキスト「乳製品」の埋め込みベクトルTNを出力する。
【0091】
そして、手持ち商品画像20の埋め込みベクトルI1と、テキスト「果物」の埋め込みベクトルT1、テキスト「魚」の埋め込みベクトルT2、テキスト「肉」の埋め込みベクトルT3およびテキスト「乳製品」の埋め込みベクトルTNとの間で類似度が算出される。
【0092】
図17に白黒の反転表示で示す通り、本例では、手持ち商品画像20の埋め込みベクトルI
1と、テキスト「果物」の埋め込みベクトルT
1との類似度が最大となる。このため、CLIPモデル10は、手持ち商品画像20のクラスの予測結果として「果物」を出力する。
【0093】
このように得られた第一の階層の予測結果「果物」は、
図10に示す階層構造で終端ノードではないので、CLIPモデル10の推論が継続される。すなわち、
図18に示すように、
図10に示す階層構造に従って第一の階層の予測結果「果物」の下位に属する第二の階層の要素に対応するテキスト「高価格ぶどう」および「低価格ぶどう」がクラスキャプションのリストとして入力される。なお、テキストの入力時には、
図17に示す例と同様に、“Prompt Engineering”を行うことができるのは言うまでもない。
【0094】
この結果、テキストエンコーダ10Tは、テキスト「高価格ぶどう」の埋め込みベクトルT1およびテキスト「高価格ぶどう」の埋め込みベクトルT2を出力する。そして、手持ち商品画像20の埋め込みベクトルI1と、テキスト「高価格ぶどう」の埋め込みベクトルT1およびテキスト「低価格ぶどう」の埋め込みベクトルT2との間で類似度が算出される。
【0095】
図18に白黒の反転表示で示す通り、本例では、手持ち商品画像20の埋め込みベクトルI
1と、テキスト「高価格ぶどう」の埋め込みベクトルT
1との類似度が最大となる。このため、CLIPモデル10は、手持ち商品画像20のクラスの予測結果として「高価格ぶどう」を出力する。
【0096】
このように得られた第二の階層の予測結果「高価格ぶどう」は、
図10に示す階層構造で終端ノードではないので、CLIPモデル10の推論が継続される。すなわち、
図19に示すように、
図10に示す階層構造に従って第二の階層の予測結果「高価格ぶどう」の下位に属する第三の階層の要素に対応するテキスト「シャインマスカット」および「高級巨峰」がクラスキャプションのリストとして入力される。
【0097】
この結果、テキストエンコーダ10Tは、テキスト「シャインマスカット」の埋め込みベクトルT1およびテキスト「高級巨峰」の埋め込みベクトルT2を出力する。そして、手持ち商品画像20の埋め込みベクトルI1と、テキスト「シャインマスカット」の埋め込みベクトルT1およびテキスト「高級巨峰」の埋め込みベクトルT2との間で類似度が算出される。
【0098】
図19に白黒の反転表示で示す通り、本例では、手持ち商品画像20の埋め込みベクトルI
1と、テキスト「シャインマスカット」の埋め込みベクトルT
1との類似度が最大となる。このため、CLIPモデル10は、手持ち商品画像20のクラスの予測結果として「シャインマスカット」を出力する。
【0099】
以上のように、事例1では、第一の階層の要素に対応する商品の属性のリストをクラスキャプションとしてテキストエンコーダ10Tへ入力することで、商品候補が「果物」に絞り込まれる。そして、第二の階層の要素のうち第一の階層の予測結果の要素「果物」の下位に属する商品の属性のリストをクラスキャプションとしてテキストエンコーダ10Tへ入力することで、商品候補が「高価格ぶどう」に絞り込まれる。さらに、第三の階層の要素のうち第二の階層の予測結果「高価格ぶどう」の要素の下位に属する商品の属性のリストをクラスキャプションとしてテキストエンコーダ10Tへ入力することで、商品候補が「シャインマスカット」に絞り込まれる。このような絞り込みにより、店舗の全ての商品アイテムに対応するテキストをテキストエンコーダ10Tへ入力する場合に比べてタスク実現の処理コストを削減しつつ、手持ち商品画像20に含まれる商品アイテムは「シャインマスカット」であると特定できる。
【0100】
あくまで一例として、手動入力を介してレジ登録された商品アイテムが「訳ありぶどうA」である場合、ゼロショット画像分類器により特定された商品アイテム「シャインマスカット」と一致しない。この場合、バナナトリックが行われていることが検出できる。
【0101】
(2)商品アイテムの特定事例2
図20および
図21は、商品アイテムを特定する事例2を示す模式図(1)および(2)である。
図20および
図21には、手持ち商品画像21の他の一例として、ユーザ2により把持された商品アイテム「訳ありぶどうA」に対応するBboxの部分画像が生成された例が示されている。
【0102】
図20に示すように、CLIPモデル10の画像エンコーダ10Iには、手持ち商品画像21が入力される。この結果、画像エンコーダ10Iは、手持ち商品画像21の埋め込みベクトルI
1を出力する。
【0103】
一方、CLIPモデル10のテキストエンコーダ10Tには、
図10に示す階層構造に従って第一の階層の要素に対応するテキスト「果物」、「魚」、「肉」および「乳製品」がクラスキャプションのリストとして入力される。なお、テキストの入力時には、
図17に示す例と同様に、“Prompt Engineering”を行うことができるのは言うまでもない。
【0104】
この結果、テキストエンコーダ10Tは、テキスト「果物」の埋め込みベクトルT1、テキスト「魚」の埋め込みベクトルT2、テキスト「肉」の埋め込みベクトルT3、・・・、テキスト「乳製品」の埋め込みベクトルTNを出力する。
【0105】
そして、手持ち商品画像21の埋め込みベクトルI1と、テキスト「果物」の埋め込みベクトルT1、テキスト「魚」の埋め込みベクトルT2、テキスト「肉」の埋め込みベクトルT3およびテキスト「乳製品」の埋め込みベクトルTNとの間で類似度が算出される。
【0106】
図20に白黒の反転表示で示す通り、本例では、手持ち商品画像21の埋め込みベクトルI
1と、テキスト「果物」の埋め込みベクトルT
1との類似度が最大となる。このため、CLIPモデル10は、手持ち商品画像21のクラスの予測結果として「果物」を出力する。
【0107】
このように得られた第一の階層の予測結果「果物」は、
図10に示す階層構造で終端ノードではないので、CLIPモデル10の推論が継続される。すなわち、
図21に示すように、
図10に示す階層構造に従って第一の階層の予測結果「果物」の下位に属する第二の階層の要素に対応するテキスト「高価格ぶどう」および「低価格ぶどう」がクラスキャプションのリストとして入力される。
【0108】
この結果、テキストエンコーダ10Tは、テキスト「高価格ぶどう」の埋め込みベクトルT1およびテキスト「高価格ぶどう」の埋め込みベクトルT2を出力する。そして、手持ち商品画像21の埋め込みベクトルI1と、テキスト「高価格ぶどう」の埋め込みベクトルT1およびテキスト「低価格ぶどう」の埋め込みベクトルT2との間で類似度が算出される。
【0109】
図21に白黒の反転表示で示す通り、本例では、手持ち商品画像21の埋め込みベクトルI
1と、テキスト「低価格ぶどう」の埋め込みベクトルT
2との類似度が最大となる。このため、CLIPモデル10は、手持ち商品画像21のクラスの予測結果として「低価格ぶどう」を出力する。
【0110】
このように得られた第二の階層の予測結果「低価格ぶどう」は、
図10に示す階層構造で終端ノードであるので、CLIPモデル10の推論が終了される。この結果、手持ち商品画像21のクラスの予測結果が「低価格ぶどう」と確定される。
【0111】
以上のように、事例2では、上記の事例1に比べて、商品アイテムの価格の分散が閾値th2以下である第三の階層の3つの要素「安いぶどうA」、「安いぶどうB」および「訳ありぶどうA」がクラスキャプションとして入力されるプロセスを省略できる。したがって、事例2によれば、更なるタスク実現の処理コストの削減を実現できる。
【0112】
例えば、手動入力を介してレジ登録された商品アイテムが「訳ありぶどうA」である場合、ゼロショット画像分類器により特定された商品の属性「低価格ぶどう」に含まれる商品アイテム「訳ありぶどうA」と一致する。この場合、バナナトリックが行われていないと判定できる。
【0113】
<2-3-6.アラート生成部>
図2の説明に戻り、アラート生成部118は、不正検出部115により検出された不正に関するアラートを生成する処理部である。
【0114】
1つの側面として、アラート生成部118は、不正検出部115により不正が検出された場合、ユーザ2向けのアラートを生成できる。このようなユーザ2向けのアラートとして、レジ登録された商品アイテムと、ゼロショット画像分類器により特定された商品アイテムとを含めることができる。
【0115】
図22は、アラートの表示例を示す図(1)である。
図22には、第一の検出部116によるラベルスイッチ検出時にセルフレジ50に表示されるアラートが示されている。
図22に示すように、セルフレジ50のタッチパネル51には、アラートウィンドウ220が表示される。このアラートウィンドウ220には、スキャン経由でレジ登録された商品アイテム「安いワインA」と、ゼロショット画像分類器の画像解析により特定された商品アイテム「高いワインB」とが対比できる状態で表示される。この他、アラートウィンドウ220には、スキャンのやり直しを促す通知を含めることができる。このようなアラートウィンドウ220の表示によれば、「高いワインB」のラベルを「安いワインA」のラベルに張り替えてスキャンするラベルスイッチの検知をユーザに警告できる。このため、ラベルスイッチによる精算の中止を促すことができる結果、ラベルスイッチによる店舗の被害を抑制できる。
【0116】
図23は、アラートの表示例を示す図(2)である。
図23には、第二の検出部117によるバナナトリック検出時にセルフレジ50に表示されるアラートが示されている。
図23に示すように、セルフレジ50のタッチパネル51には、アラートウィンドウ230が表示される。このアラートウィンドウ230には、手動入力を介してレジ登録された商品アイテム「訳ありぶどうA」と、ゼロショット画像分類器の画像解析により特定された商品アイテム「シャインマスカット」とが対比できる状態で表示される。この他、アラートウィンドウ230には、訂正入力のやり直しを促す通知を含めることができる。このようなアラートウィンドウ230の表示によれば、「シャインマスカット」を手動入力すべきレジ登録の代わりに「訳ありぶどうA」の手動入力でレジ登録するバナナトリックの検知をユーザに警告できる。このため、バナナスイッチによる精算の中止を促すことができる結果、バナナスイッチによる店舗の被害を抑制できる。
【0117】
他の側面として、アラート生成部118は、不正検出部115により不正が検出された場合、店舗の関係者、例えば管理者向けのアラートを生成できる。このような店舗の管理者向けのアラートとして、不正の種別や不正が検出されたセルフレジ50の識別情報、不正行為による被害予想額などを含めることができる。
【0118】
図24は、アラートの表示例を示す図(3)である。
図24には、第一の検出部116によるラベルスイッチ検出時に管理者端末60の表示部に表示されるアラートが示されている。
図24に示すように、管理者端末60の表示部には、アラートウィンドウ240が表示される。このアラートウィンドウ240には、スキャン経由でレジ登録された商品アイテム「安いワインA」及び価格「900円」と、画像解析により特定された商品アイテム「高いワインB」及び価格「4800円」とが対比できる状態で表示される。さらに、アラートウィンドウ240には、不正種別「ラベルスイッチ」と、ラベルスイッチが発生しているレジ番号「2」と、ラベルスイッチでの精算で発生する被害予想額「3900円(=4800円-900円)」とが表示される。この他、アラートウィンドウ240には、レジ番号「2」のセルフレジ50を利用するユーザ2の顔などが撮影された顔写真の表示、店内放送、あるいは警察などへの通報などのリクエストを受け付けるGUI部品241~243などが表示される。このようなアラートウィンドウ240の表示によれば、ラベルスイッチの被害発生の報知、被害度合いの把握、さらには、被害への各種の対策の提示を実現できる。このため、ユーザ2によるラベルスイッチへの対応を促すことができる結果、ラベルスイッチによる店舗の被害を抑制できる。
【0119】
図25は、アラートの表示例を示す図(4)である。
図25には、第二の検出部117によるバナナトリック検出時に管理者端末60の表示部に表示されるアラートが示されている。
図25に示すように、管理者端末60の表示部には、アラートウィンドウ250が表示される。このアラートウィンドウ250には、手動入力を介してレジ登録された商品アイテム「訳ありぶどうA」及び価格「350円」と、画像解析により特定された商品アイテム「シャインマスカット」及び価格「4500円」とが対比できる状態で表示される。さらに、アラートウィンドウ250には、不正種別「バナナトリック」と、バナナトリックが発生しているレジ番号「2」と、バナナトリックでの精算で発生する被害予想額「4150円(=4500円-350円)」とが表示される。この他、アラートウィンドウ250には、レジ番号「2」のセルフレジ50を利用するユーザ2の顔などが撮影された顔写真の表示、店内放送、あるいは警察などへの通報などのリクエストを受け付けるGUI部品251~253などが表示される。このようなアラートウィンドウ250の表示によれば、バナナトリックの被害発生の報知、被害度合いの把握、さらには、被害への各種の対策の提示を実現できる。このため、ユーザ2によるバナナトリックへの対応を促すことができる結果、バナナトリックによる店舗の被害を抑制できる。
【0120】
<3.処理の流れ>
次に、本実施例にかかる情報処理装置100の処理の流れについて説明する。ここでは、情報処理装置100により実行される(1)データ生成処理、(2)映像取得処理、(3)第一の検出処理、(4)第二の検出処理および(5)特定処理の順に説明することとする。
【0121】
(1)データ生成処理
図26は、実施例1にかかるデータ生成処理の流れを示すフローチャートである。この処理は、あくまで一例として、管理者端末60からリクエストを受け付けた場合などに開始することができる。
【0122】
図26に示すように、データ生成部112は、スーパーマーケットやコンビニエンスストア等の店舗の商品リストを取得する(ステップS101)。続いて、データ生成部112は、階層構造のテンプレートの最下層の要素ごとにシステム定義またはユーザ定義により指定された属性、例えば「価格」に関する属性などを付加する(ステップS102)。
【0123】
そして、データ生成部112は、ステップS102でテンプレートに属性が付加された階層構造の最下層の要素の数Kに対応する回数の分、下記のステップS103の処理を反復するループ処理1を実行する。なお。ここでは、ステップS103の処理が反復される例を挙げるが、ステップS103の処理は並列して実行されてもよい。
【0124】
すなわち、データ生成部112は、ステップS101で取得された商品リストのうち、階層構造の最下層の要素、すなわち価格属性の要素kに対する類似度が閾値th1以上である商品アイテムを抽出する(ステップS103)。
【0125】
このようなループ処理1の結果、価格属性の要素kごとに当該要素kに属する商品アイテムがクラスタリングされることになる。
【0126】
その後、データ生成部112は、ステップS103におけるクラスタリング後の階層構造の全M階層のうち第一の階層から最下層であるM階層を除くM-1階層まで下記のステップS104から下記のステップS106までの処理を反復するループ処理2を行う。さらに、データ生成部112は、m階層の要素の数Nに対応する回数の分、下記のステップS104から下記のステップS106までの処理を反復するループ処理3を実行する。なお。ここでは、ステップS104からステップS106までの処理が反復される例を挙げるが、ステップS104からステップS106までの処理は並列して実行されてもよい。
【0127】
すなわち、データ生成部112は、m階層の要素nに属する商品アイテムの価格の分散Vを算出する(ステップS104)。その上で、データ生成部112は、価格の分散Vが閾値th2以下であるか否かを判定する(ステップS105)。
【0128】
このとき、価格の分散Vが閾値th2以下である場合(ステップS105Yes)、データ生成部112は、要素nよりも下位の階層の探索の打ち切りを決定する(ステップS106)。一方、価格の分散Vが閾値th2以下でない場合(ステップS105No)、要素nよりも下位の階層の探索が継続されるので、ステップS106の処理はスキップされる。
【0129】
このようなループ処理2およびループ処理3により、第一の階層の要素ごとに開始される探索の打ち切りが決定されるか、あるいは探索が第M-1階層の全ての要素が探索されるまで探索が反復される。
【0130】
その上で、データ生成部112は、ステップS104からステップS106までの探索時で得られた価格の分散の判定結果に基づいて階層構造の各ルート(route)の深さを決定する(ステップS107)。
【0131】
このようにM階層の階層構造の各ルートの深さが決定されることにより、階層構造が確定される。このように生成された階層構造が記憶部102の階層構造DB105に保存される。
【0132】
(2)映像取得処理
図27は、実施例1にかかる映像取得処理の流れを示すフローチャートである。
図27に示すように、新規のフレームの画像データが取得された場合(ステップS201Yes)、映像取得部113は、当該画像データを第一の機械学習モデル104A、例えばHOIDモデルへ入力してHOIDの出力結果を取得する(ステップS202)。
【0133】
その上で、映像取得部113は、フレームごとに当該フレームの画像データおよび当該フレームのHOIDの出力結果を対応付けて映像データDB106に格納し(ステップS203)、ステップS201の処理へ戻る。
【0134】
(3)第一の検出処理
図28は、実施例1にかかる第一の検出処理の流れを示すフローチャートである。
図28に示すように、セルフレジ50におけるスキャンを経由して新規の商品コードが取得された場合(ステップS301Yes)、第一の検出部116は、次のような処理を実行する。すなわち、第一の検出部116は、映像データDB106に記憶されたフレームのうち、商品コードがスキャンされた時刻に対応するフレームを検索する(ステップS302)。
【0135】
そして、第一の検出部116は、ステップS302で実行された検索がヒットするフレームに対応するHOIDの出力結果に基づいてユーザ2が商品を把持する手持ち商品画像を生成する(ステップS303)。
【0136】
次に、第一の検出部116は、手持ち商品画像をゼロショット画像分類器に入力し、複数の階層ごとに商品の属性に対応するテキストのリストをゼロショット画像分類器に入力することで、商品アイテムを特定する「特定処理」を実行する(ステップS500)。
【0137】
その上で、第一の検出部116は、スキャン経由でレジ登録された商品アイテムと、ステップS500で特定された商品アイテムまたはその上位の属性に含まれる商品アイテム群とが一致するか否かを判定する(ステップS304)。
【0138】
このとき、両者の商品アイテムが一致しない場合(ステップS305No)、ラベルスイッチが行われたことを検出できる。この場合、アラート生成部118は、第一の検出部116により検出されたラベルスイッチのアラートを生成して出力し(ステップS306)、ステップS301の処理へ戻る。なお、両者の商品アイテムが一致する場合(ステップS305Yes)、ステップS306の処理をスキップしてステップS301の処理へ戻る。
【0139】
(4)第二の検出処理
図29は、実施例1にかかる第二の検出処理の流れを示すフローチャートである。
図28に示すように、セルフレジ50における手動入力を介して新規の商品コードが取得された場合(ステップS401Yes)、第二の検出部117は、次のような処理を実行する。すなわち、第二の検出部117は、映像データDB106に記憶されたフレームのうち、商品コードが手動入力された時刻から遡って直近のHOIDで把持クラスが検出されたフレームを検索する(ステップS402)。
【0140】
そして、第二の検出部117は、ステップS402で実行された検索がヒットするフレームに対応するHOIDの出力結果に基づいてラベルなし商品の手持ち商品画像を生成する(ステップS403)。
【0141】
次に、第二の検出部117は、手持ち商品画像をゼロショット画像分類器に入力し、複数の階層ごとに商品の属性に対応するテキストのリストをゼロショット画像分類器に入力することで、商品アイテムを特定する「特定処理」を実行する(ステップS500)。
【0142】
その上で、第二の検出部117は、手動入力を介してレジ登録された商品アイテムと、ステップS500で特定された商品アイテムまたはその上位の属性に含まれる商品アイテム群とが一致するか否かを判定する(ステップS404)。
【0143】
このとき、両者の商品アイテムが一致しない場合(ステップS405No)、バナナトリックが行われたことを検出できる。この場合、アラート生成部118は、第二の検出部117により検出されたバナナトリックのアラートを生成して出力し(ステップS406)、ステップS401へ戻る。なお、両者の商品アイテムが一致する場合(ステップS405Yes)、ステップS406の処理をスキップしてステップS401の処理へ戻る。
【0144】
(5)特定処理
図30は、実施例1にかかる特定処理の流れを示すフローチャートである。この処理は、
図28に示すステップS500または
図29に示すステップS500の処理に対応する。
図30に示すように、不正検出部115は、ステップS303またはステップS403で生成された手持ち商品画像をゼロショット画像分類器の画像エンコーダ10Iへ入力する(ステップS501)。その後、不正検出部115は、階層構造DB105に記憶された階層構造を参照する(ステップS502)。
【0145】
そして、不正検出部115は、ステップS502で参照された階層構造の最上層から最下層まで下記のステップS503から下記のステップS505までの処理を反復するループ処理1を実行する。なお、ここでは、ステップS503からステップS505までの処理を頒布する例を挙げるが、ステップS503からステップS505までの処理は並列して実行されてよい。
【0146】
さらに、不正検出部115は、m階層の要素の数Nに対応する回数の分、下記のステップS503および下記のステップS504の処理を反復するループ処理2を実行する。なお、ここでは、ステップS503およびステップS504の処理を頒布する例を挙げるが、ステップS503およびステップS504の処理は並列して実行されてよい。
【0147】
すなわち、不正検出部115は、m階層の要素nに対応するテキストをゼロショット画像分類器のテキストエンコーダ10Tへ入力する(ステップS503)。そして、不正検出部115は、ステップS501で手持ち商品画像が入力された画像エンコーダ10Iが出力するベクトルと、ステップS503でテキストが入力されたテキストエンコーダ10Tが出力するベクトルとの間で類似度を算出する(ステップS504)。
【0148】
このようなループ処理2の結果、m階層のN個の要素と、手持ち商品画像との類似度行列が生成される。その上で、不正検出部115は、m階層のN個の要素と、手持ち商品画像との類似度行列のうち類似度が最大である要素を選択する(ステップS505)。
【0149】
その後、不正検出部115は、階層のループカウンタmが1つインクリメントされた1つ下位の階層のうちステップS505で選択された要素の下位に属するN個の要素についてループ処理1を反復する。
【0150】
このようなループ処理1の結果、階層構造の最下層の要素に対応するテキストの入力時にゼロショット画像分類器が出力するテキストが商品アイテムの特定結果として得られる。
【0151】
<4.効果の一側面>
上述してきたように、情報処理装置100は、物体を含む映像を取得する。そして、情報処理装置100は、複数の階層毎に物体の属性が対応付けられた参照元データを参照する機械学習モデル(ゼロショット画像分類器)に対して、取得した映像を入力する。これにより、第一の階層(メロン・リンゴ)の物体の属性の中から、映像に含まれる物体の属性を特定する。その後、情報処理装置100は、特定した物体の属性を用いて、第一の階層の配下の第二の階層(高いメロン・安いメロン)の物体の属性を特定する。その上で、情報処理装置100は、取得した映像を、機械学習モデル(ゼロショット画像分類器)に入力することで、第二の階層の物体の属性の中から、映像に含まれる物体の属性を特定する。
【0152】
したがって、情報処理装置100によれば、大量の訓練データの準備を不要とし、商品のライフサイクルに合わせたリチューンも不要である機械学習モデル(ゼロショット画像分類器)を用いて、セルフレジにおける不正行為の検出を実現できる。
【0153】
また、情報処理装置100は、セルフレジ50に商品のコードをスキャンする人物の映像を取得する。そして、情報処理装置100は、取得した映像を、機械学習モデル(ゼロショット画像分類器)に入力することで、予め設定された複数の商品候補(テキスト)の中から、映像に含まれる商品に対応する商品候補を特定する。その後、情報処理装置100は、セルフレジ50に商品のコードをスキャンすることでセルフレジ50が識別した商品の項目を取得する。その上で、情報処理装置100は、特定した商品候補の項目と、セルフレジ50から取得した商品の項目とに基づいて、セルフレジ50に登録された商品の異常を示すアラートを生成する。
【0154】
したがって、情報処理装置100によれば、1つの側面として、セルフレジ50におけるラベルスイッチの検出時にアラートを出力できるので、セルフレジ50におけるラベルスイッチを抑制できる。
【0155】
また、情報処理装置100は、セルフレジ50に登録する商品を把持する人物の映像を取得する。そして、情報処理装置100は、取得した映像を、機械学習モデル(ゼロショット画像分類器)に入力することで、予め設定された複数の商品候補(テキスト)の中から、映像に含まれる商品に対応する商品候補を特定する。その後、情報処理装置100は、セルフレジ50が出力する複数の商品候補の中から、人物が入力した商品の項目を取得する。その上で、情報処理装置100は、取得した商品の項目と、特定した商品候補とに基づいて、セルフレジ50に登録された商品の異常を示すアラートを生成する。
【0156】
したがって、情報処理装置100によれば、1つの側面として、セルフレジ50におけるバナナトリックの検出時にアラートを出力できるので、セルフレジ50におけるバナナトリックを抑制できる。
【0157】
また、情報処理装置100は、商品データを取得し、取得した商品データに含まれる商品の属性の分散関係に基づいて、複数の階層毎に商品の属性が対応付けられた参照元データを生成する。その上で、情報処理装置100は、生成された参照元データを、ゼロショット画像分類器が参照する参照データとして設定する。
【0158】
したがって、情報処理装置100によれば、セルフレジ50における不正行為の検出に用いるゼロショット画像分類器により参照されるデータ数の削減を実現できる。
このように商品の個数や個数の単位のラベルが階層構造に含まれる場合、上記のラベルスイッチに加えて、ラベルスイッチにより実際の購入個数よりも少ない個数のスキャンを行う不正の検出を実現できる。以下、ラベルスイッチにより実際の購入個数よりも少ない個数のスキャンを行う不正のことを指して「ラベルスイッチ(個数)」と記載する場合がある。
以上の絞り込みにより、手持ち商品画像22に含まれる商品アイテムは「缶ビールA」であることが特定できると共に、その個数が「6本」であることも特定できる。これを活用する側面から、第一の検出部116は、上記のラベルスイッチの判定に加え、次のような判定を実施する。すなわち、第一の検出部116は、スキャン経由でレジ登録された商品アイテムの個数がゼロショット画像分類器の画像解析により特定された商品アイテムの個数よりも少ないか否かを判定する。このとき、スキャン経由でレジ登録された商品アイテムの個数が画像解析により特定された商品アイテムの個数よりも少ない場合、ラベルスイッチにより実際の購入個数よりも少ない個数のスキャンを行う不正を検出できる。
このように購入個数をごまかす不正が検出された場合、アラート生成部118は、第一の検出部116によりラベルスイッチ(個数)が検出された場合、ユーザ2向けのアラートを生成できる。このようなユーザ2向けのアラートとして、レジ登録された商品アイテムの個数と、ゼロショット画像分類器の画像解析により特定された商品アイテムの個数とを含めることができる。
他の側面として、アラート生成部118は、第一の検出部116によりラベルスイッチ(個数)が検出された場合、店舗の関係者、例えば管理者向けのアラートを生成できる。このような店舗の管理者向けのアラートとして、不正の種別や不正が検出されたセルフレジ50の識別情報、不正行為による被害予想額などを含めることができる。
すなわち、商品アイテムが一致する場合(ステップS305Yes)、第一の検出部116は、スキャン経由でレジ登録された商品アイテムの個数が画像解析により特定された商品アイテムの個数よりも少ないか否かを判定する(ステップS601)。
ここで、スキャン経由でレジ登録された商品アイテムの個数が画像解析により特定された商品アイテムの個数よりも少ない場合(ステップS601Yes)、ラベルスイッチにより実際の購入個数よりも少ない個数のスキャンを行うラベルスイッチ(個数)を検出できる。この場合、アラート生成部118は、第一の検出部116により検出されたラベルスイッチ(個数)のアラートを生成して出力し(ステップS602)、ステップS301の処理へ戻る。
このように商品の個数や個数の単位のラベルが階層構造に含まれる場合、上記のバナナトリックに加えて、バナナトリックにより実際の購入個数よりも少ない個数の手動入力を行う不正の検出を実現できる。以下、バナナトリックにより実際の購入個数よりも少ない個数の手動入力を行う不正のことを指して「バナナトリック(個数)」と記載する場合がある。
以上の絞り込みにより、手持ち商品画像23に含まれる商品アイテムは「2房のぶどうA」であることが特定できると共に、その個数が「2房」であることも特定できる。これを活用する側面から、第二の検出部117は、上記のバナナトリックの判定に加え、次のような判定を実施する。すなわち、第二の検出部117は、手動入力を介してレジ登録された商品アイテムの個数がゼロショット画像分類器の画像解析により特定された商品アイテムの個数よりも少ないか否かを判定する。このとき、手動入力を介してレジ登録された商品アイテムの個数が画像解析により特定された商品アイテムの個数よりも少ない場合、バナナトリックにより実際の購入個数よりも少ない個数の手動入力を行う不正を検出できる。
このように購入個数をごまかす不正が検出された場合、アラート生成部118は、第二の検出部117によりバナナトリック(個数)が検出された場合、ユーザ2向けのアラートを生成できる。このようなユーザ2向けのアラートとして、レジ登録された商品アイテムの個数と、ゼロショット画像分類器の画像解析により特定された商品アイテムの個数とを含めることができる。
他の側面として、アラート生成部118は、第二の検出部117によりバナナトリック(個数)が検出された場合、店舗の関係者、例えば管理者向けのアラートを生成できる。このような店舗の管理者向けのアラートとして、不正の種別や不正が検出されたセルフレジ50の識別情報、不正行為による被害予想額などを含めることができる。
すなわち、商品アイテムが一致する場合(ステップS405Yes)、第二の検出部117は、手動入力を介してレジ登録された商品アイテムの個数が画像解析により特定された商品アイテムの個数よりも少ないか否かを判定する(ステップS701)。
ここで、手動入力を介してレジ登録された商品アイテムの個数が画像解析により特定された商品アイテムの個数よりも少ない場合(ステップS701Yes)、次のような可能性が高まる。すなわち、バナナトリックにより実際の購入個数よりも少ない個数の手動入力を行うバナナトリック(個数)を検出できる。この場合、アラート生成部118は、第二の検出部117により検出されたバナナトリック(個数)のアラートを生成して出力し(ステップS702)、ステップS401の処理へ戻る。
このように商品の個数や個数の単位のラベルがいずれの階層に含まれる場合でも、上記のラベルスイッチ(個数)や上記のバナナトリック(個数)などの購入個数をごまかす不正を検出できる。
このように、商品の属性の例として、「色」や「形状」などの要素がテンプレートに付加されることで、ゼロショット画像分類器のクラスキャプションのテキストを特徴量空間に埋め込む精度を高めることができる。
あくまで一例として、階層構造データは、時期ごとに当該時期に店舗へ入荷される商品に基づいて生成されることとしてもよい。例えば、店舗における商品の入れ替えが1ヶ月ごとに実施される場合、データ生成部112は、次のようにして時期ごとに階層構造データを生成できる。すなわち、2022年11月の入荷商品に関する階層構造データ、2022年12月の入荷商品に関する階層構造データ、2023年1月の入荷商品に関する階層構造データといったスキームで時期ごとに階層構造データが生成される。その上で、不正検出部115は、時期ごとに記憶される階層構造データのうち、商品アイテムの特定時に対応する階層構造データを参照し、これをゼロショット画像分類器のテキストエンコーダへ入力する。これにより、店舗の商品の入れ替えに合わせてゼロショット画像分類器により参照される参照元データを切り替えることができる。この結果、店舗の商品のライフサイクルが短い場合でも、商品の入れ替え前後を通じて商品アイテムの特定精度の安定を実現できる。
また、情報処理装置100は、スキャン位置や買い物かごの位置については、位置を検出する別の機械学習モデル、物体検知技術、位置検出技術など公知の技術を用いることもできる。例えば、情報処理装置100は、フレーム(画像データ)間差分、フレームの時系列の変化に基づき、買い物かごの位置を検出することができるので、それを用いて検出してもよく、それを用いて別のモデルを生成してもよい。また、情報処理装置100は、予め買い物かごの大きさを指定しておくことで、画像データからその大きさの物体が検出された場合に、買い物かごの位置として識別することもできる。なお、スキャン位置は、ある程度固定された位置なので、情報処理装置100は、管理者等が指定した位置をスキャン位置として識別することもできる。
また、各装置の構成要素の分散や統合の具体的形態は図示のものに限られない。例えば、映像取得部113と不正検出部115とが統合されてもよく、不正検出部115は第一の検出部116と第二の検出部117とに分散されてもよい。つまり、その構成要素の全部または一部は、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合されてもよい。さらに、各装置の各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
このように、情報処理装置100は、プログラムを読み出して実行することで情報処理方法を実行する情報処理装置として動作する。また、情報処理装置100は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施例と同様の機能を実現することもできる。なお、この他の実施例でいうプログラムは、情報処理装置100によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、上記実施例が同様に適用されてもよい。
このプログラムは、インターネットなどのネットワークを介して配布されてもよい。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)などのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行されてもよい。
通信インタフェース400aは、ネットワークインタフェースカードなどであり、他の情報処理装置との通信を行う。HDD400bは、セルフレジ50の各機能を動作させるプログラムやデータを記憶する。
プロセッサ400dは、セルフレジ50の各機能の処理を実行するプログラムをHDD400bなどから読み出してメモリ400cに展開することで、セルフレジ50の各機能を実行するプロセスを動作させるハードウェア回路である。すなわち、このプロセスは、セルフレジ50が有する各処理部と同様の機能を実行する。
このように、セルフレジ50は、セルフレジ50の各機能の処理を実行するプログラムを読み出して実行することで動作制御処理を実行する情報処理装置として動作する。また、セルフレジ50は、媒体読取装置によって記録媒体からプログラムを読み出し、読み出されたプログラムを実行することでセルフレジ50の各機能を実現することもできる。なお、この他の実施例でいうプログラムは、セルフレジ50によって実行されることに限定されるものではない。例えば、他のコンピュータまたはサーバがプログラムを実行する場合や、これらが協働してプログラムを実行するような場合にも、本実施形態が同様に適用されてよい。
また、セルフレジ50の各機能の処理を実行するプログラムは、インターネットなどのネットワークを介して配布できる。また、このプログラムは、ハードディスク、FD、CD-ROM、MO、DVDなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行できる。
入力装置400eは、プロセッサ400dによって実行されるプログラムに対する入力操作など、ユーザによる各種入力操作を検知する。当該入力操作には、例えば、タッチ操作などが含まれる。タッチ操作の場合、セルフレジ50はさらに表示部を備え、入力装置400eによって検知される入力操作は、当該表示部に対するタッチ操作であってよい。入力装置400eは、例えば、ボタン、タッチパネル、近接センサなどであってよい。また、入力装置400eは、バーコードの読み取りをする。入力装置400eは、例えば、バーコードリーダである。バーコードリーダは、光源と光センサを持ち、バーコードをスキャンする。
出力装置400fは、プロセッサ400dによって実行されるプログラムから出力されるデータをセルフレジ50に接続された外部装置、例えば、外部ディスプレイ装置などを介して出力する。なお、セルフレジ50が表示部を備える場合、セルフレジ50は出力装置400fを備えなくてもよい。