将 Yolov5 bbox 导出为 Pascal 格式
Exporting Yolov5 bboxes to Pascal format
之前已经问过一些类似样式的问题 (, 2) 但是,none 提到了新的 Yolov5
样式注释。
是否有一个简单的函数接受 标准化 Yolov5
边界框,例如:-
test = [0.436523 0.535156 0.587891 0.484375]
def some_function(test):
...
return pascal_coords
并且returns它是Pascal-VOC格式?
I have tried plenty of online scripts - like https://dbuscombe-usgs.github.io/MLMONDAYS/blog/2020/08/17/blog-post and https://blog.roboflow.com/how-to-convert-annotations-from-pascal-voc-to-yolo-darknet/
但他们的目标是完整的数据集转换,包括 xml
,有些不接受规范化框
这是格式:-
Yolov5 [<x-center> <y-center> <width> <height>]
|---> Converted to <-----|
Pascal VOC [x-top-left, y-top-left, x-bottom-right, y-bottom-right]
我只是想要转换后的边界框 :)
TIA!
没有直接的方法将规范化的 Yolo 格式转换为另一种格式,如 Pascal VOC,因为您需要知道图像的大小才能进行转换。 (就像您首先需要知道图像的大小才能将其转换为规范化的 yolo 格式一样。)您还需要提供一些映射以将 class 数字转换为 class 名称.
我正在开发一个 Python 包来简化这些类型的转换,称为 PyLabel。我有一个示例笔记本,可以在此处将 Yolo v5 注释转换为 VOC 格式 https://github.com/pylabel-project/samples/blob/main/yolo2voc.ipynb. You can open it in Colab using this link。
核心代码是这样的:
from pylabel import importer
dataset = importer.ImportYoloV5(path=path_to_annotations, path_to_images=path_to_images)
dataset.export.ExportToVoc(output_path=output_path)
希望对您有所帮助。如果您有任何反馈或需要帮助,请随时与我联系。
经过一番挖掘,我发现这个优秀的小包隐藏在@tensortturtle 的成堆 google 搜索 https://github.com/tensorturtle/rebox 下。感谢作者提供如此有用且易于使用的存储库!
它提供了一种快速转换 bbox 以及计算基本操作的方法,例如 IOU
。真是可爱的作品:)
这是我将Yolo转换成Pascal_VOC时使用的代码片段。 Yolo 使用归一化坐标,因此拥有图像的高度和宽度很重要。否则无法反算。
这是我的片段:
# Convert Yolo bb to Pascal_voc bb
def yolo_to_pascal_voc(x_center, y_center, w, h, image_w, image_h):
w = w * image_w
h = h * image_h
x1 = ((2 * x_center * image_w) - w)/2
y1 = ((2 * y_center * image_h) - h)/2
x2 = x1 + w
y2 = y1 + h
return [x1, y1, x2, y2]
对于任何其他对象检测格式转换,您可以查看我在 Medium 上的博客 post:https://christianbernecker.medium.com/convert-bounding-boxes-from-coco-to-pascal-voc-to-yolo-and-back-660dc6178742
玩得开心!
之前已经问过一些类似样式的问题 (Yolov5
样式注释。
是否有一个简单的函数接受 标准化 Yolov5
边界框,例如:-
test = [0.436523 0.535156 0.587891 0.484375]
def some_function(test):
...
return pascal_coords
并且returns它是Pascal-VOC格式?
I have tried plenty of online scripts - like https://dbuscombe-usgs.github.io/MLMONDAYS/blog/2020/08/17/blog-post and https://blog.roboflow.com/how-to-convert-annotations-from-pascal-voc-to-yolo-darknet/
但他们的目标是完整的数据集转换,包括 xml
,有些不接受规范化框
这是格式:-
Yolov5 [<x-center> <y-center> <width> <height>]
|---> Converted to <-----|
Pascal VOC [x-top-left, y-top-left, x-bottom-right, y-bottom-right]
我只是想要转换后的边界框 :) TIA!
没有直接的方法将规范化的 Yolo 格式转换为另一种格式,如 Pascal VOC,因为您需要知道图像的大小才能进行转换。 (就像您首先需要知道图像的大小才能将其转换为规范化的 yolo 格式一样。)您还需要提供一些映射以将 class 数字转换为 class 名称.
我正在开发一个 Python 包来简化这些类型的转换,称为 PyLabel。我有一个示例笔记本,可以在此处将 Yolo v5 注释转换为 VOC 格式 https://github.com/pylabel-project/samples/blob/main/yolo2voc.ipynb. You can open it in Colab using this link。
核心代码是这样的:
from pylabel import importer
dataset = importer.ImportYoloV5(path=path_to_annotations, path_to_images=path_to_images)
dataset.export.ExportToVoc(output_path=output_path)
希望对您有所帮助。如果您有任何反馈或需要帮助,请随时与我联系。
经过一番挖掘,我发现这个优秀的小包隐藏在@tensortturtle 的成堆 google 搜索 https://github.com/tensorturtle/rebox 下。感谢作者提供如此有用且易于使用的存储库!
它提供了一种快速转换 bbox 以及计算基本操作的方法,例如 IOU
。真是可爱的作品:)
这是我将Yolo转换成Pascal_VOC时使用的代码片段。 Yolo 使用归一化坐标,因此拥有图像的高度和宽度很重要。否则无法反算。
这是我的片段:
# Convert Yolo bb to Pascal_voc bb
def yolo_to_pascal_voc(x_center, y_center, w, h, image_w, image_h):
w = w * image_w
h = h * image_h
x1 = ((2 * x_center * image_w) - w)/2
y1 = ((2 * y_center * image_h) - h)/2
x2 = x1 + w
y2 = y1 + h
return [x1, y1, x2, y2]
对于任何其他对象检测格式转换,您可以查看我在 Medium 上的博客 post:https://christianbernecker.medium.com/convert-bounding-boxes-from-coco-to-pascal-voc-to-yolo-and-back-660dc6178742
玩得开心!