Windows10のPythonからYOLACT++するためにやったこと2020年10月版

ということでタイトルがややこしくなりましたが、目的としては「動画に映り込んだカーナンバーとか人物を消し去りたい」ってことです。

前回の記事では「Windows10のPythonからOpenCVでTensorFlowするためにやったこと」ということだったんですが、いろいろ進めているうちに本当にやりたかったのはYOLACT++なんじゃないかってことで今回の記事になります。

んで、前回の終わりに軽く入れたんですが、見事にダメだったんですよね。
新しすぎて。

今回は、バージョンを落としてやっていってみたいと思います。

事前条件

前回の続きとなるので詳しいところは前回の記事で確認してください。

インストール環境

Windows10 64bit

Windows10を選んだ理由

そもそもWindows10で作る前に、iMac2015 で作りました。
ですがCPUパワーが足りないのでWindows10でやることにしました

ちなみにこのマシンの詳細は下記をご覧ください
https://aulta.co.jp/archives/6705

各種セットアップ

それでは作業した順番に進めていきます。

ちなみにユーザー名とかディレクトリ名なんかはそのまま使ってますので、ご自身の環境に合わせて読み替えてください。

前回の続きなので、Visual Studio とかは省略します。前回の記事を確認してください。

Python のインストール

前回インストールしたPython3.8だと新しすぎてダメっぽいので、1つ前の3.7を入れていきます。

Pythonの複数バージョン同居環境は可能なことは事前に調査済みです。

ダウンロードURL
https://pythonlinks.python.jp/ja/index.html

python-3.7.9-amd64.exe
ダウンロードして実行
※tensorflowが3.8までしか対応していなかったけど、YOKACT++は3.7でないとダメっぽい

Add Python 3.6 to PATH
チェックしない

Install Now

Close

win + r cmd

py
print('Hello World!')
exit()

py --version

# 前回 3.8 を入れているので
py -3.8 --version

# 同居できている
py -3.7 --version

【参考サイト】

virtualenv

REM インストール
py -3.7 -m pip install virtualenv

REM 仮想環境を作成
REM ここでは py37yolactpp という名前にする
py -3.7 -m virtualenv D:\python\venv\py37yolactpp

【参考サイト】

Python環境構築ガイド 〉 Windows 環境のPython > 仮想環境

環境変数を加える

D:\python\venv\py37yolactpp\Scripts\activate.bat

先頭に次のように SET PATH の2行を加える

@echo off

SET PATH=C:\Users\★\AppData\Local\Programs\Python\Python37\Scripts;%PATH%
SET PATH=D:\apps\cmake-3.19.0-rc1-win64-x64\bin;%PATH%
SET PATH=D:\apps\ffmpeg-N-99577-g2b5e18a953-win64-gpl-vulkan\bin;%PATH%

Python37のScripts、cmake、ffmpegのパスを設定
ここに設定することで、環境変数は触らない

virtualenv アクティベート

REM アクティベート
D:\python\venv\py37yolactpp\Scripts\activate.bat

REM 解除
deactivate

pip

virtuallenv してから upgrade する

py -3.7 -m pip list

REM 更新したくなるけど一旦やめておく
REM py -3.7 -m pip install --upgrade pip
REM py -3.7 -m pip install --upgrade setuptools
REM py -3.7 -m pip list

その他いろいろ pip

無くても構わないpipもあると思うんだけど、試行錯誤しながらだったので、そのまま全部乗せで。(次の機会があれば整理するかも)

REM opencv / contrib付き
py -3.7 -m pip install opencv-contrib-python

REM imutils
py -3.7 -m pip install imutils

REM dlib
py -3.7 -m pip install dlib

REM tensorflow
py -3.7 -m pip install tensorflow

REM keras
py -3.7 -m pip install keras

REM pillow
py -3.7 -m pip install pillow

REM h5py
py -3.7 -m pip install h5py

インスタンスセグメンテーション

YOLACT++を使います。

https://github.com/dbolya/yolact.git

Cloneしたら良いんだけど、ここはzipで。

アクセスして「Download ZIP」からでダウンロードします。
yolact-master.zip

▼どこでも良いんだけど今回はこちらに解凍

D:\projects\★\★\system\yolact-master

いろいろインストール

d:
cd D:\projects\★\★\system\yolact-master

