← 返回项目企业实践 · 2025 · 已交付

全栈开发(实习)

手写数字识别训练平台

生产实习期间交付的全栈深度学习平台:从数据集管理、多架构模型训练、WebSocket 实时监控到交互式手写识别的完整闭环。

Django 4.2 / DRF / ChannelsVue 3 + Element Plus / TailwindPyTorch / TorchVisionRedis / Chart.jsDocker / Nginx

背景

生产实习期间在大唐互联科技有限公司承担的第一个完整交付:一个面向深度学习入门的 MNIST 手写数字识别平台。此前在课程里做过命令行版本的识别实验,公司希望它变成一个“打开浏览器就能用”的产品:用户不用配环境、不用写代码,就能完成从数据准备、训练到识别的全流程。

问题定义

核心挑战不是模型本身(MNIST 是成熟任务),而是把训练过程变成一个可交互的 Web 服务:训练是耗时任务,用户必须能实时看到进度;识别发生在浏览器画布上,图像必须经过严格的预处理才能匹配 MNIST 分布;多种网络架构和超参数组合需要被持久化管理,而不是散落在脚本里。

方案

训练服务。后端用 Django + DRF 提供 REST 接口,训练任务异步执行;通过 Django Channels + Redis 建立 WebSocket 通道,把每个 epoch 的损失与准确率实时推送到前端,Chart.js 绘制训练曲线。提供三种架构(简单 CNN、深度 CNN、全连接网络)与可调超参(学习率、批次大小、优化器),训练好的模型自动落盘并可在界面中切换加载。深度 CNN 在测试集上准确率约 98%。

识别链路。前端提供交互式画布,用户手写后图像经过边界检测、颜色反转、比例缩放、居中对齐等预处理,转成与 MNIST 一致的 28×28 黑底白字再送入模型,返回预测置信度与概率分布。界面同时显示“模型实际看到的图像”,便于排查识别异常——这是从课程实验阶段就保留下来的调试习惯。

工程化。Vue 3 + Element Plus + Tailwind 搭建响应式界面,Docker Compose 编排 Web、Nginx、PostgreSQL、Redis 全套服务,可以一键部署。

我的角色

独立负责后端接口与 WebSocket 通道、PyTorch 训练与预处理管线、前端页面以及部署配置,按周向公司汇报进度并完成验收演示。

结果

平台完整交付并通过实习验收:训练过程全程可视化、中断可恢复,识别链路稳定,演示环境可用 Docker 一键拉起。

复盘

这段经历把“课程里的模型”和“能交付的系统”之间的鸿沟具体化了:日志、异常恢复、状态持久化、部署脚本,这些才是工程交付的主体。后来做 ROS 视觉计算器和 GoTravel 时,这套“先想清楚用户怎么用,再倒推系统结构”的方法成了习惯。