19-05 誤認識を減らす手順

●デコボコを「背景」として認識させる

 このPythonプログラムでは背景クラスとして"
9: bumpy"が設けられています。これがないとこのように、コンクリートのでこぼこした表面が「ひび割れ」と誤認識されてしまいます。

 一口にデコボコといっても色々な表層があり、また光の当たり具合によっても見た目が変わってきます。したがってデコボコの画像を種々多様・大量に用意してbumpyクラスに追加していきます。

●デコボコを誤認識する場合はこのルーチン

@適当に学習させてFPGAに実装し、ひび割れを認識させてみる。
A誤認識が見られる場合はそのデコボコの表面を写真に撮る。
B写真を小さく分割する(Windowsアプリを使う)。
C分割した画像を訓練用と評価用に分けて"9: bumpy"に追加し、@に戻る。


 これを繰り返し、徐々に誤認識を減らしていきます。

●ひび割れと誤認識しがちなデコボコの一例

 図19‐25はデコボコの誤認識が見られるコンクリート表面を写真に撮ったものです。これをWindowsアプリで細かく分割します。


図19
‐25 コンクリート表面は結構デコボコだらけ

●画像分割用の便利なWindowsアプリ

 分割にはPhotoScapeを使います。適当にダウンロード、インストールしましょう。
 実行すると図19‐26のようになるので「分割」をクリックします。


図19‐26 フリーの画像編集ソフトPhotoScape

●セルのサイズを適当に決めて分割

 図19‐27のように画像を追加し、列と行を適当に指定して分割します(*1)。

(*1)同図では47×46ピクセルで分割しているが、Pythonプログラム内で30×30ピクセルにリサイズされる。


図19‐27 CNNの1ブロックは30×30画素なのでこれくらいのサイズに分割

●誤認識がどんどん減っていく

 するとoutputディレクトリに分割された画像が現れます(図19‐28)。これらを訓練用と評価用に分けてフォルダに追加し、学習→FPGAに実装→評価と進めば誤認識が減っていると思います。
 それでも誤認識が見られる場合は、その表面の写真を撮り、同じことを繰り返します。


図19‐28 47x46ピクセルの画像が20x16個現れる


●自力でデータセットを強化/作成することが可能

 このようにデコボコの画像を撮って誤認識を減らしていきます。また、ひび割れの画像も自分で用意して"0: posi"クラスに追加していくとデータセットが強化されます。



●ひび割れのリアルタイム検出

 この動画ではFPGA+CMOSカメラでコンクリートのひび割れ検出をしています。ラズベリーパイなどとは違って、遅延なし・高フレームレートで検出できることが分かります。

最初のページへ

目次へ戻る