使用Windows编译torchvision(C++版本)
版本对应:
libtorch: 2.9.0
vision: 0.24
python: >=3.10, <=3.14
所需资源:
python环境
vs2022
cuda-toolkit
vcpkg(这里使用vcpkg安装)
pybind11
python环境安装:
python环境需要按照libtorch支持的版本安装。

cuda环境
首先需要有nvidia显卡驱动,没有的话,可以根据该链接获取显卡驱动。


笔记本选择Notebooks。填完所有信息之后,选择开始搜索。

下载安装这个就可以,安装过程中,按照提示,选择自定义安装。
安装cuda驱动:
下载地址,这儿可以获取到最新版本

历史版本获取方式,先点击CUDA EULA

进入之后选择Archive

在这里可以获取到所有的历史版本信息

cudnn安装
cudnn地址链接,从9.0开始将支持的cuda版本合到了一起,可以在安装之后选择需要的版本,不过具体安装包包含的版本如何知晓我就不是很清楚了。

下面可以看到,9.0.0版本包含cuda11.8和12.3

cuda9.15.0包含cuda12.9和13.0

cudnn安装之后可以直接把include,bin, lib文件移动到cuda的文件夹下面。
libtorch获取
libtorch获取链接,这里可以获取最新版本的Libtorch,

如果想要找历史版本,只需要按照libtorch版本和cuda版本进行对应修改即可。例如:下面的是cuda12.6和libtorch2.9.1
https://download.pytorch.org/libtorch/cu126/libtorch-win-shared-with-deps-2.9.1%2Bcu126.zip如果想要cuda12.8和libtorch2.7.1的历史版本,修改对应位置,可以得到
https://download.pytorch.org/libtorch/cu128/libtorch-win-shared-with-deps-2.7.1%2Bcu128.zip注意:下面三个位置都需要修改。

VS2022安装
vs2022下载地址,选择社区版本下载,具体安装教程可参考:Visual Studio 2022(VS2022)最新版安装指南(保姆级教程)

vision获取
vision下载,先查看版本对应关系

选择自己所需的版本

点击下载Zip

安装vcpkg,使用管理员权限(也可使用conda替换vcpkg)
vcpkg下载地址,下载zip

pybind11安装:

git clone https://github.com/pybind/pybind11.git cd pybind11 mkdir build cd build cmake -DPYBIND11_TEST=OFF -DCMAKE_INSTALL_PREFIX="D:\Shadowless\pybind11" .. cmake --build . --config Release --target install准备好所有环境之后,将他们都存储到可以轻松找到的路径下。
编译前准备工作:找到vcpkg,安装必要包
PS C:\Users\Administrator> d: PS D:\> cd D:\Shadowless\vcpkg PS D:\Shadowless\vcpkg> .\vcpkg install libpng libjpeg-turbo libwebp libavif ffmpeg giflib --triplet x64-windows新建torchvision路径用来存储编译好的文件。


编译torchvision,支持50系列显卡
在vision的build目录下执行下面命令
cmake -DCMAKE_TOOLCHAIN_FILE="D:/Shadowless/vcpkg/scripts/buildsystems/vcpkg.cmake" \ -DCMAKE_PREFIX_PATH="D:\Shadowless\libtorch;D:\Shadowless\pybind11" \ -DCMAKE_INSTALL_PREFIX="D:\Shadowless\torchvision" \ -DCMAKE_BUILD_TYPE=Release \ -DWITH_CUDA=ON \ -DCMAKE_CUDA_ARCHITECTURES="75;86;89;120" \ -DTORCH_CUDA_ARCH_LIST="7.5;8.6;8.9;12.0" \ ..以下界面表示成功。
-- Generating done -- Build files have been written to: [你的构建目录]最后,需要在vs2022下对新生成的build下的目录进行编译,使用release模式,进行生成。可以在torchvision文件夹中得到编译成功的文件。