RuntimeError: No such operator torchvision::nms 问题解决方法:
最近在学习YoloV5,跑了代码,训练的时候没有问题,在测试的时候报错如下:
网上搜了一下,发现很多人遇到过这个问题,尤其是在跑Yolov4和Yolov5等对pytorch版本要求比较高的代码。但是解决方案说的大都是pytorch和torchvision的版本不匹配,让升级torchvision版本,或者重新安装pytorch。
但是因为pytorch较大,每次安装比较麻烦,且另一种简单升级torchvision的方法好像并不奏效。
本文这里分享一种简单、有效的解决方案:
因为Yolov5要求pytorch1.6以上版本,所以按照requirements.txt文件直接配置了虚拟环境:
python3.7+cuda10.1+pytorch1.6+torchvision0.7.0
报错时特意看了下环境:
pytorch版本是没有问题的,所以前面第一个epoch训练没有问题。
分析原因是因为torchvision版本虽然达到了0.7.0,但是没有和cuda10.1环境匹配,因为如果pytorch如果是在官网获得的安装命令,应该是这样的:
pip install torch==1.6.0+cu101 torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
这个时候安装的torchvision的版本自动的是0.7.0+cu101, 而通过requirements.txt安装则是和pytorch 分别安装的,导致版本不一致。
所以直接卸载原来的torchvision,安装torchvision==0.7.0+cu101即可,而不需要重新安装pytorch。
但是直接在命令行安装torchvision==0.7.0+cu101,又会报错,因为找不到对应包的路径:
这个时候直接把官网的安装命令的后部分链接加上就可以了:
pip install torchvision==0.7.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html
可以看到问题快速解决了。
所以,下次遇到较高版本的pytorch环境时,可以通过同样的方式处理!