カテゴリー: プログラミング

Pythonで手書き数字のORCにトライ(その2)

前回、TesseractおよびPyTorchのニューラルネットワークで手書き数字の認識をやってみました。
今回は前回のPyTorchのニューラルネットワークに角度情報を加えて、手書き数字認識をやってみました。

 

具体的には、MNISTの28×28画像から、数字を線化処理し、8×8の2値画像に8段階の角度情報加えた8×8×8のデータで、512x1000x10の3層ニューラルネットワークを作り、自分の手書き数字をさせました。
結果、前回6~8割くらいだった正解率が9割くらいになりました。

追記:畳み込みニューラルネットワークもやってみたら更に高い正解率でした。

(ソースコードは記事の最後にあります)

(さらに…)

Pythonで手書き数字のORCにトライ

プラント屋の友人曰く、現場では計測値を手書きで記録して、後でデータ入力なんてのを日常的にやってることもままあるらしく、OCRで効率化したいそうで、(無料で)できるかどうか試してみました。

 

記事の内容を要約すると、
・Tesseractで手書き数字の認識にトライ→Bad
・ニューラルネットワークで手書き数字の認識にトライ→Bad
(環境:Windows10)

追記:畳み込みニューラルネットワークだといい感じです

 

最初、オープンソースのOCRライブラリTesseractで自分の文字を試したものの、正解率が低くく、自分の字の正解率は4、5割程度でした。

そのあと試しにPyTorchによるニューラルネットワークで、手書き数字のデータ集MNISTを使って機械学習した結果、MNISTデータ上は正解率95%以上だけども、自分の字だと79%くらいになりました。4などの特定の文字が苦手らしく、実用は難しそうでした・・・。

 

(さらに…)

OpenCVで動体検知カウンター

前回7年ぶりに再トライしているPICですが、なかなか進みません。難しい。全然したいことの情報に行き着かない。。。

って感じで案の定、頓挫中なのですが、高機能プランターを作りたいっと言った友人はビールを作りたいと言い始めました。→ブログ http://brewojisan.com/

 

その際、発酵させる過程で炭酸ガスが出るのですが、発酵状態の把握の目安として、ガス発生の推移を計測したいと言いました。

具体的には、下の動画のように、水封管がガスでコポコポする頻度を測りたいとのこと。

 

久々のOpenCVで挑戦だ!

(さらに…)

Pythonでパスツール

前回も理想のドローソフトについての記事でしたが、今だその熱を持っていて、今回はパスとかハッチングとかやってみました。

EMFやSVGなどに出力することを考えると、ライブラリが持つ機能に依存するよりは、なるだけ自前で実装したほうが良いはず。どちらのファイル形式もベジェ曲線はサポートしているので、3次ベジェ曲線によるパスのプログラミングを試みました。

 

ドローソフトと言えばこれだよね。

[ソース1](ソースは最後にあります)

制御点を無視して、直線とすることもできるようにした。

 

機能として必須なのが、パターンハッチング。
ベジェ曲線と直線の交点の計算なんてどうやるんだーっと思ったけど、情報を載せてくれる人はいるもんですなぁ。ありがたい。

斜線パターン

[ソース2]

 

5(その2):直線と曲線の交点(解の公式)
https://pgcity.jp/2010/09/05/175/

 

パターンを繰り返すハッチング

[ソース3]

これで直線ならどんな模様でもできる。いずれ楕円も加えたい。

 

虚数とか出てきてなかなか大変でしたが、出張により久々に一人の夜を過ごし、たっぷり作業できたので、なんとか形にはなりました(後々不具合が出てくるのは必至だと思いますが)。久しぶりにがっつりプログラミング、楽しい。

次にしたいと思っているのが、ブーリアン演算による差分とか合成とか。果たして僕の能力が及ぶのか。。。

(さらに…)