2021-01-02 09:37:34
使用PaddleClas结合RTK数据集训练简易道路质量分类模型的完整流程如下:
一、数据集准备与解压数据集特点
使用Road Traversing Knowledge (RTK) Dataset,包含低成本相机(HP Webcam HD-4110)拍摄的8类道路质量图像:
沥青路面:asphalt(Good)、asphalt(Regular)、asphalt(Bad)
铺装路面:paved(Good)、paved(Regular)、paved(Bad)
非铺装路面:unpaved(Regular)、unpaved(Bad)
解压数据集通过命令行解压8个压缩包至dataset目录:
!unzip -q data/data72034/01_asphaltGood.zip -d dataset!unzip -q data/data72034/02_asphaltRegular.zip -d dataset# ...(依次解压其他6个文件)代码逻辑
遍历dataset目录下的子文件夹(每个子文件夹对应一个类别)。
提取子文件夹名中的类别标签(如01_asphaltGood中的asphaltGood)。
将图像路径与类别索引(0-7)对应,生成train.txt(训练集)和val.txt(验证集),按8:2比例划分。
关键代码
import osdirs = os.listdir('dataset')dirs.sort()labels = [_.split('_')[1] for _ in dirs] # 提取类别名datas = []for index, path in enumerate(dirs): imgs = os.listdir(os.path.join('dataset', path)) imgs.sort() for img in imgs: datas.append('%s %dn' % (os.path.join(path, img), index))random.shuffle(datas)with open('dataset/train.txt', 'w') as f: f.writelines(datas[:-200]) # 前80%为训练集with open('dataset/val.txt', 'w') as f: f.writelines(datas[-200:]) # 后20%为验证集配置文件Road.yaml
需自定义配置以下关键参数:
model_name: 选择模型架构(如RepVGG_A0)。
class_num: 类别数(8类)。
data_dir: 数据集路径(dataset/)。
train_list和val_list: 对应生成的train.txt和val.txt。
epochs: 训练轮数(建议50-100轮)。
learning_rate: 初始学习率(如0.001)。
启动训练
%cd ~/PaddleClas!python tools/train.py -c ../Road.yaml预测命令
使用训练好的模型对测试集(dataset/tests)进行预测,结果保存至predict目录:%cd ~/PaddleClas!python tools/infer/infer.py -i ../dataset/tests --model RepVGG_A0 --pretrained_model ../output/RepVGG_A0/best_model/ppcls --use_gpu True --class_num 8 --save_dir ../predict
结果可视化
预测脚本会自动将分类结果(类别标签和置信度)绘制在原图上,生成带标注的图像。
视频生成逻辑
使用OpenCV按帧顺序读取预测结果图像,写入视频文件:
帧率(fps):30帧/秒。
分辨率(size):与输入图像一致(如352×288)。
编码格式:mp4v(MP4格式)。
关键代码
import cv2import osfps = 30size = (352, 288)videowriter = cv2.VideoWriter("test.mp4", cv2.VideoWriter_fourcc(*'mp4v'), fps, size)path = 'predict'imgs = os.listdir(path)imgs.sort() # 确保图像按顺序拼接for i in imgs: img = cv2.imread(os.path.join(path, i)) videowriter.write(img)videowriter.release()检查各类别样本数量是否均衡,避免模型偏向多数类。
轻量级模型(如RepVGG_A0)适合嵌入式设备部署,若追求精度可尝试ResNet50_vd。
学习率、批次大小(batch_size)需根据GPU显存调整。
导出模型为inference格式,使用Paddle Inference或Paddle Lite加速推理。
通过以上步骤,可完成从数据准备到模型部署的全流程,最终生成道路质量分类的视频演示效果。