精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻
💖🔥作者主页 :计算机毕设木哥🔥 💖
文章目录
- 一、项目介绍
- 二、视频展示
- 三、开发环境
- 四、系统展示
- 五、代码展示
- 六、项目文档展示
- 七、项目总结
- [<font color=#fe2c24 >大家可以帮忙点赞、收藏、关注、评论啦 👇🏻](#fe2c24 >大家可以帮忙点赞、收藏、关注、评论啦 👇🏻)
一、项目介绍
车辆定损长期依靠人工看图和经验判断,同一处损伤由不同人评估时常出现严重程度不一致,照片、视频越积越多,事后也很难按统一口径回查。针对判级主观、记录零散的问题,本文通过开发一个车辆损坏严重程度评估系统,用以帮助解决车损定级标准不统一、历史记录难追溯的问题。
系统以 ResNet50 为主模型,采用迁移学习在自建车损图像数据集上完成轻微、中度、严重三分类训练,训练结束后导出 ONNX 供后端加载;后端用 Django 提供识别与记录接口,前端用 Vue 与 ECharts 搭建图片、视频、摄像头三个识别页和统计大屏。功能上覆盖单图与批量识别、视频按每秒一帧抽帧识别、摄像头实时截帧,结果给出类别与置信度并写入历史;历史记录可查询、查看详情和删除,大屏汇总类别分布、识别趋势和任务类型。
经过系统测试,本网站能够满足车辆定损初学者、维修评估人员和教学演示用户快速判断车损程度、留存识别记录的需求,也为深度学习图像分类在车损场景中的落地提供了一个可运行的参考。
二、视频展示
三、开发环境
开发语言:Python、JavaScript
深度学习:PyTorch、torchvision、ResNet50 迁移学习
模型部署:ONNX、ONNX Runtime
后端:Django、MySQL、PyMySQL
前端:Vue、Vue Router、Element UI、ECharts、Axios
前端构建:Node.js、npm、Vue CLI
视频处理:imageio-ffmpeg
开发工具:PyCharm
四、系统展示
系统页面模块展示:






模型训练结果图:











五、代码展示
bash
def main():
items = []
for pool in POOLS:
for cls in CLASSES:
d = os.path.join(DATA, pool, cls)
if not os.path.isdir(d):
continue
for fn in sorted(os.listdir(d)):
p = os.path.join(d, fn)
if os.path.isfile(p) and os.path.splitext(fn)[1].lower() in IMG_EXT:
items.append((p, cls))
labels = [c for _, c in items]
n = len(items)
idx = list(range(n))
# 分层两次切:70% train / 30% rest → rest 对半 val/test
tr_idx, rest_idx = train_test_split(idx, test_size=1 - RATIO[0],
stratify=labels, random_state=SEED)
rest_labels = [labels[i] for i in rest_idx]
va_idx, te_idx = train_test_split(rest_idx, test_size=0.5,
stratify=rest_labels, random_state=SEED)
splits = {"train": tr_idx, "val": va_idx, "test": te_idx}
planned = {}
for split, ids in splits.items():
for i in ids:
src, cls = items[i]
key = (split, cls, os.path.basename(src).lower())
planned[key] = planned.get(key, 0) + 1
for split, ids in splits.items():
seen = {}
for i in ids:
src, cls = items[i]
dst_dir = os.path.join(DATA, split, cls)
os.makedirs(dst_dir, exist_ok=True)
name = os.path.basename(src)
key = (split, cls, name.lower())
if planned[key] > 1:
seen[key] = seen.get(key, 0) + 1
stem, ext = os.path.splitext(name)
name = f"{stem}_x{seen[key]}{ext}"
dst = os.path.join(dst_dir, name)
if os.path.abspath(src) != os.path.abspath(dst):
shutil.move(src, dst)
# 对账通过后才删除源目录,避免丢图
moved_total = 0
per_class = {}
for split in ["train", "val", "test"]:
per_class[split] = {}
for cls in CLASSES:
d = os.path.join(DATA, split, cls)
per_class[split][cls] = len(os.listdir(d)) if os.path.isdir(d) else 0
moved_total += sum(per_class[split].values())
assert moved_total == n, f"落位 {moved_total} != 划分前 {n}"
六、项目文档展示

七、项目总结
本课题围绕车辆损坏严重程度评估展开,针对人工定损主观、判级标准不统一、记录分散的问题,搭建了从数据处理到 Web 应用的系统。数据集共 1122 张车损图像,按轻微、中度、严重三类分层划分为训练、验证和测试集;模型以 ImageNet 预训练的 ResNet50 为基础做迁移学习,训练中采用数据增强、混合精度、EMA 权重和早停,完成后导出 ONNX 供后端部署。系统后端使用 Django 与 MySQL,前端使用 Vue 与 ECharts,提供图片、视频、摄像头三种识别入口,视频按每秒一帧抽帧并与历史卡片同步,推理前设置纯色检测和域外拒识两道防线,识别结果写入历史并支持查询、详情和删除,大屏汇总类别分布、识别趋势和任务类型。测试表明系统可以完成车损三档分级流程,为车损评估教学与辅助判断提供了一个可运行的实现。
大家可以帮忙点赞、收藏、关注、评论啦 👇🏻
💖🔥作者主页 :计算机毕设木哥🔥 💖