クリエイター手抜きプロジェクト[476]Windows+AI編 Windows+PowerShellでClound Visionを使う
── 古籏一浩 ──

投稿:  著者:



今回はWindowsのPowerShellを使って、フォルダ内にある画像をAI検索できるようにしてみます。AI検索といっても、使うのは手軽なGoogle Cloud Vision APIです。

・Google Cloud Vision API
https://cloud.google.com/vision/


以前にもこの連載で、Google Cloud Vision APIを使ったサンプルについて説明しました。以前はMac(UNIX)+Bash(シェルスクリプト)を使いました。

今は最新のWindows 10ならbash on Ubuntu on Windowsがあるので、だいたい同じプログラムを利用できます。

ただし、まだβ版みたいな感じなのですべてが期待通りに動くとは限りません。また、Windows 10より前のバージョンでは、bashは標準状態では使うことができません(UNIX環境を入れるなどの作業が必要になります)。

・Bash on Ubuntu on Windows
https://msdn.microsoft.com/ja-jp/commandline/wsl/about


・Bash on Ubuntu on Windows例文辞典
http://www.openspc2.org/reibun/bash/windows/20160802/




ということで、Windows 7以降に標準で搭載されているシェルであるPowerShellを使うことにします。

・PowerShell
https://technet.microsoft.com/ja-jp/scriptcenter/dd742419


PowerShellは設計が新しい(といっても、もう10年以上前)ので、UNIXのようにフラットなデータを流すのではなく「オブジェクト」にデータが入って、それが次々と渡される仕組みになっています。

この方がいろいろ都合がよいのですが、実際にシェルスクリプトを作成してみると良いとも悪いとも言えない感じです。だから、Windows 10にBash on Ubuntu on Windowsを載せたんだろうとも思えます。

さて、本題に入ります。以下のPowerShellスクリプトに、フォルダのパスを指
定すると、そのフォルダにあるJPEG画像をピックアップして自動的にAI検索しその結果をテキストファイル(結果はJSON形式になります)として保存します。

ただ、標準状態のWindows 10では動作しません。まず、Webのデータをダウンロードするためのプログラムである、curlをダウンロードしインストールする必要があります。

困ったことに、PowerShellではcurlというコマンドがエイリアスで割り当てられています。このcurlコマンドは、これからダウンロードするcurlとは別モノです。curlコマンドだと思ってオプションを指定しても動きません。最初、これに気づかず思いの外時間を費やしてしまいました。

curlのダウンロードは以下のページから行います。

https://curl.haxx.se/download.html


Windows版はページの末尾にあります。32bitならWin32-Generic、64bitならWin64-Genericの中からダウンロードします。いくつかありますが、手軽に入れるなら「Win64 2000/XP x86_64 MSI」のようにMSI形式のものをダウンロードしてください。

ダウンロードしインストールすると、curl.exeというファイルが作成されます。インストール直後ではCortata(標準でWindows内のファイルを検索するやつ)が検索してくれないことがあるので、スタートメニューから探します。

curlのフォルダを開いて、そこからcurl.exeを探します。見つかったら、curl.exeを自分のホームフォルダにコピーします。

PowerShellを起動して

./curl.exe www.openspc2.org

のように指定して、HTMLファイル内容が表示されればインストールは完了です。あとは、フォルダを作成し、その中に検索させたいJPEG画像を何枚か入れておきます。

なお、登録から3か月以内は無料で大量に検索できますが、以後は有料になります(1000回/1か月までの検索回数なら無料)。料金の詳細は以下のページの末尾に表で掲載されています。必ず確認してから使用しましょう。

・CLOUD VISION API の料金
https://cloud.google.com/vision/


JPEG画像でなくPNG画像を検索したい場合は、以下のコードの上から3行目の「*.jpg」を「*.png」にしてください。また、★印の部分は各自取得したAPIキーを入れてください。APIキーの取得方法が分からないよ、という人は以前の記事を参考にしてみてください。

・Mac+AI編 Cloud Vision APIを利用したテキスト検索
https://bn.dgcr.com/archives/20160523140200.html


ということで、これで本当に準備完了です。次に以下のスクリプトをメモ帳などでホームフォルダに保存しcv.ps1のように拡張子をps1にします。あとは、PowerShellを起動して

./cv.ps1 c:¥temp

のようにすれば、tempフォルダ内にあるJPEG画像を検索してAI検索を行います。

$dir=pwd
cd $args[0]
foreach($i in ls *.jpg){
echo $i.Name
certutil -encode $i ./temp.dat > $null
$base64=Get-Content ./temp.dat | %{$_ -replace "-----BEGIN CERTIFICATE-----",""} | %{$_ -replace "-----END CERTIFICATE-----",""}
$json=
@"
{"requests":[{"image":{"content":"
$base64
"},
"features":[{
"type":"LABEL_DETECTION",
"maxResults":20
}]}]}
"@
$json|Out-File ./temp.json -encoding ASCII
$result=~/curl.exe -k -s -H "Content-Type: application/json" https://vision.googleapis.com/v1/images:annotate?key=★
--data-binary "@./temp.json"
$result|Out-File "$i.TEXT.txt" -encoding UTF8
rm ./temp.dat
rm ./temp.json
}
cd $dir

上記のスクリプトはラベル検索ですが、LABEL_DETECTIONの文字を変更すればいろいろな検索を行うことができます。

LABEL_DETECTION ラベル検索
FACE_DETECTION 顔検索
LANDMARK_DETECTION ランドマーク検索
TEXT_DETECTION テキスト(文字)検索
LOGO_DETECTION ロゴ検索
SAFE_SEARCH_DETECTION アダルト/暴力検索
IMAGE_PROPERTIES 画像検索(色/ピクセルデータ検索)


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/


頑張れば個人でアニメーション作れる時代だけど、私の場合、どう頑張っても人物が描けないので、最初から進まないという……。そこで、AIが急速に発展することを期待。

AIが進化すると「自動的に舞台設定データから設定にあった背景をピックアップ」→「XXX調の背景にアレンジ」→「人物の性格を学習させる(ここは作者がやる)」→「最初と最後(もしくは中間)の目的だけ設定して、AI同士で会話させる」→「作者がセリフなどを手直し」→「シナリオができたらAIにしゃべらせる」→「Live2Dか3DCGで人物を自動的に動かす」→「自動的にAIにシーンにあった音楽が作成される」→「だいたいできあがり」→「ひたすら微調整」→「大ヒット上映される(希望的観測)」

AI時代になるとプロはより有利になり、アマチュアはなかなかプロに届かないような感じになりそう。チャンスはあれど、素人は素人。能力を相当に鍛えないと生き残っていけないような世界なのかも。

ボーカロイドで誰でも作曲して歌わせることはできるけど、やはりプロにはかなわない、というところ。たまに、凄い人がいて注目されヒットする、というのが起こるくらいじゃないかな、と。

・IchigoLatteを楽しもう
http://www.openspc2.org/reibun/IchigoLatte/0.9.1/


・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/


・Premiere Pro & Media Encoder自動化サンプル集
http://www.amazon.co.jp/dp/4802090471/


・JavaScriptによるデータビジュアライゼーション入門
http://www.amazon.co.jp/dp/4873117461/


・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/


・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/


・Adobe JavaScriptリファレンス
http://www.amazon.co.jp/dp/B00FZEK6J6/


・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/


・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/