Rakuten AI APIコンテスト向けに作ったAPI/アプリの開発手順を書いておきます。
目的: クラウドとDockerを使った機械学習API/アプリ開発
ツール等: Python, Flask, Docker, Google Cloud Platform
仕様: 入力した写真から顔を読み取り、自動で顔部分にモザイク処理
完成形のイメージはこんな感じです。
ローカル環境で顔認識とモザイク処理を行うアプリ部分の開発を進めて、Dockerで丸っとそのままGCPに乗せる感じです。
まずはローカル環境で動作するアプリをFlaskで作っていきます。
大まかな流れとしては
1. POSTメソッドでHTTPリクエストを受け取る
2. 受け取った画像ファイルをバイナリに変換
3. mosaic関数で顔部分を縮小、拡大することでモザイク処理
4. モザイク処理後の画像をストレージに書き出し
5. アプリの場合は画像のURL、APIの場合はバイナリデータを返す
下のコードがこの処理を行っている部分です。
残りのコードはGithubに載せておきました。
https://github.com/inuinana/auto_face_pixelator
↑を git clone、該当ディレクトリに移動したら
“docker build . -t auto_mosaic”
でDockerイメージの作成。
(Dockerがない場合はダウンロードしてください)
“docker run -d -p 5000:5000 auto_mosaic”
でDockerfileの最後の行にある”CMD python3 app.py”でFlaskアプリをスタートさせます。ポート番号はデフォルトの5000番にしました。
その後ブラウザ上でlocalhost:5000にアクセスして、アプリが動いていることを確認します。
ここまでの部分でローカル環境でFlaskを使ったwebアプリ上での顔認識、
モザイク処理ができるようになっているはずです。
ここまで読んでくださってありがとうございました。
質問やコメントがあれば喜びます。
次回はGCPへのデプロイ方法について書きます。
Aki