使用PPLCNet模型对车辆朝向进行识别
- 1. 配置PaddlePaddle,PaddleClas环境
- 2. 准备数据
-
- 2.1 标注数据格式
- 2.2 标注数据
- 3. 模型训练
-
- 3.1 修改配置文件
- 3.2 训练、评估
- 4 模型预测
1. 配置PaddlePaddle,PaddleClas环境
安装:请先参考文档 环境准备 配置 PaddleClas 运行环境。
2. 准备数据
首先从VeRi数据集官网中申请并下载数据。
2.1 标注数据格式
参考:基于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
)
2.2 标注数据
(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