onnx添加nms

import numpy as np

import onnx
from onnx import defs, checker, helper, numpy_helper, mapping
from onnx import ModelProto, GraphProto, NodeProto, AttributeProto, TensorProto, OperatorProto, OperatorSetIdProto
from onnx.helper import make_tensor, make_tensor_value_info, make_attribute, make_model, make_node

dynamic_batch = False

def append_nms(graph, unused_node=[]):
    ngraph = GraphProto()
    ngraph.name = graph.name

    ngraph.input.extend([i for i in graph.input if i.name not in unused_node])
    ngraph.initializer.extend([i for i in graph.initializer if i.name not in unused_node])
    ngraph.value_info.extend([i for i in graph.value_info if i.name not in unused_node])
    ngraph.node.extend([i for i in graph.node if i.name not in unused_node])

    output_info = [i for i in graph.output]
    ngraph.value_info.extend(output_info)
    # print(graph.output)

    score_node = 'scores'
    bbox_node = 'boxes'

    # ngraph.value_info.append(make_tensor_value_info(score_n
YOLOv8是目标检测领域中一种非常流行的算法模型,它通过骨干网络和多个检测头来检测图像中的目标物体。在将YOLOv8模型转换为ONNX格式后,我们可以将后处理和NMS(非极大值抑制)添加到模型中。 后处理是指在模型的输出上进行额外的处理,以过滤和解码检测结果。常见的后处理步骤包括将预测边界框的坐标从相对位置转换为绝对位置,使用阈值筛选出概率较高的目标框,计算目标框中心的偏移量等。 NMS是一种经典的技术,用于解决目标检测中的重叠框问题。它通过计算不同框之间的IoU(交并比)来评估它们的重叠程度,然后选择概率最高的框作为最终的检测结果,并删除与该框重叠较高的其他框。 将后处理和NMS添加到YOLOv8的ONNX模型中,我们可以使用常见的深度学习框架,如TensorFlow或PyTorch。这样,我们可以通过将后处理和NMS的逻辑编写为网络的一部分,并将其与模型的输出进行集成来实现。运行模型时,输入图像将经过前向传播,然后对输出进行后处理和NMS,最终得到我们所需的目标检测结果。 在此过程中,可以使用一些优化技术,如并行计算和GPU加速,以提高模型的计算性能和速度。通过合理设计后处理和NMS算法的逻辑,我们可以确保模型具有良好的准确性和鲁棒性,能够准确地检测和定位图像中的目标物体。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值