OCI AIサービス & OCI Vision とは ?
オラクル・クラウドが提供する OCI AIサービス のひとつに Vision という画像ベースのコンテンツ分析サービスがあります。開発者は、APIコールを実行して、事前学習済みのモデルをアプリケーションに簡単に統合したり、特定のユースケースに合わせてカスタム・トレーニング・モデルを作成したりすることができます。こうした画像認識技術は色々なユースケースに応用が利くことは既に皆さんご承知の通りだと思います。
Vision サービスは API はもちろんこと、ユーザー・インタフェースも提供していますので、機械学習やプログラミングに不慣れな方でも簡単にサービスを利用していただけるものになっています。
Vision サービスでは二つの機械学習モデルを利用することができます。
-
事前トレーニング済みモデル
- 「オブジェクト検出」人、車、木、犬など、画像内のオブジェクトの位置を検出します。出力には、見つかった各オブジェクトの境界ボックスの座標が含まれます。
- 「画像分類」画像内のシーンベースの特徴とオブジェクトを分類します。
-
カスタムモデル
データセットに基づいてモデルをトレーニングするようにVisionに指示することで、機器・製品の欠陥品の検出、自社商品のSKUによる分類、ロゴの不正使用など不適切なコンテンツの検出等々、シナリオに適したカスタム・モデルを作成できます。- 「カスタム・オブジェクト検出」イメージ内のオブジェクトとその場所を検出するモデルを作成します。出力には、信頼度スコアと、見つかった各オブジェクトの境界ボックスの座標が含まれます。
- 「カスタム・イメージ分類」イメージ内のシーンベースのフィーチャとオブジェクトを分類するためのモデルを作成します。出力は、各分類の信頼度スコアを返します。
OCI Vision を使ったカスタム・イメージ分類
そして、ここからが本題ですが、上記「カスタム・イメージ分類」のモデル作成を、APIベースでやってみました。
https://github.com/robotduinom/lemon_dataset で提供されているレモンの品質管理画像を使って、レモンを "good", "bad", "empty (カメラに写り込んでない)" に分類します。
今回のお題で扱った画像ファイルは 2000 枚を超えていて、ユーザー・インタフェースから全部ラベリング(分類のタグ付け)するのはちょっとしんどいので、この部分を API で実施して自動化するのと、どうせなのでデータのオブジェクト・ストレージへのアップロードから分析(モデルを使った画像分類作業)までを Jupyter Notebook ベースで作成しました。
ちなみにこのラベル付けの作業自体は、OCI Vision ではなくて、OCI Data Labeling という別のサービスとなっています。
上図のような UIでコンソールからもラベル付けの作業が行えます。今回は Jupyter Notebook から OCI SDK for Python を使って Data Labeling による画像へのラベル付け作業と、このラベル付けされたデータセットを使った Vision によるカスタムモデルの作成までの一連の処理を行っています。
最終的に Jupyter Notebook では、こんな感じでランダムに選んだ画像データを信頼度とともに分類して表示します。
トレーニング結果については、下の画像のようにコンソールから確認できますし、APIを使ってモデルの詳細情報を取得することもできます。
まとめ
ということで、OCI Vision の「事前トレーニング済みモデル 」と「カスタムモデル」を使いこなせば、かなり広範囲のユースケースに対して Time to Value なソリューションを提供できるのではないでしょうか。カスタムモデルの作成もラベル付けしたデータを渡しさえすれば、あとは OCI Vision 側でモデルの作成作業を全部やってくれるので、機械学習のハードルをぐっと低くしてくれるものだと思います。是非お試し下さい!