➊はじめに
Google Colab
にてYOLACTのパワーを確認できたけど、やっぱりローカルPC
+webcam
を使用して、セグメンテーション検出のリアルタイム性を確認してみたいと思いました。
※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)へお進みください。
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 Tool
とCUDA
を落とし、順にインストールしてください。
順番 | ツール | ダウンロード |
---|---|---|
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を通してください。
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の仮想実行環境を構築します。
conda create -n yolact37 python=3.7
conda activate yolact37
(3)yolactインストール
YOLACTをgitからCLONEします。
git clone https://github.com/dbolya/yolact
cd yolact
YOLACTを動作させるためのライブラリを追加します。
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インストール
git clone https://github.com/chentinghao/download_google_drive.git
pip install requests tqdm
■格納ディレクトリの作成
ディレクトリ名 | 使用用途 |
---|---|
d_sample | サンプル画像、動画を格納 |
d_sample_out | 評価画像、動画の出力先 |
d_weights | モデルを格納 |
mkdir d_sample d_sample_out d_weights
■YOLACTモデルのダウンロード
python download_google_drive/download_gdrive.py 1yp7ZbbDwvMiFJEq4ptVKTYTI2VeRDXl0 d_weights/yolact_resnet50_54_800000.pth
■画像&動画のダウンロード
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)評価
■画像
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
を認識できていないようです。
■動画
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
■webcam
--video=0
の数値を1とか2へ変更すると、PCに接続されている別のwebcamのデバイスに切り替えることができます。
python eval.py --trained_model=d_weights/yolact_resnet50_54_800000.pth --score_threshold=0.5 --top_k=15 --video_multiframe=1 --video=0
【結果】
認識率は、かなり良い結果です!お手をしたときでも、きちんとdog
、person
を認識しています。もっと性能の良いGPUを使用するとヌルヌル動作すると思うとワクワクします。
Processing FPS: 9.61 | Video Playback FPS: 9.53 | Frames in Buffer: 2
➍YOLACT++試走
**YOLACT++**は、YOLACTよりも、mAP値
が高いモデルです。
**YOLACT++**を使用するには、DCNv2
コードをコンパイルする必要があります。
(1)DCNv2を有効化
■DCNv2コンパイル
なぜか.../external/DCNv2
までカレントを移動しないと、eval.py
がうまく動作しなかったので、きちんと「cd
」で移動することをオススメします。setup.py
実行後「yolact
」ディレクトリまで戻ります。
cd external/DCNv2/
python setup.py build develop
cd ../../
■YOLACT++モデルのダウンロード
python download_google_drive/download_gdrive.py 1ZPu1YR2UzGHQD0o1rEqy-j5bmEm3lbyP d_weights/yolact_plus_resnet50_54_800000.pth
(2)評価
■画像
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
を認識していますね!
■動画
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
■webcam
--video=0
の数値を1とか2へ変更すると、PCに接続されている別のwebcamのデバイスに切り替えることができます。
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を入れると爆音がなっちゃうのヤダなぁ…
お疲れ様でした😊