Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
MS COCO datasetsの紹介
(主にCaptionについて)
Presenter: Seitaro Shinagawa
Augmented Human Communication-lab
Graduate School of Information Science
Nara Institute of Science and Technology
What is MS COCO dataset ?
画像とキャプションのデータセット
1画像あたり5以下のキャプション(6以上のもある)
http://arxiv.org/abs/1405.0312
How to Use
http://mscoco.orgより色々ダウンロード
便利なAPIがGithubで提供されている
https://github.com/pdollar/coco : セグメンテーションなど用
https://github.com/tylin/coco-caption : キャプション用
(※サイトより引用)
MS COCO API
フィルター条件を満たすアノテーションIDをゲット
フィルター条件を満たすカテゴリIDをゲット
フィルター条件を満たす画像IDをゲット
[ID]のアノテーションをロード
[ID]のカテゴリをロード
[ID]の画像をロード
アルゴリズムの結果をロードし、アクセスするAPIをつくる
アノテーションを表示
ポリゴンセグメンテーションをバイナリマスクにコンバート
run-length encoding (RLE)エンコード済みバイナリマスクMをデ
コード
RLEによってバイナリマスクMをエンコード
Annotation format
Stored with JSON format 2つのアノテーションタイプ
“instance” と “caption”
Instance Annotations
objectがひとつか(0)
複数か(1)
ひとつ
objectはポリゴンのarrayと
して格納
複数
objectはRun Length
Encoding (RLE)のバイナリ
マスクとして格納
Caption Annotations
キャプションは画像あたり基本的に5つ以下
(いくつかは6つ以上あるので注意)
Results Format Requirements
基本ダウンロードしたデータと合わせる(評価用API、サーバを使う場合必須)
最終的に全ての結果は一つのJSONファイルに格納される
(Matlabならgason, Pythonならjson.dumpを通して格納)
Object detection(boundary box) Object detection(segmentation)
Caption generation
Dataset Details
学習時、キャプションは
PTBTorknizer in Stanford CoreNLP によって前処理推奨
(評価用サーバ、API(coco-caption)が評価時にそうしているため)
Collected captions using Amazon Mechanical Turk
訓練データ
82,783画像
413,915キャプション
バリデーションデータ
40,504画像
202,520キャプション
テストデータ(評価サーバ)
40,775画像
379,249キャプション
(c5: 179,189キャプション)
(c40:200,060キャプション)
参考:https://github.com/tylin/coco-caption/blob/master/pycocoevalcap/tokenizer/ptbtokenizer.py
More Detail
 記号の削除
PTBTorknizer in Stanford CoreNLPの役割について(前ページ参考コードより)
-LRB-, -RRB- == ( , )
-LCB-, -RCB- == { , }
-LSB-, -RSB- == [ , ]
は最初からないっぽい?
PUNCTUATIONS = ["''", "'", "``", "`", "-LRB-", "-RRB-", "-LCB-", "-RCB-",
".", "?", "!", ",", ":", "-", "--", "...", ";"]
 小文字への統一
-lowerCase
 lineの削除の例外処理(cutting-edgeなどの横棒は例外的に削除しない)
