DROBEプロダクト開発ブログ

DROBEのプロダクト開発周辺の知見や考え方の共有をしていきます

Vision-Language Modelsを使った商品のトップ画像選定

 

DROBEで機械学習エンジニアをしております、藤崎です。

背景

商品のトップ画像はユーザーへの最初のタッチポイントとして機能し、購入を促進します。そのため、適切なトップ画像の選定は重要です。しかしながら、この選定は現在、手動に依存しており、複数の商品画像から最も効果的なものを選ぶ作業は、多大な時間と労力を消費しています。

商品の品揃えが拡大する中で、この作業のコストは切実な課題となっています。そこで、機械学習技術を用いてトップ画像の選別を自動化するアプローチを検討しています。これにより、商品登録時間の削減や業務の効率向上が期待されます。

本記事では、商品のトップ画像の自動選別に焦点を当て、画像分類手法を調査します。これにより、商品のトップ画像の自動選定を効果的に実行し、効率と精度を同時に向上させることを目指します。

結論

  • 本タスクでのVision-Language Modelsでの画像分類の性能は低かった。
  • Promptは長い文章とした方が性能が良いことが示唆された。
  • 統計量に注目することで、分類が困難な場合を特定できそうなことが示唆された。
  • Vision-Language Models + 単純な分類モデルで誤分類が少ない推論パイプラインの有望性が示唆された。

手法の検討

商品のトップ画像の選別は分類タスクなので、これを実現する手段としては、教師あり学習や基盤モデル(Vision-Language Models)がざっと候補に上がると思います。

教師あり学習は、学習段階で画像に対応したクラスラベルを用いてモデルを訓練します。このモデルは、推論段階で新たな画像が与えられた際に、学習時に設定されたクラスの中から、その画像が属する最も可能性の高いクラスを予測します。

一方、Vision-Language Modelsは、画像とテキストを同時に解析し、これらの複数のモダリティ間の関係を評価する能力を持つモデルです。このモデルを利用すると、特定の画像に対して複数の自然言語文を提示し、それぞれの文が画像とどれだけ類似しているかを判定することが可能になります。これにより、コンテキストに富んだ分類が実現できます。これは、教師あり学習があらかじめ設定されたクラスラベルを基に分類を行うのに対して、Vision-Language Modelsは、より動的で柔軟な分類手法であるという特長があります。

教師あり学習や基盤モデル(Vision-Language Models)のそれぞれの特徴はざっと以下のように認識しています。

  精度 データ作成コスト Zero-shot性能 デプロイコスト 推論コスト
教師あり学習(ex. ResNet, ViT) 中 ~ 高
基盤モデル(Vision-Language Models) 中 ~ 高

それぞれの列の説明としては以下のとおりです。

  • 精度: モデルが分類タスクをどれだけ正確に実行できるか。
  • データ作成コスト: 訓練データを収集、整理、アノテートするのに必要なコスト。
  • Zero-shot性能: 未見のデータに対してモデルが発揮できる精度。
  • デプロイにかかるコスト: モデルを実際の環境にデプロイするための時間的、金銭的コスト。
  • 推論コスト : 推論にかかる金銭的なコスト。

上記表のポイントとして、

教師あり学習モデルは一般に高い精度を達成することが期待できます。しかしながらZero-shot性能に制限があるため、特定のタスクに特化させるためには自社でデータを収集・整理し、モデルを学習する必要がありコスト(時間的、金銭的)がかかる可能性があります。

一方、Vision-Language Models(基盤モデル)の場合、教師あり学習モデルに比べて精度が若干劣る可能性はありますが、Zero-shot性能に優れているという利点があります。これは、公開されているモデルをそのまま使用しても、多様なタスクに対してある程度の性能を発揮するため、データの収集とアノテーション、モデルの学習といったコスト(時間的、金銭的)を節約できる可能性があると考えています。

そのため、今回はより実用性の高いVision-Language Modelsを対象に実験しました。

実験

実験概要

今回はVision-Language Modelsのうち、GCPのMultiModalEmbeddingModelを使用しました。

