Upgrade to Pro — share decks privately, control downloads, hide ads and more …

boke-generator

KARAKURI Inc.
November 28, 2021

 boke-generator

AWS Dev Day 2021 のイベント「電笑戦」(AIの大喜利大会)で優勝したモデルの詳細を公開します!
電笑戦は、画像に対してボケるタイプの大喜利大会で、我々が開発したモデルはキャプション生成のモデルになっています。

このスライドは、カラクリ株式会社の武藤が作成しました。

- 【AWS Dev Day 2021】 https://pages.awscloud.com/AWS-Dev-Day-Online-Japan-2021-registration.html
- 【カラクリ株式会社】 https://about.karakuri.ai/

KARAKURI Inc.

November 28, 2021
Tweet

More Decks by KARAKURI Inc.

Other Decks in Research

Transcript

  1. KARAKURI Inc. All rights reserved.
 1

    2021/11/25

    カラクリ株式会社 武藤健介

    JAWS-UG AI/ML #12

    単語の事前分布を用いたボケ生成

    〜 電笑戦の大喜利 AI の仕組み 〜


    View Slide

  2. KARAKURI Inc. All rights reserved.
 2

    背景:電笑戦とは

    - AIによる大喜利対決

    - ジャンルは、画像に一言

    - 詳細は「ボケて」を参照

    - https://bokete.jp/ 

    - データ

    - 画像とボケ文100万件

    - 回答方法

    - 制限時間内に、AIを使って複数個のボケを生成し、そこ
    から回答を選択


    今回は、ボケ生成AIの仕組みを話します!

    https://bokete.jp/boke/popular より抜粋


    View Slide

  3. KARAKURI Inc. All rights reserved.
 3

    - データ

    - 画像と文章のペア

    - ベンチマークデータセットはMSCOCO [X Chen+ 2015]

    - 1画像5テキスト

    - 研究の進み

    - CNN + LSTM

    - 画像から単一の特徴量を抽出

    - 画像から複数の特徴量を抽出

    - CNN + Attention + LSTM [P Anderson+ CVPR 2018]

    - アテンション機構の導入

    - Transformer のみ (Object Relation Transformer) [S Herdade+ NeurIPS 2019]

    - オブジェクト間の相対位置情報の活用

    - Transformer : ニューラルネットの部品でNLPなどで大活躍している

    - 補足:前処理では CNN も使う

    背景:キャプション生成

    小判の前に猫が立っています


    View Slide

  4. KARAKURI Inc. All rights reserved.
 4

    - データ

    - 画像と文章のペア

    - ベンチマークデータセットはMSCOCO [X Chen+ 2015]

    - 1画像5テキスト

    - 研究の進み

    - CNN + LSTM

    - 画像から単一の特徴量を抽出

    - 画像から複数の特徴量を抽出

    - CNN + Attention + LSTM [P Anderson+ CVPR 2018]

    - アテンション機構の導入

    - Transformer のみ (Object Relation Transformer) [S Herdade+ NeurIPS 2019]

    - オブジェクト間の相対位置情報の活用

    - Transformer : ニューラルネットの部品でNLPなどで大活躍している


    - 現状、人類がやれてるのは画像の説明くらいで、「面白くボケる」というのはとても難しいタスク...!

    背景:キャプション生成

    小判の前に猫が立っています


    View Slide

  5. KARAKURI Inc. All rights reserved.
 5

    モデルの概要

    物体の特徴量

    物体間の空間的関係


    Decoder



    Encoder


    単語1

    単語2

    単語3

    . . .

    . . .

    物体の特徴量

    物体の特徴量

    - Encoder

    - Object Relation Transformer

    - Decoder

    - LSTM

    - 先行研究ではここも Transformer


    View Slide

  6. KARAKURI Inc. All rights reserved.
 6

    モデルの概要

    物体の特徴量

    物体間の空間的関係


    Decoder



    Encoder


    faster RCNN (Detectron2) 

    で物体検出、特徴量抽出

    バウンディングボックスの情報から、物体
    間の相対的な位置関係を計算

    - Encoder

    - Object Relation Transformer

    - Decoder

    - LSTM

    - 先行研究ではここも Transformer

    単語1

    単語2

    単語3

    . . .

    . . .

    物体の特徴量

    物体の特徴量


    View Slide

  7. KARAKURI Inc. All rights reserved.
 7

    モデルの概要:単語の事前分布

    物体の特徴量

    物体間の空間的関係


    Decoder



    Encoder


    - Encoder

    - Object Relation Transformer

    - Decoder

    - LSTM

    - 先行研究ではここも Transformer

    単語1

    単語2

    単語3

    . . .

    . . .

    物体の特徴量

    物体の特徴量

    - 類似画像のボケに使われる単語を抽出

    - 1単語目の生成に使う、単語の事前分布を作成


    View Slide

  8. KARAKURI Inc. All rights reserved.
 8

    1. モデルの詳細

    a. Decoder まわり

    i. RNN を使った理由

    ii. 単語の事前分布の活用

    b. Encoder まわり

    i. Transformer の基礎

    ii. 先行研究(Object Relation Transformer)

    2. 学習条件など

    3. 現状のモデルの課題感

    4. まとめ

    目次


    View Slide

  9. KARAKURI Inc. All rights reserved.
 9

    Decoder に RNN を使った理由

    - 前提

    - 学習に使うボケ文から単語を抽出(形態素解析)

    - 例)猫に小判 → BOS / 猫 / に / 小判 / EOS

    - MeCab-NEologd を使った

    - 各単語に ID を振り分ける

    - 例)猫 : ①, に: ②, 小判 : ③

    - 単語の生成は、単語 ID の分類問題になる

    - 分類問題を、EOS が出るまで解き続ける(一般には回数の上限も設定する)


    View Slide

  10. KARAKURI Inc. All rights reserved.
 10

    Decoder に RNN を使った理由

    - 前提

    - 学習に使うボケ文から単語を抽出(形態素解析)

    - 例)猫に小判 → BOS / 猫 / に / 小判 / EOS

    - MeCab-NEologd を使った

    - 各単語に ID を振り分ける

    - 例)猫 : ①, に: ②, 小判 : ③

    - 単語の生成は、単語 ID の分類問題になる

    - 分類問題を、EOS が出るまで解き続ける(一般には回数の上限も設定する)

    - RNN 系だと多様な文を生成しやすい

    - ボケ文は非常に多様


    Decoder


    単語1

    単語2

    単語3

    . . .

    画像の特徴 X →

    P( 単語1 | X )

    P( 単語2 | X, 単語1 )

    P( 単語3 | X, 単語1, 単語2 )

    分類モデル P


    View Slide

  11. KARAKURI Inc. All rights reserved.
 11

    単語の事前分布の活用


    Decoder


    単語1

    単語2

    単語3

    . . .

    画像の特徴 X →

    P( 単語1 | X )

    P( 単語2 | X, 単語1 )

    P( 単語3 | X, 単語1, 単語2 )

    - P( 単語1 | X ) = ( ID ① の単語の確率, ID ② の単語の確率, … )

    - 特定の面白そうな単語の採択確率を底上げしたい...!

    - 数学的には、P( 単語1 | X ) × Q( 単語1 | 類似画像のボケ文 ) が、特定の単語の出現確率を底上げす
    るように Q を上手く作れば良い

    - 類似画像のボケ文でよく使われる、名詞、動詞、形容詞に対して底上げ

    - 長い固有名詞は積極的に底上げ

    分類モデル P


    View Slide

  12. KARAKURI Inc. All rights reserved.
 12

    類似画像の検索方法

    - ResNet50 で画像の特徴量を取得

    - 最後から2番目の層の2048次元ベクトル

    - 画像間の類似度は特徴ベクトルのコサイン類似度で計算

    - 推論時は、お題画像との類似度が上位20位までの画像を抽出し、対応するボケ文を集めた


    View Slide

  13. KARAKURI Inc. All rights reserved.
 13

    事前分布の活躍

    - 「車検」や「液晶」は類似画像でも使われていたので、事前分布の影響で選ばれた可能性が高い

    - ぶっちゃけ、類似画像のボケ文をそのまま取り出すだけでも面白かったりする...!

    - 面白さには、文の完成度もとても重要


    View Slide

  14. KARAKURI Inc. All rights reserved.
 14

    1. モデルの詳細

    a. Decoder まわり

    i. RNN を使った理由

    ii. 単語の事前分布の活用

    b. Encoder まわり

    i. Transformer の基礎

    ii. 先行研究(Object Relation Transformer)

    2. 学習条件など

    3. 現状のモデルの課題感

    4. まとめ

    目次


    View Slide

  15. KARAKURI Inc. All rights reserved.
 15

    Transformer の基礎

    - 3行でまとめる

    - 系列の情報を可能な限りリッチに扱いたい

    - 必要な情報に対して適切に重み付けを行いたい

    - Attention(注意)機構

    - 注意の向け方のバリエーションを複数持つことで、情報の取りこぼしを減らす

    - Multi-Head Attention

    - 今回は、Head を8つにした

    物体の特徴量


    Encoder


    . . .

    物体の特徴量

    物体の特徴量


    View Slide

  16. KARAKURI Inc. All rights reserved.
 16

    Transformer の基礎

    - 3行でまとめる

    - 系列の情報を可能な限りリッチに扱いたい

    - 必要な情報に対して適切に重み付けを行いたい

    - Attention(注意)機構

    - 注意の向け方のバリエーションを複数持つことで、情報の取りこぼしを減らす

    - Multi-Head Attention

    - 今回は、Head を8つにした

    系列情報

    (単語や特徴量の列)

    情報処理部隊1
 情報処理部隊2

    . . . 

    ↓ Transformer

    ↓ Encoder


    View Slide

  17. KARAKURI Inc. All rights reserved.
 17

    Transformer の基礎

    - 1つの Attention に関する説明

    - 重みは X から上手く計算されるが、詳細は割愛する

    横ベクトルの特徴量

    行列をかける
 Attention

    ここで、重みの総和は1になる


    View Slide

  18. KARAKURI Inc. All rights reserved.
 18

    詳しく知りたい方向け

    - YouTube で「Aicia Transformer」などと検索!

    - https://www.youtube.com/watch?v=50XvMaWhiTY&t=2097s 


    View Slide

  19. KARAKURI Inc. All rights reserved.
 19

    Object Relation Transformer [S Herdade+ NeurIPS 2019]

    は重み

    - 式 (6), (7) について
    - ヒューリスティック
    - Relation Networks for Object Detection あたり
    でも使われている
    - https://arxiv.org/pdf/1711.11575.pdf
    - 発散問題
    - clamp してるので log の中身は0にならない

    View Slide

  20. KARAKURI Inc. All rights reserved.
 20

    学習条件

    - データ

    - 35万文

    - トークン長 4 ~ 19、星4以上に制限

    - ボケの面白さは星の数で評価される

    - モデル

    - Encoder

    - Object Relation Transformer を6層

    - 出力前に、オブジェクト数方向に mean をとった

    - オブジェクト数が可変なので

    - Decoder

    - LSTM を1層

    - Loss

    - クロスエントロピー

    - トレーニング

    - Deep Learning AMI、p2.xlarge で学習

    - ライブラリは pytorch

    - 学習には数日かかった(たしか3 ~ 4日程度)


    View Slide

  21. KARAKURI Inc. All rights reserved.
 21

    前処理の詳細

    - 画像

    - Detectron2(Faster R-CNN with ResNet-101)

    - 比較的短時間で、物体検出、検出した物体の特徴抽出を行える

    - バウンディングボックスの座標情報

    - 物体の特徴量(2048次元)

    - 今回は検出上限数を20とした(先行研究では36)

    - ボケ文

    - MeCab でパース。ストップワードなし。

    https://github.com/facebookresearch/detectron2 


    View Slide

  22. KARAKURI Inc. All rights reserved.
 22

    1. モデルの詳細

    a. Decoder まわり

    i. RNN を使った理由

    ii. 単語の事前分布の活用

    b. Encoder まわり

    i. Transformer の基礎

    ii. 先行研究(Object Relation Transformer)

    2. 学習条件など

    3. 現状のモデルの課題感

    4. まとめ

    目次


    View Slide

  23. KARAKURI Inc. All rights reserved.
 23

    現状のモデルの課題

    - 情報を Decoder に渡す際に、オブジェクト数の方向に平均化していたが本当は良くない

    - もう1層 LSTM を追加して、(可変個の)特徴量を順番に伝え、その最終状態を画像の特徴として扱う
    のが好ましい...

    - 画像認識

    - 人の表情など、細かな特徴を捉えるのが難しい

    - 理想的には、詳細な画像分類を行えるモデルで特徴量を抽出すべき

    - 今回は、1000値分類を行うための特徴しか得られていない

    - 分類候補以外の画像に対しては認識を間違ってしまう

    - 物体検出時に、人だと判断したものに対しては、表情を読み取るエンジンに流したりすると良い
    かもしれない

    - 前処理に Faster RCNN を使っていたが、もっと良いモデルがあるかもしれない

    - 今回は細かい部分まで検討できていない...

    - 物体の特徴抽出に関して、自己教師あり学習(SimCLR, DINO など)の学習済みモデルから特徴量
    を得るという方針もありそう

    - モデルのハイパーパラメータ調整


    View Slide

  24. KARAKURI Inc. All rights reserved.
 24

    まとめ:モデルの概要

    物体の特徴量

    物体間の空間的関係


    Decoder



    Encoder


    - Encoder

    - Object Relation Transformer 6層

    - Decoder

    - LSTM 1層

    - 先行研究ではここも Transformer

    単語1

    単語2

    単語3

    . . .

    . . .

    物体の特徴量

    物体の特徴量

    - 類似画像のボケに使われる単語を抽出

    - 1単語目の生成に使う、単語の事前分布を構成

    - Detectron2 で、特徴量、ボックス情報を取得

    - MeCab でボケ文をパースし単語を取り出す


    View Slide

  25. KARAKURI Inc. All rights reserved.
 25

    会社紹介

    - カスタマーサポート業務のデジタル化、AIを用いた自動化を行っている

    - チャットボットなどによる問い合わせ対応の自動化

    - 最近は、サイレントカスタマーの救済に注力

    - AIが利用者の困り事・困り度合いを推論し、能動的にアクションを行う

    - 「Web × 機械学習」で攻めたことをやっている

    - 絶賛、エンジニアの採用活動中!!

    コーポレートサイト
    https://about.karakuri.ai/ 


    View Slide

  26. KARAKURI Inc. All rights reserved.
 26

    付録:Detectron2

    - github 

    - Colab notebook のリンクもある!


    View Slide

  27. KARAKURI Inc. All rights reserved.
 27

    付録:先行研究

    - github 

    - RelationTransformerModel.py を適宜改変すればモデルの変更など行える


    View Slide

  28. KARAKURI Inc. All rights reserved.
 28

    - 規格化前の底上げ度合い

    - 一般名詞、動詞、形容詞 : 0.025 * ( 類似画像のボケ文での登場回数 )^{1/2}

    - 固有名詞 : 0.015 * ( 文字列長 )^{1/2}

    - ここで、類似画像は類似度上位20位程度まで参照

    付録:事前分布の詳細


    View Slide