以前已经问过一些类似的样式问题(1,2),但是没有人提到新的Yolov5样式注释。
是否有一个简单的函数接受规范化的Yolov5包围框,例如:-
test = [0.436523 0.535156 0.587891 0.484375]
def some_function(test):
...
return pascal_coords并以Pascal格式返回?
我尝试过很多在线脚本,比如https://dbuscombe-usgs.github.io/MLMONDAYS/blog/2020/08/17/blog-post和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!
发布于 2021-11-18 20:13:17
经过一段时间的挖掘,我发现这个优秀的小包隐藏在谷歌搜索堆中,由@tensorturtle提供的https://github.com/tensorturtle/rebox。感谢作者提供了这样一个有用和简单易用的存储库!
它提供了一种快速转换bboxes以及计算基本操作(如IOU )的方法。非常可爱的作品:)
发布于 2021-11-17 18:39:16
没有直接的方法将规范化的Yolo格式转换成另一种格式,比如Pascal,因为您需要知道图像的大小才能进行转换。(就像您首先需要知道图像的大小才能将其转换为规范化的yolo格式一样。)您还需要提供一些映射来将类号转换为类名。
我正在开发一个Python包,以简化这类名为PyLabel的转换。我有一个示例笔记本,它将把Yolo v5注释转换为VOC格式,这里是https://github.com/pylabel-project/samples/blob/main/yolo2voc.ipynb。您可以使用此链接在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)希望这能有所帮助。如果您有反馈或需要帮助,请随时与我联系。
发布于 2022-01-26 14:19:28
下面是我将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]对于任何其他对象检测格式转换,您可以查看我在媒体:https://christianbernecker.medium.com/convert-bounding-boxes-from-coco-to-pascal-voc-to-yolo-and-back-660dc6178742上的博客文章。
玩得开心!
https://stackoverflow.com/questions/69994481
复制相似问题