16-01 GTSRB クラス削減版 Pythonで実行

●道路標識が43種類・・・ちょっと多すぎないか

 
GTSRB(ドイツ版道路標識の認識)は43クラスあり、認識率は小数で98%台、整数化して97%台、ビット数削減・リミッタ追加で95%台となりました。

 本企画ではニューラルネットワークの形状を「共通化」して複数の認識対象に対応しています。すなわち重み係数の数などの「情報量」は一定であるので、もしクラスの数(標識の種類)を減らせば、一クラス当たりの情報量が増えて性能が良くなりそうです。


●道路標識の種類を
10に絞る

 本章ではGTSRBのクラスを43→10と減らして認識率の変化を見てみます。図16‐01にある10種の標識に絞って画像認識を行うよう、まずはPythonプログラムを変更します。

図16‐01 43クラスのうち最初の10クラスに絞って認識(速度制限の標識が中心)

●クラス数を10に減らしたPythonプログラム

 まずは
小数で認識するプログラムを変更します(smallgts_float.py)。基本的にはlisa-croppedで行った変更と同じで、"classes"を43→10種類とし、CNNモデルの最終層の出力を43→10とします。

 さらにテスト画像のクラスID・パスをまとめたCSVファイルをTest.csv→Test0to9.csvとします。元々クラスIDが0〜42まであったものから、10クラス(0〜9)だけをピックアップしたものです(*1)。

(*1)Linuxならgrepコマンド、Windowsならfindstrコマンドなどでピックアップする。

●小数で計算するPythonを走らせる

 smallgts_float.pyをJupyter Labで走らせると図16‐02のように認識率は
99%台になりました。43クラスだった際(98%台)よりも改善しています。

図16‐02 認識率99%台(小数で計算)

●テスト画像も10種類(25枚表示)

 プログラムの最後にテスト画像のサンプルが25枚表示されます(図16‐03)。この時点(小数で計算)ではすべて正解しています。

図16‐03 数字の認識に近い(速度制限の標識が多い)

次のページへ

目次へ戻る