画像キャプション生成 (Image Captioning): (1) 基本編

1. 画像キャプション生成の概要

画像キャプション生成(Image Captioning)とは,1枚の画像を入力として,その画像中で行われている出来事や人物・動物などの振る舞いなどを説明するキャプション(caption)の文章を生成する問題である.画像中の各要素をそれぞれ画像認識モデルで認識したのち,その画像特徴量や識別されたラベルをもとに,言語モデルを用いてキャプションを生成する.

この記事では,画像キャプション生成の技術のうち,ディープラーニング以前の初期の研究から,2017~2018年頃までの深層学習ベースの「基本的手法」を紹介する.

1.1 Image Captioning 問題の位置付け

1.1.1 Vision and Language 問題の1つとしての画像キャプション生成

画像キャプション生成は「画像・動画」と「その説明文章」の対応関係を機械学習する,Vision and Languageの1問題である.図1は,画像キャプション生成の問題設定を図示したものである.

画像キャプション生成(Image Captioning)
図1 画像キャプション生成.入力の画像(芝生に座っているコーギー犬)が 画像キャプション生成モデルに入力されると,出力としてその画像の内容を記述したキャプション文(ここでは英語の説明文)が生成される.

画像キャプション生成モデルは,Image DecoderとLanguage Decoderにアテンション機構を加えた「seq2seq with attention」ベースの構成することが多かった.それが,近年では,Transformerを用いてシステムを構成することも多い.

1.1.2 なぜ英語文を主に生成するか

研究業界では,画像キャプショニング向けのデータセットは「画像と英語説明文のペア」のものが大多数であり,英語文を生成する画像キャプショニングモデルが中心的に研究され続けている.キャプションが日本語化されたデータセットも存在しているが,まだ産業応用でのキラーアプリケーションの成功例が日本ではないのもあり,まだ日本語文キャプションの研究例や応用例は多くない.

ただし,近年は機械翻訳モデルの進歩も目覚ましいので,英語のキャプションさえ生成できてしまえば,あとは英語から目的の多言語に自動翻訳すればよい,という考えた方もできる.

1.1.3 クラス識別による画像認識と,画像キャプション生成の違い

以前の画像認識では,クラス識別ラベルを用いて,画像もしくは物体の領域を「車」とか「人」と識別する予測モデルを学習するのが主流であった.つまり個別の物体にラベルを予測しており,シーン全体の記述は予測していなかった.

それに対し,画像キャプション生成は,生成する文章キャプションを構成するシーン中の多くのつぶさな情報の言語化を行う.従って,各物体の行動や状態・属性の画像認識に加えて,画像中に登場する物体間の関係性背景・場所のシーン状況なども画像から把握しておく必要がある.

また,人間が読みやすく文法的にも正しい「自然な文章」としてキャプションを生成する必要があり,そのための自然言語処理の技術も必要となる.各物体を物体検出器でラベル付けして,それをつぎはぎするだけでは自然な文章とはならないので,自然な文章を生成する技術も必要となる.

このように,初期の画像キャプション生成(およびその他のVision and Language 問題全般)は,技術的難易度の高さがあり, データセット準備コストの高さもあったので,腕利きの先端的研究者でもないと,なかなか手を出しづらかった面があった(2節).それが,ディープラーニング登場後は,シンプルな seq2seqとアテンション機構が解決策として登場したことで技術的敷居が下がり,画像キャプション生成やその他Vision and Languageの応用研究例も一気に増加していく(3節~5節).

1.2 記事の構成 : 各Image Captioning 技術の登場順に基づいて.

2節以降,この記事では,画像キャプション生成の代表的な研究を,登場した時系列順に以下の4つに大別して紹介する:

  • 2節:画像キャプション生成問題の提案器 (初期の研究群)
  • 3節:ディープラーニング流行後初期の手法:ニューラル言語モデルや,seq2seq with attentionの応用.
  • 4節:物体領域へ注目するディープ手法(1):視覚アテンションで,物体領域と対応する単語の間だけでより強く対応づけする手法.
  • 5節:物体領域へ注目するディープ手法(2):物体検出領域と物体単語間で,明示的な対応づけも行う手法.
  • 6節:まとめ

