LoginSignup
1
5

More than 1 year has passed since last update.

【リアルタム物体検知】YOLACT for win10+webcam【セグメンテーション検出】

Last updated at Posted at 2021-06-16

➊はじめに

Google ColabにてYOLACTのパワーを確認できたけど、やっぱりローカルPCwebcamを使用して、セグメンテーション検出のリアルタイム性を確認してみたいと思いました。
yolact

NVIDIA製GPUを持っていないという方、Google Colabのみで楽しめる記事もありますので、こちらをご参照ください。

➋やること

ノートパソコンであるDELL XPS15( win10 + CUDA10.1 + webcam )で、YOLACT(YOLACT++)を試走させます。

カテゴリ SPEC
OS Windows 10 Pro(21H1)
CPU Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz × 4
RAM 16.0 GB
GPU NVIDIA GeForce GTX 1050

➌YOLACT試走

詳細は、本家「YOLACT」をご参照ください。

(1)CUDAの確認

コマンドプロンプトから、CUDAのバージョンを確認します。
CUDAが既にインストールされている場合は(2)へお進みください。

CommandPrompt
nvcc -V

【結果】
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:12:52_Pacific_Daylight_Time_2019
Cuda compilation tools, release 10.1, V10.1.243

NVIDIA社製のGPUがあるものの、まだCUDAをインストールしていなかったら、以下、Build ToolCUDAを落とし、順にインストールしてください。

順番 ツール ダウンロード
1 Build Tool Build Tools for Visual Studio 2019
2 CUDA cuda-toolkit-archive

■Build Toolインストール

ダウンロードはこちらから。

※Build Toolをインストールした際に、コンパイラであるcl.exeに、PATHが通っていることを確認してください。where clコマンド結果が、以下の様に表示されればPATHは通っています。PATHが通っていない場合は、PATHを通してください。

CommandPrompt
where cl

【結果】
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30037\bin\Hostx64\x64\cl.exe

■CUDA10.1インストール

ダウンロードはこちらから。インストールするのは、CUDA10.1 update2で良いと思います。

(2)python環境の構築

Anacondaを利用し、Pythonの仮想実行環境を構築します。

CommandPrompt
conda create -n yolact37 python=3.7
conda activate yolact37

(3)yolactインストール

YOLACTをgitからCLONEします。

CommandPrompt
git clone https://github.com/dbolya/yolact
cd yolact

YOLACTを動作させるためのライブラリを追加します。

CommandPrompt
pip install cython matplotlib opencv-python "pillow<7.0" PyQt5
pip install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"
pip install torch==1.2.0 torchvision==0.4.0 -f https://download.pytorch.org/whl/torch_stable.html

(4)モデル、画像、映像のダウンロード

google driveからダウンロードするツールをインストールします。

■download_google_driveインストール

CommandPrompt
git clone https://github.com/chentinghao/download_google_drive.git
pip install requests tqdm

■格納ディレクトリの作成

ディレクトリ名 使用用途
d_sample サンプル画像、動画を格納
d_sample_out 評価画像、動画の出力先
d_weights モデルを格納
CommandPrompt
mkdir d_sample d_sample_out d_weights

■YOLACTモデルのダウンロード

CommandPrompt
python download_google_drive/download_gdrive.py 1yp7ZbbDwvMiFJEq4ptVKTYTI2VeRDXl0 d_weights/yolact_resnet50_54_800000.pth

■画像&動画のダウンロード

CommandPrompt
python download_google_drive/download_gdrive.py 13c8VOHdIxPzZSmenpxT31z3lnZemsPSo d_sample/pic01.jpg
python download_google_drive/download_gdrive.py 1NHjz_PguT1UVGzrsdJDpwM8AgoaTU7w2 d_sample/mov01.mov

(5)評価

■画像

CommandPrompt
python eval.py --trained_model=d_weights/yolact_resnet50_54_800000.pth --score_threshold=0.15 --top_k=15 --image=d_sample/pic01.jpg:d_sample_out/pic01.jpg

