はじめに
Watson Visual RecognitionのDetect Faceという顔検出機能を使うと、人の年齢、性別、画像における顔の位置を読み取ることができます。
今回は、Detect Faceという顔検出機能を使って人の画像から顔の位置を検出し、顔部分のみの画像に加工するというコードをJavaで実装しました。
Javaの実行環境構築
- 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」を作成します。
コードの入手、設定
- コードのダウンロード
下記のURLから、コードをダウンロードします。
https://github.com/takana-at/VisualRecognition-training
ダウンロードしたら、コードを展開します。
- コードの配置
sample.appプロジェクトに下記クラスをコピーします。
・DetectFaces.java
・DetectFacesThread.java
・TrainingDefinition.java
Visual Recognitionの顔検出機能の実装
Visual Recognitionサービスの作成
- Bluemix上でVisual Recognitionのサービスを作成します。
下記URLからBluemixにログインし、「カタログ」→「Watson」→「Visual Recognition」サービスを作成します。
https://console.bluemix.net/
2. Visual Recognitionのサービスを作成したら、「サービス資格情報」→「Credentials-1」から、{api_key}を確認し、メモしておきます。
Javaのコードを実行する
今回は人の画像を、顔部分だけ切り取って保存するコードである DetectFaces.javaを実行します。
1. DetectFacesThread.javaのコードを変更します。
このクラスのコードの{api_key}を先ほどメモしたapi_keyに変更します。
2. 顔検出したい画像を配置します。
画像は、project直下に「trainImage」フォルダを作成し、「trainImage」フォルダ内に「画像ID名」のフォルダを作成し、「画像ID名」のフォルダに画像を配置してください。
この画像IDは、人物ごとに振り分けるために使用していますので、同一人物は同じ画像ID名のフォルダ内に配置してください。
PROJECTNAME
|-trainImage
|-IMGID_NAME
|-IMG
|-IMG
たとえば、下記のように「femaleA」という画像ID名のフォルダに、「m010462.jpg」、「m010469.jpg」の画像を格納します。
※今回使用した画像
・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. 引数には、下記を入れて実装します。
「./trainImage」
5. 実行後は、プロジェクト直下にfaceImageフォルダに画像のIDのフォルダが作成され、その画像IDフォルダに画像が保存されます。
6. このfaceImage配下の画像は、trainImage配下の画像を顔部分だけ抽出し、リネームし、保存した画像になります。
【trainImage/female/m010462.jpg】
↓
【faceImage/female/m010462.jpg_face.jpg】