変換したAIモデルの精度について
質問
変換したAIモデルの精度が、変換前より低くなる。精度を上げる方法はないか。
回答
AIモデルは変換時に8bit/16bitに量子化されるため、変換前のモデルと比べて精度が下がることがあります。
精度低下を抑えたい場合には、以下のどちらかの方法をご検討ください。
推論の処理時間は増加する方向となります。
setting.conf の PARSER_OPTION(量子化モード)を、FIX16に設定する
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用のソフトとカメラ用のソフトとで、精度に影響しそうな差異はないか(特に、推論の後処理)