IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ エクスペディア, インコーポレイテッドの特許一覧

<>
  • 特許-画像分類システム 図1
  • 特許-画像分類システム 図2
  • 特許-画像分類システム 図3
  • 特許-画像分類システム 図4
  • 特許-画像分類システム 図5
  • 特許-画像分類システム 図6A
  • 特許-画像分類システム 図6B
  • 特許-画像分類システム 図6C
  • 特許-画像分類システム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-16
(45)【発行日】2023-10-24
(54)【発明の名称】画像分類システム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20231017BHJP
   G06V 10/82 20220101ALI20231017BHJP
【FI】
G06T7/00 350C
G06V10/82
【請求項の数】 15
(21)【出願番号】P 2021573504
(86)(22)【出願日】2020-06-04
(65)【公表番号】
(43)【公表日】2022-08-18
(86)【国際出願番号】 US2020036092
(87)【国際公開番号】W WO2020251831
(87)【国際公開日】2020-12-17
【審査請求日】2022-02-10
(31)【優先権主張番号】16/440,859
(32)【優先日】2019-06-13
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508097593
【氏名又は名称】エクスペディア, インコーポレイテッド
【氏名又は名称原語表記】Expedia, Inc.
【住所又は居所原語表記】1111 Expedia Group Way W., Seattle, WA 98119, United States of America
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100098501
【弁理士】
【氏名又は名称】森田 拓
(74)【代理人】
【識別番号】100116403
【弁理士】
【氏名又は名称】前川 純一
(74)【代理人】
【識別番号】100134315
【弁理士】
【氏名又は名称】永島 秀郎
(74)【代理人】
【識別番号】100162880
【弁理士】
【氏名又は名称】上島 類
(72)【発明者】
【氏名】リー ウェン
(72)【発明者】
【氏名】フオ ヂャンペン
(72)【発明者】
【氏名】ジンヤ ジャン
【審査官】松浦 功
(56)【参考文献】
【文献】米国特許出願公開第2007/0098252(US,A1)
【文献】国際公開第2018/232378(WO,A1)
【文献】特開2010-122746(JP,A)
【文献】欧州特許出願公開第03493154(EP,A1)
【文献】特表2017-531240(JP,A)
【文献】特表2018-526719(JP,A)
【文献】特表2019-514107(JP,A)
【文献】YAN, Z. et al.,HD-CNN: Hierarchical Deep Convolutional Neural Networks for Large Scale Visual Recognition,2015 IEEE International Conference on Computer Vision (ICCV) [online],IEEE,2015年,pp. 2740-2748,[検索日 2023.03.07], インターネット,URL:https://ieeexplore.ieee.org/document/7410671
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
G06V 10/00 -20/90
(57)【特許請求の範囲】
【請求項1】
画像を分類するためのシステムであって、
ベースモデルおよび複数の作業モデルを含む複数の機械学習モデルを含むデータストアと、
1つ以上のプロセッサと、
を備え、
前記1つ以上のプロセッサが、コンピュータ実行可能命令により、少なくとも、
複数のアイテムラベルのうちの1つとして分類するためにユーザによって選択された画像を受信することと、
前記ベースモデルおよび前記画像を使用して、前記画像の複数の特徴を表すベースモデル出力ベクトルを生成することと、
前記ベースモデル出力ベクトルと前記複数の作業モデルのうちの第1の作業モデルとを使用して、前記画像に関連付けられる第1のアイテムラベルを決定することと、
前記ベースモデル出力ベクトルと前記複数の作業モデルのうちの第2の作業モデルとを使用して、前記画像に関連付けられるカテゴリグループラベルを決定することと、
前記カテゴリグループラベルの選択を示す第1のユーザ入力を受信することと、
前記ベースモデル出力ベクトルと、前記複数の作業モデルのうちの、前記カテゴリグループラベルに関連する第3の作業モデルとを使用して、前記画像に関連付けられるカテゴリラベルを決定することと、
前記カテゴリラベルの選択を示す第2のユーザ入力を受信することと、
前記ベースモデル出力と、前記複数の作業モデルのうちの、前記カテゴリラベルに関連する第4の作業モデルとを使用して、前記画像に関連付けられる第2のアイテムラベルを決定することと、
前記第2のアイテムラベルの選択を示す第3のユーザ入力を受信することと、
前記画像と、前記画像に関連付けられ、前記第2のアイテムラベルを表す分類データとを送信することと
を行うように構成されている、
システム。
【請求項2】
前記ベースモデルが、前記画像を使用して出力を生成するために1度だけ使用される、請求項1記載のシステム。
【請求項3】
前記ベースモデルおよび前記複数の作業モデルが、それぞれ、ニューラルネットワークベースのモデルである、請求項1記載のシステム。
【請求項4】
前記第1の作業モデルが、前記第1のアイテムラベルに関連する第1の信頼値を生成し、前記第1のアイテムラベルが、閾値を超える前記第1の信頼値に少なくとも部分的に基づいて表示される、請求項1記載のシステム。
【請求項5】
定の命令を実行するように構成された1つ以上のコンピュータプロセッサを備えるコンピューティングシステムによって実行される際に、コンピュータに、
分類すべき画像を受信することと、
ベースモデルネットワークおよび前記画像を使用して、前記画像に関連するベースモデル出力を生成することと、
作業モデル出力を生成するために、作業モデルネットワークの階層から、作業モデルネットワークのサブセットを選択することであって、前記作業モデルネットワークのサブセットは、前記階層の第1のレベルからの第1の作業モデルネットワークと、前記階層の第2のレベルからの第2の作業モデルネットワークとを含む、前記選択することと、
作業モデルネットワークの前記サブセットを選択した後、作業モデルネットワークの前記サブセットと前記ベースモデル出力とを用いて複数の作業モデル出力を生成することと、
前記画像の分類に関するユーザ入力を受け付けるように構成された画像分類インタフェースを表示することと、
前記画像分類インタフェースへのユーザ入力を表すユーザ対話データを受信することと、
前記画像に関連付けられるラベルを決定することであって、前記ラベルが、前記複数の作業モデル出力および前記ユーザ入力に少なくとも部分的に基づいて決定される、ことと、
実行させるための
プログラム
【請求項6】
前記複数の作業モデル出力のそれぞれが、同じベースモデル出力を使用して生成される、請求項5記載のプログラム
【請求項7】
前記コンピュータに、前記ベースモデル出力をキャッシュに記憶することをさらに実行させるための、請求項5記載のプログラム
【請求項8】
コンピュータに、前記ベースモデル出力を前記キャッシュからロードすることをさらに実行させ、前記ベースモデル出力が前記キャッシュからロードされた後に、前記複数の作業モデル出力のうちの少なくとも1つが生成される、請求項7記載のプログラム
【請求項9】
前記コンピュータに、
前記ベースモデルネットワークおよび複数の前記作業モデルネットワークを、ネットワークを介してリモートシステムから受信することと、
前記ベースモデルネットワークおよび前記複数の作業モデルネットワークを前記コンピューティングシステムのローカルデータストアに記憶することと、
をさらに実行させるための、請求項5記載のプログラム
【請求項10】
前記コンピュータに、前記ベースモデルネットワークおよび前記複数の作業モデルネットワークをローカルデータストアからロードすることをさらに実行させ、前記ローカルデータストアがブラウザベースのデータストアを含む、請求項9記載のプログラム
【請求項11】
前記複数の作業モデル出力を生成することが、第1の作業モデルネットワークを使用して第1の作業モデル出力を生成することと並行して、第2の作業モデルネットワークを使用して第2の作業モデル出力を生成することを含む、請求項5記載のプログラム
【請求項12】
前記複数の作業モデル出力を生成することが、第1の作業モデルネットワークを使用して第1の作業モデル出力を生成した後に、第2の作業モデルネットワークを使用して第2の作業モデル出力を生成することを含む、請求項5記載のプログラム
【請求項13】
第1の作業モデル出力が、前記ラベルに関連する第1の信頼スコアおよび第2のラベルに関連する第2の信頼スコアを含む、請求項5記載のプログラム
【請求項14】
前記コンピュータに、閾値を満たす前記第1の信頼スコア、または前記第1の信頼スコアと前記第2の信頼スコアの差、の少なくとも1つに基づいて、ラベルを表示することを決定することをさらに実行させるための、請求項13記載のプログラム
【請求項15】
前記コンピュータに、
分類のために前記ユーザによって選択された第2の画像を受信することと、
前記ベースモデルネットワークおよび前記第2の画像を使用して、前記第2の画像に関連する第2のベースモデル出力を生成することと、
数の前記作業モデルネットワークおよび前記ベースモデル出力を使用して、複数の第2の作業モデル出力を生成することと、
前記第2の画像に関連付けられる第2のラベルを決定することであって、前記第2のラベルが、複数の前記第2の作業モデル出力に少なくとも部分的に基づいて決定され、前記第2のラベルは前記ラベルと異なる、ことと、
をさらに実行させるための、請求項5記載のプログラム
【発明の詳細な説明】
【技術分野】
【0001】
コンピューティングデバイスはしばしば、画像を見たり、画像と対話したりするために使用される。例えば、コンピューティングデバイスは、画像を受信し、ラベルまたは識別子を使用して画像を自動的に分類することができる。幾つかのコンピューティングデバイスは、画像を分類するために使用される機械学習モデルを訓練することができ、これにより、受信した任意の画像をモデルが正しく識別し、またはラベルに関連付けることを可能にする。動作中、コンピューティングデバイスは、様々な機械学習モデルを使用して、画像を特定のラベル、識別子または他の分類に関連付けることができる。その後、ユーザは、コンピュータが生成した分類を確定したり、異なる分類を選択したりすることができる。
【0002】
図面を通して、参照される要素間の対応関係を示すために参照番号を再使用したところがある。図面は、本明細書に記載する例示的な実施形態を説明するために提供され、本開示の範囲を制限することを意図していない。
【図面の簡単な説明】
【0003】
図1】幾つかの実施形態による画像分類システムを含む例示的なコンピューティング環境のブロック図である。
図2】幾つかの実施形態による、ベースモデルおよび複数の作業モデルを使用した画像分類のための例示的なプロセスのフロー図である。
図3】幾つかの実施形態による画像分類システムによって利用されるモデルアーキテクチャの例の視覚的表現である。
図4】幾つかの実施形態による画像分類階層を使用した画像分類のための例示的なプロセスのフロー図である。
図5】幾つかの実施形態による画像分類階層を使用した画像分類のための別の例示的なプロセスのフロー図である。
図6A】幾つかの実施形態による、画像をアップロードし分類するための様々な対話ツールを示す画像分類インタフェースのユーザインタフェース図である。
図6B】幾つかの実施形態による、アップロードされた画像の評価を示す画像分類インタフェースのユーザインタフェース図である。
図6C】幾つかの実施形態による画像分類階層を示す図である。
図7】幾つかの実施形態による、本開示の特徴を実施するように構成された例示的なコンピューティングシステムのブロック図である。
【0004】
例示的な実施形態の詳細な説明
本開示は、ベースとなる機械学習モデルを共有する複数の機械学習モデルを使用して、画像の可能性の高い分類を決定するための画像分類システムを対象とする。画像分類システムは、リモートシステムからネットワークを介して複数の機械学習モデルを一度取得し、ユーザのコンピューティングデバイス上にモデルをローカルに記憶し、その後にリモートシステムにモデルを再び要求せずに、モデルを複数回使用する、ユーザのコンピューティングデバイス上のブラウザベースのシステムであることができる。したがって、画像分類システムは、リモートシステムに対するリモートのアプリケーションプログラミングインタフェース(API)呼び出しを行うことなく、ユーザのコンピューティングデバイス上で任意の数の画像について、任意の回数、機械学習モデルを実行することにより、画像に関連付けられる可能性の高い分類を決定することができる。
【0005】
画像認識のための従来のシステムは、多くのコストおよび非効率性を伴う。画像は、しばしばコンピューティングデバイスにアップロードされて、手動で類別される。例えば、ユーザは、ホテルの部屋の写真をアップロードした後に、メニューを手動でスクロールさせて、可能なカテゴリのリストから所定のカテゴリを選択する場合がある。ユーザは、複数のカテゴリへの画像の関連付け、複数の写真をアップロードなどを行いたければ、プロセスを複数回繰り返さなければならない場合がある。また、従来の機械学習システムを利用して、画像に関連付けられるカテゴリを予測するときにも問題がある。例えば、従来の幾つかのシステムは、画像に関連付けられる複数の可能なラベルを決定するために1つのモデルに依存しており、このことは、十分に訓練されていないモデル、および不正確な予測につながる場合がある。別の例として、従来の幾つかのシステムは、異なる分類を決定するために複数の完全なモデルに依存しており、複数のモデルの実行により、特定の動作の冗長な実行または演算リソースの全体的に非効率な使用をもたらす場合がある。また別の例として、機械学習を使用する従来の幾つかの画像類別システムは、ユーザの演算リソースに負荷を及ぼしたり、ユーザが知覚する許容できない待ち時間を引き起こしたりする場合がある。これは、ユーザが画像類別プロセスを実行するたびにリモートのAPIコールが実行される場合があったり、各画像分類セッションの前または最中に機械学習モデルの取得が行われる場合があったりするためである。
【0006】
本開示の態様はとりわけ、画像分類に伴う上述したような問題に対処する。より具体的に、画像分類システムは、リモートシステムから、複数の機械学習モデルを取得し、ローカルの持続的なデータストアにモデルを記憶する。その後、モデルには、リモートシステムに対する追加の要求を必ずしも必要とせずに、画像分類システムによって迅速にアクセスすることができる。モデルのセットは、「ベースモデル」とも称するベースとなる機械学習モデル、および「作業モデル」とも称する追加の複数の機械学習モデルを含むことができる。作業モデルはそれぞれ、ベースモデルの出力を受け入れて解析するように構成される。よって、ベースモデルは、特定の画像について一度だけ実行すればよく、ベースモデルの出力は、分類タスクを実行するために複数の作業モデルによって解析することができる。特定の画像についてベースモデル出力を一度生成し、ベースモデル出力をキャッシュすることで、作業モデルごとにベースモデル出力を再生成する必要なしに、任意の数の作業モデルによって連続的に、並列に、または非同期で処理するために、ベースモデル出力を利用可能にすることができる。その上、ベースモデルによって行われる操作を分離し、任意の特定の画像について一度だけ操作を実行することにより、作業モデルはそれぞれ、作業モデルがベースモデルの操作(またはその幾つかの同類のもの)をそれぞれ含む場合よりも小さくすることができ、少ない操作を含むことができ、訓練の効率を高めることができ、実行に要する時間および演算リソースを少なくすることができる。
【0007】
幾つかの実施形態では、作業モデルは、画像分類階層の1つ以上のレベルで画像の分類を決定するように構成される。例として、ユーザは、特定の画像が「プール」カテゴリの分類ラベルに関連付けられることを示すことができる。この場合、画像分類システムは、画像に示されたプールの種類を決定するために、プール画像について特別に訓練された作業モデルを使用して、プールの種類を示す可能性の高いアイテム固有の分類ラベルを決定することができる。アイテム固有の分類は、作業モデルの出力に基づいて、分類が1つ以上の分類基準(例えば、最小閾値を満たすスコアに分類が関連付けられる、2番目に高いスコア分類に関連するスコアよりも少なくとも閾値だけ高いスコアに分類が関連付けられる、など)を満たすという意味で「可能性の高い」ものとすることができる。
【0008】
本開示で説明する幾つかの実施形態の態様は、例示のために分類、ラベル、装置、フレームワーク、機械学習モデル、アルゴリズムなどの特定の例に焦点を当てるが、これらの例は例示にすぎず、限定することを意図していない。幾つかの実施形態では、本明細書に記載される技術は、追加のまたは代替の分類、ラベル、装置、フレームワーク、機械学習モデルおよびアルゴリズムに適用することができる。次に、本開示の様々な態様を、特定の例および実施形態に関して説明するが、これらは例示を意図しており、本開示を限定することを意図していない。
【0009】
画像分類環境
例示的な実施形態を参照すると、図1は、本開示の態様を実施しうるネットワーク環境の例を示す。図示しているように、ネットワーク環境は、リモートシステム106および画像分類システム118を含むことができる。画像分類システム118とリモートシステム106は、1つ以上の通信ネットワーク114を介して互いに通信することができる。通信ネットワーク114(単に「ネットワーク」とも称する)は、様々な別個の関係者によって運用される可能性があるリンクされたネットワークからなる、公衆にとってアクセス可能な、インターネットなどのネットワークであることができる。幾つかの実施形態では、通信ネットワーク114は、パーソナルエリアネットワーク(「PAN」)、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、グローバルエリアネットワーク(「GAN」)、もしくはこれらの何らかの組み合わせであること、またはこれらのいずれかを含むことができ、これらのいずれかまたは全てがインターネットへのアクセスおよび/またはインターネットからのアクセスを有しても、有してなくてもよい。
【0010】
概して、リモートシステム106は、エンティティ(例えば、企業またはユーザ)によって操作されるコンピューティングシステムであることができる。例えば、リモートシステム106は、販売または賃貸に供される不動産などのアイテムのリストおよび画像を管理するように構成されてもよい。リモートシステム106は、ウェブページ、モバイルデバイスアプリケーション、スクリプト、プログラムなどのネットワークリソースをホストし提供することができる。ネットワークリソースは、ユーザが指定したまたは自動的に決定された、画像中に示される対象、場所および/またはテーマの分類に基づいて、アイテムに関連付けられた画像を含む、アイテムに関する情報を含むことができる。
【0011】
幾つかの実施形態では、リモートシステム106は、データストア110を備えることができる。幾つかの実施形態では、データストア110は、画像分類システム118に送信されうる機械学習モデルを記憶するように構成することができる。幾つかの実施形態では、画像分類システム118は、データストア110に記憶されるように、アップロードされた各画像および関連する分類データをリモートシステム106に送信することができる。
【0012】
幾つかの実施形態では、図1に示すように、画像分類システム118は、ユーザインタフェースユニット122、モデル選択ユニット126、ベースモデルユニット130、作業モデルユニット134、モデルデータストア138およびベースモデル出力データストア140を備えることができる。幾つかの実施形態では、ユーザインタフェースユニット122は、ユーザ対話を可能にするユーザインタフェースを生成することができる。例えば、ユーザインタフェースユニット122は、リモートシステム106などのサーバからネットワークリソースを受信することができる。ユーザインタフェースユニット122は、リモートシステム106への1つ以上の画像のアップロードおよび画像分類システム118を使用した画像の分類をユーザが開始できるようにする対話コントローラを含む、ネットワークリソースの表示を生成することができる。幾つかの実施形態では、モデル選択ユニット126は、モデルデータストア138にアクセスし、リモートシステム106にアップロードされる画像を分類するための機械学習モデルを選択することができる。例えば、モデル選択ユニット126は、ベースモデルおよび1つ以上の作業モデルを選択しうる。幾つかの実施形態では、モデルデータストア138に記憶されている機械学習モデルは、畳み込みニューラルネットワークモデルである。
【0013】
図1の例は、画像分類システムの限定された構成要素のセットを表示するが、他の実施形態では他の構成が存在してもよいことが理解されよう。
【0014】
ベースモデルおよび複数の作業モデルを使用した画像分類
図2は、ベースモデルおよび同じベースモデル出力を処理する複数の作業モデルを使用して画像を分類するために、画像分類システム118によって実行しうるプロセス200の例を示す。例えば、プロセス200は、図3に示すベースモデルネットワーク300および作業モデルネットワーク302を使用しうる。
【0015】
プロセス200が開始すると、1つ以上の非一時的なコンピュータ可読媒体(例えば、ハードドライブ、フラッシュメモリ、リムーバブル媒体など)に記憶されている実行可能プログラム命令のセットを、図7に示す画像分類システムのコンピューティングデバイス700などのコンピューティングデバイスのメモリ(例えば、ランダムアクセスメモリ、すなわち「RAM」)にロードすることができる。幾つかの実施形態では、プロセス200またはその一部を、(同じまたは別個のコンピューティングデバイス上の)複数のプロセッサ上で連続的にまたは並列に実施することができる。
【0016】
ブロック202で、画像分類システム118は、分類すべき画像を取得することができる。例えば、画像分類システム118は、ユーザによって選択された画像を受信してもよい。
【0017】
判定ブロック204で、画像分類システム118は、画像に関するベースモデル出力がキャッシュされているかどうかを決定することができる。画像分類システム118は、ベースモデル出力データストア140をチェックして、画像に関するベースモデル出力が存在するかどうかを決定することができる。例えば、ベースモデル出力データストア140は、ベースモデルユニット130によってベースモデル出力が生成された直近の画像に関するベースモデル出力を含みうる。別の例として、ベースモデル出力データストア140は、画像分類システム118によって分類された画像ごとにベースモデル出力を含むこともある。更なる例として、ベースモデル出力データストア140は、画像分類システム118によって分類された画像の下位集合だけ(例えば、直近のx個[ここでxは個数である]の画像だけ、データストア140の最大サイズに収まることができるベースモデル出力だけ、など)を表すベースモデル出力を含むこともある。幾つかの実施形態では、ベースモデル出力データストア140に記憶されているベースモデル出力は、画像のハッシュ、画像の名前、何らかの他の一意の識別子などの識別子に関連付けることができる。
【0018】
現在の画像に関するベースモデル出力がベースモデル出力データストア140で利用可能であれば、プロセス200はブロック210に進むことができる。そうでなく、現在の画像に関するベースモデル出力が利用可能でなければ、プロセス200はブロック206に進むことができる。
【0019】
ブロック206で、ベースモデルユニット130は、モデルデータストア138に記憶されているベースモデルなどのベースモデルを使用して画像を解析することができる。幾つかの実施形態では、ベースモデルユニット130はまず、画像から得られるデータの特徴ベクトルの形態のベースモデル入力など、画像を表すベースモデル入力を生成することができる。幾つかの実施形態では、ベースモデル入力は、画像自体、スケーリングされたバージョンの画像、またはベースモデルによる解析のための何らかの他の標準化もしくは前処理された形態の画像であることができる。ベースモデルユニット130は、ベースモデルを使用してベースモデル入力を処理して、ベースモデル出力を生成することができる。幾つかの実施形態では、ベースモデル出力は特徴ベクトルであることができる。特徴ベクトルは、作業モデルの1つ以上に入力され、これによって処理されうる形態で画像を表すデータの多次元ベクトル(例えば、1280次元のベクトル)であることができる。このような特徴ベクトルをベースモデル出力ベクトルと称する場合がある。
【0020】
ブロック208で、ベースモデルユニット130は、ベースモデル出力をベースモデル出力データストア140に記憶することができる。特定の画像に関するベースモデル出力を一度生成し、これをベースモデル出力データストア140に記憶することで、作業モデルごとにベースモデル出力を再生成する必要なしに、任意の数の作業モデルによる(連続的な、並列または非同期の)処理にベースモデル出力を利用可能にすることができる。
【0021】
ブロック210で、モデル選択ユニット126または画像分類システム118のいずれかの他の構成要素は、現在の画像に関するベースモデル出力の処理に使用される1つ以上の作業モデルを選択することができる。例えば、マルチレベル階層のトップレベル、ミドルレベルおよび/またはボトムレベルに画像を関連付けることができる。モデル選択ユニット126は、可能性の高いトップレベルの分類を決定するように構成された作業モデル、可能性の高いミドルレベルの分類を決定するように構成された作業モデル、および/または可能性の高いボトムレベルの分類を決定するように構成された作業モデルを選択することができる。
【0022】
ブロック212で、作業モデルユニット134は、選択された作業モデルを使用して、現在の画像に関するベースモデル出力を処理することができる。各作業モデルは、ベースモデル出力を入力として使用することができ、各作業モデルは、分類、または可能性の高い分類を決定できるデータを出力することができる。幾つかの実施形態では、作業モデルユニット134は、それぞれ特定のタスクのために訓練された複数の作業モデルを同時に実行することができる。例えば、画像分類システムは、1つのレベルがカテゴリグループに対応し、第2のレベルがより高いレベルのカテゴリグループ内の個々のカテゴリに対応し、第3のレベルがより高いレベルのカテゴリ内のサブカテゴリに対応する、マルチレベル階層に関して画像を解析するように構成されていてよい。サブカテゴリをアイテムと称する場合もある。作業モデルユニット134は、画像に関連付けられる可能性の高いカテゴリグループラベル(例えば、物件の特徴)を「予測」または決定するように構成された作業モデル、画像に関連付けられる可能性の高いカテゴリ(例えば、プール)を決定するように構成された作業モデル、および/または画像に関連付けられる可能性の高いアイテムラベル(例えば、屋外プール)を決定するように構成された作業モデルを実行することができる。幾つかの実施形態では、作業モデルユニット134は、作業モデルを同時でなく、連続的に(例えば、1つずつ)または非同期で実行してもよいことが理解されよう。例示的に、作業モデルを、狭い範囲のカテゴリ、ラベルまたは他の識別子を予測するために特別に訓練することができる。よって、各作業モデルは有利なことに、ベースモデルと比較して少ない演算リソースだけを記憶および実行に必要とすることができる。例えば、ベースモデルの例は、100MBのサイズであり、実行に1秒かかる場合があるが、作業モデルは、ベースモデルのサイズの1%であり、実行に0.01秒しかかからない場合がある。
【0023】
モデルアーキテクチャ
図3は、幾つかの実施形態による画像分類システム118によって利用されるモデルアーキテクチャの例の視覚的表現である。システムが画像を分類しうる任意のおよび全てのカテゴリについて、または全ての可能なアイテムラベルについて、可能性の高い分類決定を取り扱うために単一の機械学習モデルに依存する従来の機械学習システムとは対照的に、画像分類システム118は代わりに、複数の機械学習モデルによって画像を処理することができ、そのうちの幾つかが1つ以上の他のモデルの出力を処理し、他のモデルの分類決定の下位集合または上位集合を生成する。大規模な単一の機械学習モデルの使用を避けることにより、画像分類システム118は、有利なことに、十分に訓練された小規模な作業モデルを必要に応じて実行するだけで、演算リソースにかかる負荷を軽減しながら高精度の予測を維持することができる。
【0024】
画像分類システム118によって使用されるモデルは、ニューラルネットワークとして実装することができる。概して、ニューラルネットワークは、複数のノード層を有する。例示的に、ニューラルネットワークは、入力層、出力層、および入力層と出力層の間の任意の数の中間層または「隠れ」層を含むことができる。個々の層は、任意の数の別個のノードを含むことができる。隣接する層のノードを互いに接続することができ、隣接する層の様々なノードの間の各接続を、それぞれの訓練可能なパラメータまたは「重み」に関連付けることができる。概念的に、ノードを、複数の異なる入力値に応じて出力値を演算する演算ユニットと考えることができる。入力値は、前の層のノードの出力に、前の層のノードと現在のノードとの間の接続に関連付けられた重みを乗じたものを含むことができる。ニューラルネットワークは、入力ベクトルまたは入力ベクトルの行列の形態の入力データを処理するときに、出力ベクトルの行列を生成するために「フォワードパス」を実行することができる。入力ベクトルはそれぞれ、ニューラルネットワークの入力層のn個のノードに対応するn個の別個のデータ要素または「次元」を含むことができる(ここで、nはある正の整数である)。各データ要素は、浮動小数点数または整数などの値であることができる。フォワードパスは、入力ベクトルの行列に、入力層のノードと次の層のノードとの間の接続に関連付けられた重みを表す行列を乗じ、その結果に活性化関数を適用することを含む。この場合、プロセスは、出力が生成されるまで、後続のニューラルネットワーク層ごとに繰り返される。
【0025】
幾つかの実施形態では、NASNet largeモデル、Inception_V3モデル、Inception_V4モデル、Mobilenet_V2_1.0_224やMobilenet_V2_1.0_224_quantモデルなどの畳み込みニューラルネットワークを、画像に適用するベースモデルとして利用することができる。ファイルサイズや精度などを考慮して、ベースモデルを選択することができる。例えば、Mobilenet_V2_1.0_224_quantモデルは、その小さなファイルサイズ(例えば、3.4MB)のために選択することができ、NASNet largeモデルは、ファイルサイズの増大(例えば、355.3MB)と引き換えではあるが、精度の向上のために選択することができる。
【0026】
図3に示すように、画像分類システム118は、ベースモデルネットワーク300ならびに複数の作業モデルネットワーク302A,302B,302Cおよび302Dを含む、ニューラルネットワークのセットを使用することができる。(斜線で網掛けしたノードのセットとして示す)ベースモデルネットワーク300によって画像を処理して、ベースモデル出力310を生成する。ベースモデル出力310は、(網掛けしていないノードのセットとして示す)1つ以上の作業モデルネットワーク302A,302B,302Cおよび/または302D、集合的に「302A~302D」または「302」に入力(入力の下位集合)として渡される。作業モデルネットワーク302は、画像に関する1つ以上の分類決定を表す作業モデル出力318を生成する。
【0027】
ベースモデルネットワーク300は、ユーザによって選択またはアップロードされた画像に対応する入力層304を含む。ベースモデルネットワーク300は、1つ以上の隠れ層306をさらに含む。ベースモデル隠れ層306を5つのノードで示すが、他の実施形態では異なる数のノード(例えば、数十、数百またはそれ以上)を使用しうることが理解されよう。加えて、ベースモデル隠れ層306を単一の層として示すが、ベースモデルネットワーク300は、ベースモデルネットワーク300の任意の他の隠れ層と同じ数のノードをそれぞれ有していても有していなくてもよい複数の隠れ層を有する深層ニューラルネットワークとして実施してもよいことが理解されよう。例えば、ベースモデルネットワーク300は、20、40またはそれ以上のベースモデル隠れ層306を有してもよい。
【0028】
幾つかの実施形態では、ベースモデル出力310は、(複数のエントリを含む矩形として示す)多次元ベクトルを含むことができる。例えば、ベースモデル出力310は、入力画像の符号化表現である1280次元の出力ベクトルであってもよい。符号化表現は、画像の可能性の高い分類を決定するために様々な作業モデルネットワーク302によって使用される、入力画像に関する情報を含む。ベースモデルネットワーク300は、画像ごとに1度だけ実行すればよく、ベースモデル出力310は、キャッシュすることができ、かつ/またはベースモデルネットワーク300を再実行することなく、任意の数の作業モデルネットワーク302に提供することができる。有利なことに、画像分類システム118は、ベースモデルネットワーク300の実行をクライアント側での実行に依存することができる。例えば、画像分類システム118は、クライアント側のグラフィックス処理ユニットおよびWebGLを活用することにより、ブラウザまたは他のクライアント側のアプリケーション内でベースモデルネットワーク300を実行する。
【0029】
ベースモデルネットワーク300の出力310は、1つ以上の作業モデルネットワーク302に入力される。単一の例では、多次元ベクトルは、作業モデル302Aの1つ以上の作業モデル隠れ層314に渡されてもよい。作業モデル302Aは、(薄く網掛けした正方形として示す)作業モデル出力318を生成することができる。幾つかの実施形態では、作業モデル隠れ層314は、活性化関数として正規化線形ユニット(ReLU)または正規化線形関数を利用する256次元のニューラルネットワーク層であることができる。各作業モデルネットワーク302を3層のニューラルネットワークとして例示するが、幾つかの実施形態では、作業モデルネットワークは、(例えば、分類決定の精度を潜在的に改善するために)追加の作業モデル隠れ層を含んでもよく、(例えば、作業モデルネットワークの全体サイズおよび複雑さを最小限に抑えるため、作業モデルネットワーク302を訓練、送信、記憶および使用するために必要とされる演算リソースの量などを低減するためなどに)作業モデル隠れ層を含まなくてもよいことが理解できよう。加えて、各作業モデルネットワーク302を同一の構造を有するものとして示すが、幾つかの実施形態では、作業モデルネットワークは、異なる構造を有してもよい(例えば、幾つかの作業モデルネットワークが、他の作業モデルネットワークとは異なる数の作業モデル隠れ層および/または層ごとの異なる数のノードを有してもよい)。
【0030】
任意の特定の作業モデルネットワーク302からの作業モデル出力318は、ベクトルや配列などの要素のセットを含むことができ、各要素は、作業モデルネットワーク302が決定するように構成される特定の分類に対応することができる。個々の要素の値は、対応する要素の分類として画像が適切に分類される尤度を表すことができる。よって、作業モデル出力318は、作業モデルが決定するように構成される分類の各々に画像が対応する尤度を含むことができる。幾つかの実施形態では、作業モデル出力318は、活性化関数としてソフトマックス関数を使用して生成することができる。
【0031】
幾つかの実施形態では、画像分類システム118は、正確なまたは確信される提案だけがエンドユーザに表示されるように、信頼スコア閾値を含むことができる。ソフトマックス関数を利用する作業モデルは、作業モデルが決定するように構成される可能な各分類に画像が適切に分類される尤度を、出力層で自動的に計算することができる。例えば、作業モデルは、可能性のある分類ごとに、分類ごとに最小値と最大値の間(例えば、0.0と1.0の間)の浮動小数点数を生成してもよい。分類ごとの浮動小数点数の合計は、所定の値(例えば、1.0)であることができる。画像分類システム118は、ソフトマックス関数によって計算された対応する尤度がある閾値を満たす場合にだけ、特定の分類または結果の推奨案をエンドユーザに提示することができる(例えば、確率が0.5よりも高い場合にだけ表示する)。幾つかの実施形態では、画像分類システム118は、対応する尤度が可能な分類のセットについて決定された2番目に高い尤度よりも少なくとも閾値だけ高い場合だけなど、追加のまたは代替の基準に基づいて特定の分類の推奨案を提示することができる。幾つかの実施形態では、他のアルゴリズムまたは関数を使用してもよいことが理解されよう。
【0032】
各作業モデルが、(例えば、可能性の高いトップレベルのカテゴリグループを決定するための作業モデルネットワーク、カテゴリグループ内の可能性の高いカテゴリを決定するためのカテゴリグループごとの作業モデルネットワーク、カテゴリ内の可能性の高いアイテムを決定するためのカテゴリごとの作業モデルネットワークなどの)階層の特定のレベルによる可能性の高い分類を決定するように構成され訓練される実施形態では、各作業モデルネットワークは、数百の可能なオプションの中から(例えば、全ての可能なアイテムの中から)分類決定を行うように構成された1つの汎用モデルと比較して、その特定のタスクについて十分に訓練され、より高い精度をもたらすことができる。より大きな1つのモデルに依存するのでなく、複数の作業モデルネットワークを利用することで、システムが、サブカテゴリ同士を重複させることなく、サブカテゴリの詳細な分類決定を行うことができる場合もある。
【0033】
幾つかの実施形態では、各作業モデルネットワーク302は有利なことに、1行のコードだけを使用して呼び出されることができ、ベースモデルネットワーク300よりも大幅に少ない演算リソースを必要とする場合がある。例えば、ユーザがスイミングプールの写真をアップロードすることを仮定すると、画像分類システム118は、プールの種類を予測するために特別に訓練された作業モデルネットワーク302だけを実行するために演算リソースを割り当てることができる。
【0034】
ベースモデルネットワーク300および各作業モデルネットワーク302は、訓練用データを使用して訓練することができる。例えば、ベースモデルネットワーク300および/または個々の作業モデルネットワーク302は、実世界の写真である画像(例えば、幅と高さのスケールが少なくとも650画素であり、24ビットカラーを使用するPNG形式ファイル)について訓練されうる。ユーザは、任意の数のラベル付けされた画像(例えば、アイテムごとに2000枚の写真)を訓練に供することができ、モデルは、画像を適切にラベル付けすることを学習することができる。
【0035】
有利なことに、画像分類システム118は、ユーザ対話の選択を考慮しながら、1つ以上の作業モデルネットワークを使用することができる。例えば、(例えば、ドロップダウンメニューからカテゴリラベルを選択することにより)画像がカテゴリラベル「プール」に関連付けられることを示すように、ユーザがユーザインタフェースと対話すれば、カテゴリ「プール」に関連する可能性の高いアイテムラベル(例えば、屋内プール、屋外プールまたは子供用プール)を決定するように訓練された作業モデルネットワークを選択し実行することができる。
【0036】
階層的画像分類
図4は、幾つかの実施形態による階層的画像分類のための例示的なプロセス400のフロー図である。プロセス400が開始すると、1つ以上の非一時的なコンピュータ可読媒体(例えば、ハードドライブ、フラッシュメモリ、リムーバブル媒体など)に記憶されている実行可能プログラム命令のセットを、図7に示す画像分類システムのコンピューティングデバイス700などのコンピューティングデバイスのメモリ(例えば、ランダムアクセスメモリ、すなわち「RAM」)にロードすることができる。幾つかの実施形態では、プロセス400またはその一部は、(同じまたは別個のコンピューティングデバイス上の)複数のプロセッサ上で連続的にまたは並列に実施することができる。
【0037】
ブロック402で、画像分類システム118は、画像を受信することができる。例えば、ユーザは、分類されてリモートシステム106にアップロードされる画像を選択することができる。例示的に、画像は、画像分類システム118によって分類されたホテルの部屋の画像であってもよい。
【0038】
ブロック404で、画像分類システム118は、ベースモデル出力を生成または取得することができる。図2に関して上述したように、画像分類システム118は、ベースモデル出力が現在の画像に関して既にキャッシュされているかどうかを決定することができる。幾つかの実施形態では、ベースモデル出力は、ベースモデル出力データストア140に記憶するか、またはブラウザにキャッシュすることができる。画像に関連するベースモデル出力がなければ、画像分類システム118は、ベースモデルを使用して画像を処理することによってベースモデル出力を生成することができる。この場合、画像分類システムは、ベースモデル出力をキャッシュすることができる。ベースモデル出力は、ブラウザにキャッシュするか、またはベースモデル出力データストア140に記憶することができる。
【0039】
ブロック406で、画像分類システム118は、マルチレベル階層に少なくとも部分的に基づく1つ以上の作業モデルを使用して、ベースモデル出力を処理することができる。幾つかの実施形態では、モデルデータストア138は、複数の作業モデル(例えば、数十または数百の作業モデル)を記憶することができ、個々のモデルは、画像分類のためのマルチレベル階層の個々のレベルに関連することができる。ブロック406に到達すると、画像分類システムは、ブロック406で、階層の特定のレベルまたはレベルの下位集合に関連するモデルだけを利用することができる。例えば、特定の画像についてブロック406に初めて到達すると、画像分類システム118は、階層の最低および/または最高レベルに関連する作業モデル(または複数の作業モデル)を使用してもよい。同じ画像についてブロック406に再び到達すると、画像処理システムは、階層の前に使用したよりも高いレベルおよび/または低いレベルに関連する作業モデル(または複数の作業モデル)を使用することができる。階層の特定のレベルは、特定の画像についてブロック406に到達した回数、前の分類とのユーザ対話を表す対話データ、または他の文脈情報に依存しうる。
【0040】
ブロック408で、画像分類システム118は、上記で生成された作業モデルの出力に基づいて、画像に関連付けられる分類を決定することができる。幾つかの実施形態では、最初の分類を、画像に関連付けられうる広くて高いレベルのラベルに関連付けることができる。例えば、図6Cは、画像分類階層の例を例示する。画像分類階層の例によれば、画像は、カテゴリグループラベル650、カテゴリラベル652およびサブカテゴリラベル654(サブカテゴリラベルをアイテムラベルと称する場合もある)のリストによるラベルに関連付けることができる。本実施形態では、ラベル650,652および654のリストは、階層的な関係を互いに維持する。カテゴリグループラベル650は、トップレベルのラベルであり、したがって最も広く、限られた数(例えば、3)の可能なオプションを含むことができる。カテゴリラベル652は、カテゴリグループラベル650の特定のオプションをさらに拡張する中間的なラベルを含むことができる。例えば、カテゴリラベル652は、広い「物件の特徴」カテゴリグループに関連しうる複数の「物件の特徴」ラベル(例えば、プール、ダイニング、駐車場など)を含んでもよい。サブカテゴリラベル654は、カテゴリラベル652のオプションをさらに拡張し、画像に適用される最終的なラベルに対応するより低いレベルのラベルを含むことができる。例えば、サブカテゴリラベル654は、「プール」カテゴリラベルに関連する複数のラベル(例えば、インフィニティプール、子供用プール、屋内プール、屋外プールなど)を含んでもよい。他の実施形態では、他の構成のラベルおよび識別子を使用してもよいことが理解されよう。
【0041】
ユーザがホテルの部屋の写真をアップロードする場合、第1の分類は、「物件の特徴」などのカテゴリグループラベル650による広いラベルであることができる。画像分類システム118は、第2の作業モデル、すなわち階層の異なるレベルの作業モデルを上記のブロック406で使用した場合などに、画像に関連付けられる第2の分類を決定することができる。例えば、第2の分類は、「屋外プール」などの、サブカテゴリラベル654のより具体的な、より低いレベルのラベルであってもよい。
【0042】
図4に戻ると、判定ブロック410で、画像分類システム118は、分類階層の追加のレベルで作業モデルを使用して画像を処理するかどうかを判定することができる。決定は、(例えば、階層の各レベルを使用する)静的なもの、または(例えば、ユーザ対話または他の文脈情報に応じた)動的なものであることができる。階層の追加のレベルを使用するのであれば、プロセス400は、ブロック406に戻り、そうでなければブロック412に進む。
【0043】
ブロック412で、画像分類システム118は、画像に関する最終的な分類出力(例えば、アイテムラベル)を決定または生成することができる。最終的な分類出力は、1つ以上の分類基準に基づくことができる。例えば、最終的な分類は、個々の出力の比較に基づいていてもよい(例えば、尤度が最も高い分類)。別の例として、最終的な分類は、ユーザ対話に基づいていてもよい(例えば、可能性の高い分類のユーザによる選択)。幾つかの実施形態では、最終的な分類は、分類基準の追加、代替および/または組み合わせに基づくことができる。
【0044】
上述した実施形態は、第1の分類と第2の分類を順次に決定することを含むが、他の実施形態では、他の構成が可能であることが理解されよう。例えば、幾つかの実施形態では、画像分類システムは、可能性の高い第1の分類と可能性の高い第2の分類とを同時に決定することができる。他の実施形態では、画像分類システムは代わりに、可能性の高い第1の分類を決定する前に、可能性の高い第2の分類を決定することができる。さらに、本開示は、2つの識別子だけに限定されない。幾つかの実施形態では、画像分類システムは、画像に関連付けられる2つ以上のカテゴリまたはラベルを決定することができる。
【0045】
ユーザ対話による階層的画像分類
図5は、(例えば、図6Cに例示するような)3レベルの画像分類階層および可能性の高い分類とのユーザ対話を使用する階層的画像分類のための例示的なプロセス500のフロー図である。プロセス500は、図6Aおよび図6Bに示すユーザインタフェースの例に関して説明される。プロセス500が開始すると、1つ以上の非一時的なコンピュータ可読媒体(例えば、ハードドライブ、フラッシュメモリ、リムーバブル媒体など)に記憶されている実行可能プログラム命令のセットを、図7に示す画像分類システムのコンピューティングデバイス700などのコンピューティングデバイスのメモリ(例えば、ランダムアクセスメモリ、すなわち「RAM」)にロードすることができる。幾つかの実施形態では、プロセス500またはその一部は、(同じまたは別個のコンピューティングデバイス上の)複数のプロセッサ上で連続的にまたは並列に実施することができる。
【0046】
ブロック502で、画像分類システム118は、画像を受信することができる。例えば、ユーザは、画像分類システム118を実行するように構成されたユーザのコンピューティングデバイスにローカルに記憶されているホテルの画像をアップロードすることができる。次いで、画像分類システム118は、ブロック504でサブカテゴリラベルを提案し、ブロック506でカテゴリグループラベルを提案することができる。
【0047】
上述したように、幾つかの実施形態では、画像分類システム118はまず、受信した画像をベースモデルを使用して処理し、可能性の高い分類を決定するために複数の作業モデルによって使用されうる、多次元ベクトル(例えば、1280次元のベクトル)などの出力を生成することができる。次いで、画像分類システム118は、作業モデルによる将来の使用のためにベースモデル出力をキャッシュすることができる。画像分類システム118は、画像に関連付けられる可能性の高い分類(例えば、カテゴリまたはラベル)を決定するために、1つ以上の作業モデルを選択する。幾つかの実施形態では、画像に関する初期の分類決定を提供するために、少なくとも2つの作業モデルを最初に使用する。使用しているマルチレベルの画像階層による画像に関する可能性の高いトップレベルの分類を決定するために、1つの作業モデルを使用してもよいが、画像に関する可能性の高いより低いレベルの分類を決定するために、別の作業モデルを使用してもよい。
【0048】
図6Aは、ユーザが画像602(例えば、スイミングプールの写真)をアップロードするインタフェース600を示す。画像分類システム118は、1つの作業モデルを使用して画像602に関するベースモデル出力を処理し、図6Cに示すカテゴリグループリスト650による特定の「カテゴリグループ」、例えば「物件の特徴」カテゴリグループに画像602が属する可能性が高いと最初に決定することができる。画像分類システム118はまた、第2の作業モデルを使用して、画像602に関する同じベースモデル出力を処理し、「ビーチ」サブカテゴリに画像602が属する可能性が高いと決定することができる。決定された分類は、ユーザインタフェース600に、例えば、自動識別部分604に示すことができる。図示しているように、自動識別部分604は、可能性の高い1つ以上の分類に関する推奨案、すなわち、トップレベル(カテゴリグループ)の推奨案および最低レベル(サブカテゴリまたはアイテム「ラベル」)の推奨案を提供することができる。ユーザは、画像602に関するラベルの推奨案を受け入れて分類プロセスを完了するか、トップレベルの推奨案を選択して異なる可能性の選択を表示するか、またはラベルもしくはカテゴリグループを閲覧することができる。自動識別部分604を無視し、手動入力部分606を使用してラベルまたは類別を提供することをユーザに許可することもできる。幾つかの実施形態では、画像分類システム118によって決定された推奨される分類は、分類が閾値を超えるスコア(例えば、尤度または信頼スコア)に関連付けられる場合にだけ、ユーザに表示することができる。例えば、作業モデルが200を超すサブカテゴリを区別するように訓練されている場合、最高得点のカテゴリが、決定の精度が低い場合があることを示す閾値未満のスコアを依然として有する場合がある。作業モデルの出力に基づく推奨案について、自動識別部分604における表示を非強調としたり、抑制したりすることができる。
【0049】
判定ブロック508で、画像分類システム118は、ブロック504による最低レベルの分類(例えば、サブカテゴリラベルの提案)が確定されたかどうかを判定することができる。幾つかの実施形態では、画像分類システム118は、ユーザ入力を待機することにより、その予測の精度を確定することができる。例えば、画像分類システム118は、上述したように、トップレベルのカテゴリグループラベルおよび最低レベルのサブカテゴリラベルなどの1つ以上の推奨される分類を示してもよい。ユーザは、推奨される分類の1つを選択する610か、または他の分類を閲覧するか、または分類を手動で入力することができる。ユーザが推奨される最低レベルのサブカテゴリラベルを選択すると、プロセス500は、選択を処理するブロック526に進むことができる。そうでなくて、ユーザが最低レベルの推奨案を選択しなければ(例えば、ユーザがトップレベルの推奨案を選択するか、またはトップレベルのラベルを閲覧するコントロールを選択すると)、プロセス500は判定ブロック510に進むことができる。別の例として、ユーザには、ユーザインタフェースによって、「はい」または「いいえ」を表示する選択可能な2つのボタンを提示してもよい。ユーザは、「はい」ボタンをクリックして、ユーザインタフェースに表示された推奨案を確定するか、または「いいえ」ボタンをクリックして、ユーザインタフェースに表示された推奨案が正確でないことを指摘することができる。
【0050】
判定ブロック510で、画像分類システム118は、ユーザがトップレベル(例えば、カテゴリグループ)の推奨案を選択または確定したかを決定する。ユーザがカテゴリグループラベルの提案を確定しなければ、ブロック512で、ユーザはカテゴリグループラベルを手動で選択することができる。例えば、アップロードされた画像602(スイミングプールの写真)について画像分類システム118がカテゴリグループラベル「アクティビティ」を提案したことを見て、ユーザは、リンクされた閲覧可能なリスト、カテゴリグループラベルを列挙するドロップダウンメニュー、または何らかの他のコントローラもしくはインタフェースから異なるカテゴリグループ(例えば、物件の特徴)を手動で選択することにより、提案を拒否することもできる。幾つかの実施形態では、ユーザは、手動入力部分606などで、画像に関連付けるカテゴリグループラベルを手動で入力することができる。幾つかの実施形態では、サブカテゴリラベルおよびカテゴリグループラベルの初期の決定に、ユーザの初期の操作が影響を及ぼすことができる。例えば、幾つかの実施形態では、ユーザは、ユーザがリモートシステム106に提出したい画像をローカルデバイスからアップロードすることができ、ユーザは、(例えば、自動識別部分604に表示されるリンクされた閲覧可能なリストから)所定のラベルを閲覧し始める。ユーザがラベルを閲覧している間に、画像分類システム118は、ユーザに表示するための1つのカテゴリグループを可能なカテゴリグループから推奨することができる。他の実施形態では、ユーザは、画像をアップロードして、カテゴリグループラベルなどのトップレベルの分類を能動的に選択することができる。この場合、画像分類システム118は、ユーザ自身によるカテゴリグループラベルの手動選択を考慮して、カテゴリグループラベルの推奨案を生成するように構成された作業モデルの実行を見合わせることができる。画像分類システム118は代わりに、選択されたカテゴリグループラベルを前提に、画像602に関連する、カテゴリラベルなどの中間レベルの推奨される分類を決定するために作業モデルを実行することができる。
【0051】
ブロック514で、ユーザがトップレベルのラベルを選択すると、または最初のトップレベルのラベルの推奨案が確定されると、画像分類システム118は、中間レベルのラベルを提案することができる。上述したように、画像分類システム118は、カテゴリグループラベルなどのトップレベルのラベルが選択されると、カテゴリラベルなどの中間レベルのラベルを決定するために特別に訓練された作業モデルを実行することができる。例えば、画像が「物件の特徴」カテゴリグループラベルに関連付けられる場合、画像分類システム118は、選択されたカテゴリグループにおける40以上の可能なカテゴリオプションの中から推奨されるカテゴリ(例えば、フィットネス、スパ、プール、ダイニング、駐車場、キッチンなど)を決定するように特別に構成された作業モデルを実行することができる。幾つかの実施形態では、画像分類システム118は、カテゴリグループのユーザの事前の選択を前提に、カテゴリを決定するように特別に訓練された作業モデルを実行することができる。例えば、ユーザが「物件の特徴」カテゴリグループラベルを選択することを仮定すると、画像分類システム118は、異なるカテゴリグループ(例えば、アクティビティまたは部屋の特徴)に属しうるカテゴリを予測するのでなく、物件の特徴に関連するカテゴリ(例えば、プール、ダイニング、駐車場など)を決定するように訓練された作業モデルを使用することができる。この場合、画像分類システム118は、カテゴリラベルの提案のユーザによる確定、または異なるカテゴリラベルのユーザによる選択を待機することができる。
【0052】
判定ブロック516で、画像分類システム118は、ユーザが中間レベルのラベルの推奨案を選択したか、または異なる中間レベルのラベルを選択したかを決定することができる。幾つかの実施形態では、ユーザは、カテゴリの推奨案を確定するリンクまたはボタンをアクティブにすることができる。
【0053】
ブロック518で、ユーザが中間レベルのラベルの推奨案を確定しなかった場合、ユーザは、中間レベルのラベルを選択することができる。例えば、ユーザは、カテゴリラベルオプションのリストからカテゴリラベルを選択するか、または画像に関連付けるカテゴリラベルを手動入力部分606に手動で入力することができる。
【0054】
ブロック520で、画像分類システム118は、サブカテゴリラベルなどのより低いレベルのラベルを推奨することができる。推奨案は、画像に既に関連付けられているトップレベルまたはミドルレベルのラベル(例えば、カテゴリグループラベルまたはカテゴリラベル)の選択など、ユーザによる事前の選択に少なくとも部分的に基づくことができる。例えば、ユーザがカテゴリグループラベル(例えば、物件の特徴)およびカテゴリラベル(例えば、プール)を手動で選択すると、画像分類システムは、選択されたカテゴリグループラベルおよびカテゴリラベルを前提に、可能性の高いサブカテゴリ(例えば、プールの種類)を決定するように訓練された作業モデルを使用することができる。幾つかの実施形態では、作業モデルは、サブカテゴリごとのスコア(例えば、尤度)を計算するが、最高スコアのサブカテゴリオプションだけを提示することができる。幾つかの実施形態では、画像分類システム118は、複数のサブカテゴリの推奨案を同時に提示することができる。さらに、画像分類システム118は、スコア閾値に基づいてサブカテゴリの推奨案を提示することができる。例えば、作業モデルは、画像が屋内プールである尤度が0.3であり、屋外プールである尤度が0.6であり、子供用プールである尤度が0.1であると決定しうる。しかし、画像分類システム118は、屋外プールの推奨案だけをユーザに表示することができる。なぜなら、これが0.5を超えるスコアの唯一のサブカテゴリオプションであるためである。ユーザの好みに合わせて閾値を調整または変更してもよいことが理解されよう。例えば、ユーザは、計算されたスコアに関係なく、全てのサブカテゴリの推奨案を調べることに興味を持つかもしれない。サブカテゴリラベルが推奨されると、画像分類システム118は、ユーザによる確定を待機することができる。
【0055】
判定ブロック522で、画像分類システム118は、低いレベルの推奨されるラベルをユーザが選択したかどうかを判定することができる。例えば、ユーザは、ユーザ入力(例えば、リンクをアクティブにするか、または「はい」ボタンをクリックする)によってサブカテゴリの提案を確定してもよい。ユーザが低いレベルのラベルの推奨案を確定しない場合、画像分類システム118は、ブロック524で、ユーザによるサブカテゴリなどの低いレベルのラベルの手動選択を受信することができる。
【0056】
特定の順序で表示または推奨されるサブカテゴリラベル、カテゴリグループラベルおよびカテゴリラベルを推奨するものとしてプロセス500が説明されるが、他の実施形態では、他の順序または構成を使用してもよいことが理解されよう。例えば、画像分類システム118は最初に、画像に関連する可能性の高いまたは推奨されるサブカテゴリラベル、カテゴリグループラベルおよびカテゴリラベルを同時に決定してもよい。加えて、図5に示す例は、ラベルの階層組織(例えば、サブカテゴリラベルがカテゴリラベルよりも狭く、カテゴリラベルがカテゴリグループラベルよりも狭い)を利用するが、他の実施形態は、ラベル間のそのような秩序立った関係を必ずしも必要としない。
【0057】
例示的なデバイス構成要素
図7は、本開示の態様を実施するために使用されうるコンピュータハードウェアおよびソフトウェアの構成を含むコンピューティングデバイス700の概略のアーキテクチャを示す。例示的に、コンピューティングデバイス700は、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、携帯電話機などのユーザデバイスであってよい。コンピューティングデバイス700のハードウェア構成要素は、より詳細に後述するように、物理的な電子デバイス上で実施することができる。コンピューティングデバイス700は、図7に示すよりも多い、少ない、および/または代替の要素を含むことができる。しかし、実施可能な開示を提供するために、これらの概して従来の要素を全て示す必要はない。加えて、図7に例示する概略のアーキテクチャは、図1に例示した他の構成要素の1つ以上を実施するために使用することができる。
【0058】
図示しているように、コンピューティングデバイス700は、処理ユニット702、ネットワークインタフェース704、コンピュータ可読媒体ドライブ706および入出力装置インタフェース708を含み、これらの全てが通信バスを介して互いに通信することができる。ネットワークインタフェース704は、1つ以上のネットワーク、またはリモートシステム106などのコンピューティングシステムへの接続性を提供することができる。よって、処理ユニット702は、他のコンピューティングシステムまたはサービスからネットワーク114を介して情報および命令を受信することができる。処理ユニット702はまた、メモリ710との間で通信し、オプションのディスプレイ(図示せず)用の出力情報を入出力装置インタフェース708を介してさらに提供することができる。入出力装置インタフェース708はまた、オプションの入力装置(図示せず)からの入力を受け付けることができる。
【0059】
メモリ710は、本開示の1つ以上の態様を実施するために処理ユニット702が実行するコンピュータプログラム命令(幾つかの実施形態ではユニットとしてグループ化される)を含むことができる。メモリ710は、RAM、3D XPOINTメモリ、フラッシュメモリ、磁気ストレージなど(ただし、これらに限定されない)を含む、記憶装置の1つ以上の層に対応する。
【0060】
メモリ710は、コンピューティングデバイス700の全体的な管理および動作において処理ユニット702によって使用するためのコンピュータプログラム命令を提供するオペレーティングシステム712を記憶することができる。メモリ710は、本開示の態様を実施するためのコンピュータプログラム命令および他の情報をさらに含むことができる。例えば、一実施形態では、メモリ710は、例えば、コンピューティングデバイス700にインストールされたブラウザまたはアプリケーションなどのナビゲーションおよび/または閲覧インタフェースを介して、コンピューティングデバイス700に表示するためのユーザインタフェース(および/またはそのための命令)を生成するユーザインタフェースユニット122のためのユーザインタフェースユニット命令714を含む。
【0061】
ユーザインタフェースユニット命令714に加えて、かつ/またはこれに組み合わせて、メモリ710は、受信した画像に適用する機械学習モデルを選択および生成するように構成されたモデル選択ユニット126のためのモデル選択ユニット命令716を含むことができる。メモリ710は、ベースモデル(例えば、ニューラルネットワーク)を実行および訓練するように構成されたベースモデルユニット130のためのベースモデルユニット命令718をさらに含むことができる。メモリ710はまた、1つ以上の作業モデル(例えば、ニューラルネットワーク)を実行するように構成された作業モデルユニット134のための作業モデルユニット命令720を含むことができる。
【0062】
例示的な実施形態
本開示の実施形態は、以下の条項をふまえて説明することができる。
【0063】
条項1:画像を分類するためのシステムであって、
ベースモデルおよび複数の作業モデルを含む複数の機械学習モデルを含むデータストアと、
1つ以上のプロセッサと
を備え、1つ以上のプロセッサが、コンピュータ実行可能命令により、少なくとも、
複数のアイテムラベルのうちの1つとして分類するためにユーザによって選択された画像を受信することと、
ベースモデルおよび画像を使用して、画像の複数の特徴を表すベースモデル出力ベクトルを生成することと、
ベースモデル出力ベクトルと複数の作業モデルのうちの第1の作業モデルとを使用して、画像に関連付けられる第1のアイテムラベルを決定することと、
ベースモデル出力ベクトルと複数の作業モデルのうちの第2の作業モデルとを使用して、画像に関連付けられるカテゴリグループラベルを決定することと、
カテゴリグループラベルの選択を示す第1のユーザ入力を受信することと、
ベースモデル出力ベクトルと、複数の作業モデルのうちの、カテゴリグループラベルに関連する第3の作業モデルとを使用して、画像に関連付けられるカテゴリラベルを決定することと、
カテゴリラベルの選択を示す第2のユーザ入力を受信することと、
ベースモデル出力と、複数の作業モデルのうちの、カテゴリラベルに関連する第4の作業モデルとを使用して、画像に関連付けられる第2のアイテムラベルを決定することと、
第2のアイテムラベルの選択を示す第3のユーザ入力を受信することと、
画像と、画像に関連付けられ、第2のアイテムラベルを表す分類データとを送信することと
を行うように構成されている、システム。
【0064】
条項2:ベースモデルが、画像を使用して出力を生成するために1度だけ使用される、条項1記載のシステム。
【0065】
条項3:ベースモデルおよび複数の作業モデルが、それぞれ、ニューラルネットワークベースのモデルである、条項1記載のシステム。
【0066】
条項4:第1の作業モデルが、第1のアイテムラベルに関連する第1の信頼値を生成し、第1のアイテムラベルが、閾値を超える第1の信頼値に少なくとも部分的に基づいて表示される、条項1記載のシステム。
【0067】
条項5:コンピュータ実装方法であって、
特定の命令を実行するように構成された1つ以上のコンピュータプロセッサを備えるコンピューティングシステムによって実行される際に、
分類すべき画像を受信することと、
ベースモデルネットワークおよび画像を使用して、画像に関連するベースモデル出力を生成することと、
複数の作業モデルネットワークおよびベースモデル出力を使用して、複数の作業モデル出力を生成することと、
画像の分類に関するユーザ入力を受け付けるように構成された画像分類インタフェースを表示することと、
画像分類インタフェースへのユーザ入力を表すユーザ対話データを受信することと、
画像に関連付けられるラベルを決定することであって、ラベルが、複数の作業モデル出力およびユーザ入力に少なくとも部分的に基づいて決定される、ことと
を含む、コンピュータ実装方法。
【0068】
条項6:複数の作業モデル出力のそれぞれが、同じベースモデル出力を使用して生成される、条項5記載のコンピュータ実装方法。
【0069】
条項7:方法が、ベースモデル出力をキャッシュに記憶することをさらに含む、条項5記載のコンピュータ実装方法。
【0070】
条項8:方法が、ベースモデル出力をキャッシュからロードすることをさらに含み、ベースモデル出力がキャッシュからロードされた後に、複数の作業モデル出力のうちの少なくとも1つが生成される、条項7記載のコンピュータ実装方法。
【0071】
条項9:方法が、
ベースモデルネットワークおよび複数の作業モデルネットワークを、ネットワークを介してリモートシステムから受信することと、
ベースモデルネットワークおよび複数の作業モデルネットワークをコンピューティングシステムのローカルデータストアに記憶することと
をさらに含む、条項5記載のコンピュータ実装方法。
【0072】
条項10:方法が、ベースモデルネットワークおよび複数の作業モデルネットワークをローカルデータストアからロードすることをさらに含み、ローカルデータストアが、ブラウザベースのデータストアを含む、条項9記載のコンピュータ実装方法。
【0073】
条項11:複数の作業モデル出力を生成することが、第1の作業モデルネットワークを使用して第1の作業モデル出力を生成することと並行して、第2の作業モデルネットワークを使用して第2の作業モデル出力を生成することを含む、条項5記載のコンピュータ実装方法。
【0074】
条項12:複数の作業モデル出力を生成することが、第1の作業モデルネットワークを使用して第1の作業モデル出力を生成した後に、第2の作業モデルネットワークを使用して第2の作業モデル出力を生成することを含む、条項5記載のコンピュータ実装方法。
【0075】
条項13:第1の作業モデル出力が、ラベルに関連する第1の信頼スコアおよび第2のラベルに関連する第2の信頼スコアを含む、条項5記載のコンピュータ実装方法。
【0076】
条項14:方法が、閾値を満たす第1の信頼スコアに基づいて、ラベルを表示することを決定することをさらに含む、条項13記載のコンピュータ実装方法。
【0077】
条項15:方法が、第1の信頼スコアと第2の信頼スコアとの差に基づいて、ラベルを表示することを決定することをさらに含む、条項13記載のコンピュータ実装方法。
【0078】
条項16:方法が、
分類のためにユーザによって選択された第2の画像を受信することと、
ベースモデルネットワークおよび第2の画像を使用して、第2の画像に関連する第2のベースモデル出力を生成することと、
複数の作業モデルネットワークおよびベースモデル出力を使用して、複数の第2の作業モデル出力を生成することと、
第2の画像に関連付けられる第2のラベルを決定することであって、第2のラベルが、複数の第2の作業モデル出力に少なくとも部分的に基づいて決定され、第2のラベルは前記ラベルと異なる、ことと
をさらに含む、条項5記載のコンピュータ実装方法。
【0079】
条項17:コンピュータ可読メモリと、1つ以上のプロセッサとを備えるシステムであって、1つ以上のプロセッサが、コンピュータ実行可能命令により、少なくとも、
ユーザのコンピューティングデバイスからネットワークリソースに関する要求を受信することであって、ネットワークリソースが、
ベースモデルを使用して、画像に関連するベースモデル出力を生成し、
1つ以上の作業モデルを使用して、ベースモデル出力に少なくとも部分的に基づいて1つ以上の作業モデル出力を生成し、
画像に関連付けられ、1つ以上の作業モデル出力に少なくとも部分的に基づくラベルを決定する
ように構成される、ことと、
要求に応答して、ユーザのコンピューティングデバイスにネットワークリソースを送信することと、
ユーザのコンピューティングデバイスから、画像と、画像に関連付けられたラベルを表す画像分類データとを受信することと
を行うように構成されている、システム。
【0080】
条項18:1つ以上のプロセッサが、コンピュータ実行可能命令により、ベースモデルおよび1つ以上の作業モデルをユーザのコンピューティングデバイスに送信するようにさらに構成されている、条項17記載のシステム。
【0081】
条項19:ラベルが信頼スコアに関連付けられており、ラベルが、閾値を満たす信頼スコアに少なくとも部分的に基づいて表示される、条項17記載のシステム。
【0082】
条項20:ベースモデルおよび1つ以上の作業モデルが、ユーザのコンピューティングデバイス上で実行されるニューラルネットワークベースのモデルを含む、条項17記載のシステム。
【0083】
用語
実施形態に応じて、本明細書に記載されるプロセスまたはアルゴリズムのいずれかの特定の行為、イベントまたは機能を、異なる順序で行うことができ、追加、合成または完全に省略することができる(例えば、アルゴリズムの実践には、記載される操作またはイベントが全て必要とされる訳でない)。その上、特定の実施形態では、操作またはイベントを、順次でなく、例えば、マルチスレッド処理、割込み処理、または複数のプロセッサもしくはプロセッサコアによって、あるいは他の並列アーキテクチャ上で同時に行うことができる。
【0084】
本明細書に開示される実施形態に関連して記載される様々な例示的な論理ブロック、モジュール、ルーチンおよびアルゴリズムステップを、電子的なハードウェア、または電子的なハードウェアとコンピュータソフトウェアの組み合わせとして実装することができる。この交換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュールおよびステップを、概してそれらの機能性の観点から上述してきた。このような機能性をハードウェアとして実装するか、またはハードウェア上で実行されるソフトウェアとして実装するかは、システム全体に課される特定の用途および設計上の制約に依存する。説明される機能性を特定のアプリケーションごとに様々な方法で実装することができるが、そのような実装の判断は、本開示の範囲からの逸脱を生じさせると解釈されるべきではない。
【0085】
さらに、本明細書に開示される実施形態に関連して記載される様々な例示的な論理ブロックおよびモジュールを、本明細書に記載される機能を実施するように設計されたコンピューティングプロセッサ装置、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブルロジック装置、個別のゲートまたはトランジスタロジック、個別のハードウェア構成要素またはこれらの任意の組み合わせなどの、機械によって実装または実施することができる。コンピュータプロセッサ装置は、マイクロプロセッサであることができるが、代替的に、コントローラ、マイクロコントローラもしくはステートマシン、またはこれらの組み合わせなどであることができる。プロセッサ装置は、コンピュータ実行可能命令を処理するように構成された電気回路を含むことができる。別の実施形態では、プロセッサ装置は、コンピュータ実行可能命令を処理せずに論理演算を行うFPGAまたは他のプログラマブル装置を含む。プロセッサ装置は、コンピューティングデバイスの組み合わせ、例えば、DSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、DSPコアと組み合わされた1つ以上のマイクロプロセッサ、または任意の他のそのような構成として実装することもできる。本明細書では主にデジタル技術に関して記載されるが、プロセッサ装置は、主にアナログ構成要素を含んでもよい。例えば、本明細書に記載されるアルゴリズムの一部または全てを、アナログ回路またはアナログとデジタルの混合回路で実装してもよい。演算環境としては、マイクロプロセッサ、メインフレームコンピュータ、デジタル信号プロセッサ、ポータブルコンピューティングデバイス、デバイスコントローラ、または家電製品内の演算エンジンに基づくコンピュータシステムを含むが、これらに限定されない、任意の種類のコンピュータシステムを挙げることができる。
【0086】
本明細書に開示される実施形態に関連して記載される方法、プロセス、ルーチンまたはアルゴリズムの要素を、ハードウェアで、プロセッサ装置によって実行されるソフトウェアモジュールで、またはこれらの組み合わせとして直接的に具現化することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または任意の他の形態の非一時的なコンピュータ可読記憶媒体に存在することができる。記憶媒体の例を、プロセッサ装置が記憶媒体から情報を読み取り、また記憶媒体に情報を書き込むことができるように、プロセッサ装置に結合することができる。代替的に、記憶媒体は、プロセッサ装置と一体にすることができる。プロセッサ装置と記憶媒体は、ASICに存在することができる。ASICは、ユーザ端末に存在することができる。代替的に、プロセッサ装置と記憶媒体は、ユーザ端末内に個別の構成要素として存在することができる。
【0087】
本明細書で使用する条件付き文言、とりわけ、「できる(can)」、「できた(could)」、「しうる(may)」、「かもしれない(might)」、「例えば(e.g.)」などは、特に断らない限り、または使用する文脈内で理解される限り、特定の特徴、要素および/またはステップを、特定の実施形態が含むが、他の実施形態が含まないことを伝えることを一般に意図している。よって、このような条件付き文言は、特徴、要素および/またはステップが、1つ以上の実施形態のために何らかの形で必要であること、または1つ以上の実施形態が、他の入力もしくはプロンプトの有無にかかわらず、これらの特徴、要素および/またはステップが、任意の特定の実施形態において含まれるかどうか、実施されるべきかを判断するためのロジックを必ず含むことの暗示を一般に意図していない。用語「備える(comprising)」、「含む(including)」、「有する(having)」などは、同義であり、オープンエンド形式で包括的に使用し、追加の要素、特徴、行為、操作などを排除しない。また、用語「または(or)」は、(排他的な意味でなく)包括的な意味で使用し、例えば、要素のリストを接続するために使用する場合に、リスト内の要素の1つ、幾つか、または全てを意味する。
【0088】
文言「X、Y、Zの少なくとも1つ」のような離接的な文言は、特に断らない限り、アイテム、用語などがX、Y、Zのいずれかまたはこれらの任意の組み合わせ(例えば、X、Yおよび/またはZ)であってよいことを示すために一般に使用されていると文脈によって理解される。よって、このような離接的な文言は、特定の実施形態が、少なくとも1つのX、少なくとも1つのY、または少なくとも1つのZのそれぞれが存在する必要があることの暗示を一般に意図しておらず、暗示するべきではない。
【0089】
特に明示しない限り、「1つの(a)」または「1つの(an)」などの冠詞は、記載されるアイテムを1つ以上含むものと一般に解釈されるべきある。したがって、「ように構成された装置」などの表現は、記載される装置を1つ以上含むことを意図している。そのような記載される1つ以上の装置を、示された記載事項を実行するように集合的に構成することもできる。例えば、「記載事項A、BおよびCを実行するように構成されたプロセッサ」は、記載事項BおよびCを実行するように構成された第2のプロセッサと連動して、記載事項Aを実行するように構成された第1のプロセッサを含むことができる。
【0090】
上記の詳細な説明において、様々な実施形態に適用される新規な特徴を図示し、説明し、指摘してきたが、本開示の趣旨から逸脱することなく、例示した装置またはアルゴリズムの形態および詳細における様々な省略、置換および変更を行うことができることを理解することができる。認識できるように、本明細書に記載される特定の実施形態を、幾つかの特徴を他のものと別個に使用または実践できる場合、本明細書に規定される特徴および利点の全てをもたらさない形態内で具現化することができる。本明細書に開示される特定の実施形態の範囲は、前述した説明でなく、添付の特許請求の範囲によって示される。特許請求の範囲の意味および等価物の範囲に入る全ての変更が、その範囲内に包含される。
図1
図2
図3
図4
図5
図6A
図6B
図6C
図7