SixDRepNet のインストールと動作確認(頭部の姿勢推定)(Python 3.12, PyTorch を使用)(Windows 上)
手順の要点: 前準備として,Python 3.12,PyTorch 等をインストールする.続いて,PyTorch 実装の頭部姿勢推定ライブラリ SixDRepNet をインストールし,画像・動画・ビデオカメラでの動作を確認する.
SixDRepNet は,mpatacchiola/DeepGaze の CNN による頭部姿勢推定(roll,pitch,yaw の推定)と同様の機能を,PyTorch 実装で提供するライブラリである.学習済みモデルの重みは初回実行時に自動的にダウンロードされる.
ソフトウェアの利用条件は,利用者が確認すること.
参考Webページ: https://github.com/thohemp/6DRepNet
前準備
Python 3.12 のインストール
Pythonのインストールを行い、Pythonのプログラムを実行する環境を整える。扱う環境は、Windows搭載パソコンである。金子研究室では、Python 3.12.10を推奨する。
[Windows での Python 3.12 のインストール手順を見るには、ここをクリック]
Windows での Python 3.12 のインストール
以下のいずれかの方法でPython 3.12をインストールする。Pythonがインストール済みの場合、この手順は不要である。
方法 1:winget によるインストール
【インストールコマンドの実行方法】
管理者権限でコマンドプロンプトを起動する(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。そして、コマンド全体をコマンドプロンプトにコピー&ペーストする。
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動するとPATHが反映される。
REM Python 3.12 をシステム領域にインストール
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\""
if not "%ERRORLEVEL%"=="0" ( color 0c & echo Python 3.12 のインストールに失敗しました & ping 127.0.0.1 -n 6 >nul & color )
REM Python と Scripts を PATH 先頭に追加
powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; if(Test-Path $p){$k=[Microsoft.Win32.Registry]::LocalMachine.OpenSubKey('SYSTEM\CurrentControlSet\Control\Session Manager\Environment',$true); $c=$k.GetValue('Path','',[Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames); $t=$k.GetValueKind('Path'); $new=$c; if((';'+$new+';') -notlike \"*;$p;*\"){$new=$p+';'+$new}; if((';'+$new+';') -notlike \"*;$s;*\"){$new=$s+';'+$new}; if($new -ne $c){$k.SetValue('Path',$new,$t)}; $k.Close()}"
REM 現在のセッションにも反映(システムPATHを再取得して連結)
for /f "usebackq tokens=2,*" %A in (`reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path`) do set "PATH=%B"
REM pip / wheel の更新
python -m pip install --no-user -U pip wheel
if not "%ERRORLEVEL%"=="0" ( color 0c & echo pip / wheel の更新に失敗しました & ping 127.0.0.1 -n 6 >nul & color )
方法 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 CUDA Toolkit のインストール(GPU を使用する場合)
NVIDIA GPU を利用して高速に処理を行いたい場合は,NVIDIA ドライバとNVIDIA CUDA Toolkitを事前にインストールする.GPU を使用しない場合は,この手順は不要である(CPU でも動作する).
【関連する外部ページ】
PyTorch のインストール
コマンドプロンプトを管理者として実行し,次のコマンドを実行する。
python -m pip uninstall -y torch torchvision torchaudio
# 公式サイト(https://pytorch.org/get-started/locally/)で環境に合ったコマンドを確認すること.以下は CUDA 12.8 環境向けの一例
python -m pip install -U torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
インストールの確認を行う.
python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"
SixDRepNet のインストール
Windows での手順を下に示す.Ubuntu でも同様の手順になる.
- Windows で,コマンドプロンプトを管理者として実行する.
- SixDRepNet と,動作確認に用いる OpenCV のインストール
python -m pip install -U sixdrepnet opencv-python - インストール完了後,エラーメッセージが出ていないことを確認する.
SixDRepNet を用いて頭部の姿勢推定を行ってみる
Windows での手順を下に示す.Ubuntu でも同様の手順になる.
サンプルプログラムを動かしてみる
- Windows で,コマンドプロンプトを実行する.
- エディタを起動する
cd /d c:%HOMEPATH% notepad headpose_image.py - エディタで,次のプログラムを保存する
【説明】
このプログラムは,SixDRepNet を用いて,1枚の画像から頭部姿勢(roll,pitch,yaw)を推定し,結果を画像上に描画して表示する.学習済みモデルの重みは初回実行時に自動的にダウンロードされる.
import cv2 from sixdrepnet import SixDRepNet # モデルの作成(学習済みの重みは自動的にダウンロードされる) model = SixDRepNet() # 画像の読み込み img = cv2.imread('demo.jpg') # 頭部姿勢(pitch, yaw, roll)の推定 pitch, yaw, roll = model.predict(img) print("roll %s, pitch %s, yaw %s" % (roll, pitch, yaw)) # 推定結果を画像上に描画 model.draw_axis(img, yaw, pitch, roll) cv2.imshow("SixDRepNet", img) cv2.waitKey(0) cv2.destroyAllWindows() - 動作確認用の画像ファイル demo.jpg を,プログラムと同じフォルダに用意する
- Python プログラムの実行
python headpose_image.py - 結果を確認する
動画ファイルで動かす
- Windows で,コマンドプロンプトを実行する.
- 作業用のディレクトリ(フォルダ)として c:\image を作り,
sample1.mp4 を c:\image の下にダウンロードする
mkdir c:\image cd c:\image curl -O https://www.kkaneko.jp/sample/face/sample1.mp4 - エディタを起動する
cd /d c:%HOMEPATH% notepad headpose_video.py - エディタで,次のプログラムを保存する
【説明】
このプログラムは,SixDRepNet を用いて,動画ファイルの各フレームから頭部姿勢(roll,pitch,yaw)を推定し,結果を画面に表示する.OpenCV による動画表示を行っている.
import cv2 from sixdrepnet import SixDRepNet model = SixDRepNet() v = cv2.VideoCapture("c:/image/sample1.mp4") while(v.isOpened()): r, img = v.read() if ( r == False ): break img = cv2.resize(img, (480, 480)) pitch, yaw, roll = model.predict(img) # 頭部姿勢(roll, pitch, yaw)を推定 print("roll %s, pitch %s, yaw %s" % (roll, pitch, yaw)) model.draw_axis(img, yaw, pitch, roll) cv2.imshow("", img) # Press Q to exit if cv2.waitKey(1) & 0xFF == ord('q'): break v.release() cv2.destroyAllWindows()編集したら,ファイルを「上書き保存」する
- Python プログラムの実行
python headpose_video.py - 結果の確認
ビデオカメラで確認
-
上のプログラムの動画ファイル読み込み部分を,次のように書き換える.書き換えたら保存する
v = cv2.VideoCapture(0) - ファイルを「上書き保存」する
- Python プログラムの実行
python headpose_video.py - 結果の確認