参考下方链接进行学习,感谢大大。
Faster-RCNN跑自己的数据集(个人记录过程)FPN学习_faster rcnn训练自己的数据集-优快云博客
1.标签制作
需要使用xml格式的标签文件,如果是yolo格式的,需要转成xml文件,代码如下:
from xml.dom.minidom import Document
import os
import cv2
# def makexml(txtPath, xmlPath, picPath): # txt所在文件夹路径,xml文件保存路径,图片所在文件夹路径
def makexml(picPath, txtPath, xmlPath): # txt所在文件夹路径,xml文件保存路径,图片所在文件夹路径
"""此函数用于将yolo格式txt标注文件转换为voc格式xml标注文件
"""
dic = {'0': "fish", # 创建字典用来对类型进行转换
'1': "jellyfish", # 此处的字典要与自己的classes.txt文件中的类对应,且顺序要一致
'2': "penguin",
'3': "puffin",
'4': "shark",
'5': "starfish",
'6': "stingray",
}
files = os.listdir(txtPath)
for i, name in enumerate(files):
xmlBuilder = Document()
annotation = xmlBuilder.createElement("annotation") # 创建annotation标签
xmlBuilder.appendChild(annotation)
txtFile = open(txtPath + name)
txtList = txtFile.readlines()
aa=picPath + name[0:-4] + ".jpg"
img = cv2.imread(picPath + name[0:-4] + ".jpg")
Pheight, Pwidth, Pdepth = img.shape
folder = xmlBuilder.createElement("folder") # folder标签
foldercontent = xmlBuilder.createTextNode("driving_annotation_dataset")
folder.appendChild(foldercontent)
annotation.appendChild(folder) # folder标签结束
filename = xmlBuilder.createElement("filename") # filename标签
filenamecontent = xmlBuilder.createTextNode(name[0:-4] + ".jpg")
filename.appendC