复现PSP:Automatic Check-out via Prototype-based Classifier Learning from Single-Product Exemplars
Paper:PSP: Automatic Check-out via Prototype-based Classifier Learning from Single-Product Exemplars
Github:PSP
Overview
主要矛盾:作者使用的是2080ti 但我用的是3090(只支持11.0以上的cuda,我的是11.4,11.3也可以)导致作者使用的torch1.7.0会不匹配
太长不看版请直接下拉到conclusion
python version √
requirements.txt √
这两个都没有问题 直接安装3.7python和requirements.txt就行
然后我根据readme安装了pip install mmcv==1.3.9,然后运行python setup.py develop安装了mmdet2.14.0(作者给的代码有 就不用pip安装了 只要编译就行)
作者使用的1.7.0torch(pip install torch==1.7.0)会报错:NVIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation.
The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70 sm_75.(大致是这样 主要是1.7torch和3090 cuda11.4算力不匹配)
所以要么换卡(太麻烦,但如果用的是2080ti,不是30系的卡的话,就直接按照作者的配置来就能跑通 我这个只有卡不匹配,而且也只报了这一个错),要么更换torch版本
所以我直接把torch换到了1.11.0 用的pip install torch==1.11.0 但mmcv就会报错 具体记不清了应该是一个undefined symbol之类 的错误,原因在于mmcv和torch、cuda不匹配
但官网现在mmcv升级到了2.0,如果直接装2.0的话会导致代码里很多函数不匹配,具体可以看 https://github.com/open-mmlab/mmcv/pull/2217/commits,简单来说我们PSP train.py里line10
from mmcv import Config, DictAction
from mmcv.runner import get_dist_info, init_dist
from mmcv.utils import get_git_hash
这几个都不能用了,所以我们还是必须要用1.x版本的mmcv
但官网首页你无论怎么选torch版本、系统是windows还是linux、cuda版本都是只给2.0以上的,所以我们只能去download里找,我是一个个试出来的。
我一开始找的是https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
但实际上作者代码里给的mmdet/init.py里写了mmcv的min、max version是1.3.8-14.0,而这个pytorch1.11.0对应的mmcv最小版本只有1.4.7所以也不行
然后找的是https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
,这个是torch 1.10.0,有1.4.0版本的mmcv = max version, 但是会报错libtorch_cuda_cu.so is missed, although it contains cu113 and our gpu is cuda 11.4
最后的解决办法是:torch 1.10.0+cu113 √ 也就是说我们装torch的时候不仅要指定版本还要加上我们的cuda版本:pip install torch==1.10.0 torchvision torchaudion --extra-index-url https://download.pytorch.org/whl/cu113
mmcv下载链接:mmcv : mmcv 1.4.0 with cu113 and torch1.10.0
mmdet 2.14.0 from github PSP √这个没问题直接python setup.py develop就行
Conclusion
conda create -n PSP python=3.7
pip install -r requirements.txt
pip install torch==1.10.0 torchvision torchaudion --extra-index-url https://download.pytorch.org/whl/cu113
Note the torch should be torch+cu113 instead of torch(from pip list)
pip install mmcv-full==1.4.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html(bulding wheels will consume huge amount of time)
python setup.py develop(from github readme for installing mmdet)