上一节yolov8的训练已经完成了,现在要开始做模型的转换了,这里和yolov7方式相似,但是有一些差异,尤其是yolov7的不带NMS部分的输出顺序和yolov8的输出顺序与格式是有差异的。
首先还是要自己手动加入rpn_op,这里包含了filter,sort,nms部分。
我们一个一个看,首先filter.py里 要先增加个Filter的自定义层。
op_source = """
#include <torch/script.h>
torch::Tensor Filter(torch::Tensor in, int64_t topK, double m_lowScoreThresh)
{
return in;
}
static auto registry =
torch::RegisterOperators("custom_ops::Filter", &Filter);
"""
torch.utils.cpp_extension.load_inline(
name='Filter',
cpp_sources=op_source,
is_python_module=False,
verbose=True,
)
@parse_args("v", "i", "f")
def symbolic_filter(