ENGINEER BLOG

ENGINEER BLOG

Watson Visual Recognitionをつかってみる

はじめまして。
アプリケーションサービス本部の苫谷(とまや)です。

普段、仕事では基幹システムの保守開発を担当しています。
なかなか新しい技術に触れる機会が少ないのですが、
今日は簡単に画像識別AIを利用できるWatson Visual RecognitionでAIを育てたお話をします。
昨年、社外研究会に参加しそちらで研究した内容の一部のご紹介となります。

Watson Visual Recognitionについて

ディープラーニング・機械学習を使用して画像の物体を認識・分析するIBMのWatson APIサービスです。
(https://www.ibm.com/watson/jp-ja/developercloud/visual-recognition.html)

Visual Recognitionでできることとしては、

  1. 既存モデルで画像にうつったものの分析・認識
    • すでに学習済のWatson(AI)ですぐに画像識別や物体の検出ができる
  2. カスタムモデルを作成し画像識別
    • 自分で集めた画像を学習させ、オリジナルの画像識別モデルを作成できる

があり、今回は2.カスタムモデルを作成し画像識別を行ってみたいと思います。

モデルを作成・学習させてみる

IBM Cloudの登録を行い、Watson StudioというAI開発用の統合環境を用いてモデル作成します。

データやプロジェクトを一元管理し、ブラウザ操作でVisual Recognitionのモデル作成ができるツールが提供されています。
詳しくは、IBMのWatson Studioに関する記事をご確認ください。
(https://www.ibm.com/blogs/solutions/jp-ja/watson-studio/)

では、Watson Studioを起動し、Visual Recognitionのトレーニングツールサービスを開始します。

画像1

「Classify Images」のCreate Modelを選択します。

画像2

今回は人の目でも見分けるのが難しい、「みかん」と「きんかん」を識別してくれるモデルを作成したいと思います。
画像のように「みかん」と「きんかん」のクラスを作成します。

画像3

学習データとして「みかん」の画像を30枚、「きんかん」の画像を30枚取り込みます。
(1クラス最小10枚、推奨50枚以上らしいのですが、「みかん」と「きんかん」の画像を集めるのはなかなか大変なので今回はこれで…)

学習データとは別の画像で、テストデータも「みかん」20枚・「きんかん」20枚の計40枚も用意しておきます。

ローカルから学習データの画像をアップロードする操作はドラック&ドロップでOKです。
各クラスへの取り込みも選択してポチポチすることで簡単にできます。

右上「Train Model」をポチっとすると、学習を開始します。
とってもかんたん。

画像4

画像5

待つこと数分。
学習が完了したようです。

画像6

画像7

モデルのテストをしてみる

学習が完了したモデルをテストします。

まず、「みかん」のテストデータを投入します。
「みかん」のスコアが0.79、「きんかん」のスコアが0.49となり、モデルは「みかん」と判断していることがわかります。

画像8

続いて、「きんかん」のテストデータを投入してみると
「きんかん」0.92、「みかん」0.02となり、モデルは圧倒的に「きんかん」と判断しています。

画像9

「みかん」20枚、「きんかん」20枚でテストし、計40枚中何枚正しく判断しているかの正解率を出すと、83%となりました。

モデルの精度をよりあげる

「みかん」と「きんかん」、画像だけでは人間が見分けるのもなかなか大変なことを考えると、83%でも十分高い正解率かもしれません。
ただし、推奨枚数は50枚以上、それを超えればより精度も上がるのでは?という気持ちもあります。

学習データは集めるのが大変なものはとても大変です。
学習データ以外にテストデータも用意しなければなりませんし、
業務で使用されるデータなどはより一層収集が大変なこともありますよね。

もう少し精度をあげたいなぁ…でもデータがない、集めるの大変。というときに学習データの加工による水増しが手段としてとられることがあるとのことで、こちらも実施してみたいと思います。

学習データの加工・水増し

「みかん」・「きんかん」の学習データを、トリミング、ぼかし加工、ネガポジ反転、グレー加工で加工してみました。
画像加工ソフトを利用すると容易に一括処理でき便利です!

画像10

オリジナルデータにそれぞれの加工データを加え、
トリミング、ぼかし加工、ネガポジ反転、グレー加工のモデルを作成しました。
各クラスの学習画像数は60枚となります。(オリジナル30枚+加工画像30枚)

これらのモデルに対して先程と同様のテストデータ40枚を用いてテストをしてみます。

オリジナルのみ トリミング ぼかし ネガポジ グレー
83% 90% 80% 83% 88%

というような結果になりました。
トリミング加工の水増しで、正解率が向上したことがわかります。
特徴をよりとらえてくれる加工が学習データとしてよい結果につながったようです。

ちなみに他の画像でも結果を確認し、外車と国産車の画像識別モデルを同じ枚数で作成してみました。

オリジナルのみ トリミング ぼかし ネガポジ グレー
80% 85% 85% 93% 83%

ネガポジ反転がよい結果となりました。
車は色の種類が様々で、
ネガポジ反転は色の反転をする加工なので色の幅をカバーしてくれるようなモデルとなったのでしょうか。

識別する画像の特徴により加工手段を選び学習データを準備することで、
より効率的にモデルの精度をあげることができそうです。

おわりに

今回、Visual Recognitionを使用して簡単にモデルを作成、育成することができましたが、
ゆくゆくは一からコーディングして自分のモデル作成をしてみたいなと思っています!
勉強しなければですね。

さいごまでお付き合いいただき、ありがとうございました。