EfficientDet: Scalable and Efficient
Object Detection
Mingxing Tan Ruoming Pang Quoc V. Le
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
物体検出とは
物体検出とは
画像・動画内の特定の物体の種類と座標を検出する
ニューラルネットワークを使った一般的な手法
モデル
画像デー
タセット
重み
学習
推論
画像 モデル
検出
した画像
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
人工知能・機械学習 トップカンファレンス
http://www.kamishima.net/jp/
人工知能・機械学習 トップカンファレンス
http://www.kamishima.net/jp/
Faster R-CNN
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
物体検出の歴史
①Window base CNN:画像を超細かく分割してそれぞれを畳み込みニューラルネット (CNN)
に流して特徴抽出その後 SVMでクラス分類 + 回帰で検出領域の調整
②R-CNN:先に物体が存在しそうな領域を推定してから、 CNNで特徴抽出
③Fast R-CNN・Faster R-CNN
Fast R-CNN のアーキテクチャー
物体検出の歴史 -Window base CNN-
画像を細かく分割してそれぞれを CNNに流して特徴抽出
その後SVMでクラス分類 + 回帰で bboxの調整
物体検出の歴史 - R-CNN-
物体検出の歴史 - R-CNN-
①
既存手法(Selective Search)を用いて物体候補(Region Proposals)を探す
物体検出の歴史 - R-CNN-
Selective Searchとは
ピクセルレベルで類似する領域をグルーピングしていくことで候補領域を選出するルゴリズム
from selective_search import selective_search
image = cv2.imread(path)
boxes = selective_search(image, mode=MODE, random=False)
物体検出の歴史 - R-CNN-
②
物体候補の領域画像を全て一定の大きさにリサイズする
物体検出の歴史 - R-CNN-
③
CNNに流して特徴量を抽出する
物体検出の歴史 - R-CNN-
④
SVMを用いてクラス分類 + 回帰でbboxを予測
物体検出の歴史 -Fast R-CNN-
②R-CNN:先に物体が存在しそうな領域を推定してから、 CNNで特徴抽出
物体検出の歴史 -Fast R-CNN-
RegionProposalで切り出した領域のみ全結合層に与えているので高速化できた
ROIs = region_proposal_by_selective_search(image)
Fmaps = CNN(image)
for ROI in ROIs
patch = ROI_pooling(Fmaps, ROI)
results = FCdetector(patch)
Faster R-CNN 概要
RegionProposalをCNN化することで、
End-to-Endな物体検出器となり、
検出速度が大幅に向上した
①特徴量抽出 VGG16・RESNetなどを使用
②アンカーベースで RegionProposalを出力
③RoI poolingを行ったのち、クラス分類と
 ボックス回帰を行う 
①
②
③
Faster R-CNN 概要
Faster R-CNN 概要
Fast R-CNNと異なる部分
① Region ProposalがCNN化することで何が変わったか
② Fast R-CNNに比べて、CNNがどのように変化したか
Faster R-CNN Region Proposalの変化
これまでのRPは、「Selective Search」を使っていた
計算量が多くて、めちゃめちゃ遅いという欠点があった
そこで、アンカーを設定してRPを求める手法を提案した
アンカー(sliding windowの中心点)
Faster R-CNN Region Proposalの変化 アンカーによるRP①
VGGでは16ピクセルに一つの割合で等間隔にアンカーが配置される
Faster R-CNN Region Proposalの変化 アンカーによるRP②
各アンカーに対して、いくつかの領域を設定する。
ハイパーパラメータとして基準の幅・高さ・
アスペクト比を決定できる
例)
基準の長さ→64,128,256
アスペクト比→1:1, 1:2, 2:1
この場合各アンカーに対して 3*3=9の領域が使われる
右図の場合、18*25*9=4050のboxが使われるため、
ほとんどのbboxをカバーできる
あとは教師データ(ground truth)と比較して、
その結果をRPNの出力として返す
Faster R-CNN CNNの変化
損失関数
pi : 正のラベルか負のラベルか
pi* : 真値のラベルの正負
ラベルの付け方
1. 各アンカーに対してIoUが最も高いもの
2. 真値とのIoUが0.7以上のもの
正解領域 
      予測領域
