「画像認識」タグアーカイブ

🧠 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が正しく認識できるようになりました。
この流れを応用すれば、より複雑な画像分類(例えば「猫と犬」や「手書き文字分類」)にも発展できます。

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

前回の記事

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(2) ~実践サンプルコード編~

では、全結合層(Dense Layer)のみを使った
シンプルなニューラルネットワークで手書き数字を認識しました。

今回はその続編として、
より高い精度を実現するために

  • 🌀 CNN(畳み込みニューラルネットワーク)

  • 🌊 Dropoutによる過学習防止

  • ⚙️ 学習率調整(Learning Rate Scheduling)

を導入した「高精度モデル版」を構築します。


🧩 動作環境(同シリーズ共通)

項目バージョン・設定内容
OSWindows 11 Pro(64bit)
Python3.13.7(公式版インストーラ)
pip25.2
仮想環境venv(C:\python_env\env)
TensorFlow2.20.0
matplotlib3.10.6


🧱 ステップ①:CNNを使ったモデル構築

CNNは画像認識に特化したネットワーク構造で、
人間の「目」と同じように特徴(輪郭・形・濃淡)を自動的に抽出します。


⚙️ ステップ②:学習率を調整して最適化

Adam オプティマイザの learning_rate を指定することで、
勾配更新のスピードを細かく制御できます。


📈 ステップ③:学習を実行

学習中の精度や損失の推移がターミナルに表示されます👇



🧾 ステップ④:テストデータで評価

CNNを導入したことで、精度は 約99%前後 に向上します🚀


🧠 ステップ⑤:予測結果の可視化


📊 ステップ⑥:精度の推移をグラフ化(オプション)

このグラフで、学習が過学習に陥っていないか確認できます。

💾 手順まとめ:ファイル保存〜実行まで

① ファイルを作成

任意のテキストエディタ(例:VSCode、メモ帳、サクラエディタなど)で
以下のコードをコピーして貼り付けてください。

ファイル名は:

mnist_cnn_high_accuracy.py

② コード内容(完全版)


③ 保存場所

わかりやすくするために、
これまでと同じフォルダ内(例:C:\python_env)に保存するのがおすすめです。

C:\python_env\mnist_cnn_high_accuracy.py

④ 実行手順

1️⃣ 仮想環境を有効化(重要):


2️⃣ スクリプトを実行:

⑤ 実行結果

  • 学習が進むと各 Epoch ごとの精度が表示される

  • 終了時に

    Test accuracy: 0.9935

    のような高精度結果が出る

  • その後、

    • AIが予測した数字画像(例:「7」)

    • 学習精度グラフ(train_acc / val_acc)
      が順に表示されます


⑥ 終了後

仮想環境を終了:


🚀 結果と考察

比較項目前回(Dense)今回(CNN+Dropout)考察
モデル構造全結合層のみ畳み込み+プーリングCNNが画像の空間特徴を直接学習でき、汎化性能が向上
エポック数510学習回数は増えるが精度向上に寄与
学習時間(目安)約5秒約20秒パラメータが増えるため計算時間は増加
精度(テスト)約97.6%約99.2%CNN導入で+1〜2ポイント改善
過学習対策なしDropout(0.5)Dropoutにより汎化が改善し、過学習を抑制

CNNを導入することで、特徴抽出の自動化が進み、
より安定した高精度の画像認識が可能になりました。


💡 応用ポイント

  • 🔹 BatchNormalization を追加するとさらに安定化

  • 🔹 データ拡張(ImageDataGenerator) で汎化性能アップ

  • 🔹 モデル保存model.save("mnist_cnn_model.h5")


✅ まとめ

本記事では、

CNN(畳み込みニューラルネットワーク)+Dropout+学習率調整
を導入して、手書き数字認識AIを高精度化しました。

精度は 約99% に到達し、実用的な画像認識モデルの基礎が完成です。

🔜 次回予告

「(4) 学習済みモデルを使って自分の手書き画像を判定する」

自分で描いた数字画像を読み込んで、
AIがそれを正しく識別できるか試してみましょう🖋️

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(2) ~実践サンプルコード編~

前回の記事
🧠Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(1) ~環境構築編~

では、

「Python公式版+仮想環境を使ったTensorFlow開発環境構築」
を行い、AI開発の準備が整いました。

今回はその続編として、
実際にTensorFlowとKerasを使って手書き数字を判定するAIモデルを作る実践編 を解説します。
データの読み込みからモデルの学習・評価・予測までを、
最小限のシンプルなコードで体験してみましょう。


🧩 動作環境(前回と同じ構成)

項目バージョン・設定内容
OSWindows 11 Pro(64bit)
Python3.13.7(公式版インストーラ)
pip25.2
仮想環境venv(C:\python_env\env)
TensorFlow2.20.0
matplotlib3.10.6


