Watson Visual Recognitionのライトプランではカスタムモデルを更新できない

ほとんど出落ちというか、タイトルがこの記事で言いたいことのすべてなのですが・・・。

Watsonの画像認識サービスであるVisual Recognitionを使って、ある企業の新サービスを作れるかどうか検証するというお仕事をしています。

最初はかなり少なめの枚数を学習させてみると、認識精度は「当たるも八卦当たらぬも八卦」よりはマシというか、ちゃんと認識出来るものと、なかなか難しいものがきれいに分かれるような結果となりました。

認識精度を上げるための方法は、ドキュメントにまとまっていて、こちらのようなガイドラインがあります。例えば、1つのクラスあたり50枚以上の訓練データを準備するとか、ネガティブデータもあった方が良いとか、そういうものです。

そこで、もともと作ってあるカスタムモデルの精度を向上させるため、訓練データを増やすという方法をまず試すことにしました。

以前のVisual Recognitionは、既存のカスタムモデルに訓練データを増やすということはできず、常に常に新規のカスタムモデルを作る必要がありました。自然言語を分類するNatural Language Classifier(NLC)は、いまでもそうですね・・・。

しかし、最近のAPIリファレンスを見ると、update_classifierというAPIがあって、既存のカスタムモデルに訓練データを追加することができるようになっています。Watson SDKでもきちんと対応しています。最近の私は、CurlよりもPythonのSDKでAPIを叩くことが多いので、SDKのソースとサンプルコードだけ見て、APIリファレンスはあまり読まない・・・という感じが増えています。

で、update_classifierをやってみたところ、何回やっても、こういうレスポンスが返ってくるのです。

WatsonApiException: Error:

<center></center> 
<h1>413 Request Entity Too Large</h1>
 

<hr />

<center>nginx</center>


, Code: 413

HTMLがそのまま来るというのも凄いですが、それはさておき、Request Entity Too Largeらしい。

クラス数が多いので、試しに1つのクラスの訓練データを送ってみても、結果は同じ。だいたい、もっと大きなサイズのデータを使って、初回のcreate_classifierをやっているので、どうにも解せない。

で、あらためてAPIリファレンスを読むと、こんなことが書いてありました。

Important: You can’t update a custom classifier with an API key for a Lite plan. To update a custom classifer on a Lite plan, create another service instance on a Standard plan and re-create your custom classifier.

なるほど。ライトプランだと、そもそもupdate_classifierはできない・・・。しかも、ちゃんとImportantって言ってる。

ということで、やっぱりリファレンスはきちんと読まないといけないなと、感じた次第。

お仕事だし、ライトプランじゃなくて、標準プランに切り替えるか・・・。’

この記事を書いた人

井上 研一

株式会社VIVINKO 代表取締役/VIVINKOコンサルティング 代表
経済産業省推進資格ITコーディネータ/ITエンジニア

ITコーディネータとして、2016年からAIを業務に組み込む活動を続けている。2018年に株式会社VIVINKOを地元・北九州市で創業し、2020年に東京からUターン。生成AIを利活用するためのクラウドサービス「Gen2Go」を開発し、北九州発!新商品創出事業の認定を受ける。北九州市ロボット・DX推進センターでDXコーディネータとして中小企業支援に携わるほか、一般社団法人IT経営コンサルティング九州(ITC九州)の理事も務める。近著に「使ってわかった AWSのAI」、「ワトソンで体感する人工知能」。日本全国でセミナー・研修講師としての登壇も多数。