これらの,おおよそ2017~2018年頃の主な画像キャプション生成の研究を,この記事「(1) 基本編」でまとめる.

2017年ごろ以降,更に問題設定や解き方が多様化しているが ,それらについては別の記事 「(2) 応用編」としてまとめたい (例:問題設定としては,パーソナライズ化,文章スタイル変化.手段としては self-attention / Transformer や unsupervised pre-training (contrastive learning) の導入など).

2 画像キャプション生成問題の提案期 (初期の研究群)

Deep Learning 登場以前は,まずNLPコミュニティ側からその技術をコンピュータビジョンへも応用するイメージで,画像キャプション生成の初期的な研究が行われた.

当時の画像認識業界では,Pascal VOC や ImageNet データセットでの「物体クラス識別」により,クラス識別結果の単語として,画像中に映る「1つの」物体やシーン名をラベル付けしておいて,その予測器を学習する発想が主であった (AlexNetやVGGNetなど).

したがって,そうした時代に「画像の広域的なシーン全体の様子を認識し,キャプションに変換して生成しようという」発想は新しかった.前述の通り,CNNにRNNやseq2seqが登場していないこの2節の時代には,画像側とテキスト側を統合することはまだ難易度も高く,優秀な研究者以外は手を出しづらい研究テーマであった.

2.1 単語グラフから,テンプレート文を利用して生成する手法

画像キャプション生成の初期は,画像中の「主語」や「動詞」や「シーンの様子」から構成される単語グラフを生成し,テンプレートキャプション文の空きスロットに,それらのグラフ中の各単語を当てはめる手法が提案されていた[Farhadi et al., 2010], [Kulkarni et al., 2011].2節冒頭で述べたように,画像認識側が「単語クラスの識別 」時代であったことも理由で,まずはその延長として画像キャプション生成ができる手法を考えていこうという流れである.従って処理手順としては,まず前半に画像識別で画像全体や画像の各物体領域の単語ラベルを推定しておき,その後に推定したラベル群とデータセットのテンプレート文から説明文を合成することが主流であった.

[Farhadi et al., 2010] は,入力画像からMRFで構造化推論した ⟨object, action, scene⟩ の3単語トリプレットに対し,データセット( 画像 + ⟨object, action, scene⟩ + キャプション文が1セット) 中の,最近傍のトリプレットを検索したのち,最近傍トリプレットに対応するキャプションを最終出力として生成する手法を提案した.

[Kulkarni et al., 2011] は,テンプレート文の空きスロットを,画像検出した単語で埋めるBabyTalkという手法を提案した.BabyTalkでは,まず画像中の各物体の <Object, Attribute> のノードをDeformable Part Models [Felzenszwalb et al., 2008], [Felzenszwalb et al., 2010] により検出し,それら各物体間の位置関係の <relation>を,CRFを用いて構造化推定をおこなう.その後,テンプレート文のスロットに推定した各単語を埋めて「<Attribute> 付き物体名と,物体間 <relation> を含んだキャプション文」をグラフ中の <relation> の個数だけ生成する.(Babytalk と命名されたのは,赤ちゃんの初めて話す文章のような,テンプレート文の穴埋めによるキャプション生成手法であるのが理由)

2.2 初期手法の弱点脱却を狙う手法の登場.

2.1節の初期手法の多くは,データベース中の画像に対応するテンプレート文に頼った手法であった.しかし,その方向性では,データセットに含まれない単語を組み合わせたキャプションが生成できない.また,テンプレート文と似た文章しか生成できないと制限もある.従って,リッチな語彙やフレーズを用いた自然な文章の生成が難しいのが当時の課題であっので,その脱却を狙って「生成文を多様化できる手法」の研究が行われはじめた.

[Kuznetsova et al., 2012], [Mitchell et al., 2012] では,2.1.節の ⟨object, action, object-relation⟩ のラベルも用意したデータセットを用いるのに加えて,シンタックス的に事前に良く整理した木構造を学習時に構築しておきキャプションを生成する.綺麗なシンタックス木が用意されているので,従来よりも効率的かつ自然なキャプション文の生成をおこなえるようになった.

