安装ultralytics
1、确认nvidia驱动和cuda版本
nvidia-smi
Tue Sep 9 16:29:38 2025
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 546.30 Driver Version: 546.30 CUDA Version: 12.3 |
|-----------------------------------------+----------------------+----------------------+
| GPU Name TCC/WDDM | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+======================+======================|
| 0 NVIDIA GeForce RTX 3060 ... WDDM | 00000000:01:00.0 Off | N/A |
| N/A 49C P0 26W / 80W | 0MiB / 6144MiB | 0% Default |
| | | N/A |
+-----------------------------------------+----------------------+----------------------++---------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=======================================================================================|
| No running processes found |
+---------------------------------------------------------------------------------------+
2、不单独使用cuda的话,pytorch不需要Cuda Toolkit,也就是不需要验证nvcc命令
为什么你不需要
nvcc
?1. 现代深度学习框架的安装方式(Conda / Pip)
当你通过 Conda 或 Pip 安装PyTorch、TensorFlow的GPU版本时,它们安装的是一种称为 “预构建” 或 “轮子” 的包。
这些包是自包含的:它们已经内置了运行所需的所有CUDA运行时库和cuDNN库。框架不需要你系统上预先安装一个全局的CUDA Toolkit。
nvcc
是编译器:nvcc
是 CUDA Toolkit 的一部分,它是一个用于编译CUDA C++代码的编译器。而运行已经编译好的程序(如PyTorch)只需要CUDA的运行时库,不需要编译器。类比:
运行一个用C++写好的游戏(如PyTorch),你只需要游戏的运行环境(如Visual C++ Redistributable,相当于CUDA运行时库)。
而编译这个游戏的源代码,你需要完整的Visual Studio和C++编译器(相当于完整的CUDA Toolkit和
nvcc
)。
PyTorch用户是“玩游戏的人”,而不是“开发游戏的人”,所以不需要编译器。
3、创建conda env环境,安装pytorch(推荐conda方式)
# 创建一个新的conda环境(推荐,避免包冲突)
# PyTorch on Windows only supports Python 3.9-3.13; Python 2.x is not supported.
conda create -n pytorch-gpu python=3.10
conda activate pytorch-gpu# 安装CUDA版本的PyTorch、TorchVision和TorchAudio
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia# 或者
conda install pytorch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 pytorch-cuda=12.1 -c pytorch -c nvidia
CUDA驱动是12.3,但PyTorch官方没有提供精确匹配的
cu123
版本,那么选择比123低的版本,最优就是最接近的,比如官方只有124, 121,那么就选择121。请直接安装CUDA 12.1的PyTorch版本(即
cu121
)。这是完全兼容的,也是官方推荐的做法。
4、安装ultralytics
pip install ultralytics
当你运行
pip install ultralytics
时,会发生以下事情:
读取元数据:
pip
会从PyPI(Python包索引)下载ultralytics
包,并读取其元数据文件(如pyproject.toml
或setup.py
)。这个文件里定义了它的依赖项。检查依赖:对于PyTorch (
torch
),ultralytics
的元数据中不会指定一个像torch==2.0.1
这样的精确版本,而是会指定一个宽松的版本范围。例如,在
ultralytics
的某个版本中,其依赖声明可能是这样的:text
install_requires = ['torch>=1.8.0', # 最低需要PyTorch 1.8.0版本... // 其他依赖 ]
>=1.8.0
:这意味着只要你环境中已安装的PyTorch版本大于或等于1.8.0,pip
就会认为依赖已满足。如果你的环境中没有安装PyTorch,
pip
则会自动安装这个范围内最新的版本(通常是PyTorch最新的稳定版)。
5、安装opencv
pip install opencv-python
当你运行
conda install opencv
时,Conda会默认从它的主频道(如defaults
)寻找一个名为opencv
的包。
版本可能过旧:Conda主频道中的OpenCV版本更新往往滞后于PyPI(Pip的源)。
依赖冲突(主要问题):Conda在解决环境依赖时,会试图找到一个能同时满足所有已安装包(如PyTorch)和你要安装的包(OpenCV)的版本组合。为了满足旧的OpenCV的依赖,Conda可能会:
降级你的NumPy:这是最常见的问题。新版的PyTorch通常需要较新的NumPy,但旧版OpenCV可能会要求一个旧的NumPy版本。Conda为了解决这个冲突,可能会把你的NumPy版本降级,从而潜在影响PyTorch或其他科学计算库的稳定性。
引入其他意想不到的更改:在极端情况下,甚至可能影响其他底层依赖。
你绝对不希望看到一个成功的
opencv
安装之后,却导致torch.cuda.is_available()
变成False
。
功能兼容性 ✅ 完全兼容 OpenCV用于图像读取、预处理、可视化;PyTorch用于模型推理。二者是黄金搭档。 包依赖兼容性 ⚠️ 可能不兼容 问题不在于代码,而在于Conda如何解决不同渠道包的依赖关系。 推荐安装方式 使用 Pip 安装 在已经安装了PyTorch的环境中,使用 pip install opencv-python
是最安全、最简单的方法。
注:可能带来问题的一个目录
AppData\Roaming\Python\Python312\Scripts