読者です 読者をやめる 読者になる 読者になる

PythonでWatson APIのVisual Recognitionを使う

目的

 Watson API の Visual Recognition を使った画像認識がしたい!

 物体認識、顔認識、文字認識がしたい!

 できれば、Python でやりたい!

 

参考リンク

 WatsonのPython SDKを使ってAPIを叩いてみた 13連発 (絶賛途中) - Qiita

 visual-recognition - API Reference | IBM Watson Developer Cloud

 

動作環境

 Windows7

 Python 2.7.13 :: Anaconda 4.3.1 (64-bit)

 

やりかた

 1.Python で Watson API を使えるようにする

   コマンドプロンプトから以下を実行

   > pip install watson-developer-cloud

 2.Visual Recognition のサービス資格情報から api_key を参照

 3.画像認識

  1)既存の画像認識器を使う(物体の認識・顔の認識・文字の認識)

    Python で以下を実行(プログラム中の '2016-05-20' は固定値)

# -*- coding: utf-8 -*
import json
from os.path import join, dirname
from os import environ
from watson_developer_cloud import VisualRecognitionV3
visual_recognition = VisualRecognitionV3('2016-05-20', api_key='api_key')
# 物体認識
with open('画像ファイル名', 'rb') as img:
  print(json.dumps(visual_recognition.classify(images_file=img), indent=2))
# 顔認識
with open('画像ファイル名', 'rb') as img:
  print(json.dumps(visual_recognition.detect_faces(images_file=img), indent=2))
# 文字認識
with open('画像ファイル名', 'rb') as img:
  print(json.dumps(visual_recognition.recognize_text(images_file=img), indent=2))

 

  2)画像認識器を自作して使う

    Python で以下を実行(作成から、リスト、画像認識、削除まで)

# -*- coding: utf-8 -*
import json
from os.path import join, dirname
from watson_developer_cloud import VisualRecognitionV3

# VisualRecognition のサービス資格情報から api_key を参照
visual_recognition = VisualRecognitionV3('2016-05-20', api_key='api_key')

# 独自に画像分類器を作る
with open('分類1の画像zipファイル名', 'rb') as no1, open('分類2の画像zipファイル名', 'rb') as no2:
  print(json.dumps(visual_recognition.create_classifier('分類器名', no1_positive_examples=no1, negative_examples=no2), indent=2))

# 独自に作った画像分類器のリスト
print(json.dumps(visual_recognition.list_classifiers(), indent=2))

# 独自に作った画像分類器による認識
with open('画像ファイル名', 'rb') as img:
  print(json.dumps(visual_recognition.classify(images_file=img, classifier_ids=['classifier_id']), indent=2))

# 独自に作った画像分類器を削除
print(json.dumps(visual_recognition.delete_classifier(classifier_id='classifier_id'), indent=2))

 

Good Luck !!!