【Watson/python】IBM Watson Visual Recognitionを使って、pythonスクリプト上で画像分類を行う
IBM Watson Visual Recognition
IBM Watson Visual Recognitionは、IBMが提供するDeep Learningを利用した画像認識サービスです。
IBM Cloud上で利用することができ、APIやSDK経由で画像データの分類を行うことができます。
今回はpython用Watson Visual Recognitionモジュールを用いて画像分類をやってみます。
Usage
IBM Cloudアカウントの取得
まずはIBM Cloudのアカウントを取得しましょう。
下記記事に取得方法を記載してあります。
Visual Recognition サービスを作成する
次にIBM Cloud上でVisual Recognitionのサービスを作成します。
IBM Cloudダッシュボード画面にて、画面右上の「リソースの作成」ボタンを押します。
すると利用できるリソース一覧が表示されるので、一番下の「Watson」の項目一覧にある「Visual Recognition」をクリック。
遷移先画面の右下にある「作成」ボタンをクリック。
するとVisual Recognitionサービス詳細画面に移動します。
ここで表示されるAPIキーは後ほどpythonスクリプト上で利用します。
Watson Visual Recognitinoモジュールをインストール
pip
を使い、python用Visual Recognitionモジュールをインストールします。
$ pip install --upgrade "watson-developer-cloud>=1.4.0"
これで準備完了です。
Source
以下にVisual Recognitionを利用した画像分類のスクリプト例を示します。
このスクリプトは、一枚の画像をVisual Recognitionに送信し、
その分類結果をJSON形式で標準出力する簡単なものです。
{API_KEY}
にはVisual Recognition サービス作成時に取得したAPIキーを入力してください。
from watson_developer_cloud import VisualRecognitionV3, WatsonApiException def recognize(): WVR_VERSION = '2016-05-20' WVR_API_KEY = '{API_KEY}' FILE_PATH = 'cat.jpg' # 分類対象画像ファイル try: visual_recognition = VisualRecognitionV3(WVR_VERSION, iam_api_key=WVR_API_KEY) with open( FILE_PATH , 'rb') as image: # クラス分類:今回はすでに用意された分類器を使用 results = visual_recognition.classify(images_file=image, classifier_ids=['default']) print(results) except WatsonApiException as ex: print(ex.message) if __name__ == '__main__': recognize()
Demo
試しに、以下の画像を分類してみます。
すると、以下ようなJSON形式で結果が返されます。
今回は猫の画像を上げたので、「猫」クラスのスコアや「動物」クラスのスコアが高いのがわかります。
{'images': [{'classifiers': [{'classifier_id': 'default', 'name': 'default', 'classes': [{'class': 'cat', 'score': 0.893, 'type_hierarchy': '/animal/mammal/carnivore/feline/cat'}, {'class': 'feline', 'score': 0.905}, {'class': 'carnivore', 'score': 0.905}, {'class': 'mammal', 'score': 0.906}, {'class': 'animal', 'score': 0.953}, {'class': 'tabby cat', 'score': 0.548, 'type_hierarchy': '/animal/mammal/carnivore/feline/cat/domestic cat/tabby cat'}, {'class': 'domestic cat', 'score': 0.713}, {'class': 'kitten', 'score': 0.5, 'type_hierarchy': '/animal/young/kitten'}, {'class': 'young', 'score': 0.508}, {'class': 'ash grey color', 'score': 0.849}, {'class': 'gray color', 'score': 0.571}]}], 'image': '../res/cat.jpg'}], 'images_processed': 1, 'custom_classes': 0}