狼兔图像识别系统项目报告
1. 项目简介
本项目是一个基于 Django 与 PyTorch 的狼兔图像识别系统,聚焦 Wolf 与 Rabbit 两类动物图像的自动分类。系统提供网页端入口:用户在首页选择模型并上传图片后,后端调用对应的深度学习模型进行推理,将类别与置信度返回前端页面。
项目的数据集和模型结构均围绕 Wolf 与 Rabbit 两个类别组织,models 目录中包含了多种卷积神经网络与 Transformer 模型实现,可借此进行训练结果对比、模型替换与系统扩展。界面简洁直观,适合用于课程设计或小规模的图像分类演示。
2. 系统首页
首页采用左右分栏布局:左侧固定展示系统名称、数据集划分比例和任务说明,右侧集中放置模型选择、图片上传与识别结果展示区域。整体设计突出识别任务本身,操作入口清晰,适合课程设计展示和项目演示。

3. 技术栈
- 后端框架:Django
- 深度学习框架:PyTorch
- 图像处理:PIL、torchvision.transforms
- 数据集读取:ImageFolder 目录式分类数据加载
- 前端页面:HTML、CSS、Django Template
- 可视化分析:Matplotlib
系统整体流程为:前端上传图片,Django 接收请求并保存文件,后端根据用户选择加载对应模型进行预测,最后把识别结果渲染回页面。训练端则通过 train/test 目录读取狼兔图片,并自动生成类别索引文件。
4. 数据集介绍
项目数据集位于 data_set/Wolf and Rabbit 目录下,按照 train 与 test 两个阶段划分,每个阶段下包含 Rabbit 与 Wolf 两个类别文件夹。这样的组织方式可以直接配合 torchvision.datasets.ImageFolder 使用,训练脚本会根据文件夹名称自动建立类别标签映射。
数据集图片覆盖兔子与狼两类目标,训练阶段用于模型学习图像特征,测试阶段用于观察模型在未参与训练图片上的识别表现。

5. 模型与训练流程
模型目录中提供了 AlexNet、LeNet、VGGNet、ResNet、GoogLeNet、MobileNet、DenseNet、EfficientNet、RegNet、ShuffleNet、Swin Transformer、Vision Transformer 等多种模型。训练脚本读取 Wolf and Rabbit 数据集,完成数据增强、批量加载、前向传播、损失计算、反向传播和验证指标统计。训练采用交叉熵损失函数与 Adam 优化器,配合学习率衰减策略。
训练过程中会保存 class_indices.json,用于将模型输出的类别编号映射回真实类别名称;部分训练脚本还会输出 Excel 结果文件,里面记录了每一轮的训练损失、验证准确率、Precision、Recall 和 F1-Score,供后续分析使用。
6. 随机轮次可视化分析
为了避免只展示固定最优结果,本报告从已有的训练结果文件中随机抽取若干模型与训练轮次进行交叉分析。每张图中使用的模型与 epoch 组合互不重复,便于观察不同模型在不同训练阶段的表现差异。
折线图展示随机模型在若干训练轮次上的准确率变化趋势。
柱状图对比不同模型在随机训练轮次上的验证准确率。
本次柱状图抽取的模型与轮次包括:AlexNet 第 3 轮;ResNet 第 9 轮;RegNet 第 5 轮;MobileNet 第 5 轮;ShuffleNet 第 8 轮。本次折线图抽取的模型包括:ViT、LeNet、VGG。
从随机抽取的结果来看,不同网络结构在狼兔二分类任务上的收敛速度和阶段性准确率有明显差异。轻量模型(如 MobileNet、ShuffleNet)参数量小,适合部署到资源有限的场景;深层卷积网络和 Transformer 结构在特征提取上更具优势,但需要更大的训练与推理资源开销。
7. 系统功能说明
- 模型选择:页面根据 models 目录中的权重文件动态展示可用模型。
- 图片上传:支持用户上传常见图像文件。
- 识别处理:后端按用户选择调用对应 predict 模块。
- 结果展示:页面展示模型名称、识别类别、识别概率和上传图片。
- 训练扩展:可通过 main_train.py 统一入口选择不同模型进行训练。
8. 项目总结
本系统打通了从数据集组织、模型训练、网页上传到识别结果展示的完整闭环。项目结构清晰,模型目录独立,可以方便地添加新的网络结构或替换已有权重。后续改进方向:增加批量识别功能、补充更完整的错误提示、添加训练日志管理页面、统一各模型的权重命名规则,并将可视化结果集成到系统后台中。
更多推荐




所有评论(0)