提醒:本贴内容仅供有人工智能框架学习基础的同学看,,不然还是别了
百度的飞浆PaddleDetection框架
需要使用yolov3模型和voc类型的数据时,老是要搞这几个文档,,及其麻烦(如果不懂请自己去百度学习一下)
能懂的自然能懂,我遇到需要生成这几个txt时搜了很久发现都挺麻烦,都是要模仿这个文件夹模式..
然后还要拷贝来拷贝去的.浪费精力
QQ截图20210205122807.png (4.35 KB, 下载次数: 1)
2021-2-5 12:28 上传
突然发现,,为啥不自己写呢..哈哈煞笔了 所以分享一下,原理极其简单,就不多说了,可以直接生成,这样就不用去模仿那个什么voccdeckitxxxx的目录了
直接用PaddleDetection例子上的文件夹排列就行了
如果不懂的话赶紧去百度一下吧,学起来,虽然不懂里面的算法
公式也几乎都看不懂,但是会调用就行,改改参数,就是一条好汉了!
给大家看看我自己随便搞的效果,因为搞数据太累了
所以没好好训练,只能识别个巴子英雄,这是个体力活
QQ图片20210205123547.jpg (224.08 KB, 下载次数: 1)
2021-2-5 12:36 上传
QQ图片20210205123550.png (918.73 KB, 下载次数: 1)
2021-2-5 12:36 上传
使用步骤:
1.把我的这个脚本自己新建一个py随便命名,把代码粘上
2.将py文件放入annotations同一级的目录就可以,自己点运行,就会自动生成框架所需要的3个txt
QQ图片20210205122714.png (14.35 KB, 下载次数: 1)
2021-2-5 12:27 上传
yolov数据train_valid_label_list生成.py
[Python] 纯文本查看 复制代码import os
from lxml import etree
# 请把本文件放和annotations同级的目录
file_train = open('./train.txt', 'w')
file_valid = open('./valid.txt', 'w')
file_label = open('./label_list.txt', 'w')
xml_path = './Annotations'
scale = [1,7] #训练集和测试集比例 别乱填 这里的意思是有 1/7是测试集,一般改后面的数字就行
xml_list=os.listdir(xml_path)
#算出训练集的数量
train_length=int(len(xml_list)-len(xml_list)/scale[1])
label_list=[]
print(train_length)
for i, xml_name in enumerate(xml_list):
path = xml_path + "/" + xml_name
xml = etree.parse(path)
root = xml.getroot()
img_path = './' + root.xpath('//folder')[0].text + '/' + root.xpath('//filename')[0].text
#
if i<=train_length:
file_train.write(img_path + ' ' + path + '\n')
else:
file_valid.write(img_path + ' ' + path + '\n')
# 将所有label信息保存到文档里,并且去掉重复
for name in root.xpath('//object/name'):
if name.text not in label_list:
label_list.append(name.text)
file_label.write(name.text + '\n')
file_train.close()
file_valid.close()
file_label.close()