スポンサーリンク

Falcon(Python)で画像分類(apple-orange)のWebAPIとPHPフロントエンド

諸事情により、Wordpressのドメインから、pythonのWEB APIサーバに画像を送り、結果をWordpressのドメインで受け取って表示をしたい!

そのためには、

(1)バックエンドとして、Facon(Python)で、画像を受け取って、画像分類の結果w返すWEB APIを構築

(2)フロントエンドとして、PHPで、画像をWebAPIに送って、結果を受け取って表示するページを構築

する必要がある。できるかな?

(環境)
Panasonic CF-RZ4
Windows 8.1 Pro
Anaconda 4.4.0
Python 3.5
PHP 5.6.23

(1)バックエンドの構築

FalconというPythonのWEB API作成用フレームワークを使用する。インストールなどは以下のリンクへ。

http://twosquirrel.mints.ne.jp/?p=20670

モデルの構築、学習などは、以下のリンクへ。

http://twosquirrel.mints.ne.jp/?p=19448

下記に、apple_orange_model.jsonと、apple_orange_weights.h5の作成方法を記載。

http://twosquirrel.mints.ne.jp/?p=20440

ということで、フォルダ構成は以下の通り。

falcon.predict.py を、以下のように記載して保存。

 

(2)フロントエンドの構築

Windowsのローカル環境でxamppを起動し、phpを用いる。

C:/xampp/htdocs/ の中に、index.html と、api.php を作成し、以下のコードをコピペ。

https://github.com/adash333/falcon_apple_orange/blob/master/index.html

api.php を変更してみる。

localhost で、index.html を開いて、適当な画像をアップロードしてsubmit

コマンドプロンプト

curl -X POST http://localhost:8000/debug -H "Content-Type: multipart/form-data" -F "file=@pikachu.jpg"

 

(3)おの、最後に、bool(true)が余計で非常に困った。

https://stackoverflow.com/questions/37811377/php-json-decode-returns-int1

curl_exec($ch) のせいで、最後にbool(true)がかえってきてしまうらしい。非常に困った。

https://qiita.com/kkyouhei/items/bc70a6974fb02f9a45f1

phpのcurlの結果はデフォルトで"出力"されるので注意
eiryu
2015年11月20日に更新
https://qiita.com/eiryu/items/bdcc91fee0f6e33f13d8

おおっ?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

stdClass Object ?

2007-08-06
■[php]phpで、json_encodeした配列に、json_decodeするとオブジェクトで返って来てしまう
http://d.hatena.ne.jp/kasahi/20070806/1186419785

=> 第2引数にtrueを入れると、配列になるとのこと

配列の中身を取り出して表示する。

やっと、やりたかったことができそう。

phpのコードは以下に記載。

全体のコードは、以下のリンクへ

https://github.com/adash333/falcon_apple_orange

(参考)

フォームデータを送信する
https://developer.mozilla.org/ja/docs/Learn/HTML/Forms/Sending_and_retrieving_form_data