cedro-blog

ClipCapで、画像から文を生成する

1.はじめに

 今回ご紹介するのは、画像から文章を生成するタスクを高速に学習できるClipCapという技術です。

*この論文は、2021.11に提出されました。

2.ClipCapとは?

 高速に学習できる秘密は、学習済みのCLIPGPT2(いずれもOpenAIによって開発)を組み合わせて学習させることにあります。

 下記の図がClipCapのフロー図です。まず、学習済みCLIPで画像を特徴ベクトルに変換し、マッピングネットワーク(Mapping Network)を通して文の先頭に埋め込み(Prefix embedings)ます。そして、GPT2で文の先頭の埋め込みに続く文を学習させるわけです。

 インターネット上にある膨大な画像とテキストのペアを学習したCLIPを使うことによって、最初から最適な画像の特徴ベクトルを得られるため、高速な学習が可能となります。

3.コード

 コードはGoogle Colabで動かす形にしてGithubに上げてありますので、それに沿って説明して行きます。自分で動かしてみたい方は、この「リンクをクリックし表示されたノートブックの先頭にある「Colab on Web」ボタンをクリックすると動かせます。

 まず、セットアップを行います。

 

 学習済みのパラメータは cococoncetual の2つが用意されていますので、select でどちらかを選択してモデルにロードします。

 

 サンプル画像を表示します。自分の用意した画像を使いたい場合は、coco の場合は images_coco フォルダへ、conceptual の場合は images_conceptual フォルダへアップロードして下さい。

 

 それでは画像から文を生成してみましょう。表示されたサンプル画像の中から1つ選んで image に記入し、実行します。ここでは、05.jpgでやってみます。

A couple of people standing next to an elephant.

 もう1つ、01.jpgでやってみましょう。

A woman is eating a piece of cake with a candle.

今更ながら、CLIPはさまざまな場面で利用できることに驚きます。

 では、また。

(オリジナルgithub)https://github.com/rmokady/CLIP_prefix_caption