win10下mmsegmentation导出onnx模型
其实我的任务本来很简单,就是需要对一个已知的pth分割模型导出为onnx,但是又因为这个网上提供的模型是mm平台下训练的,是要给乙方验证部署用的,所以还是得用mmseg下的方法导出onnx因为怕通用方式导出有错误,就开始接触这个mmsegmentation,结果就是一系列问题,说实话这个平台初衷是好的但是平台环境真的让我觉得就一句话:没见过更差的。
主要体现在:
1.在我的双系统的ubuntu下想要用的时候发现我的ubuntu是22.04,只接受cuda12.x的版本或11.x的高版本,而mm好像只支持12以下,不想重装系统。。。
2.torch版本2.0以上好像支撑得不好
3.python版本与pytorch版本等不匹配
4.cuda版本与pytorch版本
5.mmcv与cuda和pytorch版本
6.mmseg与mmcv不匹配
7.本来想放弃mmseg直接用mmdeploy导出,因为有博主说mmdeploy导出坑更少,结果发现mmdeploy需要vs2019编译,而我今天因为要装mmcv刚卸载完vs2022装了2017因为有个报错是说需要vs2015-vs2019之间的版本才能编译,然后我选择了vs2017。。。
反正就是在各种版本之间反复横跳,最后的最后我还是没有沾mmdeploy直接用的mmseg导出Onnx,整个过程就是异常艰难差点放弃。
统一说下我整个过程需要的各种版本的东西吧:
1.vs2017
2.python3.7
3.pytorch1.8.0 torchvision0.9.0
4.cuda101
5.mmsegmentation0.30.0
大概过程就是:
conda create -n mm python=3.7
conda activate mm
#https://download.pytorch.org/whl/torch_stable.html
#找到torch-1.8.0+cu101-cp37-cp37m-win_amd64.whl下载
pip install torch-1.8.0+cu101-cp37-cp37m-win_amd64.whl
pip install torchvision==0.9.0
#pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html
pip install mmcv-full -f https://download.openmmlab.com/mmcv/dist/cu101/torch1.8.0/index.html
#会持续20-40分钟不等,因为要vs编译,不要急(之前说的要求vs2015-2019问题就在这里,我用的vs2017)
#以下找到tag为0.30.0的版本手动下载
https://github.com/open-mmlab/mmsegmentation
#进入到mmsegmentation目录下
pip install -v -e .
#安装openmim,跟pip一样的东西
pip install -U openmim
#下载想要的模型权重,具体可以去configs下找具体的名字改上去就好
mim download mmsegmentation --config fcn_r50-d8_512x512_20k_voc12aug --dest .
#转onnx
python tools/pytorch2onnx.py \
configs/fcn/fcn_r50-d8_512x512_20k_voc12aug.py \
--checkpoint fcn_r50-d8_512x512_20k_voc12aug_20200617_010715-52dc5306.pth \
--output-file fcn_r50-d8_512x512_20k_voc12aug.onnx \
--input-img demo/2007_000256.jpg \
--shape 500 500 \
--show \
--verify
至此就结束了,这个平台大部分的原因都在版本问题,包括这个mmsegmentation我基本都下了一遍,下载完就pip install -v -e .
因为版本的依赖都不一样,还好可以覆盖也就没走更多弯路