物体検出,姿勢推定の実行(YOLOv7,PyTorch,Python を使用)(Windows 上)
Windows でYOLOv7をインストール,動作確認する手順は以下のとおりである.まず,pycocotoolsのインストールを行う.次に YOLOv7 のソースコードと学習済みモデルをダウンロードする.画像やカメラからの物体検出は,コマンドで可能である.このとき学習済みモデルを指定できる.姿勢推定は,公式ページで配布されているプログラムを利用できる.以上で,YOLOv7のインストールと動作確認ができる.Average PrecisionとAverage Recallの値を取得したいときは,COCO 2017データセットのダウンロード,展開し,test.pyを実行.詳細な手順は公式ドキュメントを参照.
【目次】
- 前準備
- YOLOv7 のインストール(Windows 上)
- test.py の実行により Average Precision,Average Recall の値を得る
- 物体検出の実行(YOLOv7 を使用)(Windows 上)
- 姿勢推定の実行(YOLOv7 を使用)(Windows 上)
YOLOv7
【文献】 Wang, Chien-Yao and Bochkovskiy, Alexey and Liao, Hong-Yuan Mark, YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors, arXiv preprint arXiv:2207.02696, 2022.
【関連する外部ページ】
- 公式の GitHub のページ: https://github.com/WongKinYiu/yolov7
前準備
Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)
CUDAツールキットは、GPU上でコードをコンパイルするためにC++コンパイラを必要とします。そのため、事前にMicrosoft C++ Build Tools または Visual Studio (C++開発ワークロードを含む) をインストールしておく必要があります。
【インストールの判断】 Build Tools for Visual Studio は,C++コンパイラなどを含む開発ツールセットです. Visual Studio は統合開発環境であり,いくつかのエディションがあり,Build Tools for Visual Studioの機能を含むか連携して使用します.インストールは以下の基準で判断してください:
- コマンドラインからのビルドなど、C++コンパイラ機能のみが必要な場合:
- Visual Studioのエディタやデバッガなどの統合開発環境機能が必要な場合、あるいは、どちらをインストールすべきかよく分からない場合:
Visual Studio Community (または他のエディション) をインストール します.
Visual Studio 2022 をインストールする際に,「C++ によるデスクトップ開発」ワークロードを選択することで,必要なBuild Toolsの機能も一緒にインストールされます.
不明な点がある場合は,Visual Studio 全体をインストール する方が、後で機能を追加する手間が省ける場合があります.
Build Tools for Visual Studio 2022 のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者権限で起動します(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)。
以下の
winget
コマンドを実行します。winget
はWindows標準のパッケージマネージャーです。--scope machine
オプションはシステム全体にインストールすることを意味します。次のコマンドは,Build Tools for Visual Studio 2022と、多くのプログラムで必要とされるVC++ 2015以降の再頒布可能パッケージをインストールします.
- Build Tools for Visual Studio 2022 で C++ によるデスクトップ開発関連コンポーネントのインストール
CUDA開発には、標準のC++開発ツールに加えて、特定のコンポーネントが必要になる場合があります。
- Visual Studio Installer を起動します。
起動方法: スタートメニューから「Visual Studio Installer」を探して実行します.
- Visual Studio Build Tools 2022 の項目で「変更」ボタンをクリックします.
- 「ワークロード」タブで「C++ によるデスクトップ開発」をクリックして選択します。画面右側の「インストールの詳細」で、必要に応じて「v143 ビルドツール用 C++/CLI サポート(最新)」、「ATL」、「MFC」などをチェックします(これらは一般的なC++開発や特定のプロジェクトタイプで必要になる場合があります)。その後、「変更」をクリックしてインストールまたは変更を適用します.
- Visual Studio Installer を起動します。
Visual Studio Community 2022 のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者権限で起動します。
- インストールコマンドの実行
以下の
winget
コマンドを実行します。--override "--add ..."
部分で、インストールするワークロードやコンポーネントを指定しています。winget install Microsoft.VisualStudio.2022.Community --scope machine --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Component.CoreEditor Microsoft.VisualStudio.Component.NuGet Microsoft.VisualStudio.Component.Roslyn.Compiler Microsoft.VisualStudio.Component.TextTemplating Microsoft.VisualStudio.Component.Windows.SDK.Latest Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.VC.ATL Microsoft.VisualStudio.Component.VC.ATLMFC" winget install Microsoft.VisualStudio.2022.Community --scope machine Microsoft.VCRedist.2015+.x64
インストールされる主要なコンポーネントの説明:
NativeDesktop
(C++によるデスクトップ開発): CUDA開発に必要なC++コンパイラ(VC.Tools.x86.x64
)やWindows SDK (Windows.SDK.Latest
)など、基本的な開発ツール一式を含みます。CoreEditor
: Visual Studioの基本的なコードエディタ機能を提供します。VC.CLI.Support
: C++/CLIを用いた開発サポート(通常、純粋なCUDA C++開発では不要な場合もあります)。NuGet
: .NETライブラリ管理用(C++プロジェクトでも利用されることがあります)。VC.ATL
/VC.ATLMFC
: 特定のWindowsアプリケーション開発フレームワーク(通常、CUDA開発自体には直接必要ありません)。
システム要件と注意事項:
- 管理者権限でのインストールが必須です。
- 必要ディスク容量:10GB以上(選択するコンポーネントにより変動)。
- 推奨メモリ:8GB以上のRAM。
- インストール過程でシステムの再起動が要求される可能性があります。
- 安定したインターネット接続環境が必要です。
後から追加のコンポーネントが必要になった場合は,Visual Studio Installerを使用して個別にインストールすることが可能です.
- インストール完了の確認
インストールが成功したか確認するには、管理者権限のコマンドプロンプトで以下のコマンドを実行します。
winget list Microsoft.VisualStudio.2022.Community
リストに表示されればインストールされています。
トラブルシューティング:
インストール失敗時は,以下のログファイルを確認すると原因究明の手がかりになります:
%TEMP%\dd_setup_
.log %TEMP%\dd_bootstrapper_ .log (
は実行日時に対応する文字列) - (オプション) Visual Studio Installer での確認と変更
winget
でのインストール後も、Visual Studio Installerを使ってインストール内容を確認・変更できます。- Visual Studio Installer を起動します。
- Visual Studio Community 2022 の項目で「変更」をクリックします。
- 「ワークロード」タブで「C++ によるデスクトップ開発」がチェックされていることを確認します。必要であれば、「個別のコンポーネント」タブで特定のツール(例: 特定バージョンのMSVCコンパイラ、CMakeツールなど)を追加・削除できます。「インストールの詳細」で「v143 ビルドツール用 C++/CLI サポート(最新)」などが選択されているかも確認できます。変更後、「変更」または「インストール」をクリックします。
Python 3.10,Git のインストール(Windows 上)
Pythonは,プログラミング言語の1つ. Gitは,分散型のバージョン管理システム.
【手順】
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
次のコマンドを実行
次のコマンドは,Python ランチャーとPython 3.10とGitをインストールし,Gitにパスを通すものである.
次のコマンドでインストールされるGitは 「git for Windows」と呼ばれるものであり, Git,MinGW などから構成されている.
winget install --scope machine Python.Launcher winget install --scope machine Python.Python.3.10 winget install --scope machine Git.Git powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
【関連する外部ページ】
- Python の公式ページ: https://www.python.org/
- Git の公式ページ: https://git-scm.com/
【サイト内の関連ページ】
【関連項目】 Python, Git バージョン管理システム, Git の利用
Build Tools for Visual Studio 2022,NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN 8.9.7 のインストール(Windows 上)
【サイト内の関連ページ】 NVIDIA グラフィックスボードを搭載しているパソコンの場合には, NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNN のインストールを行う.
- Windows での Build Tools for Visual Studio 2022 のインストール: 別ページ »で説明
- Windows での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN v8.9.7 のインストール手順: 別ページ »で説明
【関連する外部ページ】
- Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)の公式ダウンロードページ: https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
- NVIDIA ドライバのダウンロードの公式ページ: https://www.nvidia.co.jp/Download/index.aspx?lang=jp
- NVIDIA CUDA ツールキットのアーカイブの公式ページ: https://developer.nvidia.com/cuda-toolkit-archive
- NVIDIA cuDNN のダウンロードの公式ページ: https://developer.nvidia.com/cudnn
PyTorch のインストール(Windows 上)
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- PyTorch のページを確認
- 次のようなコマンドを実行(実行するコマンドは,PyTorch のページの表示されるコマンドを使う).
次のコマンドを実行することにより, PyTorch 2.3 (NVIDIA CUDA 11.8 用)がインストールされる. 但し,Anaconda3を使いたい場合には別手順になる.
事前に NVIDIA CUDA のバージョンを確認しておくこと(ここでは,NVIDIA CUDA ツールキット 11.8 が前もってインストール済みであるとする).
PyTorch で,GPU が動作している場合には,「torch.cuda.is_available()」により,True が表示される.
python -m pip install -U --ignore-installed pip python -m pip uninstall -y torch torchvision torchaudio torchtext xformers python -m pip install -U torch torchvision torchaudio numpy --index-url https://download.pytorch.org/whl/cu118 python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
Anaconda3を使いたい場合には, Anaconda プロンプト (Anaconda Prompt) を管理者として実行し, 次のコマンドを実行する. (PyTorch と NVIDIA CUDA との連携がうまくいかない可能性があるため,Anaconda3を使わないことも検討して欲しい).
conda install -y pytorch torchvision torchaudio pytorch-cuda=11.8 cudnn -c pytorch -c nvidia py -c "import torch; print(torch.__version__, torch.cuda.is_available())"
【サイト内の関連ページ】
【関連する外部ページ】
YOLOv7のインストール(Windows上)
公式のGitHubページ https://github.com/WongKinYiu/yolov7 に従ってインストールを行う.以下の手順で実施する.
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
コマンドプロンプトを管理者として実行する方法は別ページ »で詳しく説明しています.
- pycocotools のインストールを実施
python -m pip install -U cython python -m pip install "git+https://github.com/philferriere/cocoapi.git#egg=pycocotools&subdirectory=PythonAPI"
- YOLOv7のダウンロードとインストール作業
cd /d c:%HOMEPATH% rmdir /s /q yolov7 git clone --recursive https://github.com/WongKinYiu/yolov7 cd yolov7 python -m pip install -r requirements.txt
- 学習済みモデルファイルのダウンロード
詳細は公式ページ: https://github.com/WongKinYiu/yolov7 を参照
cd /d c:%HOMEPATH%\yolov7 curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7x.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-w6.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-d6.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-e6e.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-w6-pose.pt curl -O -L https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7-mask.pt
test.pyの実行によるAverage Precision,Average Recallの評価
Average Precision,Average Recallの値の確認が不要な場合は,この手順は省略可能です.
Windows環境でのCOCO 2017データセットのダウンロードと展開手順
WindowsにおけるCOCO 2017のダウンロードと展開は以下の手順で行います.
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
コマンドプロンプトを管理者として実行する方法は別ページ »で詳しく説明しています.
- 7-Zipのインストール(Windows環境)
7-Zipは高機能なファイル圧縮・展開ツールです.
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
コマンドプロンプトを管理者として実行する方法は別ページ »で詳しく説明しています.
- 以下のコマンドを実行
次のコマンドにより,7-Zip圧縮・展開ツールをインストールします.
winget install --scope machine 7zip.7zip powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\7-Zip\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
【関連する外部ページ】
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
- COCOデータセットの公式サイトから2017 Train images,2017 Val images,2017 Train/Val annotationsをダウンロード
コマンドプロンプトを管理者として起動し, 以下のコマンドでダウンロードと展開を実行します.
cd /d c:%HOMEPATH% mkdir coco2017 mkdir coco2017\coco mkdir coco2017\coco\images cd /d c:%HOMEPATH%\coco2017 ECHO labels curl -O -L https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels-segments.zip ECHO 19G, 118k images curl -O http://images.cocodataset.org/zips/train2017.zip ECHO 1G, 5k images curl -O http://images.cocodataset.org/zips/test2017.zip ECHO 7G, 41k images (optional) curl -O http://images.cocodataset.org/zips/val2017.zip ECHO unlabeled curl -O http://images.cocodataset.org/zips/unlabeled2017.zip ECHO curl -O http://images.cocodataset.org/annotations/annotations_trainval2017.zip curl -O http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip curl -O http://images.cocodataset.org/annotations/image_info_test2017.zip curl -O http://images.cocodataset.org/annotations/image_info_unlabeled2017.zip REM curl -O http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip ECHO cd /d c:%HOMEPATH%\coco2017 "c:\Program Files\7-Zip\7z.exe" x coco2017labels-segments.zip cd /d c:%HOMEPATH%\coco2017\coco\images "c:\Program Files\7-Zip\7z.exe" x ..\..\train2017.zip "c:\Program Files\7-Zip\7z.exe" x ..\..\test2017.zip "c:\Program Files\7-Zip\7z.exe" x ..\..\val2017.zip "c:\Program Files\7-Zip\7z.exe" x ..\..\unlabeled2017.zip REM cd /d c:%HOMEPATH%\coco2017\coco REM "c:\Program Files\7-Zip\7z.exe" x ..\stuff_annotations_trainval2017.zip
- ファイル構成は以下のようになります.
└─%HOMEPATH%\coco2017\coco ├── annotations/ ├── captions_train2017.json ├── captions_val2017.json ├── image_info_test-dev2017.json ├── image_info_test2017.json ├── image_info_unlabeled2017.json ├── instances_train2017.json ├── instances_val2017.json ├── person_keypoints_train2017.json ├── person_keypoints_val2017.json ├── stuff_train2017.json └── stuff_val2017.json ├── images/ ├─test2017/ ├─train2017/ ├─unlabeled2017/ └─val2017/ ├── labels/ ├─train2017/ └─val2017/ ├─test-dev2017.txt ├─train2017.txt └─val2017.txt
【関連する外部ページ】
COCOデータセットの公式サイト: https://cocodataset.org/#home
test.pyの実行手順
- Windows で,コマンドプロンプトを管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
コマンドプロンプトを管理者として実行する方法は別ページ »で詳しく説明しています.
- データセットへのジャンクション作成
cd /d c:%HOMEPATH%\yolov7 mklink /J coco ..\coco2017\coco
- test.py の実行
python test.py --data data/coco.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights yolov7.pt --name yolov7_640_val
- 動作確認の結果,エラーメッセージが出ていないことを確認する.
物体検出の実行(YOLOv7 を使用)(Windows 上)
画像ファイルについて物体検出を行い,確認表示する.
- Windows で,コマンドプロンプトを実行
- 次のコマンドにより,物体検出を実行
「source='https://media.roboflow.com/notebooks/examples/dog.jpeg'」のところは,ファイル名やURLを指定. yolov7.pt は COCO データセットで学習済みのモデルである. COCO データセットで学習済みの他のモデルもある. 詳しくは公式ページの https://github.com/WongKinYiu/yolov7
cd /d c:%HOMEPATH% cd yolov7 python detect.py --weights yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg
- 実行の結果,物体検出の結果が保存されたファイル名が表示される.
- 画像を表示する
runs\detect\exp\horses.jpg
次のコマンドを実行.
python detect.py --weights yolov7.pt --conf 0.25 --img-size 1024 --source 0
姿勢推定の実行(YOLOv7 を使用)(Windows 上)
https://github.com/WongKinYiu/yolov7/blob/main/tools/keypoint.ipynb に記載のプログラムを使用.
「image = cv2.imread('./person.jpg')」の行は画像ファイル名を設定する.

