19-03 ひび割れ検出のPython/EXCEL

●小数で98%以上ある

 Pythonプログラム(crack_float.py)をJupyter Labで走らせると図19-14のように
98.47%になりました(走らせるたびに微妙に変わる)。この後「整数化」や「ビット削減・リミッタ追加」と進みます。

図19-14 Pythonを小数のまま走らせた結果

●FPGA実装のために整数化

 次にPythonを整数化します(crack_int.py)。整数化の手法はGTSRBやlisa-croppedと同じになります。実行すると正解率は
97.97%になりました(図19-15)。なお、整数化前の重み係数とバイアスはこれを使っています。


図19-15 Pythonを整数化した結果


●FPGAに入りきるようにビット数削減

 最後にビット数削減、リミッタ追加したPython(crack_pred.py)を実行します。正解率は図19-16のように
96.86%になりました。


図19-16
 Pythonの段階でビット数を削減/リミッタ追加する


●認識結果の例を30枚

 プログラムの最後に評価画像例とその判定結果が表示されます(図19-17)。10クラスそれぞれ3枚づつ、合計30枚ですが不正解も散見されます(*1)。

(*1)96%のわりに不正解が多いのは、背景クラス(white, blackなど)は訓練/評価画像の数が少ないため。画像の数が少ないクラスは不正解が多めになる

図19-17 AccuracyとPredが一致したら緑色、一致しなければ赤色で書かれる

●PythonをEXCEL化する

 表19‐01は上記crack_pred.pyを
EXCEL化したものです。その手法はGTSRBやlisa-croppedを参考にしてください。


 表19-01 各層のEXCELファイル
1層目 crack_layer1.xlsm
2層目 crack_layer2.xlsm
3層目 crack_layer3.xlsm
4層目 crack_layer4.xlsm
5, 6層目 crack_dense56.xlsm

●重み係数とバイアスを生成してオーバライト

 VBAで
重み係数バイアスのHDLを生成します。重み係数のHDLは各フォルダ(w1rom, w2rom,... w6rom)のファイルと置き換え、バイアスのHDLはconv_layer1〜6.vhd内のBIAS_XXと置き換えます。これらもGTSRBやlisa-croppedと同じように進めます。

●カメラエミュレータROM、推論ラベルパターンROMも置き換え

 
カメラエミュレータのHDLはcamromフォルダのファイルと置き換え、推論パターンのHDLはROM_PAT.vhdの中身と置き換えます。それらHDLの生成にはcrack_misc_gen.xlsmを使用します。このEXCELの作成法・使用法もGTSRBやlisa-croppedを参考にしましょう。


●FPGA実装へと進む

 生成されたHDLをQuartusプロジェクトにオーバライトして論理合成→プログラムします。それだけで認識のようすが違ってきます(道路標識/信号機認識だったものが「
ひび割れの検出」になる)。

次のページへ

目次へ戻る