mpatacchiola/DeepGaze のインストールと動作確認(肌色領域の抜き出し,saliency の検出)(Python 3.12 を使用)(Windows 上)
- 前準備
- mpatacchiola/DeepGaze のインストール
- このページで説明のために使用するビデオ,写真
- mpatacchiola/DeepGaze を用いて肌色領域の抜き出し
- 付属のサンプルプログラムを動かしてみる
- mpatacchiola/DeepGaze を用いて saliency の検出
手順の要点: 前準備として,NVIDIA CUDA Toolkit 12.8,NVIDIA cuDNN 9.19.0,Python 3.12 等をインストールする.
ソフトウェア等の利用条件等は,利用者で確認すること.
謝辞:ソフトウェアの作者に感謝する.
前準備
Build Tools for Visual Studio 2026(ビルドツール)のインストール
Build Tools for Visual Studio は,Visual Studio の IDE を含まない C/C++ コンパイラ,ライブラリ,ビルドツール等のコマンドライン向け開発ツールセットである.インストール済みの場合,この手順は不要である.
以下のコマンドは,Build Tools が未インストールの場合は winget で新規インストールし,インストール済みの場合は setup.exe modify でコンポーネントを追加する(バージョンは変更しない).
管理者権限のコマンドプロンプトで以下を実行する(手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」).
REM VC++ ランタイム
winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"
REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
winget list --id Microsoft.VisualStudio.BuildTools 2>nul | findstr /i "BuildTools" >nul 2>&1
if %ERRORLEVEL% EQU 0 (
for /f "delims=" %P in ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products * -property installationPath') do start /wait "" "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "%P" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --includeRecommended --quiet --norestart
) else (
winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
)
インストール完了の確認
winget list Microsoft.VisualStudio.BuildTools
Python 3.12 のインストール(Windows 上) [クリックして展開]
以下のいずれかの方法で Python 3.12 をインストールする.Python がインストール済みの場合,この手順は不要である.
方法1:winget によるインストール
管理者権限のコマンドプロンプトで以下を実行する.管理者権限のコマンドプロンプトを起動するには,Windows キーまたはスタートメニューから「cmd」と入力し,表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する.
winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\""
--scope machine を指定することで,システム全体(全ユーザー向け)にインストールされる.このオプションの実行には管理者権限が必要である.インストール完了後,コマンドプロンプトを再起動すると PATH が自動的に設定される.
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし,「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする.
- ダウンロードしたインストーラーを実行する.
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する.このチェックを入れ忘れると,コマンドプロンプトから
pythonコマンドを実行できない. - 「Install Python 3.xx for all users」にチェックを入れ,「Install」をクリックする.
インストールの確認
コマンドプロンプトで以下を実行する.
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である.「'python' は,内部コマンドまたは外部コマンドとして認識されていません.」と表示される場合は,インストールが正常に完了していない.
Git のインストール(Windows 上) [クリックして展開]
管理者権限のコマンドプロンプトで以下を実行する.管理者権限は,winget の --scope machine オプションでシステム全体にインストールするために必要となる.
REM Git をシステム領域にインストール
winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled"
NVIDIA ドライバのインストール(Windows 上)
NVIDIA ドライバとは
NVIDIA ドライバは,NVIDIA製GPUをWindowsシステム上で適切に動作させるための基盤となるソフトウェアである.このドライバをインストールすることにより,GPUの性能を最大限に引き出し,グラフィックス処理はもちろん,CUDAを利用したAI関連アプリケーションなどの計算速度を向上させることが期待できる.
ドライバは通常,NVIDIA公式サイトからダウンロードするか,NVIDIA app を通じてインストール・更新する.
公式サイト: https://www.nvidia.co.jp/Download/index.aspx?lang=jp
【サイト内の関連ページ】
- NVIDIA グラフィックス・ボードの確認
インストールするドライバを選択するために,まず使用しているパソコンに搭載されているNVIDIAグラフィックス・ボードの種類を確認する.(確認済みであれば,この手順は不要である.) Windows のコマンドプロンプトで次のコマンドを実行する.
powershell -command "Get-CimInstance Win32_VideoController | Select-Object -ExpandProperty Name" - NVIDIA ドライバのダウンロード
確認したグラフィックス・ボードのモデル名と,使用しているWindowsのバージョン(例: Windows 11,Windows 10 64-bit)に対応するドライバを,以下のNVIDIA公式サイトからダウンロードする.
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
サイトの指示に従い,製品タイプ,製品シリーズ,製品ファミリー,OS,言語などを選択して検索し,適切なドライバ(通常は最新のGame Ready ドライバまたはStudio ドライバ)をダウンロードする.
- ドライバのインストール
ダウンロードしたインストーラー(.exeファイル)を実行し,画面の指示に従ってインストールを進める.「カスタムインストール」を選択すると,インストールするコンポーネント(ドライバ本体,GeForce Experience,PhysXなど)を選ぶことができる.通常は「高速(推奨)」で問題ない.
インストール完了後,システムの再起動を求められる場合がある.
NVIDIA CUDA Toolkit 12.8 のインストール(Windows 上)
NVIDIA CUDA Toolkit のインストール時の注意点
NVIDIAのGPUを使用して並列計算を行うためのツールセット
主な機能: GPU を利用した並列処理,GPU のメモリ管理,C++をベースとした拡張言語とAPIとライブラリ
【NVIDIA CUDA Toolkit の動作に必要なもの】
- CUDA対応のNVIDIA GPUが必要.
そのために,NVIDIA グラフィックス・ボードを確認する. Windows で,NVIDIA グラフィックス・ボードの種類を調べたいときは, 次のコマンドを実行することにより調べることができる.
powershell -command "Get-CimInstance Win32_VideoController | Select-Object -ExpandProperty Name" - NVIDIA ドライバのダウンロードとインストール
NVIDIA ドライバは,以下の NVIDIA 公式サイトからダウンロードできる. ダウンロードの際には,使用しているグラフィックス・ボードの型番とオペレーティングシステムを選択する.
- Windows では,インストール前に,Build Tools for Visual Studio もしくは Visual Studio をインストールしておくことが必要である.
【Windows でインストールするときの注意点】
- Windows では, NVIDIA CUDA Toolkitのインストール中は,なるべく他のウインドウはすべて閉じておくこと.
- NVIDIA CUDA Toolkitのインストールが終わったら,環境変数 TEMP,TMP の設定を行う.
Windows のユーザ名が日本語のとき,nvcc がうまく動作しないエラーを回避するためである.
【関連する外部ページ】
- NVIDIA CUDA Toolkitのアーカイブの公式ページ: https://developer.nvidia.com/cuda-toolkit-archive
- NVIDIA CUDA Toolkit の公式のドキュメント: https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
- NVIDIA CUDA Toolkit のインストールに関する,NVIDIA CUDA クイックスタートガイドの公式ページ: https://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windows キーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」).
REM NVIDIA CUDA Toolkit 12.8 をシステム領域にインストール
winget install --scope machine --id Nvidia.CUDA --version 12.8 -e --silent --disable-interactivity --force --uninstall-previous --accept-source-agreements --accept-package-agreements --override "-s -n"
REM 環境変数 TEMP, TMP の設定(一時ファイルの保存先を短いパスに変更)
mkdir C:\TEMP
set "TEMP_PATH=C:\TEMP"
setx TEMP "%TEMP_PATH%" /M >nul
setx TMP "%TEMP_PATH%" /M >nul
NVIDIA cuDNN 9.19.0 のインストール
インストールするNVIDIA cuDNN のバージョンは 9.19.0 for CUDA 12.8
NVIDIA cuDNN
NVIDIA cuDNN は,NVIDIA CUDA Toolkit上で動作する高性能なディープラーニング用ライブラリである.畳み込みニューラルネットワーク (CNN) やリカレントニューラルネットワーク (RNN) など,さまざまなディープラーニングモデルのトレーニングと推論を高速化する.
【関連する外部ページ】
- NVIDIA cuDNN の公式ページ(ダウンロードにはDeveloper Programへの登録が必要): https://developer.nvidia.com/cudnn
NVIDIA cuDNN のインストール(Windows 上)の概要
- NVIDIA Developer Program メンバーシップへの加入: cuDNN のダウンロードには無料のメンバーシップ登録が必要である.
NVIDIA Developer Program の公式ページ: https://developer.nvidia.com/developer-program
- 互換バージョンの選択とダウンロード: インストール済みの CUDA Toolkit のバージョン(今回は 12.8)に適合する cuDNN のバージョン(今回は v9.19.0)を選択し,Windows 用のインストーラ(exe)または zip ファイルをダウンロードする.
- インストール: インストーラを使用する場合は,インストーラを実行し,対象の CUDA バージョンを選択してインストールする.zip ファイルを使用する場合は,展開し,中のファイル(
bin,include,lib\x64フォルダ内)を cuDNN のインストールディレクトリ(C:\Program Files\NVIDIA\CUDNN\v9.x)にコピーする. - 環境変数の設定: cuDNN の
binディレクトリ(C:\Program Files\NVIDIA\CUDNN\v9.x\bin)をシステム環境変数Pathに追加する.必要に応じてCUDNN_PATHも設定する. - 動作確認: cuDNN ライブラリ(
cudnn*.dll)にパスが通っているか確認する.
パスの確認
次の操作により,NVIDIA cuDNN のライブラリにパスが通っていることを確認する
Windows のコマンドプロンプトを開き,次のコマンドを実行する.エラーメッセージが出ないことを確認.
where cudnn64_9.dll
mpatacchiola/DeepGaze のインストール
Windows での手順を下に示す.Ubuntu でも同様の手順になる.
- Windows で,コマンドプロンプトを管理者として実行.
- DeepGaze のインストールディレクトリを空にしておく
cd /d c:%HOMEPATH% rmdir /s /q deepgaze
- DeepGaze のインストール
git clone https://github.com/mpatacchiola/deepgaze cd deepgaze python setup.py build python setup.py install
(以下省略) - 結果の確認
エラーメッセージが出ていないこと.
このページで説明のために使用するビデオ,写真
必要であればダウンロードして使ってください.
- ここで使用する mp4 形式動画ファイル: sample1.mp4
- ここで使用する顔写真: 126.png, 127.png
mpatacchiola/DeepGaze を用いて肌色領域の抜き出し
動画ファイルで動かしてみる
- Windows では,コマンドプロンプトを実行.
- 作業用のディレクトリ(フォルダ)として,c:\imageを作り,
sample1.mp4 を,c:\image の下にダウンロード
mkdir c:\image cd c:\image curl -O https://www.kkaneko.jp/sample/face/sample1.mp4
-
Python プログラムを実行する
Windows でのプログラムを下に示す.Ubuntu でも同様のプログラムになる.
OpenCV による動画表示を行う.
「FACEIMAGEROOT + "sample1.mp4"」のところは,実際のファイル名に置き換えること
import cv2 import numpy as np from deepgaze.color_detection import RangeColorDetector #Firs image boundaries min_range = np.array([0, 48, 70], dtype = "uint8") #lower HSV boundary of skin color max_range = np.array([20, 150, 255], dtype = "uint8") #upper HSV boundary of skin color my_skin_detector = RangeColorDetector(min_range, max_range) #Define the detector object FACEIMAGEROOT="c:/image/" v = cv2.VideoCapture(FACEIMAGEROOT + "sample1.mp4") while(v.isOpened()): r, f = v.read() if ( r == False ): break f = f[0:885, 0:773, 0:3] image_filtered = my_skin_detector.returnFiltered(f, morph_opening=False, blur=False, kernel_size=3, iterations=1) cv2.imshow("", image_filtered) # Press Q to exit if cv2.waitKey(1) & 0xFF == ord('q'): break v.release() cv2.destroyAllWindows()
パソコンの USB カメラで動かしてみる
Python プログラムを実行する
「v = cv2.VideoCapture(0) 」は,USB カメラを使うためのもの.他の部分は,上のプログラムと同じ.
import cv2
import numpy as np
from deepgaze.color_detection import RangeColorDetector
#Firs image boundaries
min_range = np.array([0, 48, 70], dtype = "uint8") #lower HSV boundary of skin color
max_range = np.array([20, 150, 255], dtype = "uint8") #upper HSV boundary of skin color
my_skin_detector = RangeColorDetector(min_range, max_range) #Define the detector object
v = cv2.VideoCapture(0)
while(v.isOpened()):
r, f = v.read()
if ( r == False ):
break
f = f[0:885, 0:773, 0:3]
image_filtered = my_skin_detector.returnFiltered(f, morph_opening=False, blur=False, kernel_size=3, iterations=1)
cv2.imshow("", image_filtered)
# Press Q to exit
if cv2.waitKey(1) & 0xFF == ord('q'):
break
v.release()
cv2.destroyAllWindows()
パソコンの USB カメラで動かし,結果を動画像ファイルに保存
Python プログラムを実行する
Windows でのプログラムを下に示す.Ubuntu でも同様のプログラムになる.
「out = cv2.VideoWriter('C:/image/output.avi', fourcc, 20.0, (640, 480), True) 」の「True」は,カラーという意味
import cv2
import numpy as np
from deepgaze.color_detection import RangeColorDetector
#Firs image boundaries
min_range = np.array([0, 48, 70], dtype = "uint8") #lower HSV boundary of skin color
max_range = np.array([20, 150, 255], dtype = "uint8") #upper HSV boundary of skin color
my_skin_detector = RangeColorDetector(min_range, max_range) #Define the detector object
v = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc(*'XVID')
FACEIMAGEROOT="c:/image/"
out = cv2.VideoWriter(FACEIMAGEROOT + 'output.avi', fourcc, 20.0, (640, 480), True)
while(v.isOpened()):
r, f = v.read()
if ( r == False ):
break
f = f[0:885, 0:773, 0:3]
image_filtered = my_skin_detector.returnFiltered(f, morph_opening=False, blur=False, kernel_size=3, iterations=1)
cv2.imshow("", image_filtered)
out.write(image_filtered)
# Press Q to exit
if cv2.waitKey(1) & 0xFF == ord('q'):
break
v.release()
out.release()
cv2.destroyAllWindows()
付属のサンプルプログラムを動かしてみる
- C:\face-image のような作業用のディレクトリ(フォルダ)を作る
- 顔写真のデータを,先ほど作成した「作業用のディレクトリ(フォルダ)」に入れる
Webブラウザを使い,次の画像を「名前を付けて画像を保存」. ファイル名は「126.png」とする. 「作業用のディレクトリ(フォルダ)」に保存する
次の画像も,「名前を付けて画像を保存」. ファイル名は「127.png」とする. 「作業用のディレクトリ(フォルダ)」に保存する
次のようになる
- サンプルプログラム
Web ブラウザで, https://github.com/mpatacchiola/deepgaze/blob/master/examples/ex_skin_detection_images/ex_skin_detection_images.py を開く
- ここに掲載されているプログラムをコピー
- Windows のメモ帳を開き,丸ごと,貼り付け
- このファイルの中の画像ファイル名を書き換え(2か所).
c:/image/126.png, c:/image/126-filtered.png,
- 後半部分は削除
- メモ帳で,ファイルを「名前を付けて保存」する.
このとき,ファイル名は,skin.py のようなファイル名で保存(拡張子は「.py」)
「作業用のディレクトリ(フォルダ)」である C:\face-image に保存する
- メモ帳を閉じる
- Windows のコマンドプロンプトを開く
- 次のように実行
先ほど名前を付けて保存したときのファイル名を使う
cd C:\face-image python skin.py
- 結果の確認
もう1つの画像で確認
skin.py の中の画像ファイル名を 126 から 127 に書き換えて,python skin.py をもう一度実行.次のような結果になる
mpatacchiola/DeepGaze を用いて saliency の検出
動画ファイルで動かしてみる
- Windows では,コマンドプロンプトを実行.
- 作業用のディレクトリ(フォルダ)として,c:\imageを作り,
sample1.mp4 を,c:\image の下にダウンロード
mkdir c:\image cd c:\image curl -O https://www.kkaneko.jp/sample/face/sample1.mp4
-
Python プログラムを実行する
Windows でのプログラムを下に示す.Ubuntu でも同様のプログラムになる.
OpenCV による動画表示を行う.
「FACEIMAGEROOT + "sample1.mp4"」のところは,実際のファイル名に置き換えること
import numpy as np import cv2 from deepgaze.saliency_map import FasaSaliencyMapping # Using OpenCV the resolution of the webcam is set to these values. # You must check which resolution your webcam support and adjust the values in accordance. RESOLUTION_WIDTH = 320 RESOLUTION_HEIGHT = 180 FACEIMAGEROOT="c:/image/" v = cv2.VideoCapture(FACEIMAGEROOT + "sample1.mp4") # Create the main window and move it cv2.namedWindow('Video') # Obtaining the CAM dimension w = int(v.get(3)) h = int(v.get(4)) # Defining the FASA object using the camera resolution my_map = FasaSaliencyMapping(h, w) while True: # Capture frame-by-frame r, f = v.read() if ( r == False ): break image_salient = my_map.returnMask(f, tot_bins=8, format='BGR2LAB') cv2.imshow("", image_salient) # Press Q to exit if cv2.waitKey(1) & 0xFF == ord('q'): break v.release() cv2.destroyAllWindows()
ビデオカメラで動かしてみる
Windows での手順を下に示す.Ubuntu でも同様の手順になる.
- Windows で,コマンドプロンプトを管理者として実行.
-
Python プログラムを実行する
OpenCV による動画表示を行う.
import numpy as np import cv2 from deepgaze.saliency_map import FasaSaliencyMapping # Using OpenCV the resolution of the webcam is set to these values. # You must check which resolution your webcam support and adjust the values in accordance. RESOLUTION_WIDTH = 320 RESOLUTION_HEIGHT = 180 # Open the video stream and set the webcam resolution. # It may give problem if your webcam does not support the particular resolution used. video_capture = cv2.VideoCapture(0) # Create the main window and move it cv2.namedWindow('Video') # Obtaining the CAM dimension cam_w = int(video_capture.get(3)) cam_h = int(video_capture.get(4)) # Defining the FASA object using the camera resolution my_map = FasaSaliencyMapping(cam_h, cam_w) while True: # Capture frame-by-frame r, f = video_capture.read() image_salient = my_map.returnMask(f, tot_bins=8, format='BGR2LAB') cv2.imshow("", image_salient) # Press Q to exit if cv2.waitKey(1) & 0xFF == ord('q'): break v.release() cv2.destroyAllWindows()