モデルの精度をボード上でテストするには、次の要因を考慮する必要があります。
- 画像データセット
- モデル
- 精度テスト プログラム
- 画像データセットのグランド トゥルース
- 精度の抽出比較スクリプト
ResNet50 の例
ここでは、resnet50 の例を示します。
- 画像データセットと、データセットのグランド トゥルースを入手します。
画像データセットの情報は、https://github.com/Xilinx/Vitis-AI/tree/master/model_zoo から入手できます。resnet50 は ImageNet データセットを使用します。
- モデルを入手します。
wget https://www.xilinx.com/bin/public/openDownload?filename=resnet50-zcu102_zcu104_kv260-r2.5.0.tar.gz -O resnet50-zcu102_zcu104_kv260-r2.5.0.tar.gz
- モデルをボードにコピーします。
scp resnet50-zcu102_zcu104_kv260-r2.5.0.tar.gz root@IP_OF_BOARD:~/
これには、resnet50 および resnet50_acc モデルが含まれます。
- ボード上で解凍します。
tar -xzvf resnet50-zcu102_zcu104_kv260-r2.5.0.tar.gz -C /usr/share/vitis-ai-library/models
- 画像データセットのパスと画像名を image.list.txt などのファイルで設定します。
- ボード上で精度テスト プログラムを実行します。
cd ~/Vitis-AI/examples/Vitis-AI-Library/samples/classification/ ./test_accuracy_classification_mt resnet50 image.list.txt resnet50.image.list.result
注記: 精度テストは resnet50 モデル以外に resnet50_acc モデルもロードします。これら 2 つのモデルの違いは、モデルの prototxt ファイルの違いのみです。精度テスト プログラムの実行が完了すると、結果ファイル resnet50.image.list.result が生成されます。
- resnet50.image.list.result をホストにコピーします。
- 対応する精度抽出比較スクリプトを実行し、最終的な精度を得ます。
python evaluation.py image.list.gt resnet50.image.list.result
次に、evaluation.py のコードを示します。
#!/usr/bin/env python import sys # argv[1] must groundtruth readfile=open(sys.argv[1], 'r') readfile1=open(sys.argv[2], 'r') dic_val={} m = 0 for line in readfile: temp = line.strip('/').split() key = temp[0] value = int(temp[1]) dic_val[key] = value m = m + 1 n = 0 for line1 in readfile1: temp = line1.strip('/').split() if temp[0] in dic_val and int(temp[1]) == dic_val[temp[0]]: # print int(temp[1]), dic_val[temp[0]] n = n + 1 #print m #print n readfile1.close() readfile2=open(sys.argv[2], 'r') rate = float(n)/float(m) print("accuracy of top-5: ", rate) l = 0 a = 0 for line2 in readfile2: a = a + 1 if (a%5 != 1) : continue temp = line2.strip('/').split() if temp[0] in dic_val and int(temp[1]) == dic_val[temp[0]]: l = l + 1 rate1 = float(l)/float(m)
注記: 精度抽出比較スクリプトは、https://github.com/Xilinx/Vitis-AI/tree/master/model_zoo を参照してください。