「手書き数字」タグアーカイブ

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(5) ~複数の自作画像を一括で認識~

前回

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(4) ~学習済みモデルで自作画像を認識~

の記事では、学習済みモデルを使って「1枚の手書き数字画像」を判定しました。
今回はさらに発展して、フォルダ内にある複数の画像を一括で認識してみましょう。

これにより、手書きで作成した「0〜9」の数字画像をまとめてテストできるようになります。


🧩 動作環境(共通)

項目バージョン / ツール
OSWindows 11 Pro 24H2
Python3.12.6
pip24.2
エディタPowerShell / VS Code
ライブラリpandas 2.x / matplotlib 3.x / openpyxl 3.x


📁 ステップ①:フォルダ構成を準備

まず、テスト用フォルダを作成します。

各画像は 白背景 × 黒または青文字、中央寄せ、28×28ピクセル推奨です。


🧠 ステップ②:複数画像を一括認識するスクリプト

ファイル名:predict_batch.py

内容:


⚙️ ステップ③:実行方法

仮想環境を有効化して、次を実行します:


🧾 ステップ④:出力結果(例)

コンソール出力例:

グラフ表示:

  • 横一列に数字画像が並び、各画像の下にAIの判定結果が表示されます

  • 一目でどの画像をどの数字と認識したか分かります


📊 ステップ⑤:結果と考察

項目内容
処理対象フォルダ内の全画像(png/jpg)を自動スキャン
推論処理load_modelでCNNモデルを再利用し、一括predictを実施
表示形式コンソール出力+matplotlibで可視化
精度1枚ずつ推論と同等(約99%)を維持
応用例書類や帳票の一括認識、データセットの一括評価など
考察単一推論を拡張してバッチ処理化。フォルダ単位で実行できるため自動化が容易


💡 発展ポイント

テーマ内容
結果をCSV出力pandas.DataFrame(results).to_csv('result.csv', index=False)
サブフォルダ対応os.walk() を使えば階層フォルダも処理可能
推論速度UPGPU環境なら処理時間が大幅短縮
異常画像の検出サイズやフォーマットが不正な画像をスキップ処理可能

✅ まとめ

本記事では、学習済みモデルを使って複数の手書き数字画像をまとめて判定しました。
フォルダ単位で一括処理できるため、データテストやAIモデルの精度検証にも最適です。

次回は、

🧠 (6) 判定結果をCSV出力し、正解データと比較して精度を分析
として、「自作データセットの評価編」に進みます。

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(4) ~学習済みモデルで自作画像を認識~

前回の

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(3) ~CNNによる高精度モデル編~

までで、MNISTデータセットを使い高精度なCNNモデルを作成しました。
今回はその学習済みモデルを再利用し、自分で描いた手書き数字画像を実際に判定してみましょう。


ステップ①:学習済みモデルの保存

前回での学習コードに以下を追加して、モデルを保存しておきます。


これで C:\python_env\mnist_cnn_model.h5 が生成されます。


ステップ②:自作画像を準備する

1️⃣ 白背景に黒文字で「0〜9」の数字を描いた画像を用意
2️⃣ 画像サイズを 28×28ピクセル にリサイズ
3️⃣ ファイル形式は .png または .jpg でOK

(例)

C:\python_env\my_digit.png

※手書きペイントツールで描いてもOK。
できるだけ文字を中央に配置し、背景は白が理想です。


ステップ③:推論スクリプトを作成

ファイル名:

predict_my_digit.py

内容:


ステップ④:実行

仮想環境を有効化して、次のコマンドを実行:


ステップ⑤:結果と考察

項目内容
予測結果AIが自作の手書き数字を正しく認識し、予測結果が画面に表示される
処理時間数百ミリ秒程度で即時に判定が完了
注意点白背景×黒文字の前提で学習しているため、背景と文字が逆の場合は反転処理を削除
応用例手書き書類の数字抽出、郵便番号や伝票番号の自動読み取りなどに応用可能
考察CNNモデルにより自作データでも高い精度を維持。前処理(反転・正規化)が認識精度に大きく影響

💡 ワンポイント

もし背景が黒で文字が白の場合は、
次の行を削除してください:


✅ まとめ

これで「自分の描いた手書き数字」をAIが正しく認識できるようになりました。
この流れを応用すれば、より複雑な画像分類(例えば「猫と犬」や「手書き文字分類」)にも発展できます。