一方,[Ushiku et al., 2011], [Ushiku et al., 2012] は,文中の「フレーズ」単位の処理に着目した,画像-キャプションの共同埋め込み空間上でのクロスモーダル検索で得られたフレーズ群を,キャプションとして1文章に合成する手法を提案した.[Ushiku et al., 2011]では,まず画像認識結果から,画像-キャプション間の クロスモーダル埋め込み空間において,最近傍の<画像-キャプション>ペアをN個検索する.次に,その検索したN個のペアの各キャプションから「画像認識結果に対応するフレーズ」を抽出し,抽出されたフレーズ群から,最終的な画像キャプション1文を再構築する.このように,中間表現に「フレーズ」を採用したことで,生成キャプション文の多様さと自然さを実現できた.また,2.1節の手法のような各画像への <object, attribute, verb, scene> の中間表現グラフのラベル付けを不要化でき,<画像-キャプション>のペアだけで,データセットを構成できるのも利点である.更に[Ushiku et al., 2012] では,入力画像側でも複数フレーズを画像認識する発展版が提案された.入力画像から複数キーフレーズを画像認識したのち,それらを文法モデルで校正したのちフレーズ群を文章に合成することにより,複数物体が映る画像でも自然で正しい説明文を生成しやすくなった.

ちなみに,牛久氏の [Ushiku et al., 2011], [Ushiku et al., 2012] のような「クロスモーダル検索空間を用いた画像キャプション生成手法」は,この頃以前は正準相関分析を用いて共同埋め込みを学習していた.しかし,Deep Embedding 手法が登場して普及すると「image-to-text とtext-to-image間の双方向検索」という路線へも関連・発展していく方向性の問題設定である.

3 ディープラーニング流行後初期の手法: ニューラル言語モデルやseq2seq with attentionの応用.

2012年頃,ディープラーニングが少しずつブームになり始めると,自然言語処理業界では,RNNLSTM を用いることで,従来よりも自然な文章を生成・予測できる「ニューラル言語モデル」の研究が盛んになった.そして,機械翻訳の応用を皮切りに,ニューラル言語モデルを2つ繋いだseq2seqも登場して流行した.その直後,アテンション機構の登場で,seq2seqが認識・生成できる系列データの幅も広がった.

両者を合体させたseq2seq with attentionが,画像キャプション生成にも応用された結果,ディープラーニング登場以前(2節)では苦戦していた「生成文の人間らしさ(自然さ)」を以前よりも楽に獲得できるようになった.なおかつ, ディープモデルを用いているので,データセット量を増やして「モデルをスケールさせる」ことも以前より容易となった.

3.1 Show and Tell: まだ視覚アテンションは用いない

まずGoogle から発表された Show and Tell [Vinyal et al., 2015] では,seq2seq の前半RNNをCNNに差し替えた「画像キャプション生成に,初めてseq2seqモデルを素直に応用した手法」が提案された.

前半処理では,CNN (GoogLeNet) で画像全体を1つの特徴ベクトルとしてEncodeする.後半では,その特徴ベクトルを入力として,LSTM言語モデルが1単語ずつキャプション文を生成する.

このseq2seq手法の初導入により,旧来手法を評価値で大きく上回ったうえ,人間が作ったキャプション文のスコアにも近づいた.すなわち,本手法で自然なキャプションをシンプルなseq2seq手法を用いて生成できるようになった.しかし,単純なseq2seqではボトルネック部分で固定表現になってしまい,多様なキャプションを生成するには難があった.

3.2 Show, Attend and Tell

“Show and Tell”のすぐ後に提案された Show, Attend and Tell [Xu et al., 2015] では,”Show and Tell”のseq2seq with attention 版とみなせる手法が提案された.”Show, Attend and Tell”は,当時の画像キャプション生成の決定版的な手法となり,その後,本手法を改良した研究がたくさん提案される.その場合,論文名もならって「〇〇, △△ and □□; ~ 」と三段活用になっていることが多い.

[Xu et al., 2015] の詳細は,以下の記事の3節「画像キャプショニングにおける seq2seq with attentionの応用」を参照のこと.

4. 物体領域へ注目するディープ手法 (1): 視覚アテンションで,物体領域と対応する単語間をより強く対応づけ.

