运行开源库CCPD-RPnet代码,提示「KeyError: Caught KeyError in replica 0 on device 0」错误

2023-11-12

问题描述

通过python3 demo.py -i ./demo -m ./models/fh02.pth运行车牌识别CCPD开源代码,提示「KeyError: Caught KeyError in replica 0 on device 0」和「KeyError: <class ‘torch.Tensor’>」错误。

错误日志为:

True
/pytorch/torch/csrc/autograd/python_function.cpp:622: UserWarning: Legacy autograd function with non-static forward method is deprecated and will be removed in 1.3. Please use new-style autograd function with static forward method. (Example: https://pytorch.org/docs/stable/autograd.html#torch.autograd.Function)
Traceback (most recent call last):
  File "demo.py", line 273, in <module>
    fps_pred, y_pred = model_conv(x)
  File "/home/suy/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 541, in __call__
    result = self.forward(*input, **kwargs)
  File "/home/suy/.local/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 152, in forward
    outputs = self.parallel_apply(replicas, inputs, kwargs)
  File "/home/suy/.local/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 162, in parallel_apply
    return parallel_apply(replicas, inputs, kwargs, self.device_ids[:len(replicas)])
  File "/home/suy/.local/lib/python3.6/site-packages/torch/nn/parallel/parallel_apply.py", line 85, in parallel_apply
    output.reraise()
  File "/home/suy/.local/lib/python3.6/site-packages/torch/_utils.py", line 385, in reraise
    raise self.exc_type(msg)
KeyError: Caught KeyError in replica 0 on device 0.
Original Traceback (most recent call last):
  File "/home/suy/.local/lib/python3.6/site-packages/torch/nn/parallel/parallel_apply.py", line 60, in _worker
    output = module(*input, **kwargs)
  File "/home/suy/.local/lib/python3.6/site-packages/torch/nn/modules/module.py", line 541, in __call__
    result = self.forward(*input, **kwargs)
  File "demo.py", line 229, in forward
    roi1 = roi_pooling_ims(_x1, boxNew.mm(p1), size=(16, 8))
  File "/home/suy/data_disk/00_Project/01_LPR/CCPD/rpnet/roi_pooling.py", line 74, in roi_pooling_ims
    output.append(adaptive_max_pool(im, size))
  File "/home/suy/data_disk/00_Project/01_LPR/CCPD/rpnet/roi_pooling.py", line 36, in adaptive_max_pool
    return AdaptiveMaxPool2d(size[0], size[1])(input)
  File "/home/suy/data_disk/00_Project/01_LPR/CCPD/rpnet/roi_pooling.py", line 18, in forward
    self._backend = type2backend[type(input)] #运行有问题,根据issue 29 解决
  File "/home/suy/.local/lib/python3.6/site-packages/torch/_thnn/__init__.py", line 15, in __getitem__
    return self.backends[name].load()
KeyError: <class 'torch.Tensor'>

问题排查

在网上搜索该错误未找到解决相关信息,开始在CCPD的issue中查找,找到了一个类似的问题 issue-29

根据 CCPD-issue - 29 提出的解决方法:

You guys need to modify type(input) as input.type() in roi_pooling.py, line 18 ,then it works.
This error caused by api changes of different pytorch version。

参考该方法,将** roi_pooling.py**的第18行self._backend = type2backend[type(input)]进行修改,改为self._backend = type2backend[input.type()],再次运行,提示pytorch module 'torch._C' has no attribute '_THCUNN' ;

根据该错误提示,找到了一个相关问题 pytorch module torch._C has no attribute _THCUNN KeyError: class torch.Tensor,参考该博文进行修改,问题解决。

Solution

roi_pooling.py的第75行output.append(adaptive_max_pool(im, size))修改为output.append(F.adaptive_max_pool2d(im, size)),其中的F来自于引用库import torch.nn.functional as F

完整的修改方法为:

#output.append(adaptive_max_pool(im, size)) #原代码,以下两行为修改后的代码
import torch.nn.functional as F
output.append(F.adaptive_max_pool2d(im, size))

Other

下载文章中已经给定的权重模型,效果并不理想,下面是其中一两张的识别结果,效果较差。

在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行开源库CCPD-RPnet代码,提示「KeyError: Caught KeyError in replica 0 on device 0」错误 的相关文章

随机推荐

  • vue中使用swiper-slide时,循环轮播失效?

    前言 vue 项目中使用时 组件swiper slide 如果用v for循环的话 loop true 就不能无缝轮播 每次轮播到最后一张就停止了 正文 代码如下
  • java 判断用户是否关注了公众号

    1 获取token public String getToken try HttpClient client HttpClients createDefault String tokenUrl MessageFormat format ht
  • 有关NodeBB从低版本1.7.x升级到最新的1.16.x版本

    有关NodeBB升级历险记 公司线上的论坛网站一直都是1 7 4版本 而且有不少地方感觉用起来不是很顺手 就想着应该给它升升级了 从1 7 4升级到最新的1 16 x版本 注 不要直接跨版本升级到最高版本 会有数据错乱的问题 升级实操 备份
  • js中对象数组根据对象id分组并转map

    js中对象数组根据对象id分组并转map 如果要将具有相同 id 属性的对象元素 分成不同的数组 可以先从对象数组中提取相同的 id 属性 再使用 Array reduce 和 Map 来进行对象数组的分类 具体实现 对象数组根据id分组并
  • 计算机停电自行启动,电脑自动断电,详细教您电脑开机自动断电怎么解决

    有时候电脑玩着玩着 突然断电关机了 正玩的很激情 突然电脑断电关机了 都恨不得把电脑砸了 一旦出现电脑开机后断电的情况 让我们习惯从软件下手的同学们来说 有点无从下手 下面 小编跟大伙一同探讨一下电脑开机自动断电的解决方法 说到电脑启动过程
  • 请用C语言写一个15*15的扫雷小游戏

    扫雷是一个非常有趣的游戏 可以使用 C 语言编写 下面是一个简单的扫雷代码示例 include
  • C++ 排序函数 sort(),qsort()的用法

    C库函数qsort C 库函数sort 其中qsort相对较慢 sort实现非常高效 qsort 功 能 使用 快速排序例程进行排序 头文件 include
  • 锐浪报表-实现导入导出

    锐浪报表 实现导入导出 实现思路 代码实现 实现思路 导入导出实现思路 我们使用锐浪报表自带的导出功能导出 XX grf 后 鼠标右键是可以像编辑文本一样编辑内容的 由此联想到 用记事本手写一个模板改一下后缀名是不是也可以当作报表模板 答案
  • 好消息:vue3.3发布了,来看看更新那些功能

    前言 vue3 3发布了 来看看更新那些功能 原英文地址 Announcing Vue 3 3 The Vue PointThe offical blog for the Vue js projecthttps blog vuejs org
  • 2023年完整版Java学习路线图

    目录 第一阶段 Java核心基础 第二阶段 数据库核心技术 第三阶段 Java Web内容 第四阶段 企业级框架讲解 第五阶段 分布式微服务架构 第六阶段 技能深入提升 第七阶段 企业级项目实战 Java学习路线图 以下是我为您提供的原创J
  • NOIP学习之顺序查找:145.找最大数序列

    测试链接 总时间限制 1000ms 内存限制 65536kB 描述 输入n行 每行不超过100个无符号整数 无符号数不超过4位 请输出最大整数以及最大整数所在的行号 行号从1开始 如果该数据在多个行中出现 则按从小到大输出相应行号 行号之间
  • 【计算机视觉

    文章目录 一 MnasNet 二 GhostNet 三 Compact Convolutional Transformers CCT 四 NesT 五 Res2Net 六 EfficientNetV2 七 Capsule Network 八
  • JQuery安装与下载教程

    jQuery安装与下载 JQuery 是一个javaScript库 是一个轻量级的 写的少 做的多 的JavaScript库 jQuery 极大地简化javaScript编程 juery相比js优点 jquery的onload加载事件速度更
  • 方波转为正弦波的简单方案简介

    将方波信号转化为正弦波信号 主要是需要抑制方波信号的谐波信号 主要是抑制三次谐波 经过仿真测试 能够将方波转化为正弦波的滤波器 其衰减必须足够陡峭 将谐波频率尽可能压掉 在实际的滤波器中 经过测试 采用椭圆低通滤波器是能够实现所需要的滤波功
  • 【C++】STL常用容器总结之四:链表list

    5 链表list List是每个节点包含前驱指针 后继指针和数据域三个部分的双向链表 List不提供随机存取 访问元素需要按顺序走到需存取的元素 时间复杂度为O n 在list的任何位置上执行插入或删除操作都非常迅速 只需在list内部调整
  • 单目标优化:飞狐优化算法(Flying Foxes Optimization,FFO)求解cec2017(提供Matlab代码)

    一 飞狐优化算法简介 飞狐优化算法 Flying Foxes Optimization FFO 由Konstantinos Zervoudakis与Stelios Tsafarakis于2022年提出 参考文献 Zervoudakis K
  • 冒泡排序与快速排序【C语言】

    冒泡排序 基本思想 对有n个记录的序列进行冒泡排序 首先将第一个数字与第二个数字进行比较 若为逆序 则将两个数字的顺序交换 然后比较第二个数字与第三个数字 若为逆序 则将两个数字的顺序交换 依此类推 经过第一轮排序后 最大的数字将 下沉 到
  • PHP进行中文URL编转码为GB2312或UTF8

    中文转URL编码 GB2312 urlencode iconv utf 8 gb2312 中国人 中文转URL编码 UTF8 urlencode 中国人
  • ubuntu磁盘扩容方法(简单有效)

    准备工作 使用Vmware进行扩展 在进行磁盘扩展的时候 虚拟机不可以有快照 使用快照管理删除快照 开始扩容 点击 虚拟机 设置 硬盘 扩展 填写扩展大小 分区设置 扩展完成后并还需要在操作系统进行设置才能真正使用 下面有几种方法 第一种方
  • 运行开源库CCPD-RPnet代码,提示「KeyError: Caught KeyError in replica 0 on device 0」错误

    文章目录 问题描述 问题排查 Solution Other 问题描述 通过python3 demo py i demo m models fh02 pth运行车牌识别CCPD开源代码 提示 KeyError Caught KeyError