”
Kerasを使用したMNIST CNNで手書き文字認識5(実機確認2)”の続き。
前回は、アプリケーションソフトを動作させて、自分で書いた手書き数字を認識させたが、1, 4, 6, 7 が誤認識してしまった。
以前の 10 個の特徴マップのCNN では、正常に認識しているので、量子化の精度、および飽和演算に問題があるのか?はたまた過学習になっているのかを検証することになった。今回は、考えられる 2 つの原因の内の量子化の精度、および飽和演算について検証を行った。
量子化の精度、および飽和演算について検証方法は、現在、
以前の 10 個の特徴マップのCNN で行っている浮動小数点数によるCNN の演算を今回の特徴マップが 3 個のCNN で行うことだ。こうすれば、量子化の精度、および飽和演算がまずいのであれば、今回の特徴マップが 3 個のCNN の浮動小数点数による演算では、正常に手書き数字が認識できるはずである。
早速、mnist_conv_soft_test.c を特徴マップの個数を指定できるように書き換えた。そして、今回の特徴マップが 3 個の浮動小数点数用の重みのヘッダファイルを用意して、mnist_conv_soft_test.elf をRun した。

最初に 1 にピンクの四角枠を合わせて 1 を認識させた。

ハードウェアのCNN の認識時間は約 1.03 ms でソフトウェアでは、10.87 ms だった。ハードウェアの方はVivado HLS 2018.2 でのレイテンシとほぼ同じだった。ハードウェアの方が約 10 倍速い。
認識は 1 のはずが、固定小数点のハードウェア、浮動小数点のソフトウェア共に 3 に間違えた。
次に、2 を認識させた。

ハードウェアでは、2 と判定され正解だったが、ソフトウェアでは、3 と判定された。
3 を認識させた。

ハードウェア、ソフトウェア双方とも 3 で正解だ。
4 を認識させた。

ハードウェアは 4 で正解だが、ソフトウェアは 3 で間違っている。ハードウェアも位置をシビアに調整する必要があった。
5 を認識させた。

ハードウェアは 5 で正解dが、ソフトウェアは 3 で間違っている。
6 を認識させた。

ハードウェア、ソフトウェア共に 8 で間違っている。
7 を認識させた。

ハードウェアでは 7 で正解だが、ソフトウェアは 3 で間違っている。ハードウェアも位置をシビアに調整する必要があった。
8 を認識させた。

8 はハードウェア、ソフトウェア共に正解だ。
9 を認識させた。

9 はハードウェア、ソフトウェア共に正解だが、人間の目で上よりの位置に四角枠を設定する必要があった。
0 を認識させた。

0 もハードウェア、ソフトウェア共に正解で問題ない。
特徴マップが 3 個の CNN の演算に浮動小数点演算を使用した結果は、1, 2, 4, 5, 6, 7 を間違えた。特徴マップが 3 個の CNN の演算に固定小数点演算を用いた結果は、1, 6 を間違えた。浮動小数点演算のほうが間違えが多いので、量子化の精度、および飽和演算が原因ではないと思う。
- 2018年07月01日 05:46 |
- PYNQ
-
| トラックバック:0
-
| コメント:0