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ファイル
|
●重み係数とバイアスを生成してオーバライト
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プロジェクトにオーバライトして論理合成→プログラムします。それだけで認識のようすが違ってきます(道路標識/信号機認識だったものが「ひび割れの検出」になる)。 |
次のページへ
目次へ戻る
|