【DL】VOC2007数据集生成txt 计算 mAP

VOC2007数据转为.txt文件
生成在Main文件夹下
目录内容为文件名

1 生成voc2txt

  • 目录结构

    • VOCdevkit / VOC2007 / Annotations / *.xml
    • VOCdevkit / VOC2007 / JPEGImages / *.bmp *.jpg …
    • VOCdevkit / VOC2007 / ImageSets / Main / *.txt
    • VOCdevkit / VOC2007 / voc2txt.py
  • 代码

import os
import random 
# FILE:voc2txt.py
# NAME:@Link  
# E-Mail:[email protected]

xmlfilepath=r'./VOCdevkit/VOC2007/Annotations'
saveBasePath=r"./VOCdevkit/VOC2007/ImageSets/Main/"

# train & val 占总的90%,test占10%; 如:改为0,则全部生成 .text
trainval_percent=0.9

# train & val 中,分配给train的比例,1.0 即全部用来train 100%,无val
train_percent=1.0


temp_xml = os.listdir(xmlfilepath)
total_xml = []
for xml in temp_xml:
    if xml.endswith(".xml"):
        total_xml.append(xml)

num=len(total_xml)  
list=range(num)  
tv=int(num*trainval_percent)  # trainval
tr=int(tv*train_percent)      # trainval 中 train
trainval= random.sample(list,tv)  
train=random.sample(trainval,tr)  

print("train and val size",tv)
print("traub suze",tr)
ftrainval = open(os.path.join(saveBasePath,'trainval.txt'), 'w')  
ftest = open(os.path.join(saveBasePath,'test.txt'), 'w')  
ftrain = open(os.path.join(saveBasePath,'train.txt'), 'w')  
fval = open(os.path.join(saveBasePath,'val.txt'), 'w')  

for i  in list:  
    name=total_xml[i][:-4]+'\n'  
    if i in trainval:  
        ftrainval.write(name)  
        if i in train:  
            ftrain.write(name)  
        else:  
            fval.write(name)  
    else:  
        ftest.write(name)  

ftrainval.close()  
ftrain.close()  
fval.close()  
ftest .close()

2 VOC2007可以用 labelimg制作

# 安装
pip install labelimg

# 启动
labelimg

3 mAP计算

git clone https://github.com/Cartucho/mAP

这里需要放置好

  • 预测结果:input / detection-results / *.txt
    【DL】VOC2007数据集生成txt 计算 mAP_第1张图片

  • 真实结果:input / ground-truth / *.txt
    【DL】VOC2007数据集生成txt 计算 mAP_第2张图片

  • 图片:input / images-optional (用于可视化)
    【DL】VOC2007数据集生成txt 计算 mAP_第3张图片

你可能感兴趣的:(【DeepL】)