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 の仕組み 〜

  2. KARAKURI Inc. All rights reserved.
 2
 背景:電笑戦とは
 - AIによる大喜利対決
 -

    ジャンルは、画像に一言
 - 詳細は「ボケて」を参照
 - https://bokete.jp/ 
 - データ
 - 画像とボケ文100万件
 - 回答方法
 - 制限時間内に、AIを使って複数個のボケを生成し、そこ から回答を選択
 
 今回は、ボケ生成AIの仕組みを話します!
 https://bokete.jp/boke/popular より抜粋

  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 も使う
 背景:キャプション生成
 小判の前に猫が立っています

  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などで大活躍している
 
 - 現状、人類がやれてるのは画像の説明くらいで、「面白くボケる」というのはとても難しいタスク...!
 背景:キャプション生成
 小判の前に猫が立っています

  5. KARAKURI Inc. All rights reserved.
 5
 モデルの概要
 物体の特徴量
 物体間の空間的関係
 


    Decoder
 
 
 Encoder
 
 単語1
 単語2
 単語3
 . . .
 . . .
 物体の特徴量
 物体の特徴量
 - Encoder
 - Object Relation Transformer
 - Decoder
 - LSTM
 - 先行研究ではここも Transformer

  6. KARAKURI Inc. All rights reserved.
 6
 モデルの概要
 物体の特徴量
 物体間の空間的関係
 


    Decoder
 
 
 Encoder
 
 faster RCNN (Detectron2) 
 で物体検出、特徴量抽出
 バウンディングボックスの情報から、物体 間の相対的な位置関係を計算
 - Encoder
 - Object Relation Transformer
 - Decoder
 - LSTM
 - 先行研究ではここも Transformer
 単語1
 単語2
 単語3
 . . .
 . . .
 物体の特徴量
 物体の特徴量

  7. KARAKURI Inc. All rights reserved.
 7
 モデルの概要:単語の事前分布
 物体の特徴量
 物体間の空間的関係
 


    Decoder
 
 
 Encoder
 
 - Encoder
 - Object Relation Transformer
 - Decoder
 - LSTM
 - 先行研究ではここも Transformer
 単語1
 単語2
 単語3
 . . .
 . . .
 物体の特徴量
 物体の特徴量
 - 類似画像のボケに使われる単語を抽出
 - 1単語目の生成に使う、単語の事前分布を作成

  8. KARAKURI Inc. All rights reserved.
 8
 1. モデルの詳細
 a. Decoder

    まわり
 i. RNN を使った理由
 ii. 単語の事前分布の活用
 b. Encoder まわり
 i. Transformer の基礎
 ii. 先行研究(Object Relation Transformer)
 2. 学習条件など
 3. 現状のモデルの課題感
 4. まとめ
 目次

  9. KARAKURI Inc. All rights reserved.
 9
 Decoder に RNN を使った理由


    - 前提
 - 学習に使うボケ文から単語を抽出(形態素解析)
 - 例)猫に小判 → BOS / 猫 / に / 小判 / EOS
 - MeCab-NEologd を使った
 - 各単語に ID を振り分ける
 - 例)猫 : ①, に: ②, 小判 : ③
 - 単語の生成は、単語 ID の分類問題になる
 - 分類問題を、EOS が出るまで解き続ける(一般には回数の上限も設定する)

  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

  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

  12. KARAKURI Inc. All rights reserved.
 12
 類似画像の検索方法
 - ResNet50 で画像の特徴量を取得


    - 最後から2番目の層の2048次元ベクトル
 - 画像間の類似度は特徴ベクトルのコサイン類似度で計算
 - 推論時は、お題画像との類似度が上位20位までの画像を抽出し、対応するボケ文を集めた

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

    ぶっちゃけ、類似画像のボケ文をそのまま取り出すだけでも面白かったりする...!
 - 面白さには、文の完成度もとても重要

  14. KARAKURI Inc. All rights reserved.
 14
 1. モデルの詳細
 a. Decoder

    まわり
 i. RNN を使った理由
 ii. 単語の事前分布の活用
 b. Encoder まわり
 i. Transformer の基礎
 ii. 先行研究(Object Relation Transformer)
 2. 学習条件など
 3. 現状のモデルの課題感
 4. まとめ
 目次

  15. KARAKURI Inc. All rights reserved.
 15
 Transformer の基礎
 - 3行でまとめる


    - 系列の情報を可能な限りリッチに扱いたい
 - 必要な情報に対して適切に重み付けを行いたい
 - Attention(注意)機構
 - 注意の向け方のバリエーションを複数持つことで、情報の取りこぼしを減らす
 - Multi-Head Attention
 - 今回は、Head を8つにした
 物体の特徴量
 
 Encoder
 
 . . .
 物体の特徴量
 物体の特徴量

  16. KARAKURI Inc. All rights reserved.
 16
 Transformer の基礎
 - 3行でまとめる


    - 系列の情報を可能な限りリッチに扱いたい
 - 必要な情報に対して適切に重み付けを行いたい
 - Attention(注意)機構
 - 注意の向け方のバリエーションを複数持つことで、情報の取りこぼしを減らす
 - Multi-Head Attention
 - 今回は、Head を8つにした
 系列情報
 (単語や特徴量の列)
 情報処理部隊1
 情報処理部隊2
 . . . 
 ↓ Transformer
 ↓ Encoder

  17. KARAKURI Inc. All rights reserved.
 17
 Transformer の基礎
 - 1つの

    Attention に関する説明
 - 重みは X から上手く計算されるが、詳細は割愛する
 横ベクトルの特徴量
 行列をかける
 Attention
 ここで、重みの総和は1になる

  18. KARAKURI Inc. All rights reserved.
 18
 詳しく知りたい方向け
 - YouTube で「Aicia

    Transformer」などと検索!
 - https://www.youtube.com/watch?v=50XvMaWhiTY&t=2097s 

  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にならない
  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日程度)

  21. KARAKURI Inc. All rights reserved.
 21
 前処理の詳細
 - 画像
 -

    Detectron2(Faster R-CNN with ResNet-101)
 - 比較的短時間で、物体検出、検出した物体の特徴抽出を行える
 - バウンディングボックスの座標情報
 - 物体の特徴量(2048次元)
 - 今回は検出上限数を20とした(先行研究では36)
 - ボケ文
 - MeCab でパース。ストップワードなし。
 https://github.com/facebookresearch/detectron2 

  22. KARAKURI Inc. All rights reserved.
 22
 1. モデルの詳細
 a. Decoder

    まわり
 i. RNN を使った理由
 ii. 単語の事前分布の活用
 b. Encoder まわり
 i. Transformer の基礎
 ii. 先行研究(Object Relation Transformer)
 2. 学習条件など
 3. 現状のモデルの課題感
 4. まとめ
 目次

  23. KARAKURI Inc. All rights reserved.
 23
 現状のモデルの課題
 - 情報を Decoder

    に渡す際に、オブジェクト数の方向に平均化していたが本当は良くない
 - もう1層 LSTM を追加して、(可変個の)特徴量を順番に伝え、その最終状態を画像の特徴として扱う のが好ましい...
 - 画像認識
 - 人の表情など、細かな特徴を捉えるのが難しい
 - 理想的には、詳細な画像分類を行えるモデルで特徴量を抽出すべき
 - 今回は、1000値分類を行うための特徴しか得られていない
 - 分類候補以外の画像に対しては認識を間違ってしまう
 - 物体検出時に、人だと判断したものに対しては、表情を読み取るエンジンに流したりすると良い かもしれない
 - 前処理に Faster RCNN を使っていたが、もっと良いモデルがあるかもしれない
 - 今回は細かい部分まで検討できていない...
 - 物体の特徴抽出に関して、自己教師あり学習(SimCLR, DINO など)の学習済みモデルから特徴量 を得るという方針もありそう
 - モデルのハイパーパラメータ調整

  24. KARAKURI Inc. All rights reserved.
 24
 まとめ:モデルの概要
 物体の特徴量
 物体間の空間的関係
 


    Decoder
 
 
 Encoder
 
 - Encoder
 - Object Relation Transformer 6層
 - Decoder
 - LSTM 1層
 - 先行研究ではここも Transformer
 単語1
 単語2
 単語3
 . . .
 . . .
 物体の特徴量
 物体の特徴量
 - 類似画像のボケに使われる単語を抽出
 - 1単語目の生成に使う、単語の事前分布を構成
 - Detectron2 で、特徴量、ボックス情報を取得
 - MeCab でボケ文をパースし単語を取り出す

  25. KARAKURI Inc. All rights reserved.
 25
 会社紹介
 - カスタマーサポート業務のデジタル化、AIを用いた自動化を行っている
 -

    チャットボットなどによる問い合わせ対応の自動化
 - 最近は、サイレントカスタマーの救済に注力
 - AIが利用者の困り事・困り度合いを推論し、能動的にアクションを行う
 - 「Web × 機械学習」で攻めたことをやっている
 - 絶賛、エンジニアの採用活動中!!
 コーポレートサイト https://about.karakuri.ai/ 

  26. KARAKURI Inc. All rights reserved.
 27
 付録:先行研究
 - github 


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

  27. KARAKURI Inc. All rights reserved.
 28
 - 規格化前の底上げ度合い
 - 一般名詞、動詞、形容詞

    : 0.025 * ( 類似画像のボケ文での登場回数 )^{1/2}
 - 固有名詞 : 0.015 * ( 文字列長 )^{1/2}
 - ここで、類似画像は類似度上位20位程度まで参照
 付録:事前分布の詳細