2016年11月20日

画像認識学習APIの使い方

このエントリーをはてなブックマークに追加
単に結果を返すだけのAPIは多くありますが、画像認識の独自モデルを作りたいと思います。
前回同様比較しようと思ったのですが、

Googleでは学習させられるプラットフォームは無いですよね?
多分、無いと思うんですが

Azure Machine Learningでは画像は認識対象は顔だけだし、画像認識学習も、顔画像しか出来ないと思います。
多分、出来ないと思うんですが


と言う訳でwatsonに絞ります。




watson1

半年ぐらい前の情報と仕様が色々変わっています
これは2016/11/19時点の仕様です。
今は、 アプリなしでサービスだけでも出来ます。
watson2

watsonのサービスからサービス資格情報を記録しておきます。

このapi keyさえあれば、学習→認識が出来ます
ユーザIDとパスワードは入れる必要がありません。






今はこの方式では実行できません。
curl -X POST -u "(username)":"(password)" -F "positive_examples=@posi.zip" -F "negative_examples=@nega.zip" -F "name=Manhole" https://gateway.watsonplatform.net/visual-recognition-beta/api/v2/classifiers?version=2015-12-02





今はこう実行します
curl -X POST -F "xxx_positive_examples=@posi.zip" -F "negative_examples=@nega.zip"
-F "name=Manhole" https://gateway.watsonplatform.net/visual-recognition-beta/api/v3/classifiers?api_key=apikey&version=2016-05-20


xxx_positive_examples の、 xxxの部分が自動的にクラス名になります。
また、negative_examplesは無くても実行できます。

{"code":400,"error":"Cannot execute learning task : need at least 2 _positive_examples fields, (or 1 _positive_examples and 1 negative_examples field) to train a classifier. null specified."}
プランの問題だったんでしょうか?
positive_examples , negative_examples の指定問題以外でも、
何か、zip化した中のファイルに問題がある場合でも、こうなると思います。




{"code":400,"error":"Cannot execute learning task : this plan instance can have only 1 custom classifier(s), and 1 already exist."}

プランの制限であるか、DELETEでもモデルが消えてないと思います。
DELETEを実行しても、モデルが消えてない事があります。


{"code":400,"error":"Cannot execute learning task : no classifier name given"}

zipで圧縮したファイルの名前がマルチバイトだったりした事が原因でした。
zipファイル名ではありません。 圧縮されたファイル名の中に、一つでも、マルチバイトファイル名があると、こうなりました。
このエラーメッセージではそんなの全然分かりませんよね?








実際にモデルを使う方はこうします。
curl -X POST -F "images_file=@image.jpg" -F "parameters=@params.json" "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key=apikey&version=2016-05-20"

この時、こういう出力になったりしたら
"custom_classes": 0,

モデルが読み込めてないというか、モデルが作られてないかもしれません。




モデルが作られたかどうかはこれでも確認できます。
curl -X GET "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classifiers/modelname?api_key=apikey&version=2016-05-20"

"explanation": "Cannot execute learning task :
Could not train classifier. Verify there are at least 10 positive training images for at least 1 class and at least 10 other unique training images.

これは学習時に出力してほしいですが、
これは学習時に明示的には出力されません
ユニークな画像が10ファイル以上必要です。

モデルが正しく作られてるなら、学習時の出力と同じ出力すると思います




モデル削除の方は、
curl -X DELETE "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classifiers/modelname?api_key=apikey&version=2016-05-20"
こうします。
削除できたなら、
{ }
とだけ、出力されます
{"code":404,"error":"Cannot delete:
削除できなかった時は、こうです。



しかしwatsonも、
これまでの様々なプラットフォーム同様、モデルの内部仕様が全然分かりません。


トラックバックURL

コメントする

名前:
URL:
  情報を記憶: 評価:  顔   星
 
 
 
adsense
Categories
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村

amazon
Profile
Archives
blogchart
QRコード
QRコード
Recent Comments