これは犬じゃありません
motionで画像取得→wordpress投稿したいが犬以外の変な写真は避けたい
犬かどうかを判別するためにIBM BluemixのVisual Recognitionを活用する。
Visual Recognitionは1日250回の画像判断まで無料でできるので250回以上水を飲まなければ大丈夫。
API登録
BlueMixにアカウント登録
BlueMixのポータルよりアカウント作成
※最初は無料だが30日経過で従量制(クレジット情報の登録必要)となる
VisualRecognitionのAPI作成
- メニュー→サービス→WATSON→WATSONサービスの作成→VisualRecognition
- サービス名は適時変更
- 接続はアンバインドのまま
- 無料プランを選択
- 作成されたサービスのサービス資格情報から「APIKEY」を取得
pythonで動かす
環境準備
sudo pip install --upgrade watson-developer-cloud
画像判断スクリプト
#coding: UTF-8
def recognition_image(argdir,argfile,argclass,argscore):
import json
import sys
from os.path import join, dirname
from watson_developer_cloud import VisualRecognitionV3
# API Key
visual_recognition = VisualRecognitionV3('2016-05-20', api_key='hogehogehogehogehoge')
input_file = '{path}/{name}'.format(path=argdir,name=argfile)
output_file = '{path}/recognition/{name}.json'.format(path=dirname(__file__),name=argfile)
# recognition
with open(input_file, 'rb') as image_file:
recognition_result = visual_recognition.classify(images_file=image_file)
# file output
with open(output_file,'w') as result_file:
json.dump(recognition_result, result_file,indent=2)
recognition_classes = recognition_result['images'][0]['classifiers'][0]['classes']
# ?
for i in range(len(recognition_classes)):
if recognition_classes[i]['class'] == argclass and recognition_classes[i]['score'] > argscore:
return 1
return 0
実行結果
別途出力させている入力ファイル.jsonの内容
[argclass:dog][argscore:0.85]で「1」が返ってくる。
※「Welsh corgi」までちゃんと判断できるのはすごい
{
"images": [
{
"image": "/var/motion/picture/20170523113338-10-14.jpg",
"classifiers": [
{
"classes": [
{
"score": 0.92,
"class": "Welsh corgi",
"type_hierarchy": "/domestic animal/dog/Welsh corgi"
},
{
"score": 0.99,
"class": "dog"
},
{
"score": 0.99,
"class": "domestic animal"
},
{
"score": 0.99,
"class": "animal"
},
{
"score": 0.835,
"class": "Pembroke Welsh corgi",
"type_hierarchy": "/domestic animal/dog/Pembroke Welsh corgi"
},
{
"score": 0.833,
"class": "beige color"
},
{
"score": 0.807,
"class": "lemon yellow color"
}
],
"classifier_id": "default",
"name": "default"
}
]
}
],
"custom_classes": 0,
"images_processed": 1
}
今後
犬かどうかの判断にだけ使っている状態。
WATSONに教育させて2匹(「もるつ」「こむぎ」)の判断までできるか?
#画像を集めて選別しないとダメだが