3.2節の”Show, Attend and Tell”では,視覚アテンション機構により,画像のローカル特徴を生成キャプションの各単語と対応付けさせていた.しかし,キャプション生成で注目したい画像中の情報は,主に<物体> や,その物体の <属性> を示した単語・フレーズのみである (2節の頃と同じ).よって,たとえば英語キャプションの場合だと,冠詞や前置詞などは,明確に対応する画像領域が存在しない単語であり,視覚アテンションによる対応付けが不要である側面もあった.

従って,3節の通り空間的視覚アテンションを使うのは同じであるものの,入力画像で認識できる<object> <attribute> <scene>などの,画像領域に対応部分がある単語だけを,より強くアテンションで対応付けして,そうでない単語は対応付を抑える手法が提案されはじめる [Lu et al., 2017],[Chen et al., 2017].

Visual Sentinel
図 2 Visual Sentinel を用いた適応的アテンション変化を利用した画像キャプション生成.[Lu et al., 2017] から引用. ゲート機構であるVisual Sentinelが,RNN言語モデルのどの単語にどのくらい注目するかの調整を担当する.これにより,Visual Spatial アテンション機構のみ使用する場合と比べると,言語モデル側の各単語が画像中に接地されているかの度合い(visual grounding 度合い)も加味した,キャプション生成モデルを構成できる.

[Lu et al., 2017] は,画像キャプション生成向けに特化した適応的なゲート機構である visual sentinel を,visual attention機構と組み合わせる手法を提案した(図2).[Lu et al., 2017] では,言語RNNの予測単語が,画像側へどれほど 「attendすべきか or しないべき」かについても, visual sentinel (ゲート機構)に学習しておき,生成時に使用する.これにより,画像との対応関係にあまり寄与しない単語群を無視でき,逆に物体や属性など画像上に対応領域が現れるはずの単語はVisual Attentionの重みを強くできるという,適応的なvisual-wordアテンション機構を構築した.

[Chen et al., 2017] は,空間方向アテンションと チャンネル方向アテンション(Channel-wise attention)の双方を掛け合わせて用いる手法を提案した.旧来の空間アテンションは,画像CNNの最後出力した特徴マップ1つに対して,単一の空間アテンションマップを推定するものであった ( 例:[Xu et al., 2015]のShow, attend and tell など.3.2節) .それに対し,[Chen et al., 2017] では,CNN特徴マップの各チャンネルに対して,個別の異なる空間アテンション値を推定することを提案した.これにより「各単語の意味に対応した,各層後の特徴マップ中の,チャネル毎の空間アテンション」を学習することができ,より緻密でかつ単語の意味に対応した「特徴マップ上の注視」を行えるようになった(※ ちなみにこの時期,チャンネル方向アテンションは,他の様々な問題設定でも頻繁に提案・応用されて流行していた).

5. 物体領域へ注目するディープ手法 (2): 物体領域と物体単語の明示的な対応づけ.

この頃,Faster R-CNN [Ren et al., 2015]の登場以降,あらゆる画像から,安定して物体検出ができるようになり始めた.これに伴い,2節の手法がDPMによる物体検出を応用していたのと同じく,「物体検出器 (Faster R-CNN)で検出した領域の物体ラベルから,直接言語モデルで文を生成する」明示的な物体バウンディングボックス-単語間の対応付けをおこなうDeep画像キャプション生成手法が増えていく.

3~4節の手法では,主に画像の(全体 or 局所の)特徴ベクトル ( + 画像特徴ベクトルを,視覚アテンションで重み付けしたコンテキスト特徴ベクトル) が文章生成LSTMの入力であった.それに対して5節の各手法は,物体検出した各領域を,言葉やフレーズに変換し終えてからLSTM + 視覚アテンションにより文章生成を行う.

5.1 学習時に <物体領域-単語> 間を対応付け

[Karpathy et al., 2015] は,<物体領域-単語> 間で位置合わせ済みの画像キャプション生成手法を提案した.画像からRegion CNNで検出した物体領域の表現と,キャプション文を双方向LSTMに通したあとの各単語表現を計算しておき,それらの<物体領域表現 – 単語表現> 間の最適な対応付けをデータセット全体から自動学習しておく.これにより,入力画像が入ってきたときに,物体領域に対応する単語がそれぞれ明示的に生成できるようになる.

