FC2カウンター FPGAの部屋 Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる4
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる4

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3”の続き。

Vitis-AI 2.5 の Custom OP Workflow のクイックスタートをやってみる3”では、7 の数字の認識だけやったので、時分で書いた手書き数字はどのくらい認識できるか?試してみたところ、8 と 9 の推論が間違っていた。

用意した手書き数字を示す。使用するのは黒地に白文字の n0.bmp 〜 n9.bmp までだ。
Custom_OP_Workflow_53_221211.png

手書き数字を KV260 の Petalinux 2022.1 の ~/tensorflow2_example/handwriting ディレクトリにアップロードした。

カスタム OP デモを実行ための環境を設定する。
cd ~/kv260_median/dpu
sudo mkdir -p /run/media/mmcblk0p1/
sudo cp dpu.xclbin /run/media/mmcblk0p1/
sudo xmutil unloadapp
sudo xmutil loadapp dpuprj
cd ~/tensorflow2_example/deployment/cpp


カスタム OP デモを実行した。
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n0.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n1.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n2.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n3.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n4.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n5.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n6.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n7.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n8.bmp
./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n9.bmp

xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n0.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n0.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:30:44.679307  1273 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n0.bmp result:
    score[0]   =  0.992188    
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0           
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0.0390625   
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n1.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n1.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:30:54.338976  1282 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n1.bmp result:
    score[0]   =  0           
    score[1]   =  0.992188    
    score[2]   =  0.0859375   
    score[3]   =  0           
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0.210938    
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n2.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n2.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:30:59.285208  1287 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n2.bmp result:
    score[0]   =  0.164062    
    score[1]   =  0           
    score[2]   =  0.210938    
    score[3]   =  0           
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0.25        
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n3.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n3.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:15.731254  1300 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n3.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0.992188    
    score[4]   =  0           
    score[5]   =  0.164062    
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n4.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n4.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:20.559351  1305 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n4.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0.0390625   
    score[3]   =  0           
    score[4]   =  0.789062    
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0.5         
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n5.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n5.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:26.883575  1310 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n5.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0.125       
    score[4]   =  0           
    score[5]   =  0.992188    
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n6.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n6.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:31.589458  1315 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n6.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0           
    score[4]   =  0.414062    
    score[5]   =  0.125       
    score[6]   =  0.585938    
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n7.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n7.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:39.147933  1324 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n7.bmp result:
    score[0]   =  0           
    score[1]   =  0.414062    
    score[2]   =  0           
    score[3]   =  0           
    score[4]   =  0.289062    
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0.625       
    score[8]   =  0           
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n8.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n8.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:31:54.020833  1337 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n8.bmp result:
    score[0]   =  0           
    score[1]   =  0           
    score[2]   =  0           
    score[3]   =  0.460938    
    score[4]   =  0.5         
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0.335938    
    score[9]   =  0           
xilinx-k26-starterkit-20221:~/tensorflow2_example/deployment/cpp$ ./tf2_custom_op_graph_runner ~/tensorflow2_example/tf2_custom_op.xmodel ~/tensorflow2_example/handwriting/n9.bmp
model_file: /home/petalinux/tensorflow2_example/tf2_custom_op.xmodel
image_path: /home/petalinux/tensorflow2_example/handwriting/n9.bmp
WARNING: Logging before InitGoogleLogging() is written to STDERR
W1211 04:32:02.205699  1342 tool_function.cpp:171] [UNILOG][WARNING] The operator named custom_layer, type: Mylayer, is not defined in XIR. XIR creates the definition of this operator automatically. You should specify the shape and the data_type of the output tensor of this operation by set_attr("shape", std::vector<int>) and set_attr("data_type", std::string)
image file /home/petalinux/tensorflow2_example/handwriting/n9.bmp result:
    score[0]   =  0           
    score[1]   =  0.210938    
    score[2]   =  0           
    score[3]   =  0.375       
    score[4]   =  0           
    score[5]   =  0           
    score[6]   =  0           
    score[7]   =  0           
    score[8]   =  0           
    score[9]   =  0           


手書き数字、8 と 9 の推論が外れている。
精度は 8 / 10 = 0.8 で 80 % の精度ということができる。
  1. 2022年12月12日 04:00 |
  2. Vitis-AI
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/5792-8aafdd09
この記事にトラックバックする(FC2ブログユーザー)