TensorFlowとKerasで画像認識する方法
2017.12.6
こんにちは。データサイエンスチーム tmtkです。
この記事では、ディープラーニングを使ってみる手順を紹介します。
この記事は、DataScience Advent Calendar 6日目の記事です。
この記事でやること
この記事では、次の写真に何が写っているのかディープラーニングで判定し、
ボールペン:73% 万年筆:20% マイク:2%
と出力させてみる手順を紹介します。
環境構築
まず、Ubuntu 16.04をインストールしたコンピュータを用意します。高性能のコンピュータは必要ないので、VirtualBoxなどで仮想マシンを立てるか、Amazon EC2などのクラウドサービスでt2.micro程度のものを立てれば十分です。
ターミナルを立ち上げ、環境構築を行います。
# パッケージ情報を更新 sudo apt-get update # Python3, virtualenvなどのインストール sudo apt-get -y install python3-pip python3-dev python-virtualenv ipython3 # viartualenv環境を作成 virtualenv --system-site-packages -p python3 ~/tensorflow # virtualenv環境を有効化 source ~/tensorflow/bin/activate # pipを更新 easy_install -U pip # TensorFlow, Keras, h5py, Pillowをインストール pip3 install --upgrade tensorflow keras h5py pillow
これでディープラーニングのための環境が整いました。
ディープラーニングで分類をやってみる
いよいよディープラーニングで写真に写っているものを判定します。
上のボールペンの写真を保存します。
wget https://techblog.nhn-techorus.com/wp-content/uploads/2017/11/ballpoint.jpg
IPythonを起動します。
ipython3
IPythonに以下のプログラムを入力して、ボールペンを識別させます。
# 必要なモジュールをインポート from keras.applications.resnet50 import ResNet50 from keras.preprocessing import image from keras.applications.resnet50 import preprocess_input, decode_predictions import numpy as np # ResNet50のモデルをImageNet用の重みで取得 model = ResNet50(weights='imagenet') # 画像をロード img_path = 'ballpoint.jpg' img = image.load_img(img_path, target_size=(224, 224)) # モデルに読み込める用に前処理 x = image.img_to_array(img) x = np.expand_dims(x, axis=0) x = preprocess_input(x) # 推論 preds = model.predict(x) # 結果を表示 for name, description, score in decode_predictions(preds, top=3)[0]: print(description + ": " + str(int(score * 100)) + "%")
すると出力として
ballpoint: 73% fountain_pen: 20% microphone: 2%
が得られます。73%の確率でボールペン、20%の確率で万年筆が写っていると予測されていることがわかります。
他の画像の例
他の画像でも試してみましょう。
いすの写真です。
dining_table: 41% patio: 30% folding_chair: 24%
ダイニングテーブル、中庭、折りたたみいす。微妙に外れてます。
夜の東京タワーの写真です。
drilling_platform: 35% lampshade: 8% stupa: 6%
油田海上基地。いわれてみれば見た目は近いですね。
ソファーの写真です。
patio: 11% quilt: 8% velvet: 8%
中庭、キルト、ベルベット。微妙な結果です。
マイクの写真です。
microphone: 99% thimble: 0% radio: 0%
完璧です。
観葉植物の写真です。
pot: 75% patio: 12% greenhouse: 5%
鉢、中庭、温室。だいたいあってます。
まとめ
- 学習済みのディープラーニングモデルを用いて、写真に何が写っているのかを予測してみました。
- 学習済みのモデルで推論を行うだけなら、このようにt2.micro程度のコンピュータでも十分可能です。
参考
Installing TensorFlow on Ubuntu | TensorFlow
Keras Documentation
Applications – Keras Documentation
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterデータ分析と機械学習とソフトウェア開発をしています。 アルゴリズムとデータ構造が好きです。
Recommends
こちらもおすすめ
-
畳み込みニューラルネットワークの畳み込み層の重みを可視化する方法
2018.7.10
-
可分な畳み込みカーネルと計算量の話
2018.7.18
-
うわさのMicrosoft 365 Businessをさわってみた
2017.12.20
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28
AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16