🧠 ステップ①:MNISTデータセットを読み込む

TensorFlowには「手書き数字データ(MNIST)」が標準で付属しています👇


🧩 ステップ②:データの前処理


これで学習が安定し、計算精度が向上します。

🧩 ステップ③:モデル構築(Keras Sequential)


🧩 ステップ④:学習を実行


約5エポックで 98%前後の精度 が出るはずです✨

🧩 ステップ⑤:テストデータで評価


🧩 ステップ⑥:実際に予測してみる


AIが画像を認識して、数字を正しく判定してくれます👀✨

ステップ①~⑥のコードについて

各ステップは、順番に実行される処理の流れを分けて説明しているだけで、
実際のプログラムとしては 連続して動く1つのコード になります。

つまり、実際に実行する場合は次のようにすべてまとめて書いて問題ありません👇


✅ 例:mnist_sample.py として保存する内容


💾 保存と実行

  1. C:\python_env などに上記を mnist_sample.py として保存

  2. 仮想環境を有効化:


  3. 実行:

  4. 実行例

📊 補足:精度向上のヒント

  • CNN(畳み込みニューラルネットワーク) を導入する

  • Dropout で過学習を防止

  • エポック数や学習率 の調整

これらを追加すると、より実践的なモデルになります。


🚀 まとめ

本記事では、
TensorFlowとKerasを用いて「手書き数字判定AI」を実装しました。

これで、

  • データの前処理

  • モデル構築

  • 学習・評価・予測
    というAIの基本的な流れを一通り理解できたはずです。

次回

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

は、CNNを用いた高精度モデル化(第3回) に挑戦します🔥

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(1) ~環境構築編~

AIや機械学習に興味がある方にとって、「画像認識」は最初の一歩として最適なテーマです。
今回は Python + TensorFlow + Keras を使って、手書き数字を自動判定するプログラムを実際に作ってみましょう。
有名な「MNIST(エムニスト)」という手書き数字データセットを使うことで、数十行のコードで高精度な認識が可能になります。


~公式版インストールから仮想環境・動作確認まで~


💻 環境例

項目バージョン・設定内容
OSWindows 11 Pro(64bit)
Python3.13.7(公式版インストーラ)
pip25.2
仮想環境venv(C:\python_env\env)
TensorFlow2.20.0
matplotlib3.10.6

🧩 ステップ①:公式Pythonのインストール

1️⃣ Python公式サイトへアクセス

👉 https://www.python.org/downloads/windows/

2️⃣ 最新の「Windows installer (64-bit)」をダウンロード

①Downloads → Windows を選択し、「Latest Python 3 Release – Python 3.13.7」をクリック

②画面下にある「Windows installer (64-bit)」をクリックしてダウンロード

3️⃣ インストーラ起動後の設定

以下のチェックを必ず確認してください。

Add python.exe to PATH
Use admin privileges when installing py.exe
➡ 「Customize installation」を選択して進む

4️⃣ Advanced Options の設定

  • ☑ Install Python 3.13 for all users

  • ☑ Add Python to environment variables

  • ☑ Precompile standard library

  • 📁 インストール先を以下に変更:

    C:\Python313

5️⃣ 「Install」をクリックして完了!


🧩 ステップ②:インストール確認

インストール完了後、コマンドプロンプトで以下を実行👇

✅ 出力例

🧩 ステップ③:仮想環境の作成と有効化

プロジェクト専用の仮想環境を作成して、ライブラリの競合を防ぎます。


有効化:

✅ 成功すると、プロンプトの先頭に (env) が表示されます

🧩 ステップ④:TensorFlowとmatplotlibをインストール

仮想環境が有効な状態で以下を実行👇


インストール後に確認:

✅ 出力例(抜粋)


🧩 ステップ⑤:動作確認

TensorFlowが正常に動作しているか確認します。


✅ 出力例:

※ oneDNN に関する警告が表示されても正常です。
性能最適化のための通知なので無視してOKです。


🧩 ステップ⑥:仮想環境の管理コマンドまとめ

操作内容コマンド
仮想環境を終了deactivate
仮想環境を再開cd C:\python_env && env\Scripts\activate
ライブラリ一覧確認pip list
仮想環境の削除rmdir /s /q C:\python_env

✅ まとめ

この手順で構築すれば、
Windows上で安定して動作する TensorFlow + Keras + matplotlib 環境が整います。
AI学習・画像認識・データ分析など、あらゆるPython開発に対応可能です💡

💬 次回予告

次の記事

🧠 Pythonで学ぶ画像認識入門:TensorFlowとKerasで手書き数字を判定する方法(2) ~実践サンプルコード編~

では、「TensorFlowとKerasで手書き数字を判定する」実践サンプルコード

を紹介します。
実際にMNISTデータセットを使って、
AIが数字を“読む”プロセスを一緒に学んでいきましょう。