使うのは無料枠のみ
お金かかってもいいけど役に立つかを検証したい
VisualRecognitionってなに?
画像認識を行うみたい。とりあえず画像を読み込ませて設定したらできるらしい
今回は画像を読み込ませてjavaで実行するみたいなやつ
事前準備
eclipseでmavenでプロジェクトを作成してpom.xmlに以下を追加
pom.xml
<dependency> <groupId>com.ibm.watson.developer_cloud</groupId> <artifactId>java-sdk</artifactId> <version>3.4.0</version> </dependency>
※dependenciesの中に追加する
分類キー登録
Java
package com.sample2; import java.io.File; import com.ibm.watson.developer_cloud.visual_recognition.v3.*; import com.ibm.watson.developer_cloud.visual_recognition.v3.model.ClassifierOptions; import com.ibm.watson.developer_cloud.visual_recognition.v3.model.VisualClassifier; /** * Hello world! * */ public class App { // API_KEY final private static String API_KEY = "取得するキーを設定する"; public static void main( String[] args ) { System.out.println( "VisualRecognition createClassifier start" ); // インスタンス生成 VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_20); service.setApiKey(API_KEY); // 分類キーを作成 ClassifierOptions options = new ClassifierOptions.Builder() .classifierName("sample1") .addClass("type1", new File("./VR/images/type1.zip")) .addClass("type2", new File("./VR/images/type2.zip")) .addClass("type3", new File("./VR/images/type3.zip")) .addClass("type4", new File("./VR/images/type4.zip")) .addClass("type5", new File("./VR/images/type5.zip")) .build(); VisualClassifier result = service.createClassifier(options).execute(); // 結果を表示 System.out.println(result); System.out.println( "VisualRecognition createClassifier end" ); } }
↓
VisualRecognition createClassifier start { "classifier_id": "ClassifierのID", "name": "sample1", "classes": [ { "class": "type4" }, { "class": "type3" }, { "class": "type2" }, { "class": "type1" }, { "class": "type5" } ], "owner": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "created": "2016-10-10T05:44:22.400", "status": "training" } VisualRecognition createClassifier end
Classifierのデータを取得
Java
package com.sample3; import java.util.concurrent.ExecutionException; import com.ibm.watson.developer_cloud.http.ServiceCall; import com.ibm.watson.developer_cloud.visual_recognition.v3.VisualRecognition; import com.ibm.watson.developer_cloud.visual_recognition.v3.model.VisualClassifier; /** * Hello world! * */ public class App { // API_KEY final private static String API_KEY = "取得するキーを設定する"; public static void main( String[] args ) throws InterruptedException, ExecutionException { System.out.println( "VisualRecognition getClassifier start" ); // インスタンス生成 VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_20); service.setApiKey(API_KEY); // 詳細情報 ServiceCall<VisualClassifier> result = service.getClassifier("ClassifierのID"); // 結果を表示 System.out.println(result.rx().get().toString()); System.out.println( "VisualRecognition getClassifier end" ); } }
↓
VisualRecognition getClassifier start { "classifier_id": "ClassifierのID", "name": "sample1", "classes": [ { "class": "type4" }, { "class": "type3" }, { "class": "type2" }, { "class": "type1" }, { "class": "type5" } ], "owner": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "created": "2016-10-10T05:44:22.400", "status": "ready" } VisualRecognition getClassifier end
画像を与えて分類のスコアを算出
Java
package com.sample; import java.io.File; import java.util.Arrays; import java.util.List; import com.ibm.watson.developer_cloud.visual_recognition.v3.*; import com.ibm.watson.developer_cloud.visual_recognition.v3.model.ClassifyImagesOptions; import com.ibm.watson.developer_cloud.visual_recognition.v3.model.VisualClassification; /** * Hello world! * */ public class App { // API_KEY final private static String API_KEY = "取得するキーを設定する"; public static void main( String[] args ) { System.out.println( "VisualRecognition classify start" ); // インスタンス生成 VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_20); service.setApiKey(API_KEY); // classifierIds用 List<String> list = Arrays.asList("ClassifierのID"); // スコアを取得 ClassifyImagesOptions options = new ClassifyImagesOptions.Builder() .classifierIds(list) .threshold(0.0) .images(new File("./VR/images/type1/0100.jpeg")) .build(); VisualClassification result = service.classify(options).execute(); // 結果を表示 System.out.println(result); System.out.println( "VisualRecognition classify end" ); } }
↓
VisualRecognition classify start { "images_processed": 1, "images": [ { "classifiers": [ { "classifier_id": "ClassifierのID", "name": "sample1", "classes": [ { "class": "type1", "score": 0.986812 }, { "class": "type2", "score": 0.0412107 }, { "class": "type3", "score": 0.103716 }, { "class": "type4", "score": 0.0636262 }, { "class": "type5", "score": 0.111918 } ] } ], "image": "0100.jpeg" } ] } VisualRecognition classify end
現在登録している分類キーの情報
Java
package com.sample4; import java.util.List; import java.util.concurrent.ExecutionException; import com.ibm.watson.developer_cloud.http.ServiceCall; import com.ibm.watson.developer_cloud.visual_recognition.v3.VisualRecognition; import com.ibm.watson.developer_cloud.visual_recognition.v3.model.VisualClassifier; /** * Hello world! * */ public class App { // API_KEY final private static String API_KEY = "取得するキーを設定する"; public static void main( String[] args ) throws InterruptedException, ExecutionException { System.out.println( "VisualRecognition getClassifiers start" ); // インスタンス生成 VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_20); service.setApiKey(API_KEY); // 詳細情報 ServiceCall<List<VisualClassifier>> result = service.getClassifiers(); // 結果を表示 System.out.println(result.rx().get().toString()); System.out.println( "VisualRecognition getClassifiers end" ); } }
↓
VisualRecognition getClassifiers start [{ "classifier_id": "ClassifierのID", "name": "sample1", "classes": [ { "class": "type4" }, { "class": "type3" }, { "class": "type2" }, { "class": "type1" }, { "class": "type5" } ], "owner": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "created": "2016-10-10T05:44:22.400", "status": "ready" }] VisualRecognition getClassifiers end
削除
Java
package com.sample5; import java.util.concurrent.ExecutionException; import com.ibm.watson.developer_cloud.http.ServiceCall; import com.ibm.watson.developer_cloud.visual_recognition.v3.VisualRecognition; /** * Hello world! * */ public class App { // API_KEY final private static String API_KEY = "取得するキーを設定する"; public static void main( String[] args ) throws InterruptedException, ExecutionException { System.out.println( "VisualRecognition deleteClassifier start" ); // インスタンス生成 VisualRecognition service = new VisualRecognition(VisualRecognition.VERSION_DATE_2016_05_20); service.setApiKey(API_KEY); // 詳細情報 service.deleteClassifier("ClassifierのID"); System.out.println( "VisualRecognition deleteClassifier end" ); } }
所感
基本的なものだけ触ってみた、リファレンスと同期がどれていない感じなので必要なパラメータがよくわからないので手探りになりそう。
Javaはまだ基本的なことしかわからないので触っていきながら理解していくことになる