LoginSignup
0
0

More than 1 year has passed since last update.

卒業制作にてAIによる手書きひらがな文字認識ソフトを作った結果、、、(随時書き足し)

Posted at

経緯と状況

初めまして。この5月にアメリカの4年制大学をComputer Science専攻で卒業した者です。
最後の春学期に卒業制作として何か作れと言われ、その直前の冬休みに独学で学んだDeep Learningに関連したものを作ろうとこのプロジェクトに挑みました。
学校の大きさはD2なのでそこまで大きくはないですが、その分クラスの規模が小さく、教授との距離がとても近く親身になってくれる学びやすい環境でした。が、全くもってAIについての知識はなく、勿論さらに細分化されたDeep Learningなんていうものは全く理解していませんでした。
そんなこんなで始めたこのプロジェクトですが、先駆者様達の残してくれた研究結果やブログ、コード等のおかげでなんとか形にすることができました。
この記事は、レゴブロックを組み合わせて一つのものを作るように、様々な記事を読みその情報を無理くり組み合わせて完成したものとその経緯をこの後に続く方々の役に立てばと思い、参考にさせていただいた記事のリンク先も併せて綴りたいと思います。

※おそらく長くなるため、毎日少しずつ書いていきます。(毎日書くとは言ってない)
※このような記事を書くのは初めてなので至らない点が多いかと思いますが、よければ温かくご指摘いただければと思います。
※自分のコードは効率が悪いことが多々あります。でも今動けばOKの精神で生きています(おい)

独学に使用した本

https://www.oreilly.co.jp/books/9784873117584/
こちらで基礎を軽くですが学びました。
冬休み期間中に1周し、春学期が始まりプロジェクトを始める前にもう一周しました。
なぜかというと全て忘れてしまったからです。

使用させていただいたデータセット

http://etlcdb.db.aist.go.jp/?lang=ja
こちらのサイトにてメールアドレス、氏名、学校名、目的等を入力し登録後、データセットをダウンロードするためのパスワードがもらえます。私はETL8Gをお借りし、平仮名だけを抽出したのちに後でもすぐに使えるようにnpzファイルにて保存しました。コードは
https://qiita.com/yukoba/items/7a687e44395783eb32b1
に掲載されているソースコード内の、read_hiragana_file.pyを参考にさせて頂きました。しかし、こちらにあるコードのままでは"平"、"開"の文字も抽出されてしまい、”を”と”っ”が抜けてしまっています。その理由は27行目のif b'.HIRA' in r[2]:のコードでは訓読みが”ひら”の漢字が抽出されてしまっているためです。本来ならばb'A.HIRA '(あ)やb'KA.HIRA '(か)などの平仮名としての文字コード"HIRA"として抽出しているはずなのに、訓読みとしての”HIRA"、つまりb'HEI.HIRA'(平)とb'KAI.HIRA'(開く)が混ざってしまっているのです。
正しく抽出するために、以下の簡単なコードを代わりに置きました。

read_hiragana_file.py
#27行目から29行目までを置き換え
if b'.HIRA' in r[2] or b'O.WO.HIR' in r[2]:
  if not b'KAI.HIRA' in r[2]:
    if not b'HEI.HIRA' in r[2]:
      ary[moji, (j - 1) * 5 + id_dataset] = np.array(r[-1])
      moji += 1
      print(r[2])#確認用
      print('added')#確認用

まず、”を”の取り方がわからなかったためその文字コード(?)を指定しました。そののちに、”平”と”開”はいらんぞというコードをifの継ぎ足しで書いています。自分のコードでは18行目のコードの第一引数を

read_hiragana_file.py
ary = np.zeros([71, 161, 127, 128], dtype=np.uint8)

のように71にしていますが、別に71未満でなければ平仮名以外を取らないことを確認しました。ETL8Gには小文字もあったので”っ”や”ゃ”などが次点で抽出されると思っていましたが大丈夫そうです。

該当箇所以外のコードは全く一緒です。
上記の記事には(勝手に)大変お世話になり、上記のDeep Learningの本を終了した方にオヌヌメです。上記の記事が書かれたのが2016年、記事を書かれた方が参考にしているものも少し古いため、今はもっと画期的なものがあるようです。しかし、この記事が自分にとって一番分かりやすく、なによりソースコードを載せて頂いていたため、”とりあえず動く”、”改善すべき点や道しるべがある”点からベースとして参考にさせて頂きました。

※ETLデータセットは非商業目的のみ無償で使用することが許可されているようです。

需要がないのは承知なので気が向いたらまた書き足します。目標は年内までに終わらせるです。
稚拙でしたがここまでお読みいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0