|
|
本帖最后由 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代码: - class DecBBox(torch.nn.Module):
- def __init__(self, y,num_anchors,num_coords,num_classes, gridH, gridW, imgW, imgH, useClassId, calc_mode,clip_bbox,share_loc, multi_label = 0):
- super(DecBBox, self).__init__()
- self.register_buffer('y', torch.tensor(y))
- self.num_anchors = num_anchors
- self.num_coords = num_coords
- self.num_classes = num_classes
- self.gridH = gridH
- self.gridW = gridW
- self.imgW = imgW
- self.imgH = imgH
- self.useClassId = useClassId
- self.calc_mode = calc_mode
- self.clip_bbox = clip_bbox
- self.share_loc = share_loc
- self.multi_label = multi_label
- def forward(self, x):
- return torch.ops.custom_ops.DecBBox(x,self.y,self.num_anchors, self.num_coords,self.num_classes, self.gridH,self.gridW,
- self.imgW,self.imgH, self.useClassId, self.calc_mode,self.clip_bbox,self.share_loc, self.multi_label)
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|