之前已经有一些类似风格的问题问过(1,2)但是,没有人提到新的 Yolov5
风格注释。
是否有一个简单的函数接受规范化 Yolov5
边界框,例如:-
test = [0.436523 0.535156 0.587891 0.484375]
def some_function(test):
...
return pascal_coords
并以 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 格式一样。)您还需要提供一些映射以将类号转换为类名。
我正在开发一个名为 PyLabel 的 Python 包来简化这些类型的转换。我有一个示例笔记本,可在此处将 Yolo v5 注释转换为 VOC 格式 https://github.com/pylabel-project/samples/blob/main/yolo2voc.ipynb .您可以使用 this link 在 Colab 中打开它.
核心代码是这样的:
from pylabel import importer
dataset = importer.ImportYoloV5(path=path_to_annotations, path_to_images=path_to_images)
dataset.export.ExportToVoc(output_path=output_path)
希望对您有所帮助。如果您有任何反馈或需要帮助,请随时与我联系。
关于annotations - 将 Yolov5 bbox 导出为 Pascal 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69994481/