pytorch训练的Unet,转onnx, 用opencv调用。readNetFromONNX, Assertion failed) layerId != layer_id.end()

1. 部署思路

 pytorch中训练好模型,然后在python中转为onnx格式。通过opencv的dnn模块调用 onnx格式模型。

2. 转onnx成功后,发现opencv导入onnx模型, 报错

第一次变异的opencv版本是opencv450,cua10.1. 在c++中导入onnx模型时发现,出现内存异常。检查发现路径没有问题,怀疑是opencv 的bug,使用opencv-python,发现error:

error: OpenCV(4.5.0)
C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-6sxsq0tp\opencv\modules\dnn\src\onnx\onnx_importer.cpp:970: error: (-215:Assertion failed) layerId != layer_id.end() in function cv::dnn::dnn4_v20200609::ONNXImporter::populateNet’

3. github上有人issue了这个bug,并且已经被修复

https://github.com/opencv/opencv/issues/19359

https://github.com/opencv/opencv/pull/19372

3. 解决方案:

从新编译gpu版本的opencv453,测试发现没问题。

我的配置1:

	uda11.1 
	opencv4.5.3 
	pytorch1.9

我的配置2:

	cuda10.1 
	opencv4.5.3 
	pytorch1.1.1

5. 总结

这个部署思路比较简单,容易实现。但是受限于opencv的支持。希望opencv多多更新,大家发现问题多多反馈。

参考链接:

https://docs.opencv.org/4.5.3/d2/d58/tutorial_table_of_content_dnn.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值