LoginSignup
1
1

More than 5 years have passed since last update.

Watson Visual RecognitionのCollectionに1度に複数画像を学習するコードをJavaで実装してみた

Last updated at Posted at 2017-06-25

はじめに

Watson Visual RecognitionのCollectionにデータを投入する際、コードを書く以外では、1つ1つコードを実装しなくてはならず、手間がかかります。
今回Javaのコードで複数の画像を一気にトレーニングできるコードを実装しました。

Javaの実行環境構築

  1. JDKのインストール
    JDKのインストールは下記URLから行います。
    http://www.oracle.com/technetwork/java/javase/downloads/index.html

 インストール方法は、下記URLを参考にしてください。
http://qiita.com/hiesiea/items/54e49dabfb5606edb54d#2-jdk%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
  
2. eclipseのインストール
eclipseのインストールは下記URLから行います。
http://www.eclipse.org/downloads/

 インストール方法は、下記URLを参考にしてください。
http://qiita.com/hiesiea/items/54e49dabfb5606edb54d#3-eclipse%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
  
3. Maven projectの作成
eclipseの「New」→「Project」→「Maven Project」を作成します。
maven1.png

コードの入手、設定

  1. コードのダウンロード 下記のURLから、コードをダウンロードします。
    https://github.com/takana-at/VisualRecognition-training
    ダウンロードしたら、コードを展開します。
      
  2. コードの配置
    sample.appプロジェクトに下記クラスをコピーします。
     ・AddToCollection.java
     ・AddToCollectionThread.java
     ・TrainingDefinition.java

Visual RecognitionのCollectionにトレーニングデータをアップロード

Visual Recognitionサービスの作成

  1. Bluemix上でVisual Recognitionのサービスを作成します。
    下記URLからBluemixにログインし、「カタログ」→「Watson」→「Visual Recognition」サービスを作成します。
    https://console.bluemix.net/

2. Visual Recognitionのサービスを作成したら、「サービス資格情報」→「Credentials-1」から、{api_key}を確認し、メモしておきます。

visual_recognition1.png

Visual RecognitionにCollection作成

  1. Visual Recognitionサービスにcollectionを作成します。
    下記URLにアクセスし、「Parameters」→「api_key」に先ほどメモしたapi_key、「name」に任意の名前を入れて、「try it out!」をクリックします。
    https://watson-api-explorer.mybluemix.net/apis/visual-recognition-v3#!/visual45recognition/post_v3_collections

visual_recognition2.png
  
2. collectionが作成できたら、下記の画面になりますので、「collection_id」をメモしておきます。
また、「status」が「Available」になっていることを確認します。
visual_recognition3.png

Javaのコードを実行する

AddToCollection.javaを実行します。

1. AddToCollectionThread.javaのコードを変更します。
このクラスのコードの{api_key}を先ほどメモしたapi_keyに変更します。

2. アップロードする画像を配置します。
画像は、project直下に「trainImage」フォルダを作成し、「trainImage」フォルダ内に「画像ID名」のフォルダを作成し、「画像ID名」のフォルダに画像を配置してください。
この画像IDは、人物ごとに振り分けるために使用していますので、同一人物は同じ画像ID名のフォルダ内に配置してください。

PROJECTNAME
|-trainImage
   |-IMGID_NAME
      |-IMG  
      |-IMG

たとえば、下記のように「female」という画像ID名のフォルダに、「m010469.jpg」、「m010462.jpg」の画像を格納します。

readd1.png

※今回使用した画像
https://model.foto.ne.jp/free/product_info.php/cPath/24_252_256/products_id/300378
https://model.foto.ne.jp/free/product_info.php/cPath/24_252_256/products_id/302141

3. アップロードするメタファイルの配置します。
画像は、project直下に「trainMetafile」フォルダを作成し、「trainMetafile」フォルダ内にtrainImageフォルダ内と同じ「画像ID名」のフォルダを作成し、「画像ID名」のフォルダにその画像IDに関する人物の情報をjsonファイルで配置してください。
このときjsonファイルのファイル名は「画像ID名.json」にしてください。
「trainMetafile」フォルダに格納したjsonファイルによって、trainImageに格納した画像の追加情報を登録することができます。

PROJECTNAME
|-trainMetafile
   |-IMGID_NAME
      |-IMGID_NAME.json

たとえば、下記のように「female」という画像ID名のフォルダに、「female.json」という名前のjsonファイルを格納します。

readd2.png

Metafileを作成する際は、下記コードを参考にしてください。

Metafileの記入例(femaleA.json)
{"name":"女性A","img_name":"femaleA","img_url":"https://model.foto.ne.jp/free/product_info.php/cPath/24_252_256/products_id/300378"}

4. 引数には、下記を入れて実装します。
「./trainImage」
AddToCollection2.png

5. 実行結果は以下のようになります。
add4.png

Collectionを確認する

Collectionにトレーニングデータが追加されたか確認します。

1. 下記URLにアクセスし、「Parameters」→「api_key」、「collection_id」にAddToCollection.javaを実装した際に入力したapi_key、collection_idを入れて、「try it out!」をクリックします。
https://watson-api-explorer.mybluemix.net/apis/visual-recognition-v3#!/visual45recognition/get_v3_collections_collection_id_images!
List100image1.png

2. collectionに登録した画像の一覧を表示し、collectionの「images」に登録した画像が登録されていたら、トレーニングまで完了です。
add6.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1