197_php_photo (Google Cloud Vision API完成!)その4

■PHPでGoogle Cloud Vision APIにリクエスト
ここからは、サンプルプログラムにいきなり。
ズルく行きます。
参考は下記。
「Google Cloud Vision API(画像解析)を30分で試す」
http://qiita.com/t-fujiwara/items/7e1f7c52a73887519ac1
このサンプルをそのまま借りてまず動くか?やってみます。
=======================
<?php
// APIキー
$api_key = “AIzaSyCKmmfDVoUhjGLyKaTBwTPncIbXd87VGWc” ;
        // 画像へのパス
$argv[1]=
$image_path = “$argv[1]” ;
        // リクエスト用のJSONを作成
$json = json_encode( array(
“requests” => array(
array(
“image” => array(
“content” => base64_encode( file_get_contents( $image_path ) ) ,
) ,
“features” => array(
array(
“type” => “SAFE_SEARCH_DETECTION” ,
“maxResults” => 3 ,
) ,
) ,
) ,
) ,
) ) ;
        // リクエストを実行
$curl = curl_init() ;
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_CUSTOMREQUEST, “POST” ) ;
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( “Content-Type: application/json” ) ) ;
curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ;
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ;
if( isset($referer) && !empty($referer) ) curl_setopt( $curl, CURLOPT_REFERER, $referer ) ;
curl_setopt( $curl, CURLOPT_TIMEOUT, 15 ) ;
curl_setopt( $curl, CURLOPT_POSTFIELDS, $json ) ;
$res1 = curl_exec( $curl ) ;
$res2 = curl_getinfo( $curl ) ;
curl_close( $curl ) ;
        // 取得したデータ
$json = substr( $res1, $res2[“header_size”] ) ;                         // 取得したJSON
$header = substr( $res1, 0, $res2[“header_size”] ) ;            // レスポンスヘッダー
        // 出力
echo “■出力結果” ;
echo $argv[1] ;
echo $json ;
=======================
はい、、ダメでした。。悲。。。。
なので、まず「ファイル指定」し、「ブラウザの制限」は無し、でやってみます。
phpファイル名は、「20170319_test1.php」
画像は、「富士山真上から」

