RuntimeError: No such operator torchvision::nms

RuntimeError: No such operator torchvision::nms

此bug是自己使用pyinstaller编译使用yolov5进行目标识别的代码中产生的问题,在python环境中代码可以正常运行,但是在编译成exe文件之后运行就会报上述错误。
探究了一下午其出错的原因,仍未解决,在花了两元大洋查看了一篇csdn的vip文章说是由于torch和torchvision版本不对问题让安装低版本的torchvision之后在伪装成高版本,胡乱搞了一通之后仍未起效,在临下班之际忽然之间灵光一闪,nms非极大值抑制讲白了就是根据置信度删除其余的框,留下最高的框。由此可见自己是不是可以改写其代码,不在我的代码中使用torch.ops.torchvision.nms(boxes, scores, iou_thres)来调用nms这样就不会出错了。
经过多番测试终于敲定代码,但代码写的不尽人意,因为自己还没怎么接触pytorch,其中就有一个tensor中得到numpy,可以使用tensor.numpy()方法,但是自己在修改代码时没有这个概念就没使用,这样会事半功倍吧,而我写下这篇博客时已经是我知道上述方法了,但是任务在身就没有进行更改,后期有时间会更改过来,代码如下,凑合着看。

length = x.shape[0]
max_output = 0
index = 0
for i in range(0, length) :
    if tensor(x[i][4]).item() > max_output :
        max_output = tensor(x[i][4]).item()
        index = i
output = [x[[index]]]

2020/11/10更新
哈哈哈明天双十一今天还在改以前的bug
上面的那个方法我使用至今没有出现问题,昨天晚上偶然之间看到一篇博客解决的也是这个问题,今天就来尝试一下。亲测可行。
在你需要打包的py文件中先生成.spec文件在文件中修改

datas=[('E:/Anaconda3/envs/pytorch/Lib/site-packages/torch',"torch"),
			('E:/Anaconda3/envs/pytorch/Lib/site-packages/torchvision',"torchvision"),],
             hiddenimports=['torch','torchvision'],

全部的为:

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['detect.py'],
             pathex=['G:\\yolotcp'],
             binaries=[],
			datas=[('E:/Anaconda3/envs/pytorch/Lib/site-packages/torch',"torch"),
			('E:/Anaconda3/envs/pytorch/Lib/site-packages/torchvision',"torchvision"),],
             hiddenimports=['torch','torchvision'],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
for d in a.datas:
	if '_C.cp37-win_amd64.pyd' in d[0]:
		a.datas.remove(d)
		break
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='MyTcpServer',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True )

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值