見出し画像

negocia株式会社インターンでやったこと(広告クリエイティブ画像チーム)

こんにちは、2022/03/03から3週間、negociaにインターンとして参加した東京理科大学修士1年 奥田悠太です。こちらの記事で紹介した negocia インターンで実際の業務内容になります。少し専門的な内容になるので、別記事にしました。

Tl;dr

negociaは広告画像生成の自動化及び品質向上を目指しています。その取り組みとして、今回のインターンでは

  • ベースラインモデルから、より高精度が出るモデルへの変更

  • 入力データを変更(トリミング方法の変更)による精度向上

に取り組みました。

なぜ広告画像自動生成が必要なのか

デジタル広告運用の市場規模は年々増加しており、2019年にはマス広告の市場規模を抜きました。急激な市場規模の増加に伴い,広告代理店が運用するクライアント数も年々増加の一途を辿っています。

バナー広告を例にすると、商品ごとにペルソナやKPI、訴求ポイントごとに個別カスタマイズすることが求められます。人の手による画像生成では、どうしても膨大な時間や工数がかかってしまうという課題があり、negociaでは広告画像生成・効果推定の自動化に取り組んでいます。

やったこと

現状の問題点と改善案

  • 既存モデル(mobileNetV3_small)では精度が出ていなかった

    • 他のモデルと比較し、より良いモデルを選定しました

  • モデルへの入力サイズを合わせるため、画像の入力する時に中心から正方形に切り抜いています。トリミングされた周辺情報が損失し、精度が低下していると考えられます。

    • 広告画像のアスペクト比は様々なので、広告画像に適した入力方法を検討しました

学習データについて

今回の解析では、実際にバナー広告で利用されていた画像及びその実績が紐つけられたデータを利用しました。

バナー広告には、さまざまなサイズがあるため、データに含まれる画像のサイズはバラバラです。

また、実績データには画像の表示回数を表すImpressionや広告のクリック数を表すclick、clickをimpressionで割って広告がクリックされた割合を表すClick Through Rate(CTR)などの情報が含まれています。

学習と評価方法

学習方法としてpairwiseと呼ばれるランキング学習の手法を使用しました。pairwiseは2つの画像を選択し、その画像のスコアの大小関係を教師データと比較することで学習します。

実際に、ランクづけが正しく行われているかどうかを評価するための評価方法としては、順位相関係数を用いました。順位の決定方法は入力した画像のスコアを元に順位を決めていきます。

ベースラインモデル

まずは特徴抽出のモデルを変えることで精度を上げます。使用されていた既存モデル(mobileNetV3_small)の精度は以下の通りです。

  • Acc@1

    • 67.668

  • Acc@5

    • 87.402

  • パラメータ数

    • 2,542,856

モデル検証結果

新しく精度を検証する対象となるモデルは、下記リンクを参考にピックアップし、決定しました。

https://github.com/rwightman/pytorch-image-models/blob/master/results/results-imagenet.csv

検証したモデルと選定理由

上記より、 swin_tiny_patch4_window7_224 と regnet-y-800mf の2つのモデルが良いと考えられます。

 swin_tiny_patch4_window7_224 は入力画像のサイズが固定されているため少し扱いにくいですが、 impressions の順位相関係数が最も高く出ています。 regnet-y-800mf は入力画像のサイズが可変で、 impressions の順位相関係数も2番目の値を示しています。

入力方法の検討

モデル精度向上の後は、画像の入力方法を変更することで精度向上を目指します。まず、広告バナー画像の形状を目視で確認したところ、画像の形状は以下の3パターンに分類できることがわかりました。

  • 正方形(下記以外のパターン)

  • 縦長(高さが幅の2倍以上)

  • 横長(幅が高さの2倍以上)

それぞれの画像に対して、4パターンの入力方法を検討します。

  • 画像の中心の切り抜き(ベースライン)

  • アスペクト比を無視してリサイズ

  • アスペクト比を維持してリサイズ+正方形になるようにパディング

  • 画像を4分割する

正方形、縦長、横長画像に対してのそれぞれの入力パターンは下記のようになります。

  • 正方形

左から元画像、中心切り出し、リサイズ、パディング
四分割
  • 縦長

左から元画像、中心切り出し、リサイズ、パディング
四分割
  • 横長

左から元画像、中心切り出し、リサイズ、パディング
 四分割

入力パターンの検証結果

四分割の精度が最も高い結果となりました。

regnet-y-800mf での評価
 swin_tiny_patch4_window7_224 での評価

まとめ

これらを実施することで、ベースラインを 0.0704 向上させることができました。(0.2439 → 0.3143)

  • モデルの改善

    •  mobileNetV3_small から swin_tiny_patch4_window7_224 への変更

  • 入力方法の改善

    • 画像の中心切り抜き画像をアスペクト比によって4分割し、特徴量1000個の平均値をとる

課題

今後の課題として、下記対応が考えられます

  • データ拡張

  • 広告画像にある文字の認識により精度向上

  • 学習方法の更新( pairwise → listwise )

最後に

negociaでのインターンはワンランク上へとレベルアップできるため、すごくおすすめです!

この記事を読んでnegociaでインターンをしてみたいなどの興味を持った方は

より是非応募してみてください!

この記事が気に入ったらサポートをしてみませんか?