计算机毕业设计选题推荐:【基于深度学习的车辆损坏严重程度评估方法研究】ResNet50 图像分类

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻

💖🔥作者主页 :计算机毕设木哥🔥 💖

文章目录

一、项目介绍

车辆定损长期依靠人工看图和经验判断,同一处损伤由不同人评估时常出现严重程度不一致,照片、视频越积越多,事后也很难按统一口径回查。针对判级主观、记录零散的问题,本文通过开发一个车辆损坏严重程度评估系统,用以帮助解决车损定级标准不统一、历史记录难追溯的问题。

系统以 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,提供图片、视频、摄像头三种识别入口,视频按每秒一帧抽帧并与历史卡片同步,推理前设置纯色检测和域外拒识两道防线,识别结果写入历史并支持查询、详情和删除,大屏汇总类别分布、识别趋势和任务类型。测试表明系统可以完成车损三档分级流程,为车损评估教学与辅助判断提供了一个可运行的实现。

大家可以帮忙点赞、收藏、关注、评论啦 👇🏻

💖🔥作者主页 :计算机毕设木哥🔥 💖

相关推荐
wangxiaoxuan21717 分钟前
从深度图到点云:投影、滤波、降采样与聚类
机器学习·数据挖掘·机器人·聚类·科沃斯八界
在所不辞兄1 小时前
为什么在电池供电场景下,不能采用固定电压频率策略,而需要动态调整以最大化 Race-to-Sleep 收益?
人工智能·深度学习·神经网络·机器学习
jianqiang.xue1 小时前
3倍向量算力:Arm给最小MCU装上本地AI
arm开发·人工智能·单片机
北京迅为1 小时前
案例分享 | RK182X算力卡:多路视频VLM监控,四路画面AI同时看懂,一句人话说清现场
linux·人工智能·嵌入式·rk3588·算力卡·rk182x
2601_967987371 小时前
SVM支持向量机通俗解析:找到机器学习的“最优分界线”
机器学习·svm·分类算法·核函数·最大间隔
墨林陌1 小时前
AI 热点日报(2026-11-13):黄仁勋辞任英伟达CEO,百度发智能组织,SpaceX斥740亿建算力
人工智能
喵了几个咪1 小时前
GoWind Flow 拆解:一个 Go 工作流引擎与它的双模式设计器
开发语言·人工智能·后端·golang
aneasystone本尊2 小时前
学习大模型训练的 DPO 与 GRPO:偏好对齐的简化与进化
人工智能