YOLOv8-OBB 旋转模型如何训练自己的模型(记录)

文章介绍了如何处理XML文件,针对DOTA数据集中的对象边界框,将非标准格式转换为YOLOOBB格式,并对坐标进行规范化和旋转。同时提及了转换代码和注意事项,包括修改class_mapping以及根据图片格式调整过程。
摘要由CSDN通过智能技术生成

cls_list=[‘分类名称’]
def edit_xml(xml_file, dotaxml_file):
“”"
修改xml文件
:param xml_file:xml文件的路径
:return:
“”"
tree = ET.parse(xml_file)
objs = tree.findall(‘object’)
for ix, obj in enumerate(objs):
x0 = ET.Element(“x0”) # 创建节点
y0 = ET.Element(“y0”)
x1 = ET.Element(“x1”)
y1 = ET.Element(“y1”)
x2 = ET.Element(“x2”)
y2 = ET.Element(“y2”)
x3 = ET.Element(“x3”)
y3 = ET.Element(“y3”)
# obj_type = obj.find(‘bndbox’)
# type = obj_type.text
# print(xml_file)

    if (obj.find('robndbox') == None):
        obj_bnd = obj.find('bndbox')
        obj_xmin = obj_bnd.find('xmin')
        obj_ymin = obj_bnd.find('ymin')
        obj_xmax = obj_bnd.find('xmax')
        obj_ymax = obj_bnd.find('ymax')
        #以防有负值坐标
        xmin = max(float(obj_xmin.text),0)
        ymin = max(float(obj_ymin.text),0)
        xmax = max(float(obj_xmax.text),0)
        ymax = max(float(obj_ymax.text),0)
        obj_bnd.remove(obj_xmin)  # 删除节点
        obj_bnd.remove(obj_ymin)
        obj_bnd.remove(obj_xmax)
        obj_bnd.remove(obj_ymax)
        x0.text = str(xmin)
        y0.text = str(ymax)
        x1.text = str(xmax)
        y1.text = str(ymax)
        x2.text = str(xmax)
        y2.text = str(ymin)
        x3.text = str(xmin)
        y3.text = str(ymin)
    else:
        obj_bnd = obj.find('robndbox')
        obj_bnd.tag = 'bndbox'  # 修改节点名
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值