0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google Colaboratory + Keras でとにかくシンプルな画像識別 (Image Classification) の試し方

Last updated at Posted at 2023-08-22

背景

生成 AI 真っ盛りな昨今(2023/8)ですが、あえてオーソドックスな画像識別の話です。
もちろん探せば色々と出てくるのですが、

  • 最初から独自の識別モデルを作る少し長め & 難しめのものだったり:scream:
  • 記述が古くて今の Google Colaboratory の環境だとエラーが出たり:persevere:

と言うことだったので、まずは

  • ImageNet の 1000 クラスで良いから学習済みのモデルを使って、画像識別をとにかくシンプルに試せるようにする:bicyclist:

としてまとめたものです。

環境

  • Google Colaboratory
    • 無償版で OK です
    • ランタイムのハードウェアアクセラレータも CPU でも良いです

また、今回は Keras とその学習済みモデルである Xception を使ったものにしました。(ResNet50 はサンプルがあるので)

手順

  1. Google Colaboratory で新規ノートブックを作成します。
  2. 画像を作業ディレクトリにアップロードします。
    例えばこちら(Stable Diffusion に作ってもらいました:v:)
    penguin.png
  3. 次のソースコードを「コード」セクションに貼り付けて実行します。

"識別する画像の読み込み"箇所の引数(ソースコード上は penguin.png となっているところ)をアップロードした画像ファイル名に変えてください

from keras.applications.xception import Xception, preprocess_input, decode_predictions
from keras.utils import load_img, img_to_array
import numpy as np

# モデルの読み込み
model = Xception(weights='imagenet')

# 識別する画像の読み込み
img_path = 'penguin.png'
img = load_img(img_path, target_size=(299, 299))

# 画像データを予測で使えるように処理
x = img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)

# 予測実行
preds = model.predict(x)

# 結果のラベル(クラス)と確率を表示
print('Predicted:', decode_predictions(preds, top=3)[0])
  • Xception のモデルは画像の入力サイズが299 x 299だそうなのでtarget_sizeも合わせています。他のモデルを使う場合は、それぞれの規定に合わせて変える必要があるようです(ResNet50 であれば 224 x 224とか)
  • Keras のページの ResNet50 のサンプルコードをほぼそのまま流用していますが、import の記載とその関数の使うところを、今の Google Colaboratory でワーニングが出ないよう修正しました

実行結果例

GoogleColaboratory.png
きちんとking_penguinの確率が一番高く出てますね。(マイク成分は影響出なかった模様:sweat:) モデルやクラスの一覧のダウンロードは最初だけで、2回目以降の実行では行われません。

これに加えて、例えば Flask で簡易的な Web UI を作ることで、

  • スマホでそのページを表示
  • カメラで写真撮ってモデルで識別

なんてことも実現できますね。

以上、とにかく・シンプル・ひとまずの画像識別の試し方、でした。

あとがき

もとはと言うと、今私が所属している企業も画像識別エンジンの API サービスを提供していて、それを使った小中学生でも楽しめるようなワークショップを開発して Web アプリも作ったのですが、残念ながら API サービスが終了となり。:cry:

開発したワークショップも Web アプリもお蔵入りになっていたのですが、生成 AI 絡みで Google Colaboratory であれこれ試し始めたところで「ん?そういえば GPU も使えるなら、独自のモデルを作る画像識別エンジンもサクッとできるんじゃ?」と。一通り動くものはできたので、復活にも目処がついたところです。(なので、この記事はそこからの選抜)

ちなみに学習用の画像データが 3 クラスで 100枚くらいの転移学習だったら、MacBook Pro Intel 版のローカルでやってもそんなに時間はかからなかったのは少し驚きました。:smile:

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?