AIで手書き数字を判定する

こんにちは。
セカンドセレクションの野崎です。
今回は、AIを使って手書き数字の判定を行っていきます。

■データの準備

まずは学習させるデータの準備です。
今回は、sckit-learnに標準で付属している「Optical Recognition of Handwritten Digits Data Set(手書き数字の光学認識データセット」を使用していきます。
https://archive.ics.uci.edu/ml/datasets/optical+recognition+of+handwritten+digits

このデータセットには8×8ピクセルの手書き数字データが5620個ほど用意されています。
多くのデータを自分で集めることなく、学習用のデータが手に入るのですごく便利です!

■手書き数字の判定

では実際、画像を学習させて自分で書いた手書き数字を判定させてみましょう!
今回は、SVM(サポートベクトルマシン)と言われる機械学習モデルの手法で行います。SVMは、パターン識別用の教師あり機械学習方法の1つです。

判別する画像は実際に自分でペイントを使って書いてみました。
まずは下の3つのデータを読み込ませてみます。

プログラムを動かした判定結果は。。。

2の手書き数字は = "2"と判別されました
3の手書き数字は = "3"と判別されました
4の手書き数字は = "4"と判別されました

文字が判定されていることを確認出来ました!
一方で、課題があることも発見しました。

■文字判定の精度の課題

多くの手書き文字を実際判定しているうちに、1つの課題に気が付きました。
それは、モデル構築時のテストデータでの精度は97%程度と悪くはないものの、実際の判定の精度が思ったよりも良くないということです

例として、次の手書きデータでもう一度判別してみます。

プログラムを動かした判定結果は。。。

5の手書き数字は = "1"と判別されました
7の手書き数字は = "9"と判別されました
9の手書き数字は = "1"と判別されました

上手く判別出来ていないことが確認出来ます。
色々な画像で試してみましたが、文字が左右に寄っていたり、ペンが細すぎたりしても正しく認識出来ていないことがあります。

改良の方法としては、より良質なデータを多くして、高い精度を出すということが挙げられます。
今回はUCIの5620個ほどのデータでしたが、よりデータ数を多くすると精度が上がるということになります。
手書き数字のデータセットとしては、MNISTという役約7万点ほどあるデータセットが有名です。次回機会があれば、活用していきたいと考えています。

今回は、AIでの手書き数字の判定でした。
次回もAIについて紹介していく予定なので、是非お楽しみに!
応援コメント等も是非よろしくお願いします!

【お問い合わせ先】
ss-iot@secondselection.com

 

コメント

タイトルとURLをコピーしました