カッティングボード

カルマをカットしてます

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をお好きなパラメーターに書き換えてください.

pjreddie.com

Opencvとcudaを使用するように設定して動作することは確認してあります.

Dockerでビルドした後に軽量化とかしてないのでひたすらにでかいのでよくないDockerイメージの例ですね.

Dockerのあるバージョンからビルド部分を切り離したりできるようになったらしいのでその辺調べてイメージをちゃんと軽量化したらdockerhubとかにあげたいですね.