AIカメラ“M5StickV”で作る文字認識システム
ニューラルネットに画像データを取り込む
文字画像データセット“MNIST”でAIパフォーマンス・テスト
図1 AIカメラ“M5StickV”で作った画像認識システムを製作.撮影した手書き文字が,ニューラル・ネットワークに入力された後,どのように処理されるのか?[著・提供]井上 祐寛.画像クリックで動画を見る.または記事を読む..詳細は[VOD/KIT]人工知能カメラM5StickVで作って学ぶ画像解析AI開発入門 |
M5StickVとディープラーニングによる手書き文字認識のしくみ
M5StickVは,画像解析AIに適した小型デバイスであり,特にディープラーニングを活用した手書き文字認識において優れたパフォーマンスを発揮します.
このデバイスに組み込まれているカメラやAIチップを用いることで,リアルタイムの画像解析が可能です.ここでは,手書き文字認識(MNISTデータセット)を例に取り,画像解析AIの基本的なしくみと,その応用方法について解説します.
画像データの取り込みとニューラルネットへの接続
M5StickVのカメラを使用して画像データを取得し,それをニューラルネットワークに入力します.
具体的には,MNISTデータセットのように,手書き文字の画像を5×5ピクセルや28×28ピクセルの形式で取り込みます.このデータは,ニューラル・ネットワークの入力層に渡され,次に中間層で処理されます.各ピクセルの情報は,ノード(ニューロン)により処理され,全結合層で計算されます.
入力層では784個のノードが使用され,各ピクセルの値がそれぞれのノードに対応します.中間層では,ReLU関数やDropoutといった活性化関数を使用し,ネットワーク内の重みとバイアスが調整されながら学習が進行します.出力層では,10個のノードが数字 0 ~ 9 を表し,それぞれのノードが予測確率を示します.もっとも高い確率をもつノードが最終的な予測結果として採用されます.
学習と推定のメカニズム
M5StickVで実行されるディープラーニングは,学習フェーズと推定フェーズにわかれます.
学習フェーズでは,損失関数(例:categorical_crossentropy)と最適化アルゴリズム(例:Adam)を使って,ネットワークのパラメータ(重みとバイアス)を調整します.具体的には,教師データを使って予測結果と正解の誤差を計算し,その誤差を最小化するようにパラメータを更新していきます.このプロセスは何度も繰り返され,誤差がゼロに近づくように学習が進みます.
推定フェーズでは,学習済みのモデルに新たな手書き文字画像を入力し,その数字を予測します.例えば,“6”の画像が入力された場合,もっとも高い確率をもつノードが“6”を示し,その結果が推定として出力されます.
活性化関数とニューラルネットの学習
ニューラルネットワークの学習において,活性化関数は非常に重要な役割を果たします.活性化関数とは,各ノードに入力されたデータを次の層に送る際に,非線形性を導入するための関数です.これにより,単純な線形モデルに比べ,複雑なデータ構造を扱うことが可能になります.
ReLUとSoftmaxの役割
もっともよく使用される活性化関数の1つにReLU(Rectified Linear Unit)があります.ReLUは,入力が負の値の場合にはゼロを出力し,正の値の場合にはそのまま値を出力します.このシンプルな動作によって,計算負荷が軽減され,学習が高速化されます.しかし,入力が負の値ばかりになると,学習が進まなくなる「死んだノード」問題が生じる可能性もあります.
一方,出力層においてはSoftmax関数がよく使用されます.Softmaxは,複数のクラス(今回の例では10クラス)の予測結果を確率として表現し,その合計が1になるように正規化します.これにより,どのクラスがもっとも高い確率で予測されているかを明確に示すことができます.Softmaxの出力は,分類タスクにおいて極めて重要であり,例えば手書き文字認識のような問題では,入力された画像が“0”から“9”のどの数字に該当するかを確率で表します.
学習のための最適化アルゴリズム
ニューラルネットワークの学習では,損失関数を最小化するために最適化アルゴリズムを使用します.最適化アルゴリズムとして広く使われるのがAdamです.
Adamは,学習率の調整を自動的に行うアルゴリズムで,これにより効率的な学習が可能になります.学習率$lr$が小さいと,学習は安定しますが遅くなり,逆に大きすぎると学習が収束しなくなるため,適切なパラメータ選びが必要です.
まとめると,ニューラルネットワークの学習には,入力データを適切に処理する活性化関数と,損失関数を最小化するための最適化アルゴリズムが不可欠です.M5StickVを用いた手書き文字認識でも,これらのメカニズムが正確な予測を実現するために働いています.〈著:ZEPマガジン〉
著者紹介
- 株式会社クレスコ入社後,銀行向けシステムなど数多の開発にリード・エンジニアとして従事.後に自社ソリューションとなる統合認証システムの基礎を独力で開発するなど,アイデアと技術でクレスコを牽引する.技術研究所での機械学習研究を経て,人工知能を強みとする部門に異動.現在はテクニカルエバンジェリストとして企業が持つ業務課題へのAI適用に関するコンサルティング,機械学習に関する技術支援を行う一方,自ら研究テーマを持ち共同研究,実験システムの構築も担当.「SoftwareDesign」「やってみよう!機械学習」(技術評論社),「日経ソフトウェア」「AIプログラマになれる本」(日経BP)への記事寄稿,会津大学,はこだて未来大学,琉球大学,早稲田大学のほかWatson SummitやMicrosoftでの講演等,社外でも精力的に活動中
著書
- ラズパイ+USB SDRで作るFlightradar24 Businessアカウント・フィーダ,ZEPエンジニアリング株式会社.
- [VOD/KIT]ラズベリー・パイで学ぶエッジAIプログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]世界の航空機を同時追跡!Flightradar24 ラズパイ・キット,ZEPエンジニアリング株式会社.
- [VOD/KIT]人工知能カメラM5StickVで作って学ぶ画像解析AI開発入門,ZEPエンジニアリング株式会社.
- いろんなことを試して学ぶ! Pythonプログラミング,2021年,日経BP.
- エッジAIプログラミング M5StickV 活用編,日経ソフトウェア2020年11月号,日経BP.
- エッジAIプログラミング M5StickV 準備編,日経ソフトウェア2020年7月号,日経BP.
- Kaggleに参戦しよう(連載),日経ソフトウェア2020年1月号,日経BP.
- Kaggleに参戦しよう(連載),日経ソフトウェア2019年9月号,日経BP.
- Kaggleに参戦しよう(連載),日経ソフトウェア2019年7月号,日経BP.
- AIプログラマになれる本,2019年,日経BP.
- やってみよう! 機械学習 第2章 機械学習の始め方,2019年,技術評論社.
- 人工知能で画像生成 応用編,日経ソフトウェア2019年1月号,日経BP.
- 人工知能で画像生成 基本編,日経ソフトウェア2018年11月号,日経BP.
- 自分で構築するか,APIで機能を使うか 機械学習の始め方,Software Design2018年4月号,技術評論社.
参考文献
- [VOD/Pi3A KIT]ラズパイ・キットで学ぶLinux I/Oボードの作り方・探し方・動かし方,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/PiZero KIT]Python×ラズパイで初めての量子コンピュータ,ZEPエンジニアリング株式会社.
- [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.