环境:win10,cuda 10.1 , GTX1060
一、数据处理
1、数据集获取:
链接:https://pan.baidu.com/s/1K3rI9PvzHc1KqOJITNMdVg
提取码:lox4
2、数据集格式
数据格式也不一定完全按照上面这种,但是必须得保证图片和标签的名字相同。以MOT17(JDE的Modelzoo中下载得到)为例:
文件夹结构:
labels_with_ids文件夹里面是用转换工具将gt.txt生成对应的JDE训练所需的标注文件,对应每一个视频序列的每一帧图片。
而这片博客是要在UA-DETRAC数据集上训练JDE,所以先看看UA-DETRAC原始数据集(所有图片分辨率为960x540)
标签是XML格式,且一个xml对应一个视频序列,每一个xml内容包含该视频序列中所有帧的标注信息:
其中一帧中包括多个车辆标注,标注信息包括:车辆ID,box坐标,以及一些属性:方向,速度,轨迹长度,遮挡率,车辆类别。要想在JDE中训练,需要进行转换,JDE要求的标注格式:
编写脚本,解析原始xml标注文件,生成上述的标注txt文件,因为FairMOT算法和JDE用的是同一个数据处理方式,甚至是完全相同的数据集,因此我直接在FairMOT的数据转换工具基础上做了修改,内容如下:
import os.path as osp
import os
import numpy as np
import shutil
import xml.dom.minidom as xml
import abc
def mkdirs(d):
if not osp.exists(d):
os.makedirs(d)
seq_root = 'F:/dataset/MOT/UA-DETRAC/DETRAC-train-data/Insight-MVT_Annotation_Train'#图片
xml_root = 'F:/dataset/MOT/UA-DETRAC/DETRAC-Train-Annotations-XML' #原始xml标注
label_root="F:/dataset/MOT/UA-DETRAC/DETRAC-Train-Annotations-track" #新生成的标签保存目录
#mkdirs(label_root)
seqs = [s for s in os.listdir(seq_root)]
'''
读取xml文件
'''
class XmlReader(object):
__metaclass__ = abc.ABCMeta
def __init__(self):
pass
def read_conte