-preserveLines
cmd = ['java', '-cp', STANFORD_CORENLP_3_4_1_JAR,
'edu.stanford.nlp.process.PTBTokenizer',
'-preserveLines', '-lowerCase']
However…
実際に使ってみると色々落ち度がある・・・??
COCO_train2014_000000167126.jpg
ホットドック・・・らしい
例外処理をしておかないと普通に死ぬ
1. PILで読み込めない画像がある
大部分の原因は読み込む環境依
存かもしれないがたまにこんな画像
が紛れている
例外処理をしておかないと普通に
学習が死ぬ
COCO_val2014_000000200365.jpg
2. 面積ほぼゼロのセグメントアノテーションがある
キャプションの実例(validationから)
最初が大文字、ピリオド A woman standing in a kitchen preparing tea.
全部小文字(理想的) a woman wearing a hat holding onto an umbrella
全部大文字 A MAN OPENING A DOOR TO AN OVEN IN A
RESTAURANT KITCHEN
最初にスペース A man riding his bike with his dog in the side kick seat
どうしようもないケース a corner of a bathroom shows part of a vanity and the
commode sits of the other side of the wa]]
キャプションを前処理なく使うのは自殺行為
最初が大文字、小文字、ピリオドがあるない、全て大文字、など表記ゆれが
結構ひどい
最後のは wall がwa]] となっていて笑う
悪いことは言わない、前処理に
coco-caption API のPTBTorknizer in Stanford CoreNLPを使おう
However…
Another Method
自前でやると100枚以上の画像がだめになるので、CNN部分の再学習が
必要なければ先人のおこぼれを頂戴するのがよい
https://github.com/ryankiros/visual-semantic-embedding
http://cs.stanford.edu/people/karpathy/deepimagesent/
などからcoco.zipというファイルをダウンロードできる
→VGGによるvisual feature(4096次元)とキャプション(tokenize済み)が手に入る
どーやって画像読み込んだかわから
んけど使えるものは使わせてもらおう
Caption Evaluation
coco-caption APIには
BLEU, METEOR, ROUGE-L, CIDErによる自動評価尺度が
用意されている
必要なもの・・・生成したキャプションと対応する画像idの組
(データセット内の任意の数)をdumpしたjsonファイル
[{“image_id”: 404464, “caption”: “black
and white photo of a man standing in
front of a building”}, {“image_id”:
380932, “caption”: “group of people are
on the side of a snowy field”},
{“image_id”: 565778, “caption”: “train
traveling down a train station”}, … ]
(coco-caption/results/captions_val2014_fakecap_results.json)
http://arxiv.org/abs/1504.00325
Storing Caption Evaluation
evalImgs.json : 画像ごとの評価値 eval.json : テストセット全体の評価値
APIを使うことで最終的な評価をjson形式で保存できる
以下、各手法の説明です
BLEU
仮説(生成した文)とリファレンスのN-gramの一致率による評価尺度
N-gram : 局所的な単語の塊、Nは塊あたりの単語数
例: I have a pen .
N N-gram 語彙数
1 I have a pen . 5
2 I have a pen . 4
3 I have a pen . 3
4 I have a pen . 2
I, have, a, pen, .
の5つ
I have, have a, a pen, pen .
の4つ
I have a, have a pen, a pen .
の3つ
I have a pen, have a pen .
の2つ
N-gramの一致率が高いほど良い仮説を生成しているだろうという仮定がある
(高いほど良い)
BLEU
1. 仮説𝑐𝑖のある単語𝑤 𝑘(n-gramの語彙)に注目する。その出現回数を
ℎ 𝑘(𝑐𝑖)とする
2. 仮説𝑐𝑖に対応する全てのリファレンス𝑠𝑖1, 𝑠𝑖2, ⋯ , 𝑠𝑖𝑚それぞれについて、
単語𝑤 𝑘の出現回数ℎ 𝑘 𝑠𝑖1 , ℎ 𝑘 𝑠𝑖2 , ⋯ , ℎ 𝑘 𝑠𝑖𝑚 を算出、この中で最
大のものを選んでℎ 𝑘(𝑐𝑖)と比べると、小さい方の値が単語𝑤 𝑘の一致
数になる
3. マッチ数を仮説𝑐𝑖中の全ての語彙についてマッチ数を加算
4. すべての仮説について加算し、最後に仮説全体の単語数で除算
n-gramの一致率の計算方法
各n-gramの一致率(𝐶𝑃𝑛)の幾何平均を計算する
𝑤 𝑛 =
1
𝑁
BLEU
brevity penalty
一致率を高めるために生成される
文章は往々にして極端に短くなる
傾向がある(recallが低くなりがち)
⇒不自然になりやすいのでペナル
ティをかける
未確認
 普通のBLEUスコアの計算では仮説ごとに一番良いリファレンスを選
ぶが、MS COCOのAPIのBLEUは数式を見る限り単語ごとに良いリ
ファレンスを選んでいるように見える
 brevity penaltyも普通のBLEUでは仮説より短くかつ一番近い長さの
