Google ColabでKerasを使った画像分類入門(MNIST編)

2025年5月9日金曜日

Google Colab Keras TensorFlow 画像分類 機械学習

X f B! P L
アイキャッチ画像 Google ColabでKerasを使った画像分類入門(MNIST編)

はじめに:Google ColabとKerasで画像分類を始めよう

こんにちは、SHOUです!
この記事では、Google ColabとKerasを使って、初心者でも簡単にできる画像分類モデルを構築してみます。題材は定番の「MNIST(手書き数字)データセット」です。

Google Colabは、Python・機械学習・ディープラーニングの学習に最適な、無料で使えるクラウド実行環境です。 本記事では、Colab上でKerasを使って、手書き数字画像(MNIST)の分類モデルを作成・学習・評価する方法を、ステップごとに丁寧に解説します。

「AIに興味はあるけど何から始めたらいいかわからない…」という方に向けて、コード付きでやさしく解説していきます。GPUの使い方やColabの基本操作も含めて紹介するので、ぜひ気軽に取り組んでみてください。

Google Colabとは?

Google Colaboratory(通称:Google Colab)は、ブラウザ上でPythonコードを実行できる無料のクラウド型開発環境です。特に機械学習やディープラーニングの実験・学習に最適で、初心者から研究者まで幅広く利用されています。

Colabの主なメリットは以下の通りです:

  • セットアップ不要:インストール不要ですぐに始められる
  • GPUやTPUが無料で使える:高速な学習が可能
  • KerasやTensorFlowが初期から利用可能:深層学習にすぐ取り組める
  • ノートブックの共有が簡単:Googleドライブ連携で共同作業にも最適

このように、Google ColabはAI・画像認識・Python学習など、さまざまな目的で使える非常に便利なツールです。本記事ではこのColabを使って、手書き数字(MNIST)の画像分類を実際に体験してみます。

環境準備:ColabでGPUを有効化する

ディープラーニングでは膨大な行列計算が行われるため、GPU(Graphics Processing Unit)を使うことで、CPUと比べて数倍〜数十倍の速度で学習が進みます。

Google Colabでは、このGPUを無料で使うことができるため、初心者でも手軽に高速なディープラーニング環境を試せるのが大きな魅力です。

GPUを有効化する手順は以下の通りです:

  1. Google Colab を開く
  2. 上部メニューから [ランタイム][ランタイムのタイプを変更] をクリック
  3. 「ハードウェア アクセラレータ」を GPU に変更
  4. [保存] ボタンをクリックして設定を反映

これで Colab のノートブックが GPU を使用するようになり、学習スピードが大幅にアップします。特に画像認識や深層学習のように計算負荷が高い処理では、GPUの有無が大きな差となります。

なお、Colabの無料枠では時間制限があるものの、TensorFlowやKerasといった人気ライブラリを即座に使える環境が整っているため、初学者にとっては最高の実験環境です。

必要なライブラリのインポート

このチュートリアルでは、機械学習・深層学習に必須のPythonライブラリをいくつか使用します。 特に、以下の3つは画像分類タスクを行う上で欠かせない基本ライブラリです。

  • TensorFlow:Google製の機械学習フレームワーク。Kerasはこの中に統合されており、ディープラーニングの構築と学習を簡単に行えます。
  • Keras:高水準APIとして、少ないコードでニューラルネットワークを設計・訓練可能です。
  • NumPy:Pythonで数値計算を扱う標準ライブラリ。配列や行列操作に便利です。

以下のコードをColabで実行し、必要なライブラリをインポートします:

import tensorflow as tf 
from tensorflow import keras
import numpy as np
print("TensorFlowバージョン:", tf.__version__)

コードを実行して TensorFlowバージョン: が表示されれば、準備完了です。 Colab環境にはすでにインストール済みなので、特別なセットアップは不要です。

データの準備

MNISTは、0〜9の手書き数字の画像からなるデータセットで、画像分類タスクの基本中の基本です。ディープラーニングの入門やモデルの性能比較に広く使われています。このデータは、28×28ピクセルの手書き数字(0~9)の画像が含まれています。

# MNISTデータを読み込み
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() 
# データを0~1の範囲に正規化
x_train = x_train / 255.0
x_test = x_test / 255.0

モデルの作成

このモデルは、畳み込みを使わないシンプルな構造です。入力画像をFlatten層で1次元化し、Dense層で分類します。小規模なデータセットでは、このような構造でも十分な性能を出せます。

  • Flatten:28×28の画像を1次元に変換
  • Dense:全結合層(128ユニット)
  • Dropout:過学習防止
  • Dense(出力層):10クラス分類
model = keras.models.Sequential([
    keras.Input(shape=(28, 28)),
    keras.layers.Flatten(),
    keras.layers.Dense(128, activation='relu'), 
    keras.layers.Dropout(0.2), 
    keras.layers.Dense(10, activation='softmax') 
])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

学習と評価

学習(トレーニング)は訓練データを用いて行い、評価(テスト)は未知のデータに対する精度を測定します。今回は5エポックだけ実行し、Colabのスピード感を確認してみます。5エポック程度なら、GPUを使うと数分で完了します。

# モデルを学習(5エポック) 
model.fit(x_train, y_train, epochs=5) 
# テストデータで評価
test_loss, test_acc = model.evaluate(x_test, y_test)
print(f"テスト精度: {test_acc:.3f}")

結果とまとめ

私の環境では、テスト精度: 約0.98(=約98%)が出ました。シンプルなモデルでも、手書き数字はかなりの高精度で分類できることがわかります。 Google Colabは、無料&簡単に使えるので、これから機械学習を始めたい方には本当におすすめです。

このような実験を通じて、PythonとKerasでディープラーニングが実現できる感覚を掴むことが重要です。今後はCNNやデータ拡張など、発展的な内容にも取り組んでいきましょう。

次回は、自分のデータセットを使ったり、畳み込みニューラルネットワーク(CNN)に挑戦して、さらに高精度を目指してみましょう!

このブログを検索

自己紹介

はじめまして、機械学習を独学中のSHOU TAKEと申します。本ブログでは、Python・Keras・Google Colabを活用した画像分類やニューラルネットワークの実験記事を中心に発信しています。初学者の方にも分かりやすく、学んだことをそのまま実験形式でまとめるスタイルです。これまで取り組んだテーマには、学習率やOptimizerの比較、Batch Sizeの検証、事前学習の活用などがあります。ご質問やご感想は、お問い合わせフォームからお気軽にどうぞ。

お問い合わせフォーム

名前

メール *

メッセージ *

プライバシーポリシー

QooQ