前提環境
メモリが8GByteないと正常動作しないのでt2.largeを選択
EC2にSSH接続
お決まりのパッケージ更新
sudo yum update -y
Dockerインストール
sudo amazon-linux-extras install docker
Is this ok [y/d/N]:と聞かれたら
yリターン
docker起動
sudo service docker start
YOLO物体検知API起動
sudo docker run -p 80:80 registry.gitlab.com/sleepless-se/imageai_object_detection_api
デーモンとして起動する場合
sudo docker run -d -p 80:80 registry.gitlab.com/sleepless-se/imageai_object_detection_api
セキュリティグループからhttpのインバウンドを許可する
client.php(ファイルをアップロードするページ)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
</style>
</head>
<body>
<form method="POST" action="./api.php" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" />
</form>
</body>
</html>
api.php(アップロードされたファイルを受け取りAPIをコール)
<?php
$curl = curl_init();
$api_url = 'http://xxx.xxx.xxx.xxx/predict'; <- EC2のIPアドレスを設定
$cfile = new CURLFile($_FILES["file"]["tmp_name"],'image/jpeg','test_name');
$params = array('image' => $cfile);
curl_setopt($curl, CURLOPT_URL, $api_url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data'));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $params );
$data = curl_exec($curl);
curl_close($curl);
$res = json_decode($data);
$person_count = substr_count($res, 'person');
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
</style>
</head>
<body>
<div>
<?php print_r($res); ?>
</div>
<a href="./client.php">戻る</a>
</body>
</html>
ブラウザでclient.phpにアクセス
画像を選択し「送信」ボタン押下で
解析結果が表示される。