【結果】
--score_threshold=0.15で実行。う~ん………手前側(写真左側)にいるpersonを認識できていないようです。
pic01.jpg

■動画

CommandPrompt
python eval.py --trained_model=d_weights/yolact_resnet50_54_800000.pth --score_threshold=0.5 --top_k=15 --video_multiframe=1 --video=d_sample/mov01.mov:d_sample_out/mov01.mov

【結果】
--score_threshold=0.5で実行。かなり認識率は良いですね。sports ballの認識率が少々低いです。
Processing FPS: 0.00 | Video Playback FPS: 8.82 | Frames in Buffer: 0 %) 8.82 fps
mov01.mov

■webcam

--video=0の数値を1とか2へ変更すると、PCに接続されている別のwebcamのデバイスに切り替えることができます。

CommandPrompt
python eval.py --trained_model=d_weights/yolact_resnet50_54_800000.pth --score_threshold=0.5 --top_k=15 --video_multiframe=1 --video=0

【結果】
認識率は、かなり良い結果です!お手をしたときでも、きちんとdogpersonを認識しています。もっと性能の良いGPUを使用するとヌルヌル動作すると思うとワクワクします。
Processing FPS: 9.61 | Video Playback FPS: 9.53 | Frames in Buffer: 2
yolact

➍YOLACT++試走

YOLACT++は、YOLACTよりも、mAP値が高いモデルです。
YOLACT++を使用するには、DCNv2コードをコンパイルする必要があります。

(1)DCNv2を有効化

■DCNv2コンパイル

なぜか.../external/DCNv2までカレントを移動しないと、eval.pyがうまく動作しなかったので、きちんと「cd」で移動することをオススメします。setup.py実行後「yolact」ディレクトリまで戻ります。

CommandPrompt
cd external/DCNv2/
python setup.py build develop
cd ../../

■YOLACT++モデルのダウンロード

CommandPrompt
python download_google_drive/download_gdrive.py 1ZPu1YR2UzGHQD0o1rEqy-j5bmEm3lbyP d_weights/yolact_plus_resnet50_54_800000.pth

(2)評価

■画像

CommandPrompt
python eval.py --trained_model=d_weights/yolact_plus_resnet50_54_800000.pth --score_threshold=0.15 --top_k=15 --image=d_sample/pic01.jpg:d_sample_out/pic01++.jpg

【結果】
--score_threshold=0.15で実行。YOLACTよりもYOLACT++の方が、多くのpersonを認識していますね!
pic01++.jpg

■動画

CommandPrompt
python eval.py --trained_model=d_weights/yolact_plus_resnet50_54_800000.pth --score_threshold=0.5 --top_k=15 --video_multiframe=1 --video=d_sample/mov01.mov:d_sample_out/mov01++.mov

【結果】
--score_threshold=0.5で実行。sports ballの認識率がかなり良くなって、バランスが良いです。
Processing FPS: 0.00 | Video Playback FPS: 6.48 | Frames in Buffer: 0 %) 6.48 fps
mov01++.mov

■webcam

--video=0の数値を1とか2へ変更すると、PCに接続されている別のwebcamのデバイスに切り替えることができます。

CommandPrompt
python eval.py --trained_model=d_weights/yolact_plus_resnet50_54_800000.pth --score_threshold=0.5 --top_k=15 --video_multiframe=1 --video=0

【結果】
Processing FPS: 7.40 | Video Playback FPS: 7.26 | Frames in Buffer: 2
動画の記事アップロードは割愛します。

➎以上

やっぱりですが、自分のNotePC搭載のへっぽこGPUでは、8~9FPSくらいしかでませんでした。数年後にはモバイル端末からでもヌルヌル動作するものがでてくるんでしょうね。そろそろPCの買い替えをしたくなってきました。とはいえ性能の良いGPUを入れると爆音がなっちゃうのヤダなぁ…

お疲れ様でした😊

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5