Faster R-CNN CNNの変化
損失関数
pi : 正のラベルか負のラベルか
pi* : 真値のラベルの正負
ラベルの付け方
1. 各アンカーに対してIoUが最も高いもの
2. 真値とのIoUが0.7以上のもの
正解領域 
      予測領域
Faster R-CNN CNNの変化
損失関数
クラス分類に関する評価指標
物体か背景かの2値分類における
logloss
ボックス回帰に関する評価指標
l1_smooth_loss
def _l1_smooth_loss(self, y_true, y_pred):
abs_loss = tf.abs(y_true - y_pred)
sq_loss = 0.5 * (y_true - y_pred)**2
l1_loss = tf.where(tf.less(abs_loss, 1.0), sq_loss,
        abs_loss - 0.5)
return tf.reduce_sum(l1_loss, -1)
Faster R-CNN CNNの変化
RPNの学習
各アンカーに対して、物体であるかどうかのラベルをつける
1. 各アンカーに対して、真値との IoUが最も高いbox
2. 真値とのIoUが0.7以上 だったbox
共通化したRPNとFast R-CNNの学習方法
本論文の実験で使用した方法:
RPNを学習し、そのRPを用いてFast R-CNNを学習させる。
その後Fast R-CNNでチューニングしたネットワークを用いて RPNを初期化する
以上を繰り返す。
アンカーの導入とCNN化により、
● RPの精度が向上
● 実行速度が大幅に改善された
Faster R-CNNの応用
signate 物体検出コンペ優勝者のアーキテクチャ
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
物体検出の歴史
1stage 検出器
アンカーモデル
● Yolo9000: better, faster, stronger
● Focal loss for dense object detection
アンカーフリーモデル
● Cornernet: Detecting objects as paired keypoints.
● Objects as points
● Fcos: Fully convolutional one-stage object detection
2stage 検出器(region proposalを持っている)
● Fast r-cnn
● Faster r-cnn: Towards real-time object detection with region proposal networks
● Cascader-cnn:Delving into high quality object detection
● Mask r-cnn
これらの1stageモデルは特徴抽出と検出を一貫して行えるアーキテクチャーのため、
実行速度は早いが、その分精度が 2stageアーキテクチャーに劣っている
FCOS: Fully Convolutional One-Stage Object Detectionの検出方法
FPNを用いたアンカーフリーモデル (RetinaNet , FCOS)
FPNの出力にさらに畳み込み層を追加して、クラス分類とボックス回帰を行っている
物体検出の歴史
FLOPS(計算コスト)を低く保ちつつ、精度をあげるようなアーキテクチャーが求められている
EfficientDet 本論文における2つの貢献①
近年の物体検出のバックボーンには Feature Pyramid Networkがよく使われる
様々な解像度の画像を読み込ませることで精度が向上する
例)
● PANet
● NAS-FPN
● M2det
● G-FRNet
様々な解像度の融合の際に不均衡が生じてしまう問題を解決するために
双方向特徴量ピラミッドネットワーク( BiFPN)を開発
EfficientDet 本論文における2つの貢献②
モデルのスケーリング
これまでは、より大きなバックボーンネットワークと
● Faster R-CNN
● Yolov3
● Nas-fpn
許容できる入力画像サイズを大きくすることで精度を向上させてきた
● Mask r-cnn
● Learning data aug- mentation strategies for object detection
精度と効率のどちらも向上させるには、特徴抽出部と検出部分のスケーリングが大切である
EffiecientNetを参考に
バックボーン、特徴ネットワーク、ボックス /クラス予測ネットワークのすべての解像度 /深さ/幅を共同でス
ケーリングする、物体検出器のための複合スケーリング法を提案
EfficientDet 本論文における2つの貢献②
モデルのスケーリング
これまでは、より大きなバックボーンネットワークと
● Faster R-CNN
● Ylov3
● Nas-fpn
許容できる入力画像サイズを大きくすることで精度を向上させてきた
● Mask r-cnn
● Learning data aug- mentation strategies for object detection
精度と効率のどちらも向上させるには、特徴抽出部と検出部分のスケーリングが大切である
EffiecientNetを参考に
バックボーン、特徴ネットワーク、ボックス /クラス予測ネットワークのすべての解像度 /深さ/幅を共同でス
ケーリングする、物体検出器のための複合スケーリング法を提案
要するに
EfficientDetとは
①EfficientNetをバックボーンに使い、
②BiFPNと
③複合スケーリングを使用したアーキテクチャーである
この3点を理解できれば良い
EfficientDet アーキテクチャー
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
EfficientNetとは??
これまで、畳み込みネットワークの幅、解像度、許容入力画像サイズの3点の
スケールをあげることで精度を向上させてきた。
しかし、このスケールを単純にあげるだけでなく、 バランスを保ちつつスケーリングする ことで
精度が向上できることを示した。
スケーリング
深さスケーリング
畳み込みニューラルネットワークは深くすればするほど豊かで複雑な特徴を捉えることができる
しかし、深くなればなるほど勾配消失問題によって、学習が困難になる。
この対策として、スキップコネクション やバッチ正規化、ドロップアウトなどが使われているが、あまりに
深いネットワークには対応しきれない。
実際Res-Net-1000はRes-Net-101と同程度の精度しか出せていない
スケーリング
幅スケーリング
幅が広いほど複雑な特徴を捕らえられるが、すぐに飽和してしまう ....
解像度
大きくなりすぎると精度向上が見られなくなる
スケーリング
観測1
ネットワークの幅、深さ、解像度のいずれかの次元をスケールアップすると精度が向上しますが、大きな
モデルでは精度の向上は減少します。
観測2
より良い精度と効率を追求するためには、 ConvNetスケーリング時にネットワークの幅、深さ、解像度
のすべての次元のバランスをとることが重要です。
スケーリング
高解像度の画像
深いネットワーク広い幅
スケーリング
高解像度の画像
深いネットワーク広い幅
3つのパラメータは独立しておらず、それぞれに関係し合っている
複合的にパラメータを制御すると良い
EfficientNet アーキテクチャー
深さ、幅、解像度の決定方法
3つを定数φによって定義することにした
α, β, γはそれぞれグリッドサーチで求めた
MnasNetと同じ探索空間を用いて、
ACC(m)×[FLOPS(m)/T] w を最小化するように最適化を行った
これによって生成したネットワークを EfficientNet-B0とした
EfficientNet アーキテクチャー
EfficientNetB0をベースにスケールアップして EfficientNetB7まで作成した
スケールアップの方法
1. φ=1に固定して、α,β,γのグリッドサーチを行う
EfficientNet-B0の最適値は、α=1.2、β=1.1、γ=1.15
2. α,β,γを定数として固定し、式3を用いて φの異なるベースラインネットワークをスケールアップ
し、EfficientNet-B1〜B7を得る
EfficientNet アーキテクチャー
MnasNet: Platform-Aware Neural
Architecture Search for Mobile
EfficientNetの探索に使った技術の元となった論文
Mingxing Tan, Bo Chen, Ruoming Pang, Vijay
Vasudevan, Mark Sandler, Andrew Howard, Quoc V. Le
概要
モバイル端末でCNNを使うには、速くて計算量の少ないアーキテクチャーは必要である
そこで、モバイル端末で動かせるようなアーキテクチャーを自動で探索するネットワークを提案する
an automated mobile neural architecture search (MNAS) approach
モバイル端末における ImageNetの分類タスクでSOTAを達成
これまでのモバイル端末
導入
モバイル端末
● ネットワークの深さを減らして、深さ方向の畳み込みをする
Mobilenets: Efficient convolutional neural networks for mobile vision appli- cations.
● グループで畳み込みをする
Shufflenet: An extremely efficient convolutional neural network for mobile devices.
本論文の手法
1. 精度と推論レイテンシーの両方を最適化する問題として対処
a. Learn-ing transferable architectures for scalable image recognition.
b. Regular- ized evolution for image classifier architecture search.
c. Mobilenets: Effi- cient convolutional neural networks for mobile vision appli- cations.
2. 第二に、これまでの自動化されたアプローチは、主にいくつかのタイプのセルを検索し、ネット
ワークを介して同じセルを繰り返し積み重ねることを観察する。これは探索プロセスを単純化する
が、計算効率に重要な層の多様性を排除している。この問題に対処するために、我々は新しい因
数分解された階層的な探索空間を提案する。これは、階層をアーキテクチャ的に異なるものにす
ることを可能にしながらも、柔軟性と探索空間の大きさの間の適切なバランスをとる。
既存の問題と提案手法
これまでの最適化は以下を使用していた
モデルmに対して、ACCは精度、LATはインターフェースレイテンシーを表す
しかし,このアプローチは単一のメトリックを最大化するだけで,複数のパレート最適解を
提供できない
アーキテクチャのコストを考えると一回の探索でどちらも最適化したい...
Multi-objective optimizationには多くの解決策が論じられている。
本論文では以下のように重み付けすることでパレートと最適解を求めた
Factorized Hierarchical Search Space
様々なCNNモデルに共通するように、一連のブロックに分解した
これまでのアプローチは、セルの探索をして、同じセルを繰り返し積み重ねるだけであった
本手法では、ブロックごとに演算と接続を別々に探索する新しい因数分解階層探索空間を導入
Factorized Hierarchical Search Space
様々なCNNモデルに共通するように、一連のブロックに分解した
パラメータ
● 畳み込み層の種類:regularconv(conv),depthwise conv (dconv), mobile inverted bottleneck conv
● 畳み込みカーネルサイズ:3×3, 5×5….
● SERatio
● SkipOp: pooling, identity residual, or no skip
● Output filter size Fi:{0.75, 1.0, 1.25}
● Number of layers per block Ni : ブロックごとにレイヤーを何回繰り返すか定義
Search Algorithm
関連する研究:
● Neural architecture search with reinforcement learning
● Learning transferable architectures for scalable image recognition.
● Efficient neural architecture search via parameter sharing.
上記の研究をもとに、探索は強化学習を行って実装した!!!!!!!!
報酬R(m)に対してJを最大化するようにθを決定している
MnasNetの実験結果
結果!!!!!!
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
BiFPNの概要
BiFPN
(a) FPN
トップダウンでマルチスケールの特徴を融合させる (高解像度から低解像度へ融合 )
IN640
5*5
10*10
20*20
40*40
80*80
BiFPN
(a) FPN
トップダウンでマルチスケールの特徴を融合させる (高解像度から低解像度へ融合 )
BiFPN
(b) PANet
ボトムアップで特徴を融合させる
BiFPN
(c) NAS-FPN
ニューラルネットワークを用いて融合
PANetにも劣る....数1000時間GPUを回さないといけない
BiFPN
(d) BiFPN
PANetとはトップダウン・ボトムアップの双方向のパスを一つの特徴ネットワークとして扱い、
この層を複数回繰り返すことで高度な特徴融合を実現している
画像の融合方法
これまで
同じ大きさにリサイズして合計を出すだけだった
これまでの手法はすべての入力特徴を区別せずに等しく扱う。しかし,異なる入力特徴は異なる解像度
であるため,通常は出力特徴に不均等に寄与することが観察された.この問題を解決するために,我々
は各入力に重みを加え,ネットワークに各入力特徴の重要度を学習させることを提案する.この考えに
基づいて、我々は3つの重み付き融合アプローチを考える。
画像の融合方法
Unbounded fusion:
Softmax-based fusion:
それぞれの重みに、ソフトマックスを適用
0~1の範囲の確率で重要性を表すようにした
しかし、ソフトマックスの適用により、速度低下がおきた
画像の融合方法
Fast normalized fusion:
ソフトマックスの代わりに ReLUを適用した!!!30 % 近く速度が低減された
目次
1. 物体検出とは
2. 機械学習のトップカンファレンス
3. 物体検出の歴史①
a. window-base
b. R-CNN
c. Fast R-CNN
d. Faster R-CNN
4. EfficientDet
a. 物体検出の歴史②(関連研究)
b. EfficientDetのアーキテクチャー
i. EfficientNetとは?
ii. BiFPNとBiFPNにおける画像の融合方法
iii. EfficientDetの複合スケーリング
c. 検証結果
EfficientDet アーキテクチャー
EfficientDet アーキテクチャー
深さ・幅・解像度をどうスケーリングした良いのか!!!!
EfficientDet 複合スケーリング(BiFPN)
EfficientNetのスケーリングを参考にした
クラス分類と違い、物体検出では
全次元を対象としてグリッドサーチするには膨大な計算量が必要なので無理....
今回は、全次元を共同でスケーリングする手法を、
ヒューリスティックベースで求めた
EfficientDet 複合スケーリング(BiFPN)
BiFPNの幅と高さ
グリッドサーチで以下の中から最適な値を探した
値{1.2, 1.25, 1.3, 1.35, 1.4, 1.45}
入力画像の解像度
EfficientDet 複合スケーリング
複素係数φを用いてバックボーンネットワーク,BiFPNネットワーク,クラス/ボックスネットワーク,解像度の全ての次
元を共同でスケーリングした。これでD0-D7までができた
実験 各種設定
データセット:mscoco2017-train(11万8千枚)
optimizar:SGD
momentum:0.9
learning-rate:0~0.16まで線形に増加後、cosine annealingを適用
畳み込み後に、Synchronized batch normalizationを適用
活性化関数:Swish
exponential moving average
損失関数:focal loss (α=0.25、γ=1.5、アスペクト比{1/2, 1, 2})
32個のTPUv3コア上で300エポック、バッチ合計サイズ128で学習
前処理:RetinaNetと同様.
実験 結果
実験 結果
セマンティックセグメンテーション.
追加検証
RetinaNetのバックボーンとFPNを取り替えて検証してみた
追加検証 スケーリングに関して
実装したい人向け
kaggle
データコンペ
Global Wheat Detection
● Pytorch Starter - FasterRCNN Train
参考文献
R-CNN
● 最新のRegion CNN(R-CNN)を用いた物体検出入門
Faster R-CNN:
● Faster R-CNNにおけるRPNの世界一分かりやすい解説
loss関数に関して
● Deepに理解する深層学習による物体検出 by Keras
signate
● signate エッジAIコンペ
FCOS
● 「FCOS」、RetinaNetを超えたアンカーフリー物体検出
参考文献
論文
● EfficientDet: Scalable and Efficient Object Detection
● EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
● MnasNet: Platform-Aware Neural Architecture Search for Mobile
● Faster R-CNN
● yolov4
個人的に合わせて読みたい記事・論文
コサインアニーリング:
● kaggle で初めてメダル(silver) を取ったものの、お詫びせざるを得ない件
● 年末に試したい、画像認識モデルの自動設計
Sync Batch Normalization:
● PyTorchで複数のGPUで訓練するときのSync Batch Normalizationの必要性
Swish:
● Swish活性化関数の紹介
最適化と損失関数:
● 【2020決定版】スーパーわかりやすい最適化アルゴリズム-損失関数からAdamと
ニュートン法-
論文
● Focal Loss
● Retina Net

Efficient Det