PicoDet : モバイルCPUに最適化した高速な物体検出モデル
ailia SDKで使用できる機械学習モデルである「PicoDet」のご紹介です。エッジ向け推論フレームワークであるailia SDKとailia MODELSに公開されている機械学習モデルを使用することで、簡単にAIの機能をアプリケーションに実装することができます。
PicoDetの概要
PicoDetは2021年11月に公開された機械学習モデルです。近年の物体検出モデルの研究成果を、モバイルCPU向けの軽量モデルに集約することで、高精度かつ高速な物体検出を実現します。

出典:COCOデータセット
PicoDetのアーキテクチャ
PicoDetでは、Backboneを軽量な構造とすることで、特徴抽出の速度を改善します。また、loss関数を改良することで、学習の安定性と効率を向上させます。
近年の物体検出では、アンカーフリーの検出器の採用が進んでいます。FCOS(Fully Convolutional One-Stage Object Detection)はGTラベルの重複の問題を解決します。一般的なアンカーボックスでは、各座標ごとに複数のアンカーを持ちますが、FCOSでは、各座標ごとに単一の中心点を持ちます。FCOSを使用したアンカーフリーの手法は、ハイパーパラメータの調整が不要という優位性があります。
しかし、一般的なアンカーフリーの検出器は比較的規模の多いサーバ向けのモデルで使用されています。モバイル向けのアンカーフリーのモデルは、NanoDetやYOLOX-Nanoがある程度です。
軽量なアンカーフリーの検出器は、精度と効率のバランスを取ることが難しいという問題があります。そのため、FCOSとGFL(Generalized Focal Loss)にインスパイアされた、新たな物体検出器としてPicoDetを提案します。

PicoDet(出典:https://arxiv.org/pdf/2111.00902.pdf)
CSPをベースに、CSP-PANを使用したheadを構築します。CSPはResNetのSkip Connectionの進化系であり、Convを通さずに前段のFeature Mapを切り出してConcatする機構を追加することで、逆伝搬を容易にするとともに、演算量を削減します。PicoDetでは、Reception Fieldを拡大するために、3x3 depthwise convを5x5 depthwise convに拡張します。

CSPNet(出典:https://arxiv.org/pdf/1911.11929.pdf)
ラベルアサインのストラテジーを改善するために、SimOTAを採用します。Loss関数には、Varifocal Loss (VFL)とGIoU lossを採用します。
SimOTAはYOLOXでも使用されており、Lossを計算するために、予測した矩形とGTの矩形の対応付けを決定する際に、最も近いGTを割り当てるのではなく、最適化問題を解いてより適切なGTを割り当てることで、有害な勾配の発生を抑制する手法です。OTA(Optimal Transport Assignment)を高速化したのがSimOTAです。

SimOTA(出典:https://arxiv.org/pdf/2103.14259.pdf)
物体検出モデルにおいては、headが予測した矩形に対して、GTとなる矩形を割り当て、GTとのLossを逆伝播することで学習を行います。
GTの矩形同士が重なっていて、その領域内に予測矩形が存在した場合に、どちらのGTに割り当てるべきか決定できない領域をAmbiguous Anchor(曖昧な領域)と呼んでいます。Ambiguous Anchorの領域にある予測矩形にGTを割り当てて、Loss計算に使用すると、有害な勾配が発生します。OTAは、Ambiguous Anchorに属する矩形をGTに割り当てにくいアルゴリズムになっています。

Ambiguous Anchor(出典:https://arxiv.org/pdf/2103.14259.pdf)
OTAによる割り当て結果の例です。画像内の点が予測した矩形の中心点で、割り当ての違いがわかりやすい箇所を赤の楕円で囲っています。OTAでは、Ambiguous Anchorに対応する曖昧な領域には点が存在せず、予測した中心点をGTに割り当てていないことがわかります。

OTAによる割り当て結果(出典:https://arxiv.org/pdf/2103.14259.pdf)
特徴抽出のためのbackboneはShuffleNetV2をベースとしています。ShuffleNetV2はMobile向けに効率的なモデルアーキテクチャです。ShuffleNetはMobileNetのボトルネックであるconv1x1を高速化するために、conv1x1をshuffleとgrouped conv 1x1に分解します。PicoDetでは、ShuffleNetV2を改良したEnhanced ShuffleNetを使用します。

Enhanced ShuffleNet(出典:https://arxiv.org/pdf/2111.00902.pdf)
One-Shot Neural Architecture Search (NAS)を導入し、各レイヤの最適なチャンネル数を探索します。探索の結果、チャンネル数を8の倍数にすることが最も推論速度の改善に寄与しました。
総じて、PicoDetはYOLOxと同様に、最新の物体検出の知見を取り入れて、最適化されたモデルとなります。
PicoDetのパフォーマンス
QualcommのSnapdragon 865のCPUを使用したパフォーマンスは下記となります。YOLOX-TinyをNCNNを使用してCPUで動かすとmAP 32.8で32.77ms必要なところが、PicoDetだとmAP 30.6で12.37ms。mAP 34.3で17.39msで推論が可能です。

出典:https://arxiv.org/pdf/2111.00902.pdf
ただし、この優位性はCPUでの推論におけるものであり、比較的高速なGPUではYOLOX-TinyとPicoDetは同等の速度になる傾向にあります。そのため、JetsonなどではYOLOX-Tiny、RaspberryPiなどではPicoDetが最適であると考えています。
PicoDetの使用方法
ailia SDKでPicoDetを使用するには下記のコマンドを使用します。WEBカメラを使用してPicoDetの精度と速度を確認することが可能です
$ python3 picodet.py -v 0
アイリア株式会社はAIを実用化する会社として、クロスプラットフォームでGPUを使用した高速な推論を行うことができるailia SDKを開発しています。アイリア株式会社ではコンサルティングからモデル作成、SDKの提供、AIを利用したアプリ・システム開発、サポートまで、 AIに関するトータルソリューションを提供していますのでお気軽にお問い合わせください。
ailia Tech BLOG