yoloが動くDockerイメージを作る
はじめに
yoloが動作する機械学習ノードをいい感じに作っていたのですが,コミットしていたイメージがでかくなりすぎてpullできなくなってしまいました.
どうも15GBあたりのイメージになるとメモリ関連とかでpullできなくなってしまうらしいです.
コミットしていたりして使えなくなるとひたすらに辛さを感じるので,ちゃんとDockerfile書きました.
Dockerfile
FROM nvidia/cuda:9.0-cudnn7-devel-ubuntu16.04 RUN apt update -y && apt upgrade -y RUN apt -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip vim RUN mkdir /root/Sources WORKDIR /root/Sources RUN git clone https://github.com/opencv/opencv.git RUN git clone https://github.com/opencv/opencv_contrib.git RUN mkdir opencv/build RUN cd opencv/build && cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/root/Sources/opencv_contrib/modules -D WITH_CUDA=ON .. && make -j5 && make install RUN ldconfig ADD darknet /root/darknet WORKDIR /root/darknet RUN make -j5 RUN make install
説明
使用するイメージの検討に関しては↓の記事を読んで検討してください. cut-ter.hatenablog.com
基本的に最初はopencvをビルドして,その後にyoloのビルドをしています.
yoloのビルドは,Makefileで色々パラメータをいじる必要があるので外部からADDするようにしています.
Dockerfileと同階層に↓からyoloを持ってきて,Makefileをお好きなパラメーターに書き換えてください.
Opencvとcudaを使用するように設定して動作することは確認してあります.
Dockerでビルドした後に軽量化とかしてないのでひたすらにでかいのでよくないDockerイメージの例ですね.
Dockerのあるバージョンからビルド部分を切り離したりできるようになったらしいのでその辺調べてイメージをちゃんと軽量化したらdockerhubとかにあげたいですね.