Armadilloフォーラム

Armadillo-X2のNPUをYOLOv8で利用する方法

kawasan_mt

2025年6月25日 17時19分

いつもお世話になっております。
以下の件に対してご指導をいただけると助かります。
よろしくお願いいたします。

・やりたいこと:
 物体検出としてYOLOv8n利用をターゲットにしている

・現状:
 NPU指定時にスループットがでない。(CPU利用時:1.25fps、NPU併用時:0.2fps)
 onnx化し、Armadillo-X2のonnxruntimeで動作するが以下エラー(ログの279行目以降を参照)が発生。
 fallbackが発生している可能性あり。
  E [vsi_nn_CalcReshapeTensor:1410]Wrong reshape parameters.
  E [setup_node:473]Setup node[4] RESHAPE fail
 ※エラーログを添付 2025-06-25_YOLOv8nをONNX動作(CPUとNPU).log

・推測:
 エラーの正確な意味は分からないが、onnx内のReshapeノードの4つ目でパラメータエラーが起きていると推測
 Netronで見たところ、4つ目のReshapeノードは1x64x8400→1x4x16x8400を行っている。
 (これが問題の起きているノードと仮定)
  ※ Netron 4つ目のReshape画像添付 01_RESHAPEの4つ目.png
 ・このReshapeノードだけが3次元→4次元変換を行っている。(他のReshpeノードは2次元、3次元変換)
 ・このReshapeノードだけが入出力サイズが大きい(他のreshpeは1x144x20*20、1x1x4x8400程度)
 テンソル形状やテンソルサイズに制限がある可能性を考えている
 テンソルサイズの制限の可能性を考え、96x96の画像を試したが改善せず。
 よってテンソル形状に問題がある可能性が高い。

・確認事項:
 ①上記の対策方法をご存じないでしょうか?
 ②NPUの仕様書をいただけないでしょうか?
  対応している演算ノードや、テンソル形状及びサイズ制限を把握したい。
  ※swish,sigmoid,tanhの非線形関数
   ReLU,ReLU6,LeakyReLUの分段線形関数
   HardSwish,HardSigmoidのような非線形関数に対する線形近似関数
   Add,Sub,Mul,Div,Exp,Log等の演算関数
   テンソル操作:Reshape,Transpose,Squeeze,Flatten
 ③Armadillo-X2で物体検出の実績があるモデルをご紹介いただけますか?
  YOLOv3,v5、MobileNet-SSD v2以外にあれば。
  本NPUとの相性の良さも含めて情報があると助かります。

・補足
 Windows 10環境にてYOLOv8n.ptをONNX形式に変換する作業のLOGを添付 2025-06-25_ONNX変換.txt

==========
製品型番:Armadillo-X2
Debian/ABOSバージョン:3.20.2-at.1
カーネルバージョン:5.10.222-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:/opt/firmware/etc/imxlib_version = 2.2.0
==========

ファイル ファイルの説明
2025-06-25_FILEs.zip 操作LOGファイル、Netron画像、スクリプト(ONNX変換、推論実行)