Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MS COCO Dataset Introduction

9,200 views

Published on

Introduction of Microsoft COCO Dataset for image captioning

Published in: Engineering
  • Be the first to comment

MS COCO Dataset Introduction

  1. 1. MS COCO datasetsの紹介 (主にCaptionについて) Presenter: Seitaro Shinagawa Augmented Human Communication-lab Graduate School of Information Science Nara Institute of Science and Technology
  2. 2. What is MS COCO dataset ? 画像とキャプションのデータセット 1画像あたり5以下のキャプション(6以上のもある) http://arxiv.org/abs/1405.0312
  3. 3. How to Use http://mscoco.orgより色々ダウンロード 便利なAPIがGithubで提供されている https://github.com/pdollar/coco : セグメンテーションなど用 https://github.com/tylin/coco-caption : キャプション用 (※サイトより引用)
  4. 4. MS COCO API フィルター条件を満たすアノテーションIDをゲット フィルター条件を満たすカテゴリIDをゲット フィルター条件を満たす画像IDをゲット [ID]のアノテーションをロード [ID]のカテゴリをロード [ID]の画像をロード アルゴリズムの結果をロードし、アクセスするAPIをつくる アノテーションを表示 ポリゴンセグメンテーションをバイナリマスクにコンバート run-length encoding (RLE)エンコード済みバイナリマスクMをデ コード RLEによってバイナリマスクMをエンコード
  5. 5. Annotation format Stored with JSON format 2つのアノテーションタイプ “instance” と “caption”
  6. 6. Instance Annotations objectがひとつか(0) 複数か(1) ひとつ objectはポリゴンのarrayと して格納 複数 objectはRun Length Encoding (RLE)のバイナリ マスクとして格納
  7. 7. Caption Annotations キャプションは画像あたり基本的に5つ以下 (いくつかは6つ以上あるので注意)
  8. 8. Results Format Requirements 基本ダウンロードしたデータと合わせる(評価用API、サーバを使う場合必須) 最終的に全ての結果は一つのJSONファイルに格納される (Matlabならgason, Pythonならjson.dumpを通して格納) Object detection(boundary box) Object detection(segmentation) Caption generation
  9. 9. 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
  10. 10. 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']
  11. 11. However… 実際に使ってみると色々落ち度がある・・・?? COCO_train2014_000000167126.jpg ホットドック・・・らしい 例外処理をしておかないと普通に死ぬ 1. PILで読み込めない画像がある 大部分の原因は読み込む環境依 存かもしれないがたまにこんな画像 が紛れている 例外処理をしておかないと普通に 学習が死ぬ COCO_val2014_000000200365.jpg 2. 面積ほぼゼロのセグメントアノテーションがある
  12. 12. キャプションの実例(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…
  13. 13. 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済み)が手に入る どーやって画像読み込んだかわから んけど使えるものは使わせてもらおう
  14. 14. 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
  15. 15. Storing Caption Evaluation evalImgs.json : 画像ごとの評価値 eval.json : テストセット全体の評価値 APIを使うことで最終的な評価をjson形式で保存できる 以下、各手法の説明です
  16. 16. 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の一致率が高いほど良い仮説を生成しているだろうという仮定がある (高いほど良い)
  17. 17. BLEU 1. 仮説𝑐𝑖のある単語𝑤 𝑘(n-gramの語彙)に注目する。その出現回数を ℎ 𝑘(𝑐𝑖)とする 2. 仮説𝑐𝑖に対応する全てのリファレンス𝑠𝑖1, 𝑠𝑖2, ⋯ , 𝑠𝑖𝑚それぞれについて、 単語𝑤 𝑘の出現回数ℎ 𝑘 𝑠𝑖1 , ℎ 𝑘 𝑠𝑖2 , ⋯ , ℎ 𝑘 𝑠𝑖𝑚 を算出、この中で最 大のものを選んでℎ 𝑘(𝑐𝑖)と比べると、小さい方の値が単語𝑤 𝑘の一致 数になる 3. マッチ数を仮説𝑐𝑖中の全ての語彙についてマッチ数を加算 4. すべての仮説について加算し、最後に仮説全体の単語数で除算 n-gramの一致率の計算方法 各n-gramの一致率(𝐶𝑃𝑛)の幾何平均を計算する 𝑤 𝑛 = 1 𝑁
  18. 18. BLEU brevity penalty 一致率を高めるために生成される 文章は往々にして極端に短くなる 傾向がある(recallが低くなりがち) ⇒不自然になりやすいのでペナル ティをかける 未確認  普通のBLEUスコアの計算では仮説ごとに一番良いリファレンスを選 ぶが、MS COCOのAPIのBLEUは数式を見る限り単語ごとに良いリ ファレンスを選んでいるように見える  brevity penaltyも普通のBLEUでは仮説より短くかつ一番近い長さの リファレンスが選ばれるが、MS COCO APIではどう算出しているかま だ確認していない(Arxiv論文を見る限りだと仮説𝑐𝑖ごとに近い長さのリ ファレンスを選択している模様)
  19. 19. ROUGE 要約の評価尺度 この数式はBLEUと違って仮説𝑐𝑖ごとの算出になっているので注意 仮説𝑐𝑖と対応する全てのリファレンスにおける単語の出現回数の最小の共 通部分を数える。𝑅𝑂𝑈𝐺𝐸 𝑁が高いほどrecallが高いといえる (亜種)𝑅𝑂𝑈𝐺𝐸𝐿 : based on the Longest Common Subsequence(LCS) 𝑙 𝑐𝑖, 𝑠𝑖𝑗 :𝑐𝑖, 𝑠𝑖𝑗間で一致している部 分で最長の部分の単語列の長さ 𝑅𝑙, 𝑃𝑙はrecallとprecision 𝑅𝑙, 𝑃𝑙の重み付きF値(調和平均)で評価 デフォルトで𝛽 = 1.2 N-gramを用いる方法 (高いほど良い)
  20. 20. 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つまでに制限されている)
  21. 21. METEOR 仮説(生成した文)とリファレンスの単語の一致率による評価尺度 BLEUの問題点  recallが低い  文法的に問題があっても検出できない  高いnのn-gramが0だと1文全体のスコアが幾何平均で0になってしまう これらの問題を単語レベルの一致率で解決しようという評価尺度 mは単語の一致数 (アラインメントの数) precision, recallを計算 (高いほど良い)
  22. 22. METEOR precisionとrecallから求められる調和平均によって算出(論文ではF値と呼称) 𝑃𝑒𝑛はペナルティ (チャンク𝑐ℎの数が多い)= (アライメントの塊がばらば ら)ほど高いペナルティ APIのハイパーパラメータ 𝛼, 𝛾, 𝜃の値は未確認
  23. 23. 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に小さな重みを 付ける (高いほど良い)
  24. 24. CIDEr 𝑗 仮説𝑐𝑖 と対応する全てのリファレンス𝑠1, 𝑠2, ⋯ , 𝑠 𝑚 についてコサイン類似度とり、 対応する全リファレンスの平均をとる nはn-gramのnに対応している。𝑤 𝑛はuni-gramからn-gramまでを正規 化する項で、APIではBLEUと同様𝑤 𝑛 = 1/𝑁を使っている Nの値も、APIではBLEU同様N=4を用いている
  25. 25. CIDEr-D CIDErの亜種 n-gramごと

×