【Windows入門】ゲーミングPCがあればYOLO12物体検出は“コマンドだけ”で動く(CUDA Toolkit不要)

【Windows入門】ゲーミングPCがあればYOLO12物体検出は“コマンドだけ”で動く(CUDA Toolkit不要)

「YOLOをGPUで動かしたい」と思ったとき、多くの人が身構えるのが CUDA Toolkit / cuDNN の環境構築です。
でも実は、ゲーミングPC(NVIDIA GPU搭載)を持っている人なら、難しいセットアップなしでYOLOを動かせます。

この記事では Ultralytics YOLO を使って、Windows上で

  • 画像1枚の物体検出
  • USBカメラのリアルタイム物体検出

までを コマンドだけで進めます。


この記事のポイント(メリット)

  • ゲーミングPC(NVIDIA GPU)ならすぐ試せる
  • CUDA Toolkit / cuDNN を手動で入れなくてOK
  • Python仮想環境 + pipコマンドだけで完結
  • ✅ まずは「動いた!」を最短で体験できる

なぜCUDA Toolkitが不要なの?
→ Ultralyticsは内部でPyTorchを使いますが、GPU対応のPyTorchは(多くの場合)実行に必要なCUDA関連ライブラリを同梱しているため、学習・推論するだけならCUDA Toolkit(nvcc等)を別途入れなくても動きます。
※ただし「自作CUDA拡張をコンパイルする」など特殊用途では必要になることがあります。


前提条件(これだけ)

  • Windows 10/11
  • NVIDIA GPU(例:RTX 3060/3070/3080/3090など)
  • NVIDIAドライバがインストール済み(最新推奨)
  • Python(おすすめ:3.10〜3.12)

1. 作業フォルダを作って仮想環境を作成

PowerShellで、作業用フォルダへ移動して実行します。

mkdir windows_yolo
cd windows_yolo

py -m venv .venv
.\.venv\Scripts\activate
python -m pip install -U pip

プロンプト先頭に (.venv) が付いていればOKです。


2. PyTorch(GPU対応)をインストール

ここが一番重要です。CPU版PyTorchを入れるとGPUが使えません。

以下を実行:

python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121

インストールできたら、GPUが使えるか確認します。

python -c "import torch; print('torch', torch.__version__); print('cuda', torch.cuda.is_available()); print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'no gpu')"

理想の出力例:

torch 2.x.x+cu121
cuda True
NVIDIA GeForce RTX xxxx

3. Ultralytics YOLO をインストール

pip install -U ultralytics opencv-python

簡易チェック(任意):

yolo checks

4. まずは画像で物体検出してみる(最短で成功体験)

ローカルに画像を用意しなくても、サンプル画像で試せます。

yolo detect predict model=yolo11n.pt source=https://ultralytics.com/images/bus.jpg

初回は yolo11n.pt が自動ダウンロードされます。

結果はこのフォルダに出ます:

  • runs\detect\predict\

ここに、検出結果(枠が描かれた画像)が保存されていれば成功です。

もし yolo11n.pt がうまくいかない場合は、モデル名を yolov8n.pt にしてもOKです。


5. USBカメラでリアルタイム物体検出(CLI一発)

次はUSBカメラ(Webカメラ)でリアルタイム推論です。

yolo detect predict model=yolo11n.pt source=0 show=True
  • source=0 が一般的に最初のカメラ
  • もし映らなければ source=1source=2 を試してください

軽量設定(まずはこれが無難):

yolo detect predict model=yolo11n.pt source=0 show=True imgsz=640 device=0

6. Pythonで「VideoCapture + imshow」で動かしたい人向け(定番スタイル)

ブログ読者が一番やりたい形はこれだと思います。realtime.py を作成して貼り付けます。

import cv2
from ultralytics import YOLO

model = YOLO("yolo11n.pt")  # 軽いモデルでまず動作確認
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # WindowsはDSHOWが安定しやすい

# 低遅延寄せ(効かない環境もあります)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)

while True:
    ok, frame = cap.read()
    if not ok:
        break

    results = model.predict(frame, device=0, imgsz=640, verbose=False)
    vis = results[0].plot()

    cv2.imshow("YOLO Realtime", vis)
    if cv2.waitKey(1) & 0xFF == 27:  # ESCで終了
        break

cap.release()
cv2.destroyAllWindows()

実行:

python realtime.py

よくある詰まりポイント(初心者がハマりがち)

1) test.jpg does not exist

→ 画像ファイルのパスが間違っているだけです。フルパス指定が確実です。

yolo detect predict model=yolo11n.pt source="C:\path\to\your.jpg"

2) cuda False になる

  • CPU版PyTorchを入れてしまった可能性が高いです
    → もう一度 --index-url .../cu121 で入れ直します

