香川県観音寺市でシステム開発

Windows10のPythonからOpenCVでTensorFlowするためにやったこと2020年10月版

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

そのための準備をしていってみたいと思います。

インストール環境

Windows10 64bit

Python のインストールは初めて
※正確には zip版はあるけど、インストーラ版は初めて、という意味で

Windows10を選んだ理由

そもそもWindows10で作る前に、iMac2015 で作りました。その時の様子はまた記事にします。

ざっくり言うと、やりたいことに対して iMac が非力過ぎたからです。

ちょっとどうにもならないな、と思い、メインマシンのWindows10に入れることにしました。

こちらは、Core i9-9980XE のCPUで、18コア36スレッドあります。

iMac2015だと、4つのコアがいっぱいいっぱいでめっちゃ時間が掛かってたのでWindows10だとどうなるか楽しみなところです。
( -> 結果、めちゃっぱやでした)

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

各種セットアップ

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

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

Visual Studio (C++付き)

インストール後、再起動が必要になるので最初に入れたい
pip install dlib で必要

https://visualstudio.microsoft.com/ja/downloads/

コミュニティ
無料ダウンロード
vs_Community.exe をダウンロードして実行
インストーラに従って進める

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

【参考サイト】

TensorFlow 2 をインストールする

C++ 再頒布可能パッケージ

インストール後、再起動が必要になるので最初に入れたい

tensorflow で必要

https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads

Visual Studio 2015、2017 および 2019
x64: vc_redist.x64.exe

CMake

pip install dlib で必要

ダウンロードURL
https://cmake.org/download/

cmake-3.19.0-rc1-win64-x64.zip
※msiのインストーラのほうが簡単だけど、汚したくないのでzipを

ダウンロードして解凍
D:\apps\cmake-3.19.0-rc1-win64-x64

FFmpeg

opencvで書き出すのに必要なはず(macのときは必要だった)

https://ffmpeg.org/

https://github.com/BtbN/FFmpeg-Builds/releases

そのときの最新版
Auto-Build 2020-10-16 12:39
ffmpeg-N-99577-g2b5e18a953-win64-gpl-vulkan.zip

解凍
ffmpeg-N-99577-g2b5e18a953-win64-gpl-vulkan

Python のインストール

本当は zip版で進めてたが、どうしても解決できない問題があり断念。
調査していく過程で、インストーラ版でも複数バージョン対応、仮想環境などが可能で、「zip版にこだわる意味」の大半をクリアしているので、インストーラ版で進めることにした経緯。

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

python-3.8.6-amd64.exe
ダウンロードして実行
※tensorflowが3.8までにしか対応していない

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

Install Now

Close

win + r cmd

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

py --version
py -3.8 --version

【参考サイト】

pip

py -3.8 -m pip list
py -3.8 -m pip install --upgrade pip
py -3.8 -m pip install --upgrade setuptools
py -3.8 -m pip list

virtualenv

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

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

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

REM 解除
deactivate

【参考サイト】

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

環境変数を加える

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

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

@echo off

SET PATH=C:\Users\★\AppData\Local\Programs\Python\Python38\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%

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

opencv

contrib付き
(py3cv4) py -3.8 -m pip install opencv-contrib-python

imutils

(py3cv4) py -3.8 -m pip install imutils

dlib

(py3cv4) py -3.8 -m pip install dlib

tensorflow

(py3cv4) py -3.8 -m pip install tensorflow

keras

(py3cv4) py -3.8 -m pip install keras

pillow

(py3cv4) py -3.8 -m pip install pillow

h5py

(py3cv4) py -3.8 -m pip install h5py

物体検出

YOLOを使います。説明は省略します。

https://github.com/zzh8829/yolov3-tf2

win + r cmd

REM ドライブ切り替え
d:

REM 移動
cd D:\projects\★\★\system\yolov3-tf2\yolov3-tf2-master

# 仮想環境へ
D:\python\venv\py3cv4\Scripts\activate.bat

# ビデオ、物体検知、実行
py -3.8 _run.py

REM qキーで抜ける

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

YOLACT++を使います。

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

py -3.8 -m pip install opencv-python
py -3.8 -m pip install pillow
py -3.8 -m pip install pycocotools
py -3.8 -m pip install matplotlib
py -3.8 -m pip install cython

https://developer.nvidia.com/cuda-toolkit
cuda_11.1.0_456.43_win10.exe
cuda_10.1.243_426.00_win10.exe
ダウンロードして実行

https://qiita.com/8128/items/2e884998cd1193f73e2f
https://developer.nvidia.com/cudnn
cuDNN v7.6.5 (November 5th, 2019), for CUDA 10.1
cudnn-10.1-windows10-x64-v7.6.5.32.zip
システム環境変数に新規で
変数名「CUDNN_PATH」
値 「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1」

py -3.8 -m pip install torch==1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

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

※ちなみに▲では動かないよ(まだ途中)

(覚書)次にすること
pythonのバージョンを変える

広告