将 .csv 文件转换为 yolo 暗网格式
convert a .csv file to yolo darknet format
我有一些原始为 .csv 格式的注释。我需要将其转换为 yolo 暗网格式,以便使用 yolov4 训练我的模型。
我的 .csv 文件:
YOLO 格式为:object-class x y width height
其中,object_class,宽度,高度是从我的 .csv 格式中获知的。但是找到 x,y 是令人困惑的。注意 x 和 y 是矩形的中心(不是左上角)。
任何帮助将不胜感激:)
您可以使用此功能将边界框转换为yolo 格式。当然,您需要编写一些代码来读取 csv。只需将此功能用作您需要的模板即可。
此函数是从 labelimg 应用程序中提取的:
https://github.com/tzutalin/labelImg/blob/master/libs/yolo_io.py
def BndBox2YoloLine(self, box, classList=[]):
xmin = box['xmin']
xmax = box['xmax']
ymin = box['ymin']
ymax = box['ymax']
xcen = float((xmin + xmax)) / 2 / self.imgSize[1]
ycen = float((ymin + ymax)) / 2 / self.imgSize[0]
w = float((xmax - xmin)) / self.imgSize[1]
h = float((ymax - ymin)) / self.imgSize[0]
# PR387
boxName = box['name']
if boxName not in classList:
classList.append(boxName)
classIndex = classList.index(boxName)
return classIndex, xcen, ycen, w, h
我有一些原始为 .csv 格式的注释。我需要将其转换为 yolo 暗网格式,以便使用 yolov4 训练我的模型。
我的 .csv 文件:
YOLO 格式为:object-class x y width height
其中,object_class,宽度,高度是从我的 .csv 格式中获知的。但是找到 x,y 是令人困惑的。注意 x 和 y 是矩形的中心(不是左上角)。
任何帮助将不胜感激:)
您可以使用此功能将边界框转换为yolo 格式。当然,您需要编写一些代码来读取 csv。只需将此功能用作您需要的模板即可。
此函数是从 labelimg 应用程序中提取的: https://github.com/tzutalin/labelImg/blob/master/libs/yolo_io.py
def BndBox2YoloLine(self, box, classList=[]):
xmin = box['xmin']
xmax = box['xmax']
ymin = box['ymin']
ymax = box['ymax']
xcen = float((xmin + xmax)) / 2 / self.imgSize[1]
ycen = float((ymin + ymax)) / 2 / self.imgSize[0]
w = float((xmax - xmin)) / self.imgSize[1]
h = float((ymax - ymin)) / self.imgSize[0]
# PR387
boxName = box['name']
if boxName not in classList:
classList.append(boxName)
classIndex = classList.index(boxName)
return classIndex, xcen, ycen, w, h