VOC数据集:GT标签和predict.txt实例化图片并展示类别和置信度

VOC标签txt图片实例化图片

参考:
链接: link
链接: link

我这里用的一个文件夹装GT.txt,一个文件夹装Predict.txt,还有一个文件夹装图片。
三个文件里除了后缀名字一一对应。
例如:
GT & Predict:
2008_003379.txt
JPG:
2008_003379.jpg
import os
import cv2
import pandas
from pathlib import Path  

def find_all_files(files_path):
    """遍历指定文件夹所有指定类型文件"""
    p = Path(files_path)
    files_names = []  # 存储文件路径名称
    for file in p.rglob('*.txt'):  # 寻找所有txt文件
        files_names.append(str(file))  # 以字符串形式保存

    return files_names

files_path = r'txt路径'  # 文件夹
files_names = find_all_files(files_path)  # 获取所有文件路径名称
for i in files_names:
    #将遍历好的txt地址分为(绝对地址,名字.txt)
    result1 = os.path.split(i)
    #将名字.txt拆分为(名字,txt)
    result2 = os.path.splitext(result1[1])
    #读取txt的内容
    def read_tablemethod(filename):
        data = pandas.read_table(filename, header=None, delim_whitespace=True,error_bad_lines=False)
        return data
    if __name__ == "__main__":
        data = read_tablemethod(i)
    #根据遍历的txt名字找到对应的图片
    imgPath = os.path.join(r'图片路径(到文件夹)',result2[0]+str('.jpg'))
    img = cv2.imread(imgPath)
    font = cv2.FONT_HERSHEY_SIMPLEX  # 定义字体

    # #红色 预测框-------------------------------------------------
    # for x in range(len(data))  :
    #       xmin = data.iat[x, 2]
    #       ymin = data.iat[x, 3]
    #       xmax = data.iat[x, 4]
    #       ymax = data.iat[x, 5]
    #       a = data.iat[x, 0]
    #       b = data.iat[x, 1]
    #       cv2.rectangle(img, (xmin, ymax), (xmax, ymin), (0, 0, 255), 1)
    #       imgzi = cv2.putText(img, '{} {:.3f}'.format(a, b), (xmin, ymin), font, 0.5, (0, 255, 255), 1)
    #           # 图像,文字内容,坐标(右上角坐标) ,字体,大小,颜色,字体厚度

    #----------------------------------------------------------------
    
    
    # 绿色GT-----------------------------------------------------------------
    for x in range(len(data)) :
          xmin = data.iat[x, 1]
          ymin = data.iat[x, 2]
          xmax = data.iat[x, 3]
          ymax = data.iat[x, 4]
          a = data.iat[x, 0]
          b = 1
          cv2.rectangle(img, (xmin, ymax), (xmax, ymin), (0,255,0), 1)
          imgzi = cv2.putText(img, '{} {:.3f}'.format(a,b), (xmin, ymin), font, 0.5, (0, 255, 255), 1)
          # 图像,文字内容,坐标(右上角坐标) ,字体,大小,颜色,字体厚度
    # ----------------------------------------------------------------------
    cv2.waitKey()
    #保存地址
    img2Path = os.path.join(r'保存路径',
                           result2[0] + str('.jpg'))
    cv2.imwrite(img2Path, img)





其中一张GT.txt
在这里插入图片描述
输出结果
在这里插入图片描述
预测的txt文件与GT.txt不一样,在类别后面还包括置信度,想用预测的txt实例化图片的话只需要注释掉绿色GT部分、解除注释红色预测部分就可以了。
代码里有详细注释,不多说啦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
好的,我会为您介绍如何使用FEMALE.TXT和MALE.TXT数据集来训练BP神经网络分类器。 首先,您需要导入所需的Python库,如numpy、pandas和sklearn。然后,将数据集读入Pandas DataFrame中: ```python import pandas as pd data_female = pd.read_csv("FEMALE.TXT", header=None, names=["name"]) data_male = pd.read_csv("MALE.TXT", header=None, names=["name"]) # 标记性别 data_female["gender"] = 0 data_male["gender"] = 1 # 合并数据集 data = pd.concat([data_female, data_male], ignore_index=True) # 随机打乱数据 data = data.sample(frac=1).reset_index(drop=True) ``` 接下来,您需要对姓名进行特征提取。这里我们选择使用每个姓名的长度作为特征。您可以根据需要使用其他特征,如音节或字母的出现频率等。 ```python # 特征提取 data["name_length"] = data["name"].apply(len) # 将特征和标签分开 X = data[["name_length"]] y = data["gender"] ``` 然后,使用sklearn库中的train_test_split函数将数据集分为训练集和测试集: ```python from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) ``` 接下来,使用sklearn库中的StandardScaler函数对特征进行标准化处理: ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) ``` 最后,使用sklearn库中的MLPClassifier函数构建BP神经网络分类器,并使用训练集进行训练: ```python from sklearn.neural_network import MLPClassifier clf = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000) clf.fit(X_train, y_train) ``` 您可以使用测试集对分类器进行评估: ```python from sklearn.metrics import accuracy_score y_pred = clf.predict(X_test) print("Accuracy: {:.2f}%".format(accuracy_score(y_test, y_pred) * 100)) ``` 这里我们使用一个包含10个神经元的隐藏层。通过调整隐藏层中神经元的数量和训练迭代次数等参数,您可以尝试优化BP神经网络分类器的性能。 完整的代码如下所示: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neural_network import MLPClassifier from sklearn.metrics import accuracy_score # 读入数据 data_female = pd.read_csv("FEMALE.TXT", header=None, names=["name"]) data_male = pd.read_csv("MALE.TXT", header=None, names=["name"]) # 标记性别 data_female["gender"] = 0 data_male["gender"] = 1 # 合并数据集 data = pd.concat([data_female, data_male], ignore_index=True) # 随机打乱数据 data = data.sample(frac=1).reset_index(drop=True) # 特征提取 data["name_length"] = data["name"].apply(len) # 将特征和标签分开 X = data[["name_length"]] y = data["gender"] # 分割训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 特征标准化 scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) # 构建BP神经网络分类器 clf = MLPClassifier(hidden_layer_sizes=(10,), max_iter=1000) clf.fit(X_train, y_train) # 评估分类器性能 y_pred = clf.predict(X_test) print("Accuracy: {:.2f}%".format(accuracy_score(y_test, y_pred) * 100)) ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值