🐶
【論文5分まとめ】PP-PicoDet
概要
モバイル特化の高精度アンカーフリー検出器であるPP-PicoDetを提案。
書誌情報
- Yu, Guanghua, et al. "PP-PicoDet: A Better Real-Time Object Detector on Mobile Devices." arXiv preprint arXiv:2111.00902 (2021).
- https://arxiv.org/abs/2111.00902
- 公式実装
ポイント
ネットワーク構造
- バックボーンとして、ShuffleNetV2をベースとしたEnhanced ShuffleNet(ESNet)を提案している。
- ネックとして、CSP構造を用いたCSP-PANを採用している。
- ヘッドでは分類と矩形回帰を行うが、YOLOXのようにそれぞれを個別に計算するのではなく、同一の特徴量を用いて計算を行う。
バックボーン構造
以下のような工夫をおこなっている。
-
SEブロックを全てのブロックに追加することで精度を向上。
-
各ブロックはstride=2のときと1のときがあるが、それぞれのケースで下図の(a)(b)のような違いを設けている。
- stride=2のとき、3x3 Depth-wise convと1x1 Point-wise convを追加(右側の流れ)することで、ShuffleNetV2ではチャネル間の情報の融合が起きにくくなる問題を解消。
- stride=1のとは、Ghost blockを導入することで、より少ないパラメータで効率的に学習できるようにした。
-
バックボーンについては、訓練時にone-shot NASが適用されている。one-shot NASとは、supernetを訓練すると、そこに含まれるsubnetも同時に訓練することができ、一度supernetを訓練しさえすれば進化的探索によって最適なsubnetを適宜取り出せる、という手法である。
- 各ステージのチャネル数のMaxを(128, 256, 512)とし、それらの(0.5, 0.675, 0.75, 0.875, 1)倍のチャネル幅を各ブロックの選択肢として用意しておく。
- 訓練時は、各イテレーションで、最大のsubnet(全てのESブロックで1倍)と最小のsubnet(全てのESブロックで0.5倍)、およびランダムにサンプルした6つのsubnetを訓練する。最大のものと最小のものでランダムなものを挟み込むということでサンドイッチ戦略と呼んでいる。
- 最終的には、取り出したsubnetをさらにCOCOデータセットでファインチューニングしている。
ネック構造
- 3つのスケール・チャネル幅の特徴マップを入力とし、同じチャネル数96をもつ4つのスケールの特徴マップを出力する。少ないチャネル数に合わせることで計算コストを下げている。
- Depth-wiseとPixel-wiseのConv層を組み合わせ(図中のDP)、CSP構造によって特徴量を分割・結合させながら特徴量を洗練させる。
- Depth-wise Convではカーネルサイズを3x3から5x5に拡大し、わずかな速度の犠牲で精度の向上を得ている。
損失とラベル対応戦略
YOLOXで提案されたSimOTAを使用しているが、対応コストをオリジナルから変更しており、Variforcal Loss(分類損失)とGIoU Loss(矩形回帰損失)によって決めている。
最終的な損失は、Distribution Focal Lossも使用して、以下のようになる
その他
- (Leaky)ReLUは全体的にH-Swishに変更することで、推論速度はそのままに精度を向上。
- cosine learning rate decayを使用
- 軽量モデルにおいては、過剰なデータ拡張は収束を難しくするため、ランダムフリップとランダムクロップ、ランダムリサイズのみを使用している。
- Exponential Moving Averageを使用しているが、軽量モデルで陥りがちな局所最適解を避けるために、一定ステップ経過した重みを履歴から消去するCycle-EMAを提案。
実験
加えた工夫が有効に働いているかを確認している実験結果を見てみる。
ネック構造の工夫や損失関数、ラベル対応戦略の工夫によって、精度が向上していっていることが確認できる。
その後、ESNetの導入によってやや精度を犠牲にしてパラメータ数を削減しているが、活性化関数の変更が効いて、ベースラインからわずかなパラメータ数の増加にもかかわらず大きく精度が向上している。
Discussion