手書きで書いた文字を学習したAIが認識してくれるかどうかを試すプログラムコードです。
資料をご覧ください。 → 機械学習6
p.1 サポートベクトルマシンを用いた文字認識プログラムの実行結果です。①Runすると3つの枠が表示されますので、②左の枠内にマウスで例えば「2」を描き、下の「認識」ボタンをクリックします。③真中に手書きデータを濃淡データに換算した図が表示され、右に学習したデータを基に認識した文字を表示します。合っていたでしょうか?
p.2~4 サポートベクトルマシンを用いたプログラムコードです。19行目の「SVC」と書いてあるので、サポートベクトルマシンを用いていることがわかります。4行目で、PIL(Pillow):画像処理ライブラリーを読み込んでいます。通常、グレースケール画像では、0~255の間のデータとなります。今回は16種類の濃淡で分類するので、データを255で割って16を掛けています(104行目)。
プログラムコードは → ml0608
p.5 左側が、サポートベクトルマシンを用いて紛らわしい文字を描いた事例です。「1」と「9」の文字を描いて、いずれも「4」と認識してしまいました。 右側がニューラルネットワークを用いたプログラムで、同様の文字を手書きで描いて認識させたものです。「1」と「9」は正しく認識されましたが、「0」が「4」と認識されてしまいました。 いずれのプログラムも学習不足なのでしょう。きっと。
p.6~9 ニューラルネットワークを用いたプログラムコードです。21行目にニューラルネットワークを用いる「MLP」の分類器を使うことが書かれています。プログラムコードは → ml0609
正解率は文字の位置や大きさによって変化するようなので、位置や大きさを補正する必要があります。 ディープラーニングという深層学習をするとさらに正解率は増すそうです。文字通り深いですね。