分類モデルの基本的な処理の流れは以下のとおりです

    1. 候補となる全ての  prompt \in P のembeddingを作成する
    1. ある画像  image \in I のembeddingを作成する
    1. 1)と2)の内積をとり、argmaxを計算する。
    1. ある画像  image \in I のクラスが確定する

ここで、 prompt とは教師あり学習の枠組みでいうところのクラスを指し、今回の設定では具体的に以下のようなものを指します。

  1. 該当画像はモデルがアイテムを着用し、全身が写っている画像か?
  2. 該当画像はモデルがアイテムを着用しているが、モデルの体の一部しか映っていない画像か?
  3. 該当画像はアイテムのみが写ったモデルが着用していない、物撮りの画像か?

実験では約900画像に対して推論し、その性能を評価しました。

実験1 : 単純なPromptを投げる

素朴に、 prompt を以下とし、評価しました。

(このpromptはGPT-4が作成しました。)

  内容 prompt
#1 モデルがアイテムを着用し、全身が写っている画像か? The entire human body from head to toe is captured in the image.
#2 モデルがアイテムを着用しているが、モデルの体の一部しか映っていない画像か? Only a part of the human body is captured in the image.
#3 アイテムのみが写ったモデルが着用していない、物撮りの画像か? No human is captured in the image.

結果は以下の通りです。

  mean accuracy mean precision
試行1 0.46 0.39

ここで、

  • mean accuracyは複数のクラスがある分類タスクにおいて、それぞれのクラスでの正確さ(accuracy)を平均した値です。
    • また、accuracy とは各クラスでの正解数をそのクラスのサンプルの合計数で割った値です。
  • mean precisionは各クラスにおいて計算された適合率(precision)を平均した値です。
    • また、precision とは正と予測されたサンプルのうち、実際に正であったサンプルの割合です。

この結果を見ると性能はあまりよくないことがわかります。

以下らについてもう少し深掘りしてみます。

  • promptの分量の精度への影響
  • 間違った場合の考察

実験2 : Promptを工夫してみる

promptの分量の精度への影響について見てみます。

もしかしたら文章ではなくキーワードだけの方が性能が高いかもしれませんし、あるいは反対に長文にした方が性能が高いかもしれません。

promptは補足に掲載しますが、結果は以下の通りでした。

試行1 : ベースライン

試行2 : ベースラインからキーワードだけ抽出したもの

試行3 : ベースラインを長文化したもの

試行4 : ベースラインを長文化し、キーワードだけ抽出したもの

試行5 : 試行4のprompt間で意味が重複したキーワードらを排除したもの

  mean accuracy mean precision
試行1 0.46 0.39
試行2 0.15 0.43
試行3 0.64 0.32
試行4 0.69 0.39
試行5 0.22 0.28

この結果を踏まえると、promptにはなるべく多くのキーワードを盛り込んだ方が良さそうということがわかります。

しかし、ここで最もaccuracyが高い試行4ではpromptの中身をよく見てみると、異なるprompt間で似たキーワードを含んでいました。

そのため試行5では、そのような意味が重複した単語を排除しました。ただ不思議なことにこの試行では性能が大きく下がるという結果になっています。

実験3 : 間違った分類を回避するには?

ここで間違った問題についてもう少し深掘りしてみます。

仮説として、正解する場合は自信を持って正解するということです。すなわち以下の3)で特定のクラスだけ相対的に大きい値となることです。

逆に正解する場合は全てのクラスが同じような値になるのではないかということです。

    1. 候補となる全ての  prompt \in P のembeddingを作成する
    1. ある画像  image \in I のembeddingを作成する
    1. 1)と2)の内積をとり、argmaxを計算する。
    1. ある画像  image \in I のクラスが確定する

この差異は標準偏差で炙り出せるのではないでしょうか。

すなわち、正解する場合は標準偏差が大きく、失敗する場合は標準偏差が小さくなるということです。

実際に計算してみます。

  mean accuracy mean precision 正解した場合の3)工程での標準偏差 失敗した場合の3)工程での標準偏差
試行1 0.46 0.39 0.00421 0.0043
試行2 0.15 0.43 0.00719 0.00601
試行3 0.64 0.32 0.00463 0.00373
試行4 0.69 0.39 0.00616 0.00594
試行5 0.22 0.28 0.00513 0.00547

