18-03 Pythonの変更点(白埋めによる正方形化など、続き)

●クラスIDとパスをCSVファイルにまとめる

 図18‐22は評価(推論)用画像のクラスIDとパス(場所)を読み込む部分、GTSRBではTest.csvだったものが
TestMovObj.csvに変わっています。

図18-22 movobj_float.pyを検索

●これがないと正解か不正解か分からない

 TestMovObj.csvには各画像のクラスIDとパスが書かれています(図18‐23)。プログラムはこのファイルを参考にして
評価用画像を見に行き、推論結果とクラスIDを比較し、正解不正解を判定します(*1)。

(*1)このCSVは評価用画像の情報のみ。評価用画像と訓練用画像の分け方はここ参照

図18-23 各画像ファイルの場所と正解値

●def shiroumeで関数定義されている

 "Shiro"で検索すると図18‐24のような「白埋め」の関数が現れます。元々長方形である画像の左右(または上下)を白色で埋めて正方形化するものです(*2)。

(*2)白埋めのプログラムはこのサイトから頂きました

図18-24 白埋めなので(255,255,255)

●ヒトやバイクが太くなるのを防止

 Pythonプログラム内で画像を
30×30画素にしますが、単なる「リサイズ」だと図18‐25のようにバイクや人物が横に引き延ばされ、認識率の悪化に繋がります。

図18-25 形が変わるのは好ましくない

●本来の形状を保ったまま学習→推論

 したがって上記関数により画像の左右を白色で埋め、正方形にしてから30×30画素にリサイズします。物体の形(縦に長い/短い)も特徴の一つとして大事なので、この方が性能が上がりそうです。

図18-26 30×30になった画像

●小数で99.9%以上ある

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

         :         :          :          :
         :         :          :          :

図18‐27 小数だとほとんど正解する

次のページへ

目次へ戻る