数学がわからない

日々の勉強をアウトプットする。

論文を読む「Online Model Distillation for Efficient Video Inference」⑥

背景

「蒸留(Distillation)」に関して、論文"Ravi Teja Mullapudi, Online Model Distillation for Efficient Video Inference."を読む。

2. Related Workの途中までまで読んだところ、蒸留とは、「何でも理解できるが重いネットワークよりも、実運用を考慮して特定の対象に特化させることで軽いネットワークを作る手法」と理解。
しかし、問題は「特定の対象」を何にするか、が難しいこと。そこで本論文は「特定の対象」あらかじめ準備して訓練するのではなく、「オンライン」で訓練する方法を提案している。

従来手法はモデル圧縮(model compression)であり、これを「オンライン」訓練にする。しかし、「オンライン」訓練にも問題はあるという。2. Related Workは、気になる技術がまた出たときに戻るとして、3. Just-In-Time Model Distillationに進む。

3. Just-In-Time Model Distillation

Google翻訳した上で、自分の理解しやすいように修正する。

各ビデオフレームで、コンパクトモデルが実行され、ピクセルレベルのセグメンテーションが行われる。

このコンパクトな学生モデルは、質の高い教師モデル(MRCNN [15]など)からの予測を使用して定期的に適応される。

学生モデルはオンラインで訓練される(将来の使用のためにジャストインタイムで調整されてる)ので、「JITNet」と呼ぶ。

オンライン蒸留を実用上効率化するために、我々のアプローチは次の課題に取り組む:

1)高速推論と訓練可能な学生モデルの生成
2)不完全な教師の出力を用いた学生のオンライン訓練
3)新しいフレームが到着した時の学生の更新時期と更新方法の決定

次に、これらの各コンポーネントについて説明します。

提案されるアプローチは、ビデオの毎フレーム実行される学生モデルと、定期的に実行され、出力を用いて学生モデルを再訓練する教師モデルで構成されるという理解。
ただ、教師モデルが重いことを問題にしているはずなので、教師モデルはリアルタイムには出力せず、数フレーム遅れるということでいいだろうか?

3.1. JITNet Architecture

効率的なオンライン蒸留は、効率的な推論と訓練両方をサポートするために、JITNetアーキテクチャを必要とする。

実世界のビデオストリームは多彩なスケールのオブジェクトを含むため、JITNetは高解像度の入力から推論を行う必要がある。

わずかな訓練の反復による適応を可能とするために、JITNetは高い学習率で更新されても安定していなければならない。

学生モデルJITNetへの要求

  • 高解像度入力からの推論
  • 高学習率更新での安定性

いきなり難易度が高そうに思えるのだが・・・。

JITNetアーキテクチャは、エンコーダ - デコーダ[2]に似たコンパクトなセマンティックセグメンテーションアーキテクチャである。

エンコーダとデコーダ内の3つのブロックは修正ResNet [16]ブロックであり、各ブロックの第2の3×3畳み込みは1×3とそれに続く3×1畳み込みに置き換えられる。この修正により、必要なパラメータと計算が大幅に削減される。各ブロックのチャネル数は、高解像度の特徴マップの計算量を減らすために選択される。

残差ブロックにより、高い学習率で迅速かつ安定した訓練が可能になる。各ブロック内の残余接続に加えて、各エンコーダブロックからの出力特徴は対応するデコーダブロックの入力に連結される。

これらの接続は訓練速度と安定性を助ける一方、JITNetにさまざまなセマンティックレベルでの特徴を使用できるようにする。

JITNetアーキテクチャ

  • エンコーダ・デコーダに類似
  • エンコーダ・デコーダ内の3つのブロックは修正ResNet
  • 訓練速度と安定性、セマンティックレベルでの特徴使用を実現

エンコーダ・デコーダに類似した内部のResNetブロックを修正したアーキテクチャで目的が達成できる・・・・・・、そういうものか。

まとめ

学生モデルJITNetへの要求と、それを達成するアーキテクチャについての説明。具体的にはエンコーダ・デコーダやResNetについても調べる必要がある?