計算の結果、有望な性能を示したケースでは、正解時の3)の工程での標準偏差が、失敗時に比べて大きくなる傾向が確認されました。

試行4のデータについて頻度分布をヒストグラムで可視化し、分布の特徴を詳しく分析します。もし、正解と失敗の分布がはっきりと乖離している場合、特定の標準偏差を閾値として採用し、その閾値を下回る場合には、その画像の分類を避けるアプローチが有効であると考えられます。

 

試行4の標準偏差のヒストグラム

しかし、ヒストグラムの解析結果から、二つの分布がある程度重複していることが確認できます。これは、単純な閾値設定による分類の制限が難しいことを示唆しています。

それでも、3)工程の出力をもとに、「分類が成功するか、失敗するか」を判定する2値分類タスクを考えました。この方法により、分類が困難なケースを特定し、それらのケースに対する推論を避ける、あるいは特別に処理するという戦略を採用できます。

この分類モデルとしてXGBoostを使った2値分類タスクの結果は、accuracyが0.79、precisionが0.81となりました。これにより、分類が困難なケースを特定し、それを回避または別途処理できる可能性が示唆されます。言い換えると、特定の画像が誤分類される可能性を事前に排除または低減できる可能性があるということです。

Vision-Language Modelsによる分類が信頼できそうかを判定する分類モデルを活用した場合の処理の流れ

 

まとめ

今回の分析から、Vision-Language Modelsを単独で用いた場合には、今回の設定では実用的に使えないという結論になりました。しかし、性能向上の余地が存在することも明らかになりました。

例えばpromptの工夫や最適化によって、モデルの性能向上が期待されるということです。特に、promptの長文化(具体性の向上)によって、より適切な画像分類が可能となることが示唆されました。

さらにVision-Language Modelsを他の分類モデルと組み合わせて使用するアプローチも有望です。これにより、全体として誤分類のリスクを減少させることが可能です。

引き続き、これらのアプローチを深掘りし、検証を進めていく予定です。

参考文献

補足

- 実験2で用いた  prompt (このpromptはGPT-4が作成しました。)

  内容 prompt(試行1) キーワード(試行2) 長文prompt(試行3) キーワード(試行4) キーワード(試行5)
#1 モデルがアイテムを着用し、全身が写っている画像か? The entire human body from head to toe is captured in the image. entire body, head to toe, captured The image features a person fully dressed, providing a complete view of the attire from head to toe. All clothing items and accessories are clearly visible, offering an all-encompassing look at the fashion style. This allows for an in-depth analysis and categorization of the overall outfit, including design, color schemes, and combinations. person fully dressed, complete view, head to toe, clothing items, accessories, visible, fashion style, in-depth analysis, categorization, design, color schemes, combinations complete view, head to toe, fashion style, in-depth analysis, color schemes, combination
#2 モデルがアイテムを着用しているが、モデルの体の一部しか映っていない画像か? Only a part of the human body is captured in the image. part of body, captured In this image, attention is given to a specific part of the body and attire. The focused view presents detailed features of the clothing, including fabric, design, and accessories. This partial display aids in a concentrated analysis, enabling categorization based on the distinct visible elements. specific part of body, focused view, detailed features, clothing, fabric, design, accessories, partial display, concentrated analysis, categorization, visible elements specific part of body, detailed features, fabric, concentrated analysis, visible elements
#3 アイテムのみが写ったモデルが着用していない、物撮りの画像か? No human is captured in the image. no human, captured This image contains no human subject, featuring only clothing and accessories. The absence of a person allows for an unobstructed view of the attire’s design, texture, and style. It facilitates a straightforward classification of the clothing items, free from the influence of human form and posture. no human subject, clothing and accessories, unobstructed view, design, texture, style, straightforward classification, free from human form and posture no human subject, unobstructed view, texture, style, free from human form and posture

 

- 試行4での失敗例の画像

以下らの画像は 物撮りの画像(=人が写っていない) と分類されてしまいました。

(著作権の関係で画像を削除しました。編集 : 2023/10/04)

 


DROBE開発組織の紹介
組織情報ポータル