建築CGとWEBとアプリ開発の制作スタジオ

  1. システム開発
  2. 71 view

【AI】画像解析AI「Google Cloud Vision」でパースを解析する

パース画像をGoogleの画像解析AIで解析してみます。

「Google Cloud Vision」は、学習済みモデルを使った画像解析の汎用AIです。
1,000回/月まで無料で使う事ができます。IBMのWatsonも同じ条件で使えますが、こちらは30日間利用しないとアカウントが削除されてしまうので、今回はGoogleのAIを使う事にしました。

このAIを通す事で、その画像が写真なのかパースなのか、何の空間なのか、どんな家具があるのか、誰が使っているのかなどを判別してくれます。

パースを解析できれば、図面検索システムが作れる

図面を直接AIで解析しようとすると、学習データ作成費や解析精度など様々な高いハードルにぶつかるのですが、図面に紐づいたパースや竣工写真を汎用AIで画像解析すればキーワードで図面検索できる様になります。これを使って、過去図面を検索する社内システムを作ろうという訳です。

検索精度を上げるには人間が判断して手作業でキーワード登録していくのが一番良いのですが、今回はメンテ負荷を最小限に抑える為にAIを使います。

「Google Cloud Vision」をPHPから使ってみる

図面検索システムの仕組みはおいといて、本題です。
PCでもスマホでも使える様にしたいので、ブラウザで動くWEBアプリとしてPHPからAPIを呼び出します。解析タイプがいくつかあるのですが、今回は「LABEL_DETECTION」を使います。このAPIは社内プロキシ環境からそのまま通信できないので、cURLのオプションでプロキシ設定を追加します。
PHPを使ったコードはこんな感じです。

function GetTagByGoogleAI($api_key, $image_path){

	// リクエスト用JSONを作成
	$json = json_encode(
		array(
			"requests" => array(
				array(
					"image" => array(
						"content" => base64_encode(file_get_contents ($image_path)),
					),
					"features" => array(
						array(
							"type" => "LABEL_DETECTION",
							"maxResults" => 50,
						),
					),
				),
			),
		)
	);

	// cURLを初期化する
	$curl = curl_init();
	
	//cURLオプションの設定
	curl_setopt( $curl, CURLOPT_URL, 'https://vision.googleapis.com/v1/images:annotate?key='.$api_key  ;
	curl_setopt( $curl, CURLOPT_HEADER, true);
	curl_setopt( $curl, CURLOPT_HTTPHEADER, array ("Content-Type: application/json"));
	curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, "POST");
	curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt( $curl, CURLOPT_TIMEOUT, 30);
	curl_setopt( $curl, CURLOPT_POSTFIELDS, $json);
	

	//社内環境からAPIを使う場合のプロキシ設定
	//curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
	//curl_setopt($curl, CURLOPT_PROXY, 'ここにプロキシアドレス');
	//curl_setopt($curl, CURLOPT_PROXYPORT, '50');
	
	//APIにリファラ制限を掛けている場合は設定する
	//curl_setopt( $curl, CURLOPT_REFERER, ‘ここにリファラ’);

	//cURLリクエストを実行
	$res1 = curl_exec( $curl );
	$res2 = curl_getinfo( $curl );
	curl_close( $curl );

	// ラベル情報を取り出す
	$json = substr($res1, $res2['header_size']);
	$array = json_decode($json, true);
	$labels = (isset($array['responses'][0]['labelAnnotations'])) ? $array['responses'][0]['labelAnnotations'] : null;

	//タグ情報だけを取り出す
	$result_tags = array();
	foreach ($labels as $tag){
		array_push($result_tags, $tag['description']);
	}
	return $result_tags;
}

一連の処理を関数にまとめたものです。
この関数は、APIキーと画像ファイルのパスを与えると、最大50個のラベル配列を返します。これをデータベースに登録すればWEBシステムから高速検索できますし、そこまで必要なければ画像のメタデータにラベルをタグ情報として埋め込むだけでWindowsのExplorerやMacのFinderで検索できます。

上の関数をこんな感じで実行します。

//実行
$tags = GetTagByGoogleAI(‘APIキー’, ‘画像パス’);

// 出力テスト
foreach($tags as $tag) {
echo($tag."<br>");
}

某自動車ショールームのパース解析結果がこちら

Architecture | Floor | Building | Interior design | Ceiling | Design | Product | Automotive exterior | Automotive design | Manufacture | Vehicle | Luxury vehicle | Car | Car dealership | Subcompact car | Auto show | Lexus | Concept car

AIが、「Lexus」という具体的な車種(ブランド名)を認識しているのが面白いですね。
実際にパースで配置した車はLexusではありませんでしたが、自動車関連であること、建築写真であること、カーデザインに関連している事をAIが認識できています。

このタグ情報を画像のメタ情報に追加したり、データベースに登録する事でAIによる画像検索ができる様になります。

ちなみに…WindowsのExplorerから検索した場合、数千枚のパースから検索結果が表示されるまで1~2分掛かるのですが、データベースを使った検索システムだと0.1秒以内に結果を表示する事ができます。

システム開発の最近記事

  1. Apple整備済製品の入荷を音で知らせてくれるプログラム

  2. [360VR] Panolens.jsをiOS13以降のジャイロセンサーに対応させる

  3. [360VR] Panolens.jsで、クリックした位置に動的にホットスポットを追加する…

  4. 無料のPanolens.jsで360VRを作成する

  5. 【AI】画像解析AI「Google Cloud Vision」でパースを解析する

関連記事