5.1.1 Bottom-up and Top-Down Attention

[Anderson et al. 2018]は,ボトムアップ/ トップダウンの両方の画像情報に対して,視覚アテンションを学習するUp-Down (通称) を,画像キャプション生成とVQA向けに提案した.

それまでの画像キャプション生成手法やVQA手法でのアテンションの活用には,以下の2路線があった:

  1. CNNバックボーンからボトムアップ特徴マップを計算し,画像の各局所グリッド領域へのアテンションを学習する.
  2. Faster R-CNN で得られる領域提案内の(トップダウンな)ROI Pooling特徴マップに対して,物体領域アテンションを学習する.

1, 2の路線で用いるアテンションは,お互いもう片方の手法がアテンションに用いていない画像情報同士であるので,「互いの弱点を埋められる相互補完性」が存在している.

そこで,1, 2の両方のアテンションを同時に使うことを提案したのが Up-Down [Anderson et al. 2018] である.この手法は,ベンチマークで優勝したこともあって,その後「物体領域にもアテンションで対応づけする手法」として,しばらくの間,画像キャプション生成とVQAの各研究でのベースライン手法となった.

また,2.1 節のBaby Talk [Kulkarni et al., 2011] の「テンプレート文のスロットを穴埋めする手法」をDeep Neural Networkで実現し,スロット語彙の豊富化の改善を行なった Neural Baby Talk [Lu et al., 2018] が提案された.2.1節では「テンプレート文のスロット(空白単語)を,画像認識結果のラベルで穴埋めする」手法としてBaby Talkを紹介したが,それは,Deep Learning 以前にも,画像中の物体と言葉を明示的に対応づけする手法が存在していたということである.

5.1.2 Neural Baby Talk: Deep Learning 版の Baby Talk

Neural Baby Talk [Lu et al., 2018] は,過去のテンプレート手法 [Kulkarni et al., 2011] などと異なり,スロット付きテンプレート文自体も RNN with attention で生成するように学習する.その上,各検出領域とスロットの間の対応関係は Pointer Networks で学習しておく.この仕組みにより,物体検出領域クラスの単語を,スロットに自動的にあて埋める形で,キャプション生成ができるようになる.

しかし,当時のFaster R-CNNなどのDeep物体検出器が出力する数10クラスの物体クラスカテゴリーは,例えば「dog」のように大まかなカテゴリまでしか推定できなかった.よって,これ以上単語がfine-grained化することには対応できなかった(犬の中でもどの犬かまで識別する).そこで,物体検出器の推定したクラスをCOCOデータセットのfine-graiendな 413物体クラスにrefineして変換するために, Region Poposal特徴とfine-grainedクラス単語のGloveベクトルの2つを入力とした,fine-grainedクラスの予測MLPも追加した.この仕組みにより,最終的なキャプションはテンプレート文のスロットにfine-grainedなクラスを埋め込んだ文として生成できるようになった.

※ 現在2021年では,COCOデータセットなどから413クラス物体検出器を直接学習できるので,この手法の工夫は必ずしも必要ないことに注意.ただし,途中で一旦「dog」という種別全体の中間結果が出力されていること自体は悪くないと個人的には思う.

5.2 Dense Captioning : 領域ごとに個別のキャプション文を生成.

Dense Captioning
図3 Dense Captioning [Johnson et al., 2016] から引用.右下がこの研究で提案された「Dense Captioning」であり,領域ごとに1文ずつ完結したキャプションを生成する.比較として,左上は画像全体のクラス識別で,右上は物体検出器による領域ごとのクラス識別で,左下は画像全体からのキャプション生成.

従来は,画像一枚全体に対してキャプション文を生成していたのに対して, [Johnson et al., 2016] は画像一枚の領域ごとに対応するキャプション密に(Dense) 生成する問題設定の「Dense Captioning」を提案した (図3).それまでは「画像一枚全体を1つのキャプション文で言い表す」という問題設定で,画像キャプション生成は主に取り組まれていたが,Dense Captioningは,一枚画像内でもそれぞれの(密集した)複数領域において,各領域の内容を言い表すキャプションをそれぞれ独立に生成する.

