我在看有个同行的博客,发现他把SSD的训练总结的非常好,我用他的训练方法,使用VOC2007数据集进行训练跑通了代码。环境是WINDOWS10+tensorflow-gpu1.9版本。但是这个大兄弟的最终的类别框的计算代码有问题。这里把我写的代码与诸位分享一下。针对的是VOC2007的20分类数据集,最初发现我的输出结果与那个仁兄的训练数据对不上,我仔细检查了areoplane类别的计算结果,发现我的是正确的,有可能是我的数据集版本和那个兄弟的数据集不一样,这也有可能是我训练的时候map只有54%的原因。
废话少说,贴出代码,使用解析XML的方式解决训练集框的数量。
import re
import os
import xml.etree.ElementTree as ET
class1 = 'aeroplane'
class2 = 'bicycle'
class3 = 'bird'
class4 = 'boat'
class5 = 'bottle'
class6 = 'bus'
class7 = 'car'
class8 = 'cat'
class9 = 'chair'
class10 = 'cow'
class11 = 'diningtable'
class12 = 'dog'
class13 = 'horse'
class14 = 'motorbike'
class15 = 'person'
class16 = 'pottedplant'
class17 = 'sheep'
class18 = 'sofa'
class19 = 'train'
class20 = 'tvmonitor'
annotation_folder = 'E:/训练数据集/VOC2007/VOCtrainval_06-Nov-2007/VOCdevkit/VOC2007/Annotations/' #改为自己标签文件夹的路径
list = os.listdir(annotation_folder)
def file_name(file_dir):
L = []
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.xml':
L.append(os.path.join(root, file))
return L
total_number1 = 0
total_number2 = 0
total_number3 &#