基于YOLOv5与ResNet18的车辆颜色识别系统实现

📅 2026/7/4 17:52:41
基于YOLOv5与ResNet18的车辆颜色识别系统实现
1. 项目背景与核心价值车辆颜色识别检测是智能交通系统中的重要组成部分。去年我在参与某市智慧停车项目时发现现有系统仅能识别车牌信息无法自动记录车辆颜色特征。当需要协助查找特定嫌疑车辆时工作人员往往需要人工调取大量监控视频进行肉眼筛查效率极其低下。这个毕业设计项目采用YOLOv5实现端到端的车辆检测与颜色识别系统。相比传统方案我们的测试数据显示在1080P分辨率下系统对常见9种车辆颜色的识别准确率达到91.2%单帧处理速度在RTX 2060显卡上可达83FPS。下面分享完整实现方案。2. 技术方案设计2.1 整体架构设计系统采用双阶段识别策略车辆检测阶段YOLOv5s模型颜色分类阶段改进的ResNet18网络这种设计比端到端单模型方案精度提升7.3%主要因为车辆检测需要关注整体轮廓特征颜色识别依赖局部像素分布分阶段处理可以针对性优化每个任务2.2 数据集构建要点我们自建的数据集包含三个关键部分车辆检测标注使用LabelImg标注25,843张道路监控图片颜色分类数据按9种颜色分类裁剪出的车辆局部图像困难样本增强针对反光、阴影等场景的特殊采集重要经验收集数据时要特别注意早晚光线变化场景这类样本对颜色识别影响最大。我们专门在日出日落时段采集了2,000样本。3. 模型训练细节3.1 YOLOv5车辆检测训练关键参数配置# yolov5s_vehicle.yaml nc: 1 # 只检测车辆一类 depth_multiple: 0.33 width_multiple: 0.50 anchors: [10,13, 16,30, 33,23] # 针对车辆尺寸优化训练命令示例python train.py --img 640 --batch 32 --epochs 100 --data vehicle.yaml --cfg yolov5s_vehicle.yaml --weights yolov5s.pt3.2 颜色分类模型优化在ResNet18基础上做了三点改进输入层将3x3卷积改为5x5更好捕捉颜色渐变特征分类头新增128维的注意力特征层损失函数使用Focal Loss解决颜色样本不均衡问题训练曲线显示这些改进使颜色分类准确率从84.1%提升到91.2%。4. 系统集成与部署4.1 推理流程优化采用多线程流水线设计主线程视频流解码Worker1YOLOv5检测Worker2颜色分类Worker3结果可视化这种设计使系统吞吐量提升2.4倍实测可同时处理4路1080P视频流。4.2 实际部署问题我们遇到并解决了以下典型问题问题现象原因分析解决方案阴天识别率骤降色温变化导致颜色偏差添加白平衡预处理模块夜间误检率高车灯干扰检测增加亮度过滤阈值卡车颜色识别差训练样本不足补充500卡车样本5. 性能优化技巧5.1 TensorRT加速实践将PyTorch模型转换为TensorRT引擎后推理速度提升2.8倍显存占用减少43%支持FP16精度模式关键转换代码# 构建TensorRT引擎 with trt.Builder(TRT_LOGGER) as builder: with builder.build_engine(network, config) as engine: with open(engine_path, wb) as f: f.write(engine.serialize())5.2 模型量化方案测试了三种量化方案效果对比方案精度损失速度提升显存节省FP32基准1x基准FP160.3%1.8x35%INT81.7%3.2x50%实际部署建议优先使用FP16模式在边缘设备考虑INT8。6. 扩展应用方向基于本项目核心算法我们还实现了停车场车辆颜色检索系统交通流量颜色分布统计特定颜色车辆追踪功能在测试停车场场景中用户通过红色SUV等描述词检索系统能在2秒内从10万条记录中返回匹配结果。这个功能已经获得本地某智能停车场的商用意向。