Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンピュータビジョンモデルの量子化による精度低下の原因特定とその緩和

 コンピュータビジョンモデルの量子化による精度低下の原因特定とその緩和

GO TechTalk #20 Deep Dive into AI - 次世代AIドラレコサービス編 で発表した資料です。

■ YouTube
https://www.youtube.com/live/R3r0CLhFoq8?feature=share&t=880

■ connpass
https://jtx.connpass.com/event/287383/

GO Inc. dev

July 14, 2023
Tweet

More Decks by GO Inc. dev

Other Decks in Technology

Transcript

  1. © GO Inc. 2 自己紹介 GO株式会社 AI技術開発部 エンジニア / 木村元紀

    • スタートアップおよびメーカーにてコンピュータビジョン技術の研究 開発に従事 • 2019年から現職 • 『DRIVE CHART』のコンピュータビジョンモデルの開発を担当 • 衛星画像を対象としたコンペでの入賞経験多数(SpaceNet-6/7/8 Challenge トップ5 入賞など) @motokimura1
  2. © GO Inc. • 外向きカメラ ◦ 車両・歩行者などの物体検出 ◦ レーン認識 ◦

    車間距離の推定 ◦ 自車速の推定 ◦ 一時停止標識の検出 ◦ 消失点の推定 • 内向きカメラ ◦ 顔検出(顔ランドマーク検出) ◦ ドライバー行動認識(脇見検出など) ◦ 顔認証 『DRIVE CHART』のコンピュータビジョンモデルの例 太字はAIドラレコ(エッジデバイス)で動作するモデル 3
  3. © GO Inc. 最終層を分割 • 物体検出モデルでは、最終層(head)の量子化で精度低下が発生しやすい ◦ 精度低下の原因:最終層ではチャネルによって出力の範囲が大きく異なることがあり、全チャネ ルを内包するような広い範囲が量子化されるため •

    最終層を分割することで、量子化による精度低下を大きく緩和できる • この例のように、量子化においてはモデル内の一部の層が精度低下の原因となっていることが多い 物体検出モデルの量子化による精度低下の事例 参考:量子化による物体検出モデルの精度低下の原因分析と対策(YOLOv3・YOLOv5の量子化を例に)(木村、2022) https://lab.mo-t.com/blog/object-detector-quantization Model 最終層を分割 mAP YOLOv3(float32) 32.3 YOLOv3(int8) 27.2 YOLOv3(int8) ✔ 31.0 MS COCO 2017 valでの評価結果(img_size=608) 出力値 6
  4. © GO Inc. • 一つの層(レイヤ)だけを量子化してモデルの精度を評価する • これを全層に対して繰り返し行い、量子化したときに精度低下が大きい層を特定する 感度解析(Sensitivity Analysis [1])による原因特定

    Accuracy → 99% レイヤ N レイヤ 1 レイヤ 2 レイヤ 3 レイヤ N レイヤ 1 レイヤ 2 レイヤ 3 レイヤ N レイヤ 1 レイヤ 2 レイヤ 3 95% 70% 96% レイヤ N レイヤ 1 レイヤ 2 レイヤ 3 int8 floatレイヤ int8レイヤ 8
  5. © GO Inc. • pytorch-image-modelsのImageNet学習済みモデル(EfficientNet-Lite0)を量子化したところ、 top-1 accuracyが5ポイント以上低下した • 感度解析を適用した結果、入力に近い2層(blocks.0.0.conv_dw, conv_stem)の量子化で特に精度が

    大きく低下していることがわかった • この2層を量子化から除外した場合には、精度低下が大きく緩和された 感度解析の実験 Model N of skipped layers top-1 accuracy EffNet-Lite0 (float32) N/A 75.48 EffNet-Lite0(int8) 0 70.00 EffNet-Lite0(int8) 2 73.95 ImageNet valでの評価結果(img_size=608) 感度解析の適用結果 (量子化時の精度低下が大きい7層を左側から順番に並べたもの) 量子化・感度解析の実装には、PyTorch FX Graph Mode Quantizationを利用 https://pytorch.org/blog/quantization-in-practice/#sensitivity-analysis 9
  6. © GO Inc. • EfficientNet-Lite0で量子化による精度低下が大きい層(入力に近い2層)の中には、depthwise separable convが含まれている • Depthwise separable

    conv:conv(畳み込み)を空間方向とチャネル方向に分離することで、パラ メータ数と計算量を削減する手法。特にEfficientNet・MobileNet系列のモデルで多用される • Depthwise separable convは量子化で精度低下しやすいと指摘されている [2] [3] • このdepthwise separable convを通常のconvに置換することで、精度低下を緩和できないか? 感度解析の結果に対する考察(精度低下の原因は何か?) 空間方向のconv チャネル方向のconv depthwise separable conv 通常のconv 参考:Kerasの作者@fcholletさんのCVPR'17論文XceptionとGoogleのMobileNets論文を読んだ(yu4u、2017) https://qiita.com/yu4u/items/34cd33b944d8bdca142d 10
  7. © GO Inc. • 『DRIVE CHART』のドライバー行動認識モデル ◦ CNN + RNN

    の動画認識モデル ◦ ドライバーの特定の行動をフレームごとに検出 ◦ 高速化のため、CNN内でdepthwise separable convを多用 『DRIVE CHART』における感度解析の応用事例 CNN RNN 時刻tのフレーム 時刻tにおける 行動認識スコア depthwise separable convを多用 11
  8. © GO Inc. • 感度解析の結果にもとづき、入力に一番近いdepthwise separable convを通常のconvに置換 • 12%程度の計算量増加で、量子化モデルの精度を大幅に改善できた 感度解析にもとづいたドライバー行動認識モデルの最適化

    最初のdepthwise separable convを置換 行動認識AUC(float) (相対値) 行動認識AUC(int8) (相対値) 計算量 (相対値) 100 93.4 100 ✔ 103.9 101.0 111.9 量子化モデル同士の比較では、AUC(相対値)が7.6pt改善! 12
  9. © GO Inc. • 量子化はニューラルネットワークを軽量化・高速化する強力な手法であるが、丸め誤差に よって少なからずモデルの精度が低下することがある • 量子化による精度低下が大きい層を特定する手法として、感度解析を紹介した • ImageNetで学習したEfficientNet-Lite0に感度解析を適用し、EfficientNet-Lite0では特

    に入力に近い層で量子化による精度低下が大きいことがわかった • この知見にもとづいて『DRIVE CHART』のドライバー行動認識モデルの構造を最適化す ることで、量子化による精度低下を無視できるレベルまで緩和できた まとめ 13
  10. © GO Inc. 1. H. Wu, P. Judd, X. Zhang,

    M. Isaev, and P. Micikevicius. Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation. arXiv:2004.09602, 2020. 2. R. Krishnamoorthi. Quantizing deep convolutional networks for efficient inference: A whitepaper. arXiv:1806.08342, 2017. 3. T. Sheng, C. Feng, S. Zhuo, X. Zhang, L. Shen, and M. Aleksic. A Quantization-Friendly Separable Convolution for MobileNets. In EMC2 Workshop, 2018. 参考文献 14