コードは、下記
=======================
<?php
$path = ‘/home/dasudasu/www/php_photo_20170318/files/IMG_0323.JPG’;
$result = curl_init();
// curl url
curl_setopt($result, CURLOPT_URL, “https://vision.googleapis.com/v1/images:annotate?key=********************************************************”);
// post
curl_setopt($result, CURLOPT_CUSTOMREQUEST, ‘POST’);
// –data-binary
curl_setopt($result, CURLOPT_BINARYTRANSFER, true);
// header
curl_setopt($result, CURLOPT_HTTPHEADER, array( “Content-Type: application/json” ));
// get response with text
curl_setopt($result, CURLOPT_RETURNTRANSFER, true);
// image file
$file_contents = base64_encode(file_get_contents($path));
$request = ‘{
“requests”: [
{
“image”: {
“content”: “‘. $file_contents .'”
},
“features”: [
{
“type”: “LABEL_DETECTION”
}
]
}
]
}’;
curl_setopt($result, CURLOPT_POSTFIELDS, $request);
// result
$response = curl_exec($result);
//結果表示
echo “</br>”;
echo $response ;
=======================
で、結果は、
{ “responses”: [ { “labelAnnotations”: [ { “mid”: “/m/01bqvp”, “description”: “sky”, “score”: 0.97879976 }, { “mid”: “/g/11jxkqbpp”, “description”: “mountainous landforms”, “score”: 0.9590976 }, { “mid”: “/m/0csby”, “description”: “cloud”, “score”: 0.9397293 }, { “mid”: “/m/0csh5”, “description”: “cumulus”, “score”: 0.92631036 }, { “mid”: “/m/01l56l”, “description”: “landform”, “score”: 0.90823483 } ] } ] }
おおおお???、「mountain」「sky」とか出てる?
(図1)
では、つなげてみるか。。。
=======================
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>sample</title>
</head>
<body>
<p><?php
if (is_uploaded_file($_FILES[“upfile”][“tmp_name”])) {
if (move_uploaded_file($_FILES[“upfile”][“tmp_name”], “files/” . $_FILES[“upfile”][“name”])) {
chmod(“files/” . $_FILES[“upfile”][“name”], 0644);
echo $_FILES[“upfile”][“name”] . ” をアップロードしました。</br>”;
echo $_FILES[“upfile”][“type”] . ” は、画像のMIMETYPEです。</br>”;
echo $_FILES[“upfile”][“tmp_name”] . ” は、サーバのフルパスです。</br>”;
echo $_FILES[“upfile”][“error”] . ” は、エラーコードです(=正常:0)。</br>”;
echo $_FILES[“upfile”][“size”] . ” は、画像のサイズです(bite)。</br>”;
    echo ‘<br />’;
   //(1)このphpファイルのフルパス
echo “(1)このphpファイルのフルパス</br>”;
echo __FILE__ . ‘<br />’;
echo “</br>”;
   //(2)このphpファイルのディレクトリパス
echo “(2)このphpファイルのディレクトリパス</br>”;
echo dirname(__FILE__) . ‘<br />’;
echo “</br>”;
   //(3)このphpファイルのスクリプト名
echo “(3)このphpファイルのスクリプト名</br>”;
echo basename(__FILE__) . ‘<br />’;
echo “</br>”;
   //(4)ローカルパス名、・・・でも表示不可能、残念
echo ‘(4)ローカルパス名、・・・でも表示不可能、残念<br />’;
echo $_POST[“filepath”]. ‘<br />’;
echo “</br>”;
   //(5)サーバ保管フォルダのフルパス名・・OK!
echo ‘(5)サーバ保管フォルダのフルパス名<br />’;
echo dirname(__FILE__) . “/files/” .$_FILES[“upfile”][“name”] . ” は、サーバ保管フォルダのフルパスです。</br>”;
echo “</br>”;
   //(6)$argv[1]に合体させて表示、次phpにつなげる
echo ‘(6)$argv[1]に合体させて表示、次phpにつなげる<br />’;
$argv[1] = dirname(__FILE__) . “/files/” .$_FILES[“upfile”][“name”] ;
echo $argv[1];
  }
} else {
echo “ファイルが選択されていません。”;
}
$path = $argv[1];
$result = curl_init();
// curl url
curl_setopt($result, CURLOPT_URL, “https://vision.googleapis.com/v1/images:annotate?key=**********************************************************”);
// post
curl_setopt($result, CURLOPT_CUSTOMREQUEST, ‘POST’);
// –data-binary
curl_setopt($result, CURLOPT_BINARYTRANSFER, true);
// header
curl_setopt($result, CURLOPT_HTTPHEADER, array( “Content-Type: application/json” ));
// get response with text
curl_setopt($result, CURLOPT_RETURNTRANSFER, true);
// image file
$file_contents = base64_encode(file_get_contents($path));
$request = ‘{
“requests”: [
{
“image”: {
“content”: “‘. $file_contents .'”
},
“features”: [
{
“type”: “LABEL_DETECTION”
}
]
}
]
}’;
curl_setopt($result, CURLOPT_POSTFIELDS, $request);
// result
$response = curl_exec($result);
//結果表示
echo “</br>”;
echo “———————————-“;
echo “</br>”;
echo $response ;
echo “</br>”;
echo “———————————-“;
echo “</br>”;
?></p>
</body>
</html>
=======================
結果は、(ペンギンの画像だけど。。。)
いい感じかな???bird、、、とかって言ってるので。。。
(図2)
これが、転送した図
(図3)
まあ、良い経験できた、、と。
使いすぎないように注意!!!
以上

196_php_photo (Google Cloud Vision API準備)その3

■GoogleCloudVisionを使う
では、続き!
やはり勉強のためいささかの費用は出しても一度やってみよう!
で、cloud vison APIの手続きにはいります。
(図1)
課金が必要と言われる。。。行きましょう!
請求先アカウントを作成する必要があります。。。と。
(図2)
無料トライアルの同意書を読んで。。
(図3)
ようこそ、と。請求は確認までされないようなので一安心。
(図4)
Google Cloud Visionを有効化します。
画面が変わる。。
(図5)
認証情報の作成。。以前のは使えないみたい。。。
(図6)
使用するAPIに「Cloud Vision API」を、Google App Engine か Google Compute Engineを使用しましか?は、私もは「いいえ」を選択しました。
(図7)
役割は参考情報かな?アカウントを適当につけて、JSONを選ぶ。。
(図8)
アカウントの秘密鍵が作成されたらしい。。。
(図9)
DLもできた、、と。これ大切に保管!!と。
(図10)
これで Google Cloud Vision API の前準備が整いました、、と。
■APIキーの作成
次にGoogle Cloud Vision APIをWebから使うようにする為のAPIを発行します。。。と。
まずは、プロジェクトのトップ画面にアクセスして左上のバーガーマークをクリック。
メニューの一覧が表示されるので「API Manager」をクリックします。
(図11)
認証情報ページに遷移したら青いボタンの「認証情報を作成」をクリック。
クリックしたら表示される「API キー」をクリック。
「AIzaSyCKmmfDVoUhjGLyKaTBwTPncIbXd87VGWc」がAPIキーと。
(図12)
認証情報を入力します。
名前には同じくkey。受付URLは「*.dasudasu.sakura.ne.jp/*」とし、リクエスト元のURLをワイルドカード(アスタリスク)を使って設定しました。
(図13)
APIが出来上がりました。
これで、準備OKかな。。
(図14)
以上

195_php_photo (Google Cloud Vision APIを勉強)その2

PHPでのデータ受信
フォームから送信されたデータを受け取るPHPプログラムを作成、、か。。
アップロードされたファイルの情報は $_FILES に格納。。。と。
前に挙げたサンプルフォームからファイルを受け取る場合、form.html と同じフォルダに 20170318_upload.php (form の action で指定したファイル。)を作成し、以下の内容を記述します。。。と。
コードは、
=============
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>sample</title>
</head>
<body>
<p><?php
if (is_uploaded_file($_FILES[“upfile”][“tmp_name”])) {
if (move_uploaded_file($_FILES[“upfile”][“tmp_name”], “files/” . $_FILES[“upfile”][“name”])) {
chmod(“files/” . $_FILES[“upfile”][“name”], 0644);
echo $_FILES[“upfile”][“name”] . “をアップロードしました。”;
} else {
echo “ファイルをアップロードできません。”;
}
} else {
echo “ファイルが選択されていません。”;
}
?></p>
</body>
</html>
=============
同じ場所に files フォルダを作成し、書き込み権限を与えておきます、、、か。
でも、共用サーバはプロパティを編集するだけ!簡単だワ!
(図1)
さて、これで、、
「これで form.html に http:// でアクセスし、アップロードボタンを押すと files フォルダ内にファイルがアップロードされます。」、、か。
やってみよ!
はたして、、、?
(図2)
おお、、、入っとる!!
(図3)

以上

194_php_photo (Google Cloud Vision APIを勉強)

phpでファイルのアップロードします。
passをうまく伝えて、AI(google vision API)を動かすため。
ここを参考にしました。
http://www.php-labo.net/tutorial/php/upload.html
まずは 20170318_photo.html を作成し、以下のHTMLを書きます。
共用サーバなので、場所は、
/php_photo_20170318
のディレクトリを作成してここに保存
(=/home/dasudasu/wwwに作るのと同じ、、懐かしい。。。)
なので、
http://dasudasu.sakura.ne.jp/php_photo_20170318/20170318_photo.html
がアドレス
コードは、
======================
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>sample</title>
</head>
<body>
<form action=”upload.php” method=”post” enctype=”multipart/form-data”>
ファイル:<br />
<input type=”file” name=”upfile” size=”30″ /><br />
<br />
<input type=”submit” value=”アップロード” />
</form>
</body>
</html>
======================
うまくまずは表示OK!
(図1)

193_Google Cloud Vision APIを勉強

Google Cloud Vision APIを勉強
Google Cloud Vision APIを使って画像解析を試してみた(with PHP)

Google Cloud Vision APIを使って画像解析を試してみた(with PHP)


を参考に(っつうかそのまま)試してみます。すみません。

プロジェクトの作成
まずは、下記URLへアクセスか。。
https://console.cloud.google.com/home/
(図1)
「vision-project」で新プロジェクトを作成。
(図2)
おお、数秒したら、確かにプロジェクトできたワ!
(図3)
Google Cloud Vision APIを使用可能状態にする、、か。
検索ボックスに「vision」と入力。すると候補として「Cloud Vision API」が出てくるので選択
「有効化」をクリック!
(図4)
うーーーーん、課金情報を入れないと進まないのか。。今日はここまでにしよ!冷静になって。。
以上。

192_AI挑戦_h20ai (3)_続き_やってみた ・でもNG

さらに。。。多分データを追加して精度を上げたのかと思う。。。。
「日経平均のデータだけでなくいろんな国の指標を入れたら上手くいった(かも)
という感じでしたので、真似してみます。」
私はさらにそのマネ。。。。すみません。。。
データの準備
ダウンロードしたのは「日経平均、香港、Dow、FTSE 100」の四つ 。。。と。
あれ???どこからDLするんだろ????
ちょっと。。今日はここまで。。。。
(多分、同じ日付データを何種類か年月日でvlookマージして同じように確率をとるのかな。。。。????)
以上
本当(できなくて)すみません。。
—————————————————————
なので、、、、、、
データもサンプルをそのまま使わせていただいて、同じ事をやってみます。
(すみません。。。)
4情報のマージファイルは、そのまま。。。
「20170306_kabu_4data」
これを読み込みます。(すみません)
(図1)
 
parseします。
(図2)
 
さらに、setup perseします。
(図3)
 
jobでviewをします。
(図4)
 
splitします。
(図5)
 
createします。
(図6)
flame0.75を使う。
(図7)
 
Build Modelを選択します。「Deep Learning」を選択
(図8)
 
おなじように、

活性化関数 : RectifierWithDropout

  • 隠れ層 : 50,25
  • epoch(=学習回数?) : 1000
  • input_dropout_raito : 0.1
  • l1 : 0.001
  • l2 : 0.001
を設定して、Build Modelを押下
(図9)なんか時間かけてやっとる。。。。
 
viewを見る。
(図10)
 
結果。。。。
 どなんだろ?????
以上

191_AI挑戦_h20ai (2)_ファイル分割から

では続き!
①プロンプト
> cd Downloads\h2o-3.10.4.1
> java -jar h2o.jar
②Web
http://localhost:54321
C:\Users\h1729\Desktop\20170305_data_nkx_d
をインポート
parse
job
view
まで来て再度!続き!!!
「ファイルを分割」、、から
インポートしたデータを学習用のデータとテスト用のデータに分けます。
splitボタンを押して。。。と。
createを押す
(図1)
分割された。。。らしい。。
(図2)
学習にはframe_0.75を使う。。。らしい。。。
5.学習モデルの準備
Build Modelを選択
(図3)
で、DeepLearningを選択!
(図4)
・traning_frame(=学習データ)にframe_0.750を
・validation_frame(=テストデータ)にframe_0.250を
・responce_column(=予想したい列)にHighLowを
と。(そのまま。ごめんなさい。)
ハイパーパラメータの設定、、がややこしいらしい。。
合わせて、そのまま、、
活性化関数 : RectifierWithDropout
隠れ層 : 50,25
epoch(=学習回数?) : 1000
input_dropout_raito : 0.1
l1 : 0.001
l2 : 0.001
とします。(まったくなんのことやら????)
(図5)
で、BuildModelを押す。らしい。。。。
(図6)
何やら、結果が出たらしい。。。Viewを押します。
(図7)
上が「学習データ」における結果・下が「テストデータ」における結果。。。らしい???
(図8)
(私も)全てHighと予測されました
正解率は
学習用データで約53%?
テスト用データで約53%?
となりました。????
Webの先生も大失敗(多分データの精度の事?)、、と言っているので、私も失敗なのでしょう。
でも、私もツールの使い方は何となくわかりました。!
以上

190_AI挑戦_h20ai (1)_H2Oaiインストール

【プログラミング不要】ディープラーニング(h2o.ai)で株価予測をやってみた
を参考に、いよいよAIに触れてみる。
http://andoo.hatenablog.com/entry/deeplearning_kabu
「一通りの流れを自分でやってみたい」に賛成で、そのまま習って手順通りに。
データの準備
1.データのダウンロード
データが無いと何も始まりませんので、データを準備します。
今回はこちらのURLから日経平均のデータをダウンロードしました。
株価データ倉庫の無料データダウンロードページ
http://www.geocities.co.jp/WallStreet-Stock/9256/data.html
2.データ整形の考え方
上でダウンロードしたCSVファイルが、各行には「日付、始値、高値、安値、終値、出来高」が入ってます。
ディープラーニングでデータを入れる際にはそれぞれの行が独立したデータ扱いをされます。。。と。
前日との関連性を示すデータを持っていません。そこで、新規に前日との比較をする列を追加します。。。と。
HighLow列を加えて、各行に式を習っていれます。
=IF(E3<E2,”high”,if(E3>E2,”low”,”same”))
翌日が上がる場合はhighを
翌日が下がる場合はlowを
変化が無い場合はsameを
これでデータの準備ができましたので、このCSVファイルを使ってディープラーニングをやっていきましょう。
(私もできました。)
(図1)
実践、、、という事で。
ツールのインストールをするらしい。。
1.H2Oのインストール
ダウンロード・インストール方法はこちらのURLをご覧ください。、、と。
H2Oを使った未来予測 その準備と具体的使い方について | clew
http://antena.tokyo/h2o%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E6%9C%AA%E6%9D%A5%E4%BA%88%E6%B8%AC%E3%80%80%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AE%E8%AA%BF%E6%95%B4%E3%81%8C%E5%88%86%E3%81%8B#H2O
に行きます。
「新しくなった H2O 実際に使ってみよう」へ

Download


よりダウンロード。。か

(図2)
左下の「Download H2O Latest Stable Release」をクリック
(図3)
中央の「Download H2O 」をクリックして、zipファイルをDL
(図4)
手順も書いてある。。英語だけど。。。。
Get started with H2O in 3 easy steps
1. Download H2O. This is a zip file that contains everything you need to get started.
2. From your terminal, run:
cd ~/Downloads
unzip h2o-3.10.4.1.zip
cd h2o-3.10.4.1
java -jar h2o.jar
3. Point your browser to http://localhost:54321
さて、DL終了。
(図5)
では、コマンドプロンプトで指示どおりに。。。ごくっ。。。
h2o-3.10.4.1.zipがインストールされとるね。
(図6)
> unzip h2o-3.10.4.1.zip
(図7)
> cd h2o-3.10.4.1
> dir
(図8)
> java -jar h2o.jar
ENTER を押してズラズラ~とコマンドが動けば成功です。。。。と。
次にブラウザを開きます。
http://localhost:54321
へ、表示されました。。。どうやるんだろ??
(図9)
※注意:アクセスに使ったコマンドプロンプトを閉じてしまうとブラウザ上のH2Oもアクセス不能になります。使用中は付けっぱなしにしておいてください。。。。とな。
では、「importFiles Import file(s) into H2O」をやってみる。。。
ファイルは、
C:\Users\h1729\Desktop\20170305_data_nkx_d
では!
(図10)
次にparseを押したら、勝手に飲み込まれた様子。。。。
(図11)
Jobという画面が出ました!
(図12)
で、Viewを押します。アクションを選択できるようになります。。。と。
(図13)
ちなみにViewDataをみると、、、
(図14)
OKみたいね。。。
いったん終了。
このあと、ファイル分割へ!
以上

189_RPi>sakuravps側のcrontab設定_条件文でコメント変更

sakuravps側でのcrontab設定
passそのままなのでwarning出るので。。早めに直そ。
 
***************************
■crontabの設定
***************************
10 * * * * mysql -u ra******ai -pAa******56 20****301_m*****ure_se***or < 20170303_sql_ms_upd1
***************************
■crontabでSQL実行させるファイル”20170303_sql_ms_upd1″
試しSQL(OKになったもの)
***************************
UPDATE `ms_tbl` SET `adc`=100,`read_adc`=100,`volts`=100,`comment`=100  WHERE Num = 33;
***************************
UPDATE `ms_tbl` SET
`time_stamp` = CURRENT_TIMESTAMP,
`adc`=@adc_d,
`read_adc`=@read_adc_d
WHERE Num = @num_d;
***************************
SELECT Num, adc, read_adc into @num_d, @adc_d, @read_adc_d
from ms_tbl WHERE Num IN (SELECT max(Num) FROM ms_tbl);
UPDATE `ms_tbl` SET
`time_stamp` = CURRENT_TIMESTAMP,
`adc`=@adc_d,
`read_adc`=@read_adc_d,
`volts` = (
case when @read_adc_d > 50
        then ‘read_adc>50’
     when @read_adc_d < 20
        then ‘read_adc<20’
else
        ‘read_adc=20-50’
end),
`comment` = ‘2017/03/04_chg_comment’
 WHERE Num = @num_d;
***************************

188_RPi>sakuravps, crontab設定

RPi_2のcrontab設定です。
まずはRPiでのダミーデータ(ランダム関数)を生成し、
それをsakuravpsに提示転送、グラフ表示まで!

****************
RPi_1のcrontab(参考)
****************
50 * * * * sudo python 20170205_pytosql6.py
51 * * * * sudo python 20170206_sndsak2.py
30 * * * * sudo python 20170211_tmp1sql1.py
31 * * * * sudo python 20170206_sndsak2.py
****************
RPi_2のcrontab
****************
10 * * * * sudo python 20170227_pytosql1.py
11 * * * * sudo python 20170303_snd_skr_ms1.py
以上