変換したAIモデルの精度について

質問

変換したAIモデルの精度が、変換前より低くなる。精度を上げる方法はないか。


回答

AIモデルは変換時に8bit/16bitに量子化されるため、変換前のモデルと比べて精度が下がることがあります。

 

精度低下を抑えたい場合には、以下のどちらかの方法をご検討ください。

推論の処理時間は増加する方向となります。

  1. setting.conf の PARSER_OPTION(量子化モード)を、FIX16に設定する

  2. PARSER_OPTION が MIXの場合のみ、FIX8/FIX16の割合を設定することが可能です。
    変換スクリプト(onnx_conversion.sh など) に PARSER_OPTION を参照する箇所があるので、以下の5~6行目の処理を追加してください。

    if [ ${PARSER_OPTION} == "FIX8" ]; then PARSER_OPT="-c act-force-fx8,coeff-force-fx8" elif [ ${PARSER_OPTION} == "FIX16" ]; then PARSER_OPT="-c act-force-fx16,coeff-force-fx16" elif [ ${PARSER_OPTION} == "MIX" ]; then PARSER_OPT="-dra mode=2,coverage_th=0.90" fi

    coverage_th がFIX8/FIX16の割合を指定する値です。デフォルトは0.90で、0に近いほどFIX8の割合が多く、1に近いほどFIX16の割合が多くなります。
    0.90より大きい値を指定すると、精度が上がる方向となります。

 

また以下の点についてもご確認ください。

  • AIモデルに入力する画素の並び(BGR/RGB)は、モデル学習時の並びと一致しているか

  • 推論および後処理が想定した時間内に完了せずに、推論結果を正しく得られていない可能性はないか

  • PC用のソフトとカメラ用のソフトとで、精度に影響しそうな差異はないか(特に、推論の後処理)