機械学習論文読み：Revisiting Unreasonable Effectiveness of Data in Deep Learning Era


https://arxiv.org/abs/1707.02968

「ディープラーニン時代におけるデータの不合理なまでの有効性の再考」という趣のあるタイトルの論文。

著者：
Chen Sun(Google Research), Abhinav Shrivastava(Google Research, Carnegie Mellon University), Saurabh Singh(Google Research), and Abhinav Gupta(Google Research, Carnegie Mellon University)

投稿日：

* 2017/6/10 v1
* 2017/8/4 v2

参考：

* [深層学習の認識タスクにおいて、データ量を増やすと精度がどの程度向上するか](http://yusuke-ujitoko.hatenablog.com/entry/2017/07/15/004540)
* [Reddit](https://www.reddit.com/r/MachineLearning/comments/6mj6h3/r_170702968_revisiting_unreasonable_effectiveness/?st=j7rhfpco&sh=bb43cb91) (アメリカの2ちゃんみたいなもの)
* [Google blog](https://research.googleblog.com/2017/07/revisiting-unreasonable-effectiveness.html)

※ 以下、「補足：」と書かれているところは、翻訳・要約ではなく、私（@ikeyasu）のコメントです
※ 翻訳にはGoogle translateを活用しつつ、修正しているので、言葉が変なところがあるかも知れません。どしどしご指摘ください
※ 機械学習、絶賛勉強中なので、よく分からずに書いている部分があります。どんな内容でも、どしどしご指摘、ご質問ください。

# Abstract

* Computer Visionにおける、deep learning の成功は、以下に起因する
	* (a) Modelの高いキャパシティ
	* (b) コンピュータの性能向上
	* (c) 大量のラベル付きデータ
* 2012年から、Modelの表現能力とGPUの性能は、めざましく向上した
* しかし、データサイズは、驚くほど変わっていない。データサイズが向上したとき何が起こるのだろうか？
* 本論文では、巨大なデータと、Visual deep learningの間を取り巻く、ミステリーの雲を取り去るための一歩を踏み出した。
	* 補足：なんと詩的な。。
* 3億枚(300M)画像に対して3億7千5百万(375M)以上のノイズの多いラベルを持つJFT-300Mデータセットを利用して表現学習に使用すると、現在のVisionタスクのパフォーマンスがどのように変化するかを調べる
	* 補足：1枚に複数のラベルが付いている。カテゴリは18291カテゴリ。
* 本論文では、驚くべき（そして期待される）いくつかの発見をした
	* 訓練データの量に基づいて視覚タスクのパフォーマンスが対数的に増加することがわかる。
	* 表現学習（または事前訓練・転移学習）がまだ多くの可能性を保持していることを示している。
		* 優れたベースモデルを訓練するだけで、多くのビジョンタスクのパフォーマンスを向上させることができる
	* また、期待通りに、画像分類、物体検出、セマンティックセグメンテーション、人間の姿勢推定など、さまざまな視覚課題に対してState-Of-The-Artの結果がでている。
* 私たちの真の希望は、Visionコミュニティがデータを過小評価せず、より大きなデータセットを構築するための共同努力を促すこと

補足：用語解説

* セマンティックセグメンテーション（Semantic segmentation） http://ai-4-u.com/tech/what-is-semantic-segmentation
	* 画像中のObjectを認識するのは、物体検出（Object detection）と同じだが、ピクセル単位でその画像領域の意味を識別する

# 1. Introduction

* ConvNetは、大規模ラベル付きデータで、革命を起こした（特に、ImageNetのように、100万枚規模のデータ）
	* そして、毎年、計算性能は良くなっている（新しく、速いGPUによって）
	* しかし、その割にデータセットは（毎年は）変わっていない
* ImageNetは、100万枚の画像で1000カテゴリーであるが、これは、AlexNetによって、5年以上前に使われていたものだ
	* つまり、GPUとモデル性能は継続的に向上しているのに、そのモデルを学習するデータは変わっていない
	* ResNet101 は、劇的にモデルサイズと深さを高めたにもかかわらず、いまだに100万枚の画像で学習している
* なぜデータセットを増やさないのか？我々は、データセットの重要性を軽んじていないか。そもそも、Training dataが、10倍100倍になったら何が起こるのか、パフォーマンスは2倍になるのか？
* 本論文では、巨大なデータ（enormous data）と、Visual deep learningの間を取り巻く、ミステリーの雲を取り去るための一歩を踏み出した

![fig1.png](https://qiita-image-store.s3.amazonaws.com/0/38555/34df3438-4bdf-49ea-f03c-8d0d80e638bd.png "fig1.png")
Figure 1. データセットにまつわる興味深いケース： GPUの性能とモデルサイズが5年以上にわたり継続的に向上しているが、大規模訓練データセットは、何も変わっていない。これは、なぜか？データセットのサイズを増やしたら、何が起こるのか？この論文では、その答えの一部をチラ見せする（provides a Sneak-peek)。

* ここでは、既にあるJFT-imageデータセットを活用する
	* これは、[Hintonの論文](https://arxiv.org/pdf/1503.02531.pdf)で導入され、[F. Cholletの論文](https://arxiv.org/pdf/1610.02357.pdf)によって拡張された
	* これは、3億枚以上のデータがあり、18291カテゴリのラベル付けがされている
	* ラベルは自動で収集されており、ノイズが多く、完璧では無い
	* ラベルは複雑なアルゴリズムを用い、精度向上が行われている。しかし、依然、約20%のエラーが含まれている。
* このデータセットを幾つかのVision taskで評価する
	* 画像分類 Image classification
	* 物体検出 Object detection
	* セマンティックセグメンテーション Semantic segmentation
	* 人間の姿勢推定 Human pose estimation

* 私たちの実験で、いくつかの驚きと期待通りの結果がもたらされた
	* 優れた表現学習（representation Learning）は助けになる
		* 最初にした実験は、大量のデータが、それぞれのVision taskでパフォーマンスがあがる事を確認した
		* これは、Large-scaleデータセットでPretrainingすることが、メリットが大きいことを示している
		* これは、教師無し学習および、self-supervised representation learning にたいして、明るい未来がある事を示している
			* データのスケールが、ノイズの影響を超えることがあるため
			* 補足：うーん、教師無し学習には飛躍がある様な。。
	* パフォーマンスはトレーニングデータに対して、対数的に良化する
		* トレーニングデータの数と、Vision taskのパフォーマンスの間に、対数の関係があることを発見した
	* （モデルの）キャパシティは極めて重要
		* 3億画像を完全に活用するために、大容量のモデルが必要です
		* ResNet-50のCOCO Object detectionにおける良化は1.87 で、ResNet-152の3% に比べ小さい
	* Long-tailでトレーニングする
		* 使ったデータはLong-tailなものだが、Representation learningはうまくいっている
		* Long-tailであることは、ConvNetの確率的学習（Stochastic training of ConvNet）に悪い影響を与えないようである
	* 新しい State-Of-The-Artの結果が得られた
		* いくつかのベンチマークで良い結果が得られた
			* Single modelでCoco detection benchmarkにおいて、34.3APのところ、37.4APを達成した

# 2. Related Work

すいません、飛ばします

# 3. The JFT-300M Dataset

* JFT-300M は、Image Searchの力に依存する
* 今回使うバージョンは、3億枚の画像と、3億7500万のラベルを持つ（1枚1.26ラベル）
	* 18291カテゴリーに分類されている
	* 例えば、
		* 1165種の動物
		* 5720種類の乗り物
	* これらのカテゴリは、階層の最大深度が12で、親ノードの子ノードの最大数が2876である豊富な階層を形成する
* これら画像は、生のWeb Signalと、ウェブページ・ユーザのフィードバック間のコネクションとが混ざった複雑な混合データを使うアルゴリズムを用いてラベル付けされる
	* 補足：？？
	* このアルゴリズムは、10億以上の画像・ラベルのペアから初め、高精度のラベル付き画像のみを選択し、3億枚の画像に対して3億7500万のラベルが残った。
	* しかし、依然、約20％はノイズ
		* 自動生成なので、"亀"(tortoise)と"ベッコウメガネ"(Tortoise shell glasses)を混同している
	* もっとも、完全なAnnotationなどできない
* Figure2は、ノイズの種類について示している
* 結局、最も重要な議論は、JFT-300Mの分散である。
	* 分散は、とてもLong-tailである
	* 例えば
		* 200万枚の花
		* 3250枚の スバル360
		* そのわりに、131枚の車掌
	* 実際、そのTailはとても長く、3000カテゴリーが、100枚以下のイメージで、そのうち2000カテゴリーは20枚以下である

![スクリーンショット 2017-10-18 22.28.32.png](https://qiita-image-store.s3.amazonaws.com/0/38555/a9c70aac-0fa2-b339-45e2-62e9bea24835.png "スクリーンショット 2017-10-18 22.28.32.png")
Figure 2. JFT-300M dataset は、取り違え、誤ったラベルなどのノイズが多い。これは、ラベルが、Web signalの組み合わせによって生成されたもので、人間がAnnotationしたものではないため。x軸は、視覚的特徴に基づいて計算されるK平均重心距離に対応する。

# 4. Training and Evaluation Framework

## 4.1 Training on JFT-300M Data

* スタンダードな、Residual Networkを使い、State-Of-The-Artのパフォーマンスをもち比較の容易なRes−Net101を使う
* ResNet-101をJFT-300Mで学習するために、18291の出力を持つFully-connected layerをネットワークの最後に追加した
* 画像ラベルは相互に排他的ではないので、ラベルごとのロジスティック損失を計算し、存在しないラベルをすべてネガティブとして扱う
* 不足しているラベルの問題を軽減するために、手作業のラベル階層を使用し、それに応じて不足しているラベルを記入する
	* 例えば、「リンゴ」は「フルーツ」と答えても正しい

* Training中、全ての画像は、340x340にリサイズし、299x299にランダムにクリップする
* Pixel値は、各チャンネル事に独立して、[-1, 1]にノーマライズする
* かつ、Data augumentationのため、ランダムに反転を行う
* その他
	* weight decay is $10^{-4}$ 
	* 全てのConvolutional layerの後にBatch normalization
	* RMSProp optimizer を使う。 momentum = 0.9
	* バッチサイズは32
	* Learning rate $10^{-3}$
		* 300万ステップ毎似、0.9倍ずつ、低下させる
	* Asynchronous Gradient decent training を 50 台のNVIDIA K80 GPU 上で行う
		* 補足：50台のK80をAWSで借りると、1時間に $21.25 https://aws.amazon.com/jp/ec2/instance-types/p2/
	* モデルは、Tensor flowで実装した

* 50 GPUで非同期学習をするため、Downpour SGD training schemeを用いた
	* 17パラメータサーバーでもでるの保存とアップデートを行った
* 最後のClassificationのためのFullly-connected layerは、2048の入力unitと18,000の出力unit は、3600万パラメータを持つ
	* このパラメータ　をサーバでハンドルするため、fc-layerをsub-fc layerに50等分し、異なるパラメータサーバーに分散した

### ImageNet baseline:

* JFT-300Mを用いて学習するためのハイパーパラメータは、ImageNetでトレーニングしたとき、理想的な性能より同じか、低くなる
* したがって、ImageNet向けには、momentum optimizer を momentum 0.9 で用い、initial learning rate を $5 \times 10^{-2}$ とし、バッチサイズを32 にした
* Learning rateは、30 epoch で、10分の1ずつ低減する
* 全体では、5M step 学習する
* JFT-300Mの学習とにたように、Asynchronous gradient descent training を 50 NVIDIA K80 GPU で行い、17のパラメータサーバを使った
* 本論文のBaseline の ResNet-101 は、OSSのResNet-101より1%良化している

## 4.2 Monitoring Training Progress

* 学習進捗を見るため、F.CholletのValidation setを用いる
	* "FastEval14K": は、14000画像で構成され、6000クラス（JTF-300Mの18291クラスのサブセット）からなる
	* JFT-300Mのラベルと異なり、高密度にAnnotationされ、概ね37ラベルが1枚の画像に付加されている
	* mAP@100 metric を使う
		* top-100 を予測されたものを mean average precision (mAP) する
		* class APは、クラスがソーシャルメディア画像の中でどれほど共通であるかによって重み付けされることに留意されたい
			* 補足：？？
* 2つの戦略で、モデルの重みを初期化した
	* ランダムInitialization
	* ImageNet で初期化
* 双方において、同じTraining schedule（Learning rateなど）を用いた
* これにより、FasetEval14k benchmarkでみると、最初の1500万イテレーションは、ImageNet initializationの方が良いことが分かるが、その後、Random initializationと同じになる
	* Figure 3で、Training progressを示す
* なお、全体のTrainingは、90M iteration or 10 epochとなる
	* しかし、時間を削減するため、36M iteration または、4 epochとした。これは、概ね2ヶ月になる
	* Training iterationのインパクトは、Section 5. でふれる 

![スクリーンショット 2017-10-18 23.10.45.png](https://qiita-image-store.s3.amazonaws.com/0/38555/565ca21d-48fb-9176-0716-59b0e9cc84e2.png "スクリーンショット 2017-10-18 23.10.45.png")
Figure 3. 学習進捗をRandom initialization（青）と、ImageNet initialization（黄色）で比較（JFT-300Mのデータで動作）
x軸は、Training step、y軸はmAP@100 metric (FastEval14k)

## 4.3. Evaluating the Visual Representations

* 2つのアプローチを取った
	* モデルのウェイトを固定し、特徴抽出器として使う
	* モデルのウェイトを初期化に使い、他のタスクでFine-tuningする
* Visual representationsの評価をするにあたり、3つのタスクを用いた
	* Object detection
	* Semantic segmentation
	* Human pose estimation
* Object detectionでは、データサイズ・ボキャブラリサイズなどの影響を厳密に評価する
* 他のタスクでは、単にJFT-300Mによる向上を示す

### De-duplication

* 1つの懸念は、Training-setとTest-setが重複することである
	* このような重複は、既存のフレームワークでもある
		* 例えば、ImageNetの50,000個の検証画像のうち890個には、ほぼ重複した画像トレーニングセットがある
		* しかし、このような重複が我々の結果に影響を与えないようにするために、テストセットからほぼ重複した画像を除去してすべての実験を行った
		* これによるパフォーマンスの差はすべての実験で有意ではないことがわかった
			*  重複しないテストセット結果を付録Aで記述する


### Object Detection.

* Faster RCNN framework を使う（2段階モデル）
	* 1段階目は、Region proposal Network (RPN) で、class にとらわれないObjectの提案を行う
		* 補足：Object detectionの提案のみを行う
	* 2段階目はBox classifier
		* RPNで提案されたBoxをClassificationのPredictionを行い、Bounding boxをRefineする
* これらの2つの段階は、ConvNetによって生成される共通の特徴マップを共有し、ボックス分類器は、最終的な分類および回帰層の前に付加的な畳み込み層を有する
* JFT-300MでPretrainedされたResNet-101を使うために、モデルを2つに分ける
	* 最初の部分はconv1ブロックから始まり、conv4ブロックで終了し、特徴抽出に使用され、RPNとボックスClassifierの両方で共有される。
	* 2番目の部分はconv5ブロックで構成され、ボックスClassifierによって使用されます。

### Semantic Segmentation

* DeepLab のFrameworkを使う
	* ResNet-101 ベースのアーキテクチャで、Semantic segmentation用に作ったもの
	* 特に、ResNet-101アーキテクチャのconv5ブロックの後に4つのブランチを追加するバリアントを使用します。
		* それぞれのBranchは、"an atrous convolutional layer" で、pixel 単位のクラス推定をする
			* 補足：？？Semantic segmentationが分からないと分からないな。。
		* すべてのブランチからの予測が融合され、最終的なセグメンテーション出力が生成される
			*  詳細については、L.-C. ChenのDeepLab-ASPP-Lモデル（Atrous Spatial Pyramid Pooling、Large atrous rates）を参照

### Pose Estimation.

* Papandreou et al. の提案した、フレームワークを用いる
	* これは、高速RCNNによって検出された人バウンディングボックスを使用し、ResNet fully convolutionally を適用し、ヒートマップとすべてのキーポイントのオフセットを生成する
	* 重複検出を抑制し、性能を向上させるために、新しいスコアリングと、non-maximum supression（NMS）方式が使用される
		*  ここでは単純に、彼らのフレームワークで使用されている基本モデルを、訓練されたResNet-101モデルで置き換える


# 5. Experiments

## 5.1. Image Cllassification

* JFT-300M pretrained ResNet101 を ImageNet Cllassification data でFine-tuningした
	* これを、ImageNet のみでスクラッチからトレーニングしたものと比較
* この実験では、ILSVRC2012のTrain/ValセットをトレーニングとEvaluationに用いた
	* 120万画像、5万Validation image、1000以上のクラス
* Section 4.1のImageNet  baselineで説明したものと同じ設定を使う
	* ただし、Learning rate は、より低い $10^{-3}$からスタート
		* 補足：うーん、Section 4.1と同じなんだが。。
* JFT-300M pretrainedモデルは、3600万イテレーションしたもので、それを400万イテレーションかけてFine-tuningした

![スクリーンショット 2017-10-19 12.48.49.png](https://qiita-image-store.s3.amazonaws.com/0/38555/b8c8d3e7-2e81-e2b0-0459-8a34f9cb908e.png "スクリーンショット 2017-10-19 12.48.49.png")

Table 1. ImageNet 'val'セットにおける、Top-1 と Top-5のClassification accuracy（Single modelかつSingle crop）

* Table 1 をみる
	* MSRA checkpointは、MSRAの作者によるOSSの結果
	* JFT-300MのFine-tuningの結果は、最も良い

## 5.2. Object Detection

* COCO と、PASCAL VOCでテストした
	* 単にState-Of-The-Artを示すだけで無く、データとRepresentation learningの関係について、ここで厳密な評価を行う
	* 特に、ここで以下の質問にこたえる
		* パフォーマンスは、反復とエポックによってどのように変化する？
		* 一定のデータ量があれば、ある程度で飽和するか？ 恒常的な改善が見られるか？
		* キャパシティはどれくらい重要か？
		* クラスの数は重要な要素か？
		* クリーンなデータ（ImageNetなど）は、改善にどのように役立つか？

### Experimenta setup.

* COCOは、8000画像が、val セットとしてつかう。また、minival* というセットも使う
* traning には、standard training set と、validation image の組み合わせを使う
	* 別段の指定がない限り、すべてのCOCO結果はminival * setでレポート
* 特に、50% IOU threshold でのmAP(mean average precision)、mAP@.5 と呼ぶ
	* ResNet101 の最良のモデルで、COCO test-dev split のEvaluateも行う（これは、オフィシャル結果サーバで評価されるもの）
* PASCAL VOCでは、PASCAL VOC 2007と2012の16551の trainval 画像を用いる
	* 結果は、PASCAL VOC 2007 Test でみる
		* 4952画像で、mAP@.5 metci を使う
* TensorFlow Faster RCNN実装を使い、標準のハイパーパラメータを使って学習
	* asynchronous学習を9GPUで行い、11パラメータサーバを使う
	* momentum optimizer を momentum 0.9 で使う
	* それぞれのWorkerは、1つの画像を1ステップで受け取りる
	* Batch size は、RPNは64、Box classifierは256
	* 入力画像は、1024 pixel が最大として、スケール。Aspect ratioは維持される
* COCOで、inital learning rate は、$4 \times 10^{-4}$ で、250万 step ごとに、1/10
	* 全体のStepは 300万
		* 補足：？全体のステップにたいして、Learning rateの低減が遅いような
* PASCAL VOCは、Initial Learning rate は、$3 \times 10^{-4}$で、50万ステップで0.1し、70万ステップ実行する
* Training shecule は、ImageNetでPre-trainedされたResNet-101のモデルで、validation image を 保持する
	* 補足：？
	* 他のCheckpointでも同じ方法でしている
	* 論文で用いる通常の FastRCNN の実装では、multi-scale interface、context、box-refinement は使わない


### Comparison with ImageNet Models

* まずは、ImageNet のCheckPointと比較。
	* Table 2 では、test-dev split でのパフォーマンス
	* Faster RCNNとの比較をするため、Faster RCNNの論文(K. He. Deep residual learning for image recognition. In CVPR, 2016.)の結果を用いる
		* これは、box-refinmentとContext informationを使って居る

![スクリーンショット 2017-10-19 13.25.34.png](https://qiita-image-store.s3.amazonaws.com/0/38555/26223315-8774-d99a-f013-15b8abbb4067.png "スクリーンショット 2017-10-19 13.25.34.png")
Table 2. COCOのtest-dev splitのbaseline methodでのObject detection performanceの比較。
最初の4つのFaster RCNN detectors はすべてResNet-101アーキテクチャに基づいており、最後のものはInceptionResNet-v2アーキテクチャに基づいている。
推論の間は、単一の画像スケールとCrop、およびSingle modelがすべての実験に使用される。
通常の Faster CNN実装は、は全システムを使うが、box refinment と Contextを除く。

* 評価では、"300M"は、スクラッチからJFT-300Mでトレーニングしたもの、"ImageNet+300M"は、ImageNetで初期化したものである
* 双方のモデルで、ImageNetのベースラインを大きく上回る結果を得た
	* 300M: 3.3%向上 (mAP@.5) / 2.4%向上 (mAP@[.5, .9.5])
	* ImageNet+300M: 4.4%向上 (mAP@.5) / 3.1%向上 (mAP@[.5, .9.5])
* 比較のため、InceptionResNetv2 の結果も Table 2. に示す
* Inception ResNet のレイヤ数を倍増させることでどうなるかも示す
	* モデルの表現能力に、一定の平たん効果（プラトー効果）をしめしているのに対し、データからは、得られるものが多い
		* 補足：プラトー効果が何を示すかよく分からないが、飽和して向上のカーブが平たん（Plateau：台地）を迎えているということかな

![スクリーンショット 2017-10-22 12.00.12.png](https://qiita-image-store.s3.amazonaws.com/0/38555/8fe4df56-0b37-2bee-644c-55958964e0e9.png "スクリーンショット 2017-10-22 12.00.12.png")
Table 3. PASCALVOC 2007 test set における、Average Precision @ IOU 閾値 0.5。
PASCAL VOC 2007および2012のTrainvalセットを学習に用いる。

* Table 3 は、PASCAL VOC 2007 Test setを示す
	* JFT-300Mおよび、ImageNet+300Mは、ImageNet baselineより、それぞれ、5.1％、5.0％ （mAP@.5） 向上

### Impact of Epochs

* ここでは、Training epochの数が、Object detectionパフォーマンスにどう影響を与えるかを調べる
	* この実験では、COCO minival* setを使う

![スクリーンショット 2017-10-22 12.37.34.png](https://qiita-image-store.s3.amazonaws.com/0/38555/1afcbe84-3ff9-e8b2-5545-f8876e996f5c.png "スクリーンショット 2017-10-22 12.37.34.png")
Table 4. mAP@[.5, .95]。COCO minival*をScratchから学習した JFT-300M checkpoint で評価。それぞれ違うEpoch数で比較。

* Table 4 は、Epoch数を1.3/2.6/4 と変えたときのJFT-300Mモデルでのパフォーマンス比較
	* Training stepが増える毎に、パフォーマンスが良くなっていることが分かる

![スクリーンショット 2017-10-24 23.56.06.png](https://qiita-image-store.s3.amazonaws.com/0/38555/78164de6-7db6-adb8-ab90-be79f2ea4098.png "スクリーンショット 2017-10-24 23.56.06.png")
Table 5. COCO minial* mAP@[.5, .95]

* 比較のため、Table 5では、ImageNetを3/6/12/150Epochまわしたもを示す
	* ImageNetでは、JFT-300Mよりも速く、向上していることが分かる
* また、小規模なデータセットの経験を使って学習スケジュールを作成したことを指摘したい
	* より多くのエポックになるにつれ、より多くの改善をもたらす、より良い学習スケジュールである


### Impact of Data Size


* この実験では、データセットを1000万、3000万、1億のサブセットにする
	* 学習には、JFT-300Mモデルのトレーニングと同じ者を用いる
	* 4種類のEPOCHで実験する
* Visual reprentationへの影響を調べるため、conv5ブロックの前にすべてのレイヤーのモデルウェイトをフリーズする実験も行う
* この一連の実験では、学習速度減衰を900Kステップで行い、トレーニングステップの総数を1.5Mに変更
	* 早期に収束する傾向があることがわかった

![スクリーンショット 2017-10-25 0.26.36.png](https://qiita-image-store.s3.amazonaws.com/0/38555/62834cc5-c016-649d-dbe4-57d062e1fef8.png "スクリーンショット 2017-10-25 0.26.36.png")
Figure 4. JFT-300Mをスクラッチから学習したときのそれぞれのサブセットにおけるObject detectionのパフォーマンス
X軸は、Logスケールのデータサイズ、Y軸左側はCOCO minival*　mAP@[.5,.95] のパフォーマンス、Y軸右側は PASCAL VOC 2007 test の　mAP@.5

* Figure 4 は、mAP@[.5, .95] の結果、青色の曲線は、Faster RCNN　の学習結果（Fine-tuningを行っている）、赤の曲線は、モデルのFreezingを起こっている
	* 当然ながら、Fine-tuningはパフォーマンス向上に貢献している
	* 興味深いことに、訓練前のデータが拡大するにつれてパフォーマンスが対数的に増加することがわかる。これは、特徴量抽出レイヤが固定されている場合に特に当てはまりまる


### Impact of Classes


* JFT-300M は、18,000のラベルを持つ
	* このクラス数について理解するため、941ラベルにしてみる
		* これは、ImageNetの1000ラベルに対応する
		* この結果は、3000万イメージのサブセットの結果である
		* 4 epoch で、同じTraining schemeで実験を行った

![スクリーンショット 2017-10-25 0.35.32.png](https://qiita-image-store.s3.amazonaws.com/0/38555/cedb11a8-1d2f-d1ea-fd64-16784d26a76c.png "スクリーンショット 2017-10-25 0.35.32.png")
Table 6. COCO minival* set のObject detection performance の　mAP@[.5, .95]の結果
3000万画像を1000 class に限定して学習した者と、JFT全ての1万8000画像をカバーした者で比較する

* 表6は、COCO minival* setのパフォーマンス比較を示す
	* 2つのモデルがお互いに同等の性能を発揮することがわかる
	* これは、パフォーマンスのメリットが、より多くのラベルではなく、より多くのトレーニング画像から得られることを示している

### Impact of Model Capacity

* 最後に、3億画像をトレーニングしたときのモデルキャパシティについて論じる
	* 50層、101層、152層のResNetモデルで実験を行う
	* 各モデルは、JFT-300MデータのScrachから訓練され、ResNet-101実験に使用されたものと同じハイパーパラメータを使用
		* 比較のため、ResNet-101と同じハイパーパラメータを使用して、収束までImageNetデータでモデルを訓練する

![スクリーンショット 2017-10-25 22.07.21.png](https://qiita-image-store.s3.amazonaws.com/0/38555/ddc36ca9-9309-ea70-a24d-43f93372163e.png "スクリーンショット 2017-10-25 22.07.21.png")

Fingure 5. レイヤ数の異なるResNetモデルにおけるCOCO minival* でのObject detection の パフォーマンス

* Figure 5は、COCO minival * set で異なる pre-trained model のFine tuningのパフォーマンスを示す
	* 容量の大きいモデルは3億のデータを利用する方が優れていることがわかる
	* 例えば、JFT-300MのResNet-50は、ImageNetのResNet-152に比べパフォーマンスが良い
		* 捕捉：つまり、頑張ってモデル構造を工夫するよりデータを集めた方が良いという事らしい

## 5.3 Semantic Segmentation

* 私たちは、20の全面クラスと、1つの背景クラスのピクセル単位のラベルを持つPASCAL VOC 2012のセマンティックセグメンテーションベンチマークを使用する
	* 標準的な習慣であるように、すべてのモデルは、10582の画像（[15]からの追加の表記）で設定された拡張PASCAL VOC [12] 2012 'trainaug'で訓練される
	* Standard mean intersection-over-union （mIOU）メトリックを使用して、PASCAL VOC 2012 'val'セット（1449画像）の定量的な結果をレポートする
		* 補足： mIOUは、クラスiに属する画素の総和及びクラスiと判定された画素の総和と、クラスiに属して正しくiと判定された画素の和の比 [引用元](https://www.slideshare.net/takmin/semantic-segmentation)

### Implementation details.

* DeepLab-ASPP-Lモデル[4]は、ResNet101アーキテクチャのconv5ブロックの後に4つの並列分岐を有する
	* 各ブランチは、異なるAtrous rate $r$ ($r \in \{6, 12, 8, 24\}$) を有する（3×3）畳み込み層である
	* 異なる atrous rates により、モデルは異なるスケールでオブジェクトとコンテキストを捕捉できる
	* 各ブランチの出力は、同じ解像度の出力マップ（元の画像と比較して係数8でサブサンプリングされた）を有する21クラスのピクセル単位のスコアである
	* これらのスコアは合計され、最終的なピクセル単位のクラスの確率について正規化される
* トレーニングでは、mini-batch SGDを勢いよく使用する
	* 6枚の画像のミニバッチを使用して3万枚でSGDの反復訓練を行い、Momentumは0.9、initialize learning rate(LR)は、$10^{-3}$、"polynomial" learning rate policy
	* 全てのレイヤーは、L2-regularization を用いて学習する（Weight decay は、$5 \times 10^{-4}$
	* data-augmentation、multi scale training/test、CRFsを使ったpost-processing等は用いない
	* ImageNetまたはJFT-300Mで訓練されたモデルを使用してDeepLab-ASPP-Lモデルを初期化するため、これらのモデルからの最後な分類レイヤーを4つのconvolutional branches（Xavierを使用して初期化）に置き換えます。
	* 全ての入力画像は、513x513 にリサイズし、ResNet101 network の65x65のconv5 block と、モデル全体の 65x55x21 の予測が得られる

### Comparison with ImageNet Models.

![スクリーンショット 2017-10-25 22.53.55.png](https://qiita-image-store.s3.amazonaws.com/0/38555/62017b13-ea04-e301-5664-97cfafb10012.png "スクリーンショット 2017-10-25 22.53.55.png")
Figure 6. Pascal VOC 2012 val setのセマンティックセグメンテーションパフォーマンス。 （左）さまざまな初期化の定量的なパフォーマンス。 （右）パフォーマンスに及ぼすデータサイズの影響。

* Figure 6.（左）では、JFT-300MチェックポイントとImageNetチェックポイントの定量的比較を示す
	* JFT-300Mのチェックポイントは、ImageNetの1.7％ポイントを上回っている
	* ImageNetチェックポイントから訓練されたJFT-300Mモデルは、ImageNetチェックポイントより2.9％ポイントの向上を示している

### Impact of Data Size.

* Figure 6.（右）では、JFT-300Mの1000万、3000万、および1億画像のサブセットをランダムにサンプリングして、訓練ベースのチェックポイント（Section 5.2と同じ）で訓練データサイズの影響の分析を示す
* ここでも、学習前のデータセットが増加するにつれて、パフォーマンスが対数的に増加することが観察される

## 5.4. Human Pose Estimation

* チェックポイントとfine-tuningでベースとなるResNetモデルを初期化することによりfully-convolutional pose detectorを訓練します。
	* モデルはSGD + Momentumで450Kステップトレーニングされている
	* 基本Learning rateから始めて、学習率は25万ステップ後に10倍減少する
	* 次に、各モデルの最良のハイパーパラメータの組み合わせを独立して選択し、さらなる実験に使用した

![スクリーンショット 2017-10-25 23.05.40.png](https://qiita-image-store.s3.amazonaws.com/0/38555/c6f0dc5f-83e3-5391-d891-ff38ee518e9f.png "スクリーンショット 2017-10-25 23.05.40.png")
Table 7. COCO 'test-dev' split における人間の姿勢推定性能。 G-RMI Pose の実装に従うが、ResNet-101の初期チェックポイントは、ImageNetから事前訓練を受けたJFT-300Mに訓練された変更する。

* Table 7.では、COCO 'test-dev'セットで評価されたエンドツーエンド姿勢推定結果を示す
	* G-RMI Poseは、ImageNetの事前訓練を受けたチェックポイントを使用してfine-tuningを行った
		* JFT-300Mの初期化を行ったモデルがより優れた性能を発揮することがわかる
		* G-RMI Poseとの公正な比較を行うために、COCO画像のみをトレーニング（微調整）に使用し、アンサンブルを行わない場合のパフォーマンスを示す
	* 論文の著者らが提供したperson detection 結果を使用し、訓練されたpose detector を同じ人体ボックスのセットに適用する

# 6. Discussions

* コンピュータビジョンアルゴリズムのパフォーマンスは、ますます多くのデータで向上すると予想されるか？
	* いくつかの研究者との個人的なやりとりでは、もしデータセットのサイズが大幅に大きくなったらパフォーマンスが向上し、データセットが増えるにつれ限界性能が低下する、と期待している
	* しかし、エンジニアリングやパラメータスイープには膨大な時間が費やされますが、データの収集に費やされる時間はほとんどない

* 本論文は、データに焦点を戻す試み
	* モデルは伸び悩んでいるように見えるが、データに敬意を持てば、パフォーマンスは向上する
		* データの指数関数的な増加に対しては、ささやかなパフォーマンスの改善はまだ可能
* 本論文の一つの発見は、ImageNetが全てのパラメータ、表現能力を使い切るのに十分で無く、より良いモデルを持っても実質的な利益につながっていない

### Representation learning:

* 根底にある議論の1つは、検出やセグメンテーションなどの個別のタスクにデータを収集する時間を増やす必要があるということ
	* 私たちの発見は、表現学習から得られることがまだまだたくさんあることを示している
	*  ベースモデルやベースフィーチャーの改善により、パフォーマンスが大幅に向上する可能性がある

### Disclaimer – Large scale learning:

* この論文で用いたTraining regime、Learning scheduleやパラメータは、100万画像を用いたConvNetsの学習に対する理解を元にしている事を強調したい
	* 適切なハイパーパラメータセットを検索するには、50 K-80 GPUで2か月間必要な4エポックのJFTモデルを訓練するだけでなく、さらに多くの労力が必要
	* したがって、ある意味では、本書で報告されている定量的なパフォーマンスは、報告されたすべての画像のボリュームに対するデータの影響を過小評価している