安装:请先参考文档 环境准备 配置 PaddleClas 运行环境。
首先从VeRi数据集官网中申请并下载数据。
参考:基于PP-Vehicle的交通监控分析系统
VeRi数据集标注了车辆的10种属性,其中10种车辆颜色,9种车型属性,具体如下:
# 车辆颜色
- "yellow"
- "orange"
- "green"
- "gray"
- "red"
- "blue"
- "white"
- "golden"
- "brown"
- "black"
# 车型
- "sedan"
- "suv"
- "van"
- "hatchback"
- "mpv"
- "pickup"
- "bus"
- "truck"
- "estate"
在标注文件中使用长度为19的序列来表示上述属性。
举例:
[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0]
前10位中,位序号0的值为1,表示车辆颜色为"yellow"。
后9位中,位序号11的值为1,表示车型为"suv"。
现在定义一种新的属性车辆朝向
,包含forward、sideward、backward
三个属性,因此要在上述19位标志的后面增加3位分别对应上面的3个方向。
新的属性定义变成了[1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1].(括号内为新增属性位,最后一位为1,表示朝向为backward
)
(1)创建list_direction.txt
,添加内容:
1 forward
2 sideward
3 backward
(2)修改train_label.xml
、test_label.xml
,添加directionID
字段,如下:
其中directionID
为1
表示车头朝前,2
表示车辆水平,3
表示车头朝后
(3)转换label
,生成train_list.txt
可以在python终端中执行下面的命令,也可以将其写入一个文件,然后使用python convert.py的方式运行该文件。
import os
from xml.dom.minidom import parse
vehicleids = []
def convert_annotation(input_fp, output_fp, subdir):
in_file = open(input_fp)
list_file = open(output_fp, 'w')
tree = parse(in_file)
root = tree.documentElement
for item in root.getElementsByTagName("Item"):
label