RuntimeError: nms_impl: implementation for device cuda:0 not found.

文章描述了在运行mmdetectionv3.2.0中FasterR-CNN模型时遇到的CUDA错误,由于找不到设备。作者通过检查环境确认GPU可用并发现版本匹配,但问题在于mmcv库。解决方案是卸载并重新安装mmcv。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2023年12月7日
在跑mmdetection(v3.2.0)的faster RCNN模型时报错:

from mmdet.apis import DetInferencer

inferencer = DetInferencer(model='faster-rcnn_r50_fpn_1x_coco', device='cuda:0')

# print(inferencer.cfg)
# img_path = 'img'
inferencer(inputs='img',
           out_dir='faster_rcnn/results',
           return_vis=True,
           no_save_pred=False,
           batch_size=8
           )
print('done')

错误信息如标题所示,提示找不到显卡:
RuntimeError: nms_impl: implementation for device cuda:0 not found.

在该虚拟环境中运行代码检查是否能调用cuda:

import torch

print("是否可用:", torch.cuda.is_available())        # 查看GPU是否可用
print("GPU数量:", torch.cuda.device_count())        # 查看GPU数量
print("torch方法查看CUDA版本:", torch.version.cuda)  # torch方法查看CUDA版本
index = torch.cuda.current_device()
print("GPU索引号:", index)    # 查看GPU索引号
print("GPU名称:", torch.cuda.get_device_name(index))    # 根据索引号得到GPU名称

输出表示一切正常:

是否可用: True
GPU数量: 1
torch方法查看CUDA版本: 12.1
GPU索引号: 0
GPU名称: NVIDIA GeForce RTX 4070 Laptop GPU

检查torch,torchvision,torchaudio各包版本也都对得上(Python 3.8.18):

!pip list
torch                     2.1.0+cu121       
torchaudio                2.1.0+cu121       
torchvision               0.16.0+cu121  

解决方法——重装mmcv:

参考此篇博文的评论区:
https://blog.csdn.net/NCEPUDJ/article/details/121882436

mim uninstall mmcv
mim install mmcv

这里使用mim是因为mmdetection的官方文档里的教程:
https://mmdetection.readthedocs.io/zh-cn/latest/get_started.html
在这里插入图片描述

### DP_C3 和 YOLO 实现细节及其在计算机视觉项目中的应用 #### 1. DP_C3 模块概述 DP_C3 是一种改进的卷积神经网络结构,源自 Res2Net 的多尺度特征提取能力。该模块通过引入多个并行分支来增强特征表示的学习效果[^3]。 ```python class C3(nn.Module): def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): super(C3, self).__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c1, c_, 1, 1) self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2) self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) def forward(self, x): return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1)) ``` 此代码展示了如何构建一个基本的 C3 卷积块,在实际应用中可以根据具体需求调整参数设置。 #### 2. YOLO 输出层解析 YOLO 网络最后一层输出的是一个多维张量,其形状通常为 `S×S×(B*5+C)`,其中 S 表示网格大小(如7),B 表示每个网格预测边界框的数量,而 C 则代表类别数目。对于每一个单元格而言,都会生成 B 组 (x,y,w,h,confidence),再加上 C 类别的概率分布[^1]。 #### 3. 错误处理机制 当运行基于 GPU 加速版本的 NMS(non-maximum suppression)算法时可能会遇到如下错误:“`RuntimeError: nms_impl: implementation for device cuda:0 not found.`”。这通常是由于 CUDA 版本不兼容或其他环境配置问题引起的。建议检查 PyTorch 安装包是否支持当前使用的硬件平台,并确保所有依赖项均已正确安装[^2]。 #### 4. 数据预处理流程 为了适应不同的计算资源条件,某些嵌入式设备可能需要特定的数据转换过程。例如,在 K210 平台上执行人脸检测任务时,摄像头捕获到的画面最初是以 RGB565 编码存储;然而,KPU 芯片内部运算则要求输入图像采用 RGB888 格式。因此,在调用 kpu.run_yolo2 函数之前必须先完成相应的像素格式变换操作[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值