ラズパイで作るAI OCR手書きの文字を読む


AIプログラミング 最初の一歩

手書き文字認識のアルゴリズム

図1 ディープラーニングの学習には,誤差関数や最適化アルゴリズムが重要な役割を果たす.活性化関数や学習率の調整によって,モデルの精度が大きく変わるため,適切なパラメータの選定が重要.画像クリックで動画を見る.または記事を読む.[提供・著]井上 祐寛
詳細[VOD/KIT] ラズベリー・パイで学ぶエッジAIプログラミング入門

手書き文字認識の基本

手書き文字認識は,手書きの文字をディジタルデータとして読み取り,テキストに変換する技術です.ディープラーニングを活用することで,高精度な認識が可能になります.

手書き文字認識の基本的な流れは以下のとおりです.

  1. 画像データの取得
  2. ニューラル・ネットワークへの入力
  3. 特徴抽出と分類
  4. 推論結果の出力

今回は,ラズパイを用いてAI OCRを実装し,手書き文字の認識を試してみます.

MNISTデータ・セットを用いた学習

MNISTデータ・セットは,0~9の手書き数字が含まれる機械学習用データ・セットです.このデータ・セットを利用して,ニューラル・ネットワークを学習させます.

ニューラル・ネットワークの構造は次のようになります.

  1. 入力層:$28 \times 28 = 784$ノード
  2. 中間層:任意のノード数(ReLU関数を適用)
  3. 出力層:10ノード(各数字の確率を出力)

このネットワークを学習させることで,手書き数字の認識が可能になります.

誤差と最適化アルゴリズム

ディープラーニングでは,識別結果と正解データの誤差を減らすために最適化アルゴリズムを用います.代表的な手法は以下のとおりです.

  1. 損失関数:クロス・エントロピを使用
  2. 最適化アルゴリズム:Adamオプティマイザを適用
  3. 過学習防止:Dropoutを活用

学習が進むにつれ,ネットワークの重みやバイアスが調整され,認識精度が向上します.

キーワード

ニューラル・ネットワークの階層構造

ニューラル・ネットワークは,以下の3層で構成されます.

  1. 入力層:画像データを受け取る層
  2. 隠れ層:特徴抽出を行う層(複数の層を重ねることが可能)
  3. 出力層:分類結果を出力する層

隠れ層の数を増やすことで,より複雑な特徴を学習できるようになります.

活性化関数の種類

活性化関数は,ニューラル・ネットワークの各ノードで適用される関数です.代表的なものは以下のとおりです.

  1. ReLU関数:$f(x) = \max(0, x)$(一般的に使用される)
  2. シグモイド関数:$\sigma(x) = \frac{1}{1 + e^{-x}}$(二値分類に適用)
  3. ソフトマックス関数:$f(x)_i = \frac{e^{x_i}}{\sum_{j}e^{x_j}}$(多クラス分類に使用)

学習と最適化

ニューラル・ネットワークは,誤差を最小化するように学習されます.最適化アルゴリズムとしては,以下がよく用いられます.

  1. SGD(確率的勾配降下法)
  2. Adam(適応的モーメント推定)
  3. RMSprop(ルート平均2乗伝播)

Adamは,学習速度が速く,適応的に学習率を調整できるため,広く利用されています.〈著:ZEPマガジン〉

動画を見る,または記事を読む

著者紹介

  • 株式会社クレスコ入社後,銀行向けシステムなど数多の開発にリードエンジニアとして従事.後に自社ソリューションとなる統合認証システムの基礎を独力で開発するなど,アイデアと技術でクレスコを牽引する.技術研究所での機械学習研究を経て,人工知能を強みとする部門に異動.現在はテクニカルエバンジェリストとして企業が持つ業務課題へのAI適用に関するコンサルティング,機械学習に関する技術支援を行う一方,自ら研究テーマを持ち共同研究,実験システムの構築も担当.「SoftwareDesign」「やってみよう!機械学習」(技術評論社),「日経ソフトウェア」「AIプログラマになれる本」(日経BP)への記事寄稿,会津大学,はこだて未来大学,琉球大学,早稲田大学のほかWatson SummitやMicrosoftでの講演等,社外でも精力的に活動中.
  • 2022年9月 金沢工業大学 客員准教授に就任.詳細はこちら

著書

  1. [VOD/KIT]ラズベリー・パイで学ぶエッジAIプログラミング入門,ZEPエンジニアリング株式会社.
  2. [VOD/KIT]世界の航空機を同時追跡!Flightradar24 ラズパイ・キット,ZEPエンジニアリング株式会社.
  3. [VOD/KIT]人工知能カメラM5StickVで作って学ぶ画像解析AI開発入門,ZEPエンジニアリング株式会社.
  4. いろんなことを試して学ぶ! Pythonプログラミング,2021年,日経BP.
  5. エッジAIプログラミング M5StickV 活用編,日経ソフトウェア2020年11月号,日経BP.
  6. エッジAIプログラミング M5StickV 準備編,日経ソフトウェア2020年7月号,日経BP.
  7. Kaggleに参戦しよう(連載),日経ソフトウェア2020年1月号,日経BP.
  8. Kaggleに参戦しよう(連載),日経ソフトウェア2019年9月号,日経BP.
  9. Kaggleに参戦しよう(連載),日経ソフトウェア2019年7月号,日経BP.
  10. AIプログラマになれる本,2019年,日経BP.
  11. やってみよう! 機械学習 第2章 機械学習の始め方,2019年,技術評論社.
  12. 人工知能で画像生成 応用編,日経ソフトウェア2019年1月号,日経BP.
  13. 人工知能で画像生成 基本編,日経ソフトウェア2018年11月号,日経BP.
  14. 自分で構築するか,APIで機能を使うか 機械学習の始め方,Software Design2018年4月号,技術評論社.

参考文献

  1. [VOD/Pi3A KIT]ラズパイ・キットで学ぶLinux I/Oボードの作り方・探し方・動かし方,ZEPエンジニアリング株式会社.
  2. [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
  3. [VOD/PiZero KIT]Python×ラズパイで初めての量子コンピュータ,ZEPエンジニアリング株式会社.
  4. [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
  5. [VOD/Pi KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.