リファレンスが選ばれるが、MS COCO APIではどう算出しているかま
だ確認していない(Arxiv論文を見る限りだと仮説𝑐𝑖ごとに近い長さのリ
ファレンスを選択している模様)
ROUGE
要約の評価尺度
この数式はBLEUと違って仮説𝑐𝑖ごとの算出になっているので注意
仮説𝑐𝑖と対応する全てのリファレンスにおける単語の出現回数の最小の共
通部分を数える。𝑅𝑂𝑈𝐺𝐸 𝑁が高いほどrecallが高いといえる
(亜種)𝑅𝑂𝑈𝐺𝐸𝐿 : based on the Longest Common Subsequence(LCS)
𝑙 𝑐𝑖, 𝑠𝑖𝑗 :𝑐𝑖, 𝑠𝑖𝑗間で一致している部
分で最長の部分の単語列の長さ
𝑅𝑙, 𝑃𝑙はrecallとprecision
𝑅𝑙, 𝑃𝑙の重み付きF値(調和平均)で評価
デフォルトで𝛽 = 1.2
N-gramを用いる方法
(高いほど良い)
ROUGE
(亜種)𝑅𝑂𝑈𝐺𝐸𝑠 : based on the skip bi-grams
skip bi-gram : 飛び越しありのbi-gram
例: I have a pen . bi-gram
I have
have a
a pen
pen .
skip bi-gramで追加される語彙
I a, I pen, I .
have pen, have .
a .
Iとの組み合わせ
語彙数(文中の単語数をWとする)
bi-gram : W-1
skip bi-gram : 𝑊∁2
あとは𝑅𝑂𝑈𝐺𝐸 𝑁と似た方法でrecallとprecisionから算出
(ただし、計算量が増えるのでAPIでは飛
び越しは3つまでに制限されている)
METEOR
仮説(生成した文)とリファレンスの単語の一致率による評価尺度
BLEUの問題点
 recallが低い
 文法的に問題があっても検出できない
 高いnのn-gramが0だと1文全体のスコアが幾何平均で0になってしまう
これらの問題を単語レベルの一致率で解決しようという評価尺度
mは単語の一致数
(アラインメントの数)
precision, recallを計算
(高いほど良い)
METEOR
precisionとrecallから求められる調和平均によって算出(論文ではF値と呼称)
𝑃𝑒𝑛はペナルティ
(チャンク𝑐ℎの数が多い)=
(アライメントの塊がばらば
ら)ほど高いペナルティ
APIのハイパーパラメータ
𝛼, 𝛾, 𝜃の値は未確認
CIDEr
𝑔 𝑘 𝑠𝑖𝑗 =
ℎ 𝑘 𝑠𝑖𝑗
𝑤 𝑙∈Ω ℎ𝑙(𝑠𝑖𝑗)
log
𝐼
𝐼 𝑝∈𝐼 min(1, 𝑞 ℎ 𝑘(𝑠 𝑝𝑞))
image-captioningの評価尺度として提案された。n-gram 𝑤 𝑘の出現回数ℎ 𝑘(𝑠𝑖𝑗)
のTF-IDF重み付き評価尺度 ( j : リファレンス番号 i : 画像番号)
Term Frequency Inverse Document Frequency
First Term
リファレンス𝑠𝑖𝑗の中で出現回数の多いn-gramに大きい重みを付ける
Second Term
全画像を通して全てのセンテンスの中で出現回数の多いn-gramに小さな重みを
付ける
(高いほど良い)
CIDEr
𝑗
仮説𝑐𝑖 と対応する全てのリファレンス𝑠1, 𝑠2, ⋯ , 𝑠 𝑚 についてコサイン類似度とり、
対応する全リファレンスの平均をとる
nはn-gramのnに対応している。𝑤 𝑛はuni-gramからn-gramまでを正規
化する項で、APIではBLEUと同様𝑤 𝑛 = 1/𝑁を使っている
Nの値も、APIではBLEU同様N=4を用いている
CIDEr-D
CIDErの亜種
n-gramごと

More Related Content

MS COCO Dataset Introduction

Editor's Notes

  1. Term Frequency Inverse Document Frequency (TF-IDF) weighting for each n-gram