DockerでYOLO v3
概要
Dockerでkeras-yolo3をGPUで動かしました.
github
Dockerfile
FROM nvidia/cuda:9.0-cudnn7-devel # apt RUN apt update RUN apt install -y bzip2 wget git imagemagick # install Anaconda3 RUN wget -q https://repo.continuum.io/archive/Anaconda3-5.0.1-Linux-x86_64.sh RUN touch .bashrc RUN bash Anaconda3-5.0.1-Linux-x86_64.sh -b ENV PATH $PATH:/root/anaconda3/bin # pip install RUN pip install tensorflow-gpu==1.12.0 keras pillow matplotlib # git clone keras-yolo3 RUN git clone https://github.com/qqwweee/keras-yolo3.git WORKDIR /keras-yolo3 # download weights RUN wget -q https://pjreddie.com/media/files/yolov3.weights RUN python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5 # mount dir(外から画像を置く) RUN mkdir input_img CMD ["python", "yolo_video.py", "--image"]
インストール
imagemagic
今回はこれにハマりました.yoloはPILで画像を表示していて,PILはimagemagicで画像を表示しているようです.
Anaconda3
apt install python3-pip
では面倒そうな問題が起こったのでAnacondaを入れました.容量問題がありますが今回は気にしないことにします.
tensorflow-gpu
CUDA9.0に対応しているtensorflow-gpu1.12.0を入れています.
keras-yolo3
githubからcloneしたのち,ディレクトリに移動します.
weights
githubの手順通りにweightsをダウンロードしてkeras用にコンバートします.
mount
keras-yolo3/
の下に試したい画像を置くためのディレクトリを作っておきます.お試しなので適当です.
CMD
yolo_video.py
を実行すればyoloが動きますが,--image
オプションで画像モードにしています.お試しなので適当です.
docker run
docker run -it --rm \ -v ~/path/to/input_img/:/keras-yolo3/input_img \ keras_yolo3
でrunするとimageモードに入って入力画像のパスが要求されるのでinput_img
に画像を置いて指定すれば物体検出をしてくれます.
しかしながらX Window System的なあれで結果画像は表示されません.
dockerでGUI
お試しなればこそ結果画像を表示させたいので↑を参考にさせて頂きました.
imagemagicはここで必要になります.あとは参考の
X11アプリケーションのDockerコンテナを起動する
のオプション通りです.
docker run -it --rm -v ~/path/to/input_img/:/keras-yolo3/input_img -v $HOME/.Xauthority:/root/.Xauthority -e DISPLAY=$DISPLAY --net host keras_yolo3
結果
親の顔より見た画像