找回密码
 立即注册
搜索
热搜: 星闪 最新 活动
查看: 386|回复: 0

Ascend检测网络RPN硬化问题

[复制链接]

9

主题

0

回帖

73

积分

注册会员

积分
73
发表于 2025-5-14 14:36:12 | 显示全部楼层 |阅读模式
本帖最后由 yhl 于 2025-7-4 09:00 编辑

·常见问题
    转换后的yolo模型,指pytorch->onnx->om中没有报错,但是acl 推理报错或者阻塞。

·排查解决方案
    acl代码问题,建议使用官方sample来验证;
    常见为opset设置不合理,一般为12;
    使用detect模型,而非train模型;

·RPN支持项
    对于一般简单问题不做详细说明,针对RPN部分着重说明。
    首先查看ATC说明文档,确认RPN硬化层的支持范围,例如SS928,19DV500,16CV610等,如下所示:

    根据已支持的硬化结构来做RPN部分,例如obb等方式在文档中未提及就是明确不支持,需要自己cpu实现。


·RPN实现

    以YOLO8为例,RPN添加前后结构如图所示(右图为添加后):




实现方式有两种,对于特定版本,可以采用一键patch的方式进行;对于修改过差异较大的版本,可以通过onnxruntime方式对onnx模型进行修改,效果是等同的。举例部分RPN层的python代码:
  1. class DecBBox(torch.nn.Module):

  2.     def __init__(self, y,num_anchors,num_coords,num_classes, gridH, gridW, imgW, imgH, useClassId, calc_mode,clip_bbox,share_loc, multi_label = 0):

  3.         super(DecBBox, self).__init__()

  4.         self.register_buffer('y', torch.tensor(y))

  5.         self.num_anchors = num_anchors

  6.         self.num_coords = num_coords

  7.         self.num_classes = num_classes

  8.         self.gridH = gridH

  9.         self.gridW = gridW

  10.         self.imgW = imgW

  11.         self.imgH = imgH

  12.         self.useClassId = useClassId

  13.         self.calc_mode = calc_mode

  14.         self.clip_bbox = clip_bbox

  15.         self.share_loc = share_loc

  16.         self.multi_label = multi_label

  17.     def forward(self, x):

  18.         return torch.ops.custom_ops.DecBBox(x,self.y,self.num_anchors, self.num_coords,self.num_classes, self.gridH,self.gridW,

  19.             self.imgW,self.imgH, self.useClassId, self.calc_mode,self.clip_bbox,self.share_loc, self.multi_label)
复制代码







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【淇诺科技】技术论坛 ( 粤ICP备14010465号-1|粤ICP备14010465号-1 )

GMT+8, 2026-4-2 20:50 , Processed in 0.126181 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表