c++ 如何将YOLOv4特征向量转换为边界框?

gojuced7  于 2023-06-25  发布在  其他
关注(0)|答案(1)|浏览(136)

我使用tensorrt c流水线实现了Yolov4的对象检测代码。虽然tensorrt c API一点都不是用户友好的,但我设法预处理图像并推断模型。然而,I有3个输出,其形状为18x52x52、18x26x26和18x13x13。如何将这些输出转换为边界框?
例如,我对一张人物图片的输出如下:0.103638 -0.646484 -0.632324 -0.922852 -0.981445 -0.602539 ...,大小为18x52x52 = 48672

ac1kyiln

ac1kyiln1#

将YOLOv4特征向量转换为边界框涉及几个步骤。YOLOv4是一种对象检测算法,可预测图像中对象的边界框坐标和类别概率。以下是该过程的总体概述:
1.获取YOLOv4特征向量:YOLOv4通过卷积神经网络(CNN)处理图像以生成特征图。然后,这些特征图用于预测边界框坐标和类别概率。您需要提取与要转换的边界框对应的特征向量。
1.反转归一化:YOLOv4通常在将输入图像馈送到网络之前对它们执行归一化。如果您已对输入图像进行了规格化,则需要反转特征向量的规格化过程,以使其恢复到原始比例。
1.使用sigmoid函数:预测的边界框坐标通常被输出为相对于它们所属的网格单元的偏移。这些偏移需要使用sigmoid函数进行变换以获得介于0和1之间的值。将sigmoid函数应用于特征向量的x、y、width和height值。
1.计算边界框坐标:YOLOv4预测边界框相对于它们所属的网格单元的坐标。要获得图像上的绝对坐标,需要根据网格单元位置、锚框和预测偏移量计算坐标。YOLOv4算法使用不同大小的锚框来预测边界框。您需要应用锚框信息来调整坐标。
1.应用非最大抑制(NMS):YOLOv4通常预测同一对象的多个边界框。若要消除重复检测,可以应用NMS过滤掉置信度较低的重叠边界框。NMS选择最有信心的边界框,并基于其交集与并集(IoU)重叠来抑制其他边界框。
通过执行这些步骤,可以将YOLOv4特征向量转换为边界框,并获得图像中对象的最终预测。需要注意的是,具体的实现细节可能会因您使用的框架或库而异。

相关问题