本文博主介绍使用 PaddleVideo 训练打螺丝动作分类方案的完整端到端实操步骤基于飞桨官方推荐的工业落地模型 PP-TSM。 第一步数据准备与目录结构首先将打螺丝的长视频裁剪为 1~5 秒的短视频片段。你需要准备“打螺丝screw”和“非打螺丝/其他other”两类数据。在服务器或电脑上建立如下目录结构/home/paddle/dataset/screw_data/ ├── videos/ │ ├── screw_001.mp4 │ ├── screw_002.mp4 │ ├── other_001.mp4 │ └── other_002.mp4 ├── train.list └── val.list标签文件train.list / val.list编写规范这两个文本文件用于告诉 PaddleVideo 视频路径和对应的类别数字假设0代表打螺丝1代表其他。中间用空格隔开train.list训练集占比 80%videos/screw_001.mp4 0 videos/other_001.mp4 1val.list验证集占比 20%videos/screw_002.mp4 0 videos/other_002.mp4 1️ 第二步环境安装打开终端依次执行以下命令配置 PaddlePaddle 和 PaddleVideo 环境# 1. 创建并激活 Python 虚拟环境 conda create -n ppvideo python3.10 -y conda activate ppvideo # 2. 安装 PaddlePaddle GPU 版本请根据你的 CUDA 版本选择此处以 CUDA 11.8 为例 python3 -m pip install paddlepaddle-gpu3.0.0b0 -i https://paddlepaddle.org.cn # 3. 克隆 PaddleVideo 官方源码并安装依赖 git clone https://github.com cd PaddleVideo pip install -r requirements.txt 第三步修改配置文件修改 PaddleVideo 内置的 PP-TSM 配置文件。配置文件的完整路径为configs/recognition/pptsm/pptsm_uav_frames_dense.yaml或选用pptsm_v2相关配置。使用文本编辑器打开它必须修改以下几个关键参数# 1. 修改类别数打螺丝、其他共 2 类 MODEL: head: num_classes: 2 # 2. 修改训练集路径 DATASET: train: format: VideoDataset data_prefix: /home/paddle/dataset/screw_data/videos file_path: /home/paddle/dataset/screw_data/train.list # 3. 修改验证集路径 valid: format: VideoDataset data_prefix: /home/paddle/dataset/screw_data/videos file_path: /home/paddle/dataset/screw_data/val.list # 4. 调整训练超参数根据你的显存大小调整 batch_size DATASET: batch_size: 16 # 如果显存小如少于 8G可以调小到 8 或 4 PIPELINE: train: decode: name: VideoDecoder # 确保直接解码 mp4 视频 第四步模型训练PaddleVideo 提供了现成的预训练权重Backbone 权重可以加速打螺丝动作的收敛。执行以下命令开始训练# 下载预训练权重推荐能大幅提升小样本下的准确率 wget https://bcebos.com # 启动单卡训练 python3 main.py -c configs/recognition/pptsm/pptsm_uav_frames_dense.yaml \ --weights PPTSM_ResNet50_vd_v2_ssld_v2.pdparams \ --validate训练完成后最优的模型权重会保存在 output/ 文件夹下文件名通常为 best.pdparams。 第五步模型验证与测试使用训练好的best.pdparams权重对一段新的打螺丝视频进行推理验证其准确率python3 main.py --test \ -c configs/recognition/pptsm/pptsm_uav_frames_dense.yaml \ --weights output/ppTSM/best.pdparams 第六步导出为工业部署模型Inference Model在工厂产线落地时不能直接运行 Python 训练代码。需要将模型导出为专为推理优化的静态图格式python3 tools/export_model.py \ -c configs/recognition/pptsm/pptsm_uav_frames_dense.yaml \ --poutput_dir./inference/ppTSM执行后会在./inference/ppTSM文件夹下生成以下三个部署核心文件ppTSM.pdmodel(模型结构)ppTSM.pdiparams(模型权重)ppTSM.pdiparams.info(其它信息)有了这三个文件你就可以直接调用 PaddleInference C/Python 预测库将打螺丝识别部署到工厂的工位相机或边缘计算盒上了。