py -3.7 -m pip install opencv-python
py -3.7 -m pip install pillow==6.2.1
py -3.7 -m pip install pycocotools
py -3.7 -m pip install matplotlib
py -3.7 -m pip install cython

CUDA

https://developer.nvidia.com/cuda-toolkit

Download Now
Archive of Previous CUDA Releases
  ダメ cuda_11.1.0_456.43_win10.exe
  ダメ cuda_10.1.243_426.00_win10.exe
CUDA Toolkit 10.0
Windows
x86_64
10
exe(local)
Download(2.1GB)

cuda_10.0.130_411.31_win10.exe
ダウンロードして実行
※複数バージョン対応してるのでそのままウィザード進んでく

インストールが終わったら、仮想環境を抜ける

REM 仮想環境を抜ける
deactivate

で、コマンドプロンプトを一旦終了

▼のファイルに

D:\python\venv\py37yolactpp\Scripts\activate.bat

▼を加える。(ファイルの上のほうに)

SET CUDNN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
SET CUDA_PATH_V10_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0

コマンドプロンプトを起動

win + r cmd

バージョンを確認。10.0 になっていればOK

nvcc -V

REM 仮想環境へ
D:\python\venv\py37yolactpp\Scripts\activate.bat

py -3.7 -m pip install torch==1.2.0 torchvision==0.4.0 -f https://download.pytorch.org/whl/torch_stable.html
REM d:
REM cd D:\projects\★\★\system\yolact-master

cd external/DCNv2
py -3.7 -m setup.py develop

エラー・・・・(><)

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include\crt/host_config.h(143): fatal error C1189: #error:  -- unsupported Microsoft Visual Studio version! Only the versions between 2013 and 2017 (inclusive) are supported!
error: command 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v10.0\\bin\\nvcc.exe' failed with exit status 2

Visual Studio 2013 または 2017 でないとダメよ!って書かれてますね。

いま入っているのは2019です。

これはどこからやり直しになんだろう。
CUDAのインストールのところで、VisualStudioがなんか出てたよなー。
って感じで進めていきます。

Visual Studioの複数バージョン自体は可能です。
複数バージョンの Visual Studio をインストールする

考えててもしょうがないので進めていきます。
下記から2017をダウンロードしてインストールします。

Visual Studio の以前のダウンロード - 2017、2015、および以前のバージョン

Visual Studio Community 2017 (version 15.9)
mul / japanese / EXE
Downlaod

vs_Community.exe 実行
インストーラに従って進める

ワークロードで「C++によるデスクトップ開発」を含める(他は好みで)

ここまでのコマンドプロンプトが残ってたら仮想環境を解除して終了させておく

REM 解除
deactivate

exit

CUDAをアンインストール

スタートメニュー > Windowsシステムツール > コントロールパネル

プログラムのアンインストール

これまでに、10.0 / 10.1 / 11.1 を入れてきていて、実質まだ使ってないのでこの機会に全部消すことにする。

「NVIDIA CUDA」で始まるものを削除
「NVIDIA Nsight」で始まるものを削除

ついでに環境変数も削除
だいたいはアンインストーラで消えてたけど、自分で追加した「CUDNN_PATH」が残っとったきん手動で削除

一旦、再起動

この時点では、Visual Studo は2017と2019が共存している状態です。

さっきダウンロードしとった「cuda_10.0.130_411.31_win10.exe」をダブルクリックで実行

「2017」の文字が見えます。

結果的にはダメで、DCNv2をインストールしようとすると同じエラーになります。

ということで、Visual Studio 2019も無くしましょう。
いまはYOKACT++を動かすことが優先です。
ってか、コンパイルできてしまえばまたVisual Studio 2019入れていいんかな。(未確認)

スタートメニューにある「Visual Studio Installer」です。

起動したら2019のほうの「詳細」から「アンインストール」

新しいコマンドプロンプト

win + r cmd

nvcc -V

REM アクティベート
D:\python\venv\py37yolactpp\Scripts\activate.bat

d:
cd D:\projects\★\★\system\yolact-master

cd external/DCNv2
py -3.7 -m setup.py develop

weights フォルダを作成

yolact_base_54_800000.pthをダウンロードして、weights に配置

cd D:\projects\★\★\system\yolact-master

# input_image.jpg は自分で用意する
py -3.7 -m eval --trained_model=weights/yolact_base_54_800000.pth --score_threshold=0.15 --top_k=15 --image=input_image.jpg:output_image.jpg