測定を行った動機
非自己回帰型の画像キャプショニングについては、提案するTransformer Encoder の出力をダウンサンプリングして、Transformer Decoder の target 入力にし、CTCLoss を計算するという方法
では、精度があがらず、Mask Predict で
精度が上がった。今回は、提案する方法でなんとか精度が上げられないか Grit
に、提案する非自己回帰の手法を適用して精度を測定した。
ハイパーパラメータ
今回の測定は、RTX 6000 GPU 一枚で行ったため、transformer の隠れ次元数は 256 とした。num_heads = 8, num_ffd_dim = 2048 である。
学習
事前学習は、Visual Genome データセットを使った Object Detector の事前学習と Visual Genome データセットを使った Object Detector + Attributes Prediciton の事前学習を行った。これらの事前学習で得られた backbone と Deformable Transformer のパラメータを用いて、Coco データセットで 画像キャプショニングの学習を行った。
測定結果
プログラムの特徴 | WER | BLEU |
---|---|---|
通常のtransformer | 67.0 | 4.88 |
Gritを真似た自己回帰型 | 66.1 | 5.14 |
Gritの仕組みを用いた非自己回帰型 | 68.4 | 2.36 |
Grit の仕組みを用いた非自己回帰型では、Region Feature、すなわち Object Detector の特徴量をダウンサンプリングせずに Caption Generator の target 入力として CTCLoss を計算した。非自己回帰型に慣れてない方も読むと思います。非自己回帰型の場合、学習時に causal_mask は要りません。また、model の計算に必要なのは、imgs と masks で、caption は要りません。推論と学習は一つのクラスの中の同じ関数でできます。