Dlibで顔認識できるDockerコンテナを作る
Pythonに学ばされたこと、DockerでDlibの環境構築をしたこと、Falconの実装例なども近いうちに記事にしたいと思います。
こちらの記事に予告*1していた通り、Dockerコンテナ上でDlib(特にface_recognition)を使うための環境構築の記事です。
Dlibとは
DlibはC++のライブラリ(OSS)です。機械学習を行う際に必要なアルゴリズムやツール群を持っています。 また、Python用のAPIも用意されているため、機械学習関連では人気のライブラリです。 詳細は公式サイトを確認してください。
作成したdockerfile
FROM python:alpine RUN apk add --no-cache make cmake gcc g++ zlib-dev jpeg-dev ENV PROJECT_DIR="/app/" ADD app/ $PROJECT_DIR WORKDIR $PROJECT_DIR RUN pip install -r requirements.txt
https://github.com/nagamoto/docker-sample/blob/master/dlib/dockerfile
解説
FROM python:alpine
Pythonが使用できる公式イメージを利用しています。中でも軽量とされているalpineを採用しました。
RUN apk add --no-cache make cmake gcc g++ zlib-dev jpeg-dev
必要なパッケージをインストールしています。
Dlibを使用するためにビルドするmake cmake。
コンパイルのためにgcc, g++。
ビルド・コンパイル時に圧縮・展開するためzlib-dev。
画像を扱うためjpeg-dev。
ENV PROJECT_DIR="/app/"
便宜上dockerfileから下の階層にアプリに関するデータ置くためです。
ADD app/ $PROJECT_DIR
appフォルダ内のファイルをコンテナに追加しています。
WORKDIR $PROJECT_DIR
コンテナ内でのチェンジディレクトリです。
RUN pip install -r requirements.txt
appフォルダ内にあるrequirements.txtに従ってPythonライブラリをインストールします。
face_recognition.pyにはdlibとnumpyをpip installする必要があると記載されていたので、requirements.txtにはdlibとnumpyを記述するといいでしょう。 http://dlib.net/face_recognition.py.html
最後に
できるだけ軽量に余計なものがないように構築したつもりですが、もっと軽量にする方法を知っていたら教えて欲しいです。
*1:近いうちという予告から4ヶ月以上経過しています…