AWS EC2でYOLOをAPI化して物体検出

前提環境

メモリが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にアクセス

画像を選択し「送信」ボタン押下で

解析結果が表示される。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です