スポンサーリンク

【物体検出】「YOLO」の開発環境をDocker上に構築する方法。〜 GPU あり・なし両方 〜

YOLO
スポンサーリンク

今回の記事はDocker上にYOLOの開発環境を作る方法をご紹介していきます。YOLOの開発環境は正直なかなか構築手順が定まっていないように感じているのでこの機会に自身のPCの環境にぐらいは適したDockerコンテナを作ってみようという考えです。

今回の記事のゴール目標は、Docker上にYOLO・Darknetの環境を構築して、その環境で任意の画像をYOLOの処理によって領域検出するところまで行ってみようと考えたいます。

スポンサーリンク

YOLO開発環境環境とDockerバージョン

Docker version 19.03.12

dockerimageのPythonは下記
python  3.6

YOLOの既存のWeightは下記を利用(通常のyolov3はダウンロード時間的にNG)
yolov3-tiny

以上が今回のバージョン全て

Dockerコマンド内での操作

まずは、GPUがあるバージョンとないバージョンで設定など微妙に違います。まずはGPUを使用しないバージョンから説明していきます。

GPU使用しない場合

非常に簡単です。まずは、dockerコンテナを立ち上げます。Pythonのimageを使用してdockerコンテナを起動していきますが、Pythonのimageをまだ持っていない方は適宜pullで取ってきてください。

docker run -it -p 8888:8888 [imageのID] /bin/bash

こちらでコンテナの起動とbash

を開けてると思いますのでこのまま操作を行なっていきます。

まずはDarknetを撮ってくる必要があるのでgitよりインストール。そのためにまずはDockerコンテナ内にgitをインストールしておきます。必要になるのでvimも同時にインストールしておきましょう。

apt-get update
apt get install git vim

途中でyesとか入力すれば問題なくインストールできます。完了後は下記でレポジトリをcloneしていきます。

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

レポジトリをクローンしてそのレポジトリないでmakeコマンドを使用する感じです。これでなんと準備完了です。GPUを使用する場合はここで少し記述をいじる必要がありますが今は置いておきましょう。

次にこのディレクトリ上で下記を実行しYOLOの学習ずみモデルをダウンロードしてください。

wget https://pjreddie.com/media/files/yolov3.weights

以上全て完了すれば下記を実行してみてください。
うまく検出できていると思います。

./darknet detect cfg/yolov3.cfg yolov3.weights data/eagle.jpg

GPU使用する場合

自身のPC端末がGPUを積んでいるかが重要です。もちろん積んでいないとGPUは使用できません。また、docker上でコンテナ作成を行うばいは2020/段階ではmacOS上でGPU対応の環境環境構築を行うことができると言う旨の記事を見つけられておりませんので素直にUbuntuにインストールするのが吉なのかもです。もしくはdockerを諦めてAWSやABCIなどを利用するなどの方法が良いと思われます。

nvidea-dockerを使用し、imageからdockerコンテナを作成する方法に関しては下記を参照ください。

GPU使用する場合の処理の変更は基本的にほぼありません。自身のPCがGPUを積んでいるかどうかのみで積んでいる場合は上記の「make」前にMakefileを少しだけ変更するのみです。では手順を再度行なっていきます。


apt-get update
apt get install git vim
git clone https://github.com/pjreddie/darknet.git
cd darknet

[ここで追加の操作あり]

make
wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/eagle.jpg

ではその追加の操作を示していきます。

docker内ですのでvimを使用します。

vim Makefile

一番上にGPU=0になっている箇所があるので下記のように変更
GPU=0 → GPU=1
〜(省略)〜

保存してmakeからは同じ手順。

何が一番めんどくさいかと言うとやはりdockerを新しくするのがめんどくさいですね。。

上記内容はこちらのサイトを参考にさせていただきました。非常にわかりやすくまとめていただいております。こちらのサイトにはDockerfileもあるようなのでdockerfileのbuildのみで環境作れちゃうと思います。

dockerでGPUは必要かどうかに関して比較してみた記事も書いたので下記をご参照ください。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

YOLO
スポンサーリンク
スポンサーリンク
ともぶろぐ

コメント

  1. […] […]

  2. […] ・YOLO非常に処理が早いことが有名なYOLOです。上記の手法とは別の方法で物体検出を行なっていることが大きいそうです。チュートリアルはあるのですが、C言語で書かれているのそのあたりが少し問題です。ただし、最近はラッパーが出てきているという噂もきております。こちら過去に記事を書いておりますんのでこちらをご参照ください。 […]

タイトルとURLをコピーしました