はじめに: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を有効化する手順は以下の通りです:
- Google Colab を開く
- 上部メニューから
[ランタイム]
→[ランタイムのタイプを変更]
をクリック - 「ハードウェア アクセラレータ」を GPU に変更
- [保存] ボタンをクリックして設定を反映
これで 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)に挑戦して、さらに高精度を目指してみましょう!
0 件のコメント:
コメントを投稿