A certain engineer "COMPLEX"

開発メモ その169 M2DetをUbuntu18.04で使ってみる(デモ編)

Introduction


2019年最新のObject DetectionであるM2Detを使ってみます。
目標は自作のデータセットを使うこと。
まずはサンプルを実行してみます。

How to


公式ページはこちら。

M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network - qijiezhao/M2Det

なお

  • 推奨はAnacondaのようですが、ピュアなPythonで試します。
  • Python 3.6.7
  • CUDA 9.2

という前提です。

仮想環境構築

仮想環境を作成しアクティベートします。


sudo apt-get install python3-venv python3-tk
python3-m venv M2Det
source M2Det/bin/activate

環境変数設定

CUDAの環境変数を設定します。
設定済みならスキップ。


VERSION=9.2
export CUDA_HOME=/usr/local/cuda-${VERSION}
export PATH=/usr/local/cuda-${VERSION}/bin:${PATH}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${CUDA_HOME}/lib64

設定後、下記のコマンドで確認を行います。


$ nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2018 NVIDIA Corporation
Built on Tue_Jun_12_23:07:04_CDT_2018
Cuda compilation tools, release 9.2, V9.2.148

パッケージのインストール

M2DetPyTorch0.4.1をサポートと明言していますので従います。
古いバージョンは下記のページから入手します。
自分の環境のCUDAと合わせて適切なファイルをダウンロードします。

An open source deep learning platform that provides a seamless path from research prototyping to production deployment.

今回はtorch-0.4.1-cp36-cp36m-linux_x86_64.whlになります。
なお、途中の--cache-dirは、自環境でディスク容量不足のエラーが出たための対策です。


$ python -m pip install torch-0.4.1-cp36-cp36m-linux_x86_64.whl
Processing ./torch-0.4.1-cp36-cp36m-linux_x86_64.whl
Could not install packages due to an EnvironmentError: [Errno 28] デバイスに空き領域がありません

wget https://download.pytorch.org/whl/cu92/torch-0.4.1-cp36-cp36m-linux_x86_64.whl

python -m pip install pip --upgrade
python -m pip install numpy
python -m pip install --cache-dir=./cache --build ./cache torch-0.4.1-cp36-cp36m-linux_x86_64.whl
python -m pip install torchvision
python -m pip install opencv-python tqdm
python -m pip install cython matplotlib addict termcolor python3-tk

インストール後、下記のようにしてPyTorchがCUDAを認識しているかどうかを確認します。


$ python
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>> torch.cuda.get_device_name(0)
'GeForce GTX 1080'

ソースの入手


git clone https://github.com/qijiezhao/M2Det.git

pycocotoolsとnms

ソースに付属のスクリプトを使ってpycocotoolsnmsをインストールします。


cd M2Det
chmod +x make.sh
./make.sh

デモ

まず、pretrainedファイルをダウンロードします。

ダウンロードしたファイルはどこでもいいので移動します。
そして、下記のコマンドを実行します。
ダウンロードしたファイルの移動先をどこでもよいといったのは、-m引数にダウンロードしたファイルのパスを指定するからです。


python demo.py -c=configs/m2det512_vgg.py -m=m2det512_vgg.pth --show

実行時はGUI画面が必要です。SSHからだと、


pos:(15.4,175.9,34.7,213.7), ids:handbag, score:0.009
pos:(97.1,248.4,128.3,304.3), ids:handbag, score:0.002
: cannot connect to X server

とエラーが出るためです。
ただし、--showを外しせば画面には表示されません。
出力結果がimgsディレクトリに書き出されます。

GUI上で実行すると下記のように画像が一定間隔で切り割って結果が表示されます。
(クリックして拡大するとアニメーションします)

ちなみに、実行時のGPUの使用メモリは約3600MBでした。

コメントを残す

メールアドレスが公開されることはありません。

%d人のブロガーが「いいね」をつけました。