如何将边界框 (x1, y1, x2, y2) 转换为 YOLO 风格 (X, Y, W, H)

我正在训练一个 YOLO 模型,我的边界框格式如下:

x1, y1, x2, y2 => 例如 (100, 100, 200, 200)

我需要将其转换为类似于以下格式的 YOLO 格式:

X, Y, W, H => 0.436262 0.474010 0.383663 0.178218

我已经计算了中心点 X, Y,以及高度 H 和宽度 W。但仍然需要一种方法将它们转换为所提到的浮点数格式。


回答:

YOLO 将图像空间标准化为在 xy 方向上从 0 到 1。为了在您的 (x, y) 坐标和 YOLO 的 (u, v) 坐标之间转换,您需要将数据转换为 u = x / XMAXv = y / YMAX,其中 XMAXYMAX 是您使用的图像数组的最大坐标。

这都取决于图像数组的方向是否一致。

这里是一个用于执行转换的 C 语言函数

#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <math.h>struct yolo {    float   u;    float   v;    };struct yolo convert (unsigned int x, unsigned int y, unsigned int XMAX, unsigned int YMAX){    struct yolo point;    if (XMAX && YMAX && (x <= XMAX) && (y <= YMAX))    {        point.u = (float)x / (float)XMAX;        point.v = (float)y / (float)YMAX;    }    else    {        point.u = INFINITY;        point.v = INFINITY;        errno = ERANGE;    }    return point;}/* convert */int main(){    struct yolo P;    P = convert (99, 201, 255, 324);    printf ("Yolo coordinate = <%f, %f>\n", P.u, P.v);    exit (EXIT_SUCCESS);}/* main */

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注