Python プログラムの実行
コマンドプロンプトで次を実行
cd /d c:%HOMEPATH%\yolov7
python
次の Python プログラムを実行する
https://github.com/WongKinYiu/yolov7/blob/main/tools/keypoint.ipynb に記載のプログラムを書き換えて使用.
import matplotlib.pyplot as plt
import torch
import cv2
from torchvision import transforms
import numpy as np
from utils.datasets import letterbox
from utils.general import non_max_suppression_kpt
from utils.plots import output_to_keypoint, plot_skeleton_kpts
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
weigths = torch.load('yolov7-w6-pose.pt', map_location=device)
model = weigths['model']
_ = model.float().eval()
if torch.cuda.is_available():
model.half().to(device)
v = cv2.VideoCapture(0)
while(v.isOpened()):
r, f = v.read()
if ( r == False ):
break
image = letterbox(f, 960, stride=64, auto=True)[0]
image_ = image.copy()
image = transforms.ToTensor()(image)
image = torch.tensor(np.array([image.numpy()]))
if torch.cuda.is_available():
image = image.half().to(device)
output, _ = model(image)
output = non_max_suppression_kpt(output, 0.25, 0.65, nc=model.yaml['nc'], nkpt=model.yaml['nkpt'], kpt_label=True)
with torch.no_grad():
output = output_to_keypoint(output)
nimg = image[0].permute(1, 2, 0) * 255
nimg = nimg.cpu().numpy().astype(np.uint8)
nimg = cv2.cvtColor(nimg, cv2.COLOR_RGB2BGR)
for idx in range(output.shape[0]):
plot_skeleton_kpts(nimg, output[idx, 7:].T, 3)
cv2.imshow("", nimg)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
v.release()
cv2.destroyAllWindows()