warning negative label/yolo标签出现负值?

问题如上图所示,出现场景:图像增强后,xml文件转txt文件。

解决方法1(无脑粗暴,一秒见效):直接把负值转成正值,不影响标注与训练结果,代码如下:

import os
def process_files_in_folder(folder_path):
    # 获取文件夹中的所有文件
    file_list = os.listdir(folder_path)

    for file_name in file_list:
        # 检查文件扩展名是否为txt
        if file_name.endswith('.txt'):
            file_path = os.path.join(folder_path, file_name)

            # 读取文件内容
            with open(file_path, 'r') as file:
                lines = file.readlines()

            # 处理文件中的负数
            processed_lines = []
            for line in lines:
                numbers = line.split()
                processed_numbers = []
                for number in numbers:
                    try:
                        number = float(number)
                        if number ==0:
                            number=int(number)
                        if number < 0:
                            number = abs(number)  # 将负数转换为正数
                    except ValueError:
                        pass
                    processed_numbers.append(str(number))

                processed_line = ' '.join(processed_numbers)
                processed_lines.append(processed_line)

            # 将处理后的内容写回文件
            with open(file_path, 'w') as file:
                file.write('\n'.join(processed_lines))
# 指定文件夹路径
folder_path = r'D:\datasets\oil\train\labels'#只需修改成你的txt路径
process_files_in_folder(folder_path)

解决方法2(抽丝剥茧,根本解决):看了一篇csdn文章:说是图像增强的时候,最大值可能会小于最小值,所以出现负数,我感觉很有道理,按照其修改方法,在xml转txt的文件中加入以下代码:

 if xmlbox.find('xmin').text > xmlbox.find('xmax').text:
            # int.temp
            temp = xmlbox.find('xmin').text
            xmlbox.find('xmin').text = xmlbox.find('xmax').text
            xmlbox.find('xmax').text = temp
        if xmlbox.find('ymin').text > xmlbox.find('ymax').text:
            # int.temp
            temp = xmlbox.find('ymin').text
            xmlbox.find('ymin').text = xmlbox.find('ymax').text
            xmlbox.find('ymax').text = temp
        b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text))

有意思的来了,以前带负数的txt文件是非负了,但是以前不带负数的txt文件又带负数了,搞了半天,发现上面大佬的另一篇文章发现了问题所在。(不过看着挺麻烦的,感觉不如我自己的解决方法一哈哈)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值