3) カメラが映らない

  • source=1 / source=2 を試す
  • Zoom/Teams等がカメラを掴んでいたら閉じる

まとめ:ゲーミングPCなら「とりあえずYOLO」は拍子抜けするほど簡単

  • CUDA Toolkit / cuDNN を手で入れなくても
  • Python仮想環境 + pip + yoloコマンドだけで
  • 画像検出→USBカメラのリアルタイム推論まで到達できます。

入門としてはこれ以上ないくらい「成功体験」が早いので、まずは bus.jpg から試してみてください。

【追記】動画を入力して推論し、表示しながら結果を保存する

画像やUSBカメラで動いたら、次は **動画ファイル(mp4など)**を入力にして、YOLOで推論しながら画面表示し、さらに推論結果を動画として保存します。
Ultralyticsはここも簡単で、sourceに動画パスを指定するだけです。

事前準備(前章までで完了していればOK)

仮想環境を有効化しておきます。

.\.venv\Scripts\activate

1) 動画を推論して「表示」しながら「保存」する(コマンド一発)

作業フォルダに input.mp4 を置いて、次を実行します。

yolo detect predict model=yolo11n.pt source=input.mp4 show=True save=True
  • show=True:推論しながら画面に表示
  • save=True:枠が描かれた推論結果を保存

出力先は通常、以下に自動生成されます:

  • runs\detect\predict\ 配下

動画ファイルが別フォルダにある場合はフルパスでもOKです:

yolo detect predict model=yolo11n.pt source="C:\Users\hidek\Videos\input.mp4" show=True save=True

2) 保存先を分かりやすく指定する(ブログ向けにおすすめ)

runs\detect\predict だと実験が増えると迷子になりがちなので、プロジェクト名・実験名を付けると管理しやすいです。

yolo detect predict model=yolo11n.pt source=input.mp4 show=True save=True project=runs_video name=exp1

出力は:

  • runs_video\exp1\ 配下

3) 推論結果を「動画+テキスト(検出結果)」で保存する

動画だけでなく、検出した座標(bbox)も欲しい場合は save_txt を付けます。

yolo detect predict model=yolo11n.pt source=input.mp4 show=True save=True save_txt=True save_conf=True
  • save_txt=True:検出結果をテキストで保存
  • save_conf=True:confidence(確信度)も保存

4) 動画が重い/遅いときの軽量化(入門で効く設定)

動画推論は「入力が大きい」「モデルが重い」「表示負荷が高い」でfpsが落ちやすいです。まずはこの3つを抑えるのが定石です。

まずは軽量モデル + 画像サイズ固定

yolo detect predict model=yolo11n.pt source=input.mp4 show=True save=True imgsz=640 device=0
  • model=yolo11n.pt:軽量モデル(入門向け)
  • imgsz=640:入力サイズを抑える
  • device=0:GPUを明示(あなたの環境はRTX 3090でOK)

検出が多すぎる/少なすぎるとき(しきい値)

yolo detect predict model=yolo11n.pt source=input.mp4 show=True save=True conf=0.35

conf を上げるほど「確信度の高い検出だけ」に絞られます。


5) USBカメラでも「表示+保存」ができる(ついでに)

動画だけでなく、USBカメラ(source=0)でも同じノリで録画できます。

yolo detect predict model=yolo11n.pt source=0 show=True save=True

カメラ番号が違うときは source=1 / 2 を試します。


6) (応用)Pythonで「表示しながら保存」したい場合

「保存先を固定したい」「フレーム加工したい」「ログを取りたい」など、後から拡張するならPython版が便利です。入門記事では“応用枠”として載せるのがおすすめです。

import cv2
from ultralytics import YOLO

model = YOLO("yolo11n.pt")

cap = cv2.VideoCapture("input.mp4")  # 0ならUSBカメラ
fps = cap.get(cv2.CAP_PROP_FPS) or 30
w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

fourcc = cv2.VideoWriter_fourcc(*"mp4v")
out = cv2.VideoWriter("output.mp4", fourcc, fps, (w, h))

while True:
    ok, frame = cap.read()
    if not ok:
        break

    results = model.predict(frame, device=0, imgsz=640, verbose=False)
    vis = results[0].plot()

    cv2.imshow("YOLO", vis)
    out.write(vis)

    if cv2.waitKey(1) & 0xFF == 27:  # ESCで終了
        break

cap.release()
out.release()
cv2.destroyAllWindows()

よくあるエラー(動画編)

動画が読み込めない(形式/コーデック)
→ まずは mp4(H.264)など一般的な形式で試す。

FileNotFoundError: input.mp4 does not exist
→ 動画が作業フォルダに無い/名前が違う。フルパス指定が確実。

それではまた!

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

LEAVE A REPLY

*
*
* (公開されません)