[Johnson et al., 2016]は2ステージ物体検出の方式に近い解き方を提案している.まずFaster R-CNN にならって,領域検出器を学習する.次に領域から,キャプションを生成する候補領域を検出する.最後に,画像全体のCNNバックボーンから得られた特徴のうち,該当領域の特徴部分に相当するCNN特徴だけ抽出した特徴ベクトルを入力として,LSTM言語モデルによりその領域のキャプションを推定する.

6. まとめ

この記事では,画像キャプション生成の「(1) 基本編」として,Deep Learning 流行前の初期の研究から,Deep 登場後のseq2seqやアテンション機構に基づく研究や,Deep時代の物体検出技術に頼った,物体検出領域を明示的に単語に対応づけする手法へと発展していったことを紹介した.

References

  • [Anderson et al., 2018] P. Anderson, X. He, C. Buehler, D. Teney, M. Johnson, S. Gould, and L. Zhang. Bottom-up and top-down attention for image captioning and vqa. In CVPR, 2018.
  • [Farhadi et al., 2010] A. Farhadi, M. Hejrati, M. Sadeghi, P. Young, C. Rashtchian, J. Hockenmaier, and D. Forsyth. Every picture tells a story: Generating sentences from images. In ECCV, 2010.
  • [Felzenszwalb et al., 2008] P. Felzenszwalb, D. McAllester, and D. Ramanan. A discriminatively trained, multiscale, deformable part model. In CVPR, 2008.
  • [Felzenszwalb et al., 2010] P. Felzenszwalb, R. Girshick, D. McAllester, and D. Ramanan. Object detection with discriminatively trained part based models. TPAMI, 2010.
  • [Johnson et al., 2016] J. Johnson, A. Karpathy, and L. Fei-Fei. Densecap: Fully convolutional localization networks for dense captioning. In CVPR, 2016.
  • [Karpathy et al., 2015] A. Karpathy and L. Fei-Fei. Deep visual-semantic alignments for generating image descriptions. In CVPR, 2015.
  • [Kulkarni et al., 2011] Babytalk: Understanding and generating simple image descriptions.
  • [Kuznetsova et al., 2012] P. Kuznetsova, V. Ordonez, A.C. Berg, T.L. Berg, Y. Choi, Collective generation of natural image descriptions. In, ACL 2012.
  • [Lu et al., 2018] J. Lu, J. Yang, D. Batra, and D. Parikh. Neural baby talk. In CVPR, 2018.
  • [Mitchell et al., 2012] M. Mitchell, X. Han, J. Dodge, A. Mensch, A. Goyal, A. Berg, K. Yamaguchi, T. Berg, K. Stratos, H. Daumé, III, Midge: generating image descriptions from computer vision detections, In EACL, 2012.
  • [Ushiku et al., 2011] Ushiku, Y., Harada, T. and Kuniyoshi, Y. Understanding images with natural sentences. In ACM MM, 2011.
  • [Ren et al., 2015] Ren, S., He, K., Girshick, R., & Sun, J. (2015). Faster r-cnn: towards real-time object detection with region proposal networks. In NeruIPS, 2015.
  • [Ushiku et al., 2012] Ushiku, Y., Harada, T. and Kuniyoshi, Y. Efficient image annotation for automatic sentence generation. In ACM MM, 2012.
  • [Vinyals et al., 2015] Vinyals, O., Toshev, A., Bengio, S., Erhan, D. Show and tell: A neural image caption generator. In CVPR, 2015.
  • [Xu et al., 2015] Xu, K., Ba, J., Kiros, R., Cho, K., Courville, A., Salakhudinov, R., Zemel, R., Bengio, Y.: Show, attend and tell: Neural image caption generation with visual attention. In ICML, 2015.
  • [Yao et al., 2010] B. Z. Yao, X. Yang, L. Lin, M. W. Lee, and S.-C. Zhu. I2t: Image parsing to text description. Proceedings of the IEEE, 98(8), 2010.

外部参考リンク

関連記事