2018年02月22日

Amazon Rekognition Videoで動画分析の使い方

■ Rekognition Video
画像認識サービスは既に色々出て来ていますが、Rekognition Videoは動画に対してそれを行うというソリューションです。
どういう事が出来るのか、以下はRekognitionの公式の説明文です。
Amazon Rekognition Video は、ディープラーニングに対応したビデオ分析サービスであり、人物の追跡、動作の検出、物体、有名人、不適切なコンテンツの認識を行います。
Amazon Rekognition Video は、ライブストリーム内の顔を検出して認識できます。また、Amazon S3 に保存されている既存のビデオを分析することもできます。
Rekognition Video からは動作、人物と顔、物体の特定のラベルがタイムスタンプ付きで返されるため、シーンを簡単に特定できます。人物や顔の場合は、フレーム内の人物や顔の境界ボックスも返されます。
Rekognition Video の使いやすい API は、公安のお客様による即時対応、メディアやエンターテインメントのお客様による検索インデックスの生成、スマートホームでのモニタリングに最適です。

ところで気になるのは料金です。まだ、東京では使えないはずですが
なぜか東京リージョンでは既に料金が設定されています
https://aws.amazon.com/jp/rekognition/pricing/
動画分析:
分析したアーカイブ動画 1 分あたり 0.115 USD (1 分未満は秒割計算)。
分析したライブストリーム動画 1 分あたり 0.138 USD (1 分未満は秒割り計算)。
顔メタデータのストレージ:
毎月保存した顔のメタデータ 1000 個につき 0.0115 USD。ストレージ料金は月次課金、1 か月未満は日割り計算。



■ では実際にやってみましょう

まずRekognition コンソールにログインします

Rekognitionの機能を試すだけならコンソールから簡単に実行できます。
Rekognition1

デモを試すボタンを押して
Rekognition2

独自のビデオを選んで、こちらからアップロードできます。
アップロードすると、自動的にリージョンにバケットが作成されます。
次からのビデオアップロードも、このバケットに追加されます。


アップロードしただけで自動的に結果が表示されるはずですが、
デモ画面でも、動画が何も表示されない真っ黒いままになるかもしれません。それは多分コーデックがH.264ではないからだと思います。
ffmpegでH.264コーデックに変更しようとしましたが
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
というエラーが生じるかもしれません

これはオプションが足りないためです。
x264のエンコードでエラー(Error while opening encoder for output stream #0.0)
と、言う訳で、このようにしました。
ffmpeg -i input.mp4 -f mp4 -vcodec libx264 -g 150 -qcomp 0.7 -qmin 10 -qmax 51 -qdiff 4 -subq 6 -me_range 16 -i_qfactor 0.714286 output.mp4


続きを読む

tak_tak0 at 21:48コメント(0)サーバ この記事をクリップ!

2018年02月19日

AWS SDK for Javaの使い方と設定方法

後で色々使うためにAWS SDK for Javaの使い方を確認します。

基本的には https://sdk-for-java.amazonwebservices.com/latest/aws-java-sdk.zip をダウンロードして展開するだけです。
当然ですが大前提としてjavaはインストールされている必要があります。

javaなので多分OSには依存しないと思います?


とりあえずjavaでS3にファイルをアップロードするサンプルコードを実行する事にしますが
それは
PutObject.java こちらに在ります。


linuxでもwindowsでも、クラスパス指定はこれで良いと思います。
javac -cp aws-java-sdk-1.11.279.jar:third-party/lib/*: PutObject.java




Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory

このようなエラーは多分 third-party の方のパス指定が出来ていないためです。

Amazon client error: Unable to load AWS credentials from any provider in the chain

これはcredentialsファイル設定の問題です。
ここでは ~/.aws/credentialsファイルでではなく、プログラムの方でアクセスキーを指定する方法を取りたいと思います。

まずアクセスキーとシークレットアクセスキーの取得方法ですが
前に確認したかも知れませんが念の為、
IAM コンソールから、
ユーザー名をクリックして

認証情報タブで、アクセスキーの作成ボタンを押します。

シークレットアクセスキーは、この時の1回しか表示されないと思います。



このようにAmazonS3インスタンス生成時にCredentialsを指定して作ります。
AmazonS3 s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials( アクセスキー , シークレットアクセスキー ) ) ).build();


.........

Exception in thread "main" com.amazonaws.SdkClientException:
Unable to find a region via the region provider chain.
Must provide an explicit region in the builder or setup environment to supply a region.
これは明示的に(S3の)リージョンを指定せよと言う事です。
AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1) などと指定します。

Done! と表示されたなら、 S3にアップロードされたと言う事です。

このコードでは、
同じファイルがあった場合でも確認なしに上書きするようです。



tak_tak0 at 23:09コメント(0)サーバ この記事をクリップ!

2018年02月12日

pix2codeの実装方法




ソースコードはtonybeltramelli/pix2codeで良いですね?
Beltramelli氏本人らしいですから。

git clone https://github.com/tonybeltramelli/pix2code.git
cd /pix2code
pip3 install -r requirements.txt
これで必要な物は全てインストールします

cd datasets
zip -F pix2code_datasets.zip --out datasets.zip
unzip datasets.zip
ここまでして学習データが展開します


データはpngと.guiという形式です。
2E2520D4-A7F2-4086-8773-7F8F3A110161.png
2E2520D4-A7F2-4086-8773-7F8F3A110161.gui
こういうファイル名です


まずこうするのですが
python3 build_datasets.py ../datasets/web/all_data
python3 convert_imgs_to_arrays.py ../datasets/web/training_set ../datasets/web/training_features

このコマンドは学習データを作成するだけです。
データ数は7の倍数でないとトレーニング、テストデータに分割が出来ないみたいです?

学習の方はこうしますが
python3 train.py ../datasets/android/training_set ../bin

これで../binにモデルを出力します
File "./train.py", line 6, in
import tensorflow as tf
ImportError: No module named tensorflow
実行にはtensorflowを使います。
学習は
Epoch 1/10
576/7962 [=>............................] - ETA: 1:07:25 - loss: 2.4858

こんな風に表示されます

チュートリアルのデータでは、メモリが足りなくなるかもしれませんが...?

パラメータは classes/model/Config.py などに書いてあります。


一画像からコードを生成する時はこうします。
python3 sample.py ../bin pix2code ./input.png ./code

しかし、これでは./codeに.guiファイルが出力されるだけです。

python3 web-compiler.py ../model/code/input.gui

こうやって、コードに変換します。


学習量が足りないと、.gui ファイルに多分何も出力出来ないと思います。




..........
I am a front-end developer, will I soon lose my job?
(I have genuinely been asked this question multiple times)



tak_tak0 at 19:30コメント(0)サーバ この記事をクリップ!
サイト内検索
にほんブログ村 科学ブログへ
にほんブログ村
adsense
Archives
amazon
Profile
blogchart
QRコード
QRコード
Recent Comments
o