<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects | Liu chen chen CV</title><link>https://liuchenlili.github.io/projects/</link><atom:link href="https://liuchenlili.github.io/projects/index.xml" rel="self" type="application/rss+xml"/><description>Projects</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Sun, 19 May 2024 00:00:00 +0000</lastBuildDate><image><url>https://liuchenlili.github.io/media/logo.svg</url><title>Projects</title><link>https://liuchenlili.github.io/projects/</link></image><item><title>SLR</title><link>https://liuchenlili.github.io/projects/slr/</link><pubDate>Wed, 22 Oct 2025 00:00:00 +0000</pubDate><guid>https://liuchenlili.github.io/projects/slr/</guid><description>&lt;h1 id="智能手语教学平台"&gt;智能手语教学平台&lt;/h1&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;项目代号：SignLM&lt;br&gt;
版本：v2.0&lt;br&gt;
最后更新：2025-11-18&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;github地址：https://github.com/liuchenlili/SLR-AI&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bilibili演示视频demo:&lt;/strong&gt;:
&lt;div class="w-full h-auto aspect-video relative"&gt;
&lt;iframe src="//player.bilibili.com/player.html?bvid=BV1Kz4y1e7nP&amp;page=1&amp;autoplay=0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture;"
class="w-full h-full"
&gt;&lt;/iframe&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="1-项目愿景"&gt;1. 项目愿景&lt;/h2&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;“让手语学习像说话一样自然，让听障交流像呼吸一样自由。”&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="2-一句话说明"&gt;2. 一句话说明&lt;/h2&gt;
&lt;p&gt;用 AI 把“手语视频”实时变成“文字/语音”，再把“文字/语音”变成“手语教学”，形成一个可教、可练、可评的闭环学习平台。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="3-核心场景mvp"&gt;3. 核心场景（MVP）&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;场景&lt;/th&gt;
&lt;th&gt;用户故事&lt;/th&gt;
&lt;th&gt;完成标准&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;词汇学习&lt;/td&gt;
&lt;td&gt;小明打开网页，点击“你好”，看到手语示范视频，跟做后系统打分 ≥80 分。&lt;/td&gt;
&lt;td&gt;端到端跑通，延迟 &amp;lt;1.5 s。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;实时识别&lt;/td&gt;
&lt;td&gt;老师面对摄像头打一句手语，系统即时返回文字“同学们好”。&lt;/td&gt;
&lt;td&gt;Top-1 准确率 ≥90%，FPS ≥15。&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI 问答&lt;/td&gt;
&lt;td&gt;小红问“手语中的‘是’和‘事’怎么区分？”扣子智能体给出动作差异 GIF。&lt;/td&gt;
&lt;td&gt;答案相关度 ≥4/5（人工评测）。&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="4-技术全景图"&gt;4. 技术全景图&lt;/h2&gt;
&lt;div class="mermaid"&gt;graph TD
A[浏览器] --&gt;|WebRTC| B(前端 Vue3)&lt;--Axios/WebSocket--&gt;C[Spring Boot 网关]
C --&gt;|HTTP| D[FastAPI 推理集群]
D --&gt;|调用| E[SignFormer GPU 容器]
D --&gt;|调用| F[CNN-LSTM 容器]
C --&gt;|GraphQL| G[扣子智能体]
H[CSL-500 数据集] -.-&gt;|微调| E
H -.-&gt;|蒸馏| F
&lt;/div&gt;
&lt;hr&gt;
&lt;h2 id="5-模型动物园"&gt;5. 模型动物园&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;输入&lt;/th&gt;
&lt;th&gt;输出&lt;/th&gt;
&lt;th&gt;指标&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SignFormer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;主力识别&lt;/td&gt;
&lt;td&gt;32 帧 224×224&lt;/td&gt;
&lt;td&gt;500 类 logits&lt;/td&gt;
&lt;td&gt;Top-1 94.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R(2+1)D&lt;/td&gt;
&lt;td&gt;轻量备选&lt;/td&gt;
&lt;td&gt;16 帧 112×112&lt;/td&gt;
&lt;td&gt;500 类 logits&lt;/td&gt;
&lt;td&gt;Top-1 89.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CNN-LSTM&lt;/td&gt;
&lt;td&gt;老设备兼容&lt;/td&gt;
&lt;td&gt;8 帧 64×64&lt;/td&gt;
&lt;td&gt;100 类 logits&lt;/td&gt;
&lt;td&gt;Top-1 82.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CLIP-Teacher&lt;/td&gt;
&lt;td&gt;语义监督&lt;/td&gt;
&lt;td&gt;被掩码帧&lt;/td&gt;
&lt;td&gt;512-D 向量&lt;/td&gt;
&lt;td&gt;CosSim 0.83&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="6-数据流水线"&gt;6. 数据流水线&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;原始视频 → OpenCV 抽帧 → MediaPipe 抠手/脸 → 对齐到 1280×720 → 增强（随机翻转、亮度、遮挡）→ 生成 two-stream tensor → 进入 SignFormer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="7-关键创新点3-句话版本"&gt;7. 关键创新点（3 句话版本）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;双流时空解耦&lt;/strong&gt;：空间流看“手型”，时间流看“轨迹”，交叉注意力融合，比 3D-CNN 节省 42% FLOPs。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能掩码&lt;/strong&gt;：只遮“手+脸”Tube，强迫模型关注关键语义区域，收敛快 1.7×。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;语义级重建&lt;/strong&gt;：不仅还原像素，还要对齐 CLIP 特征，让网络“理解”动作含义，zero-shot 连续句提升 6.8%。&lt;/li&gt;
&lt;/ol&gt;
&lt;hr&gt;
&lt;h2 id="8-系统架构"&gt;8. 系统架构&lt;/h2&gt;
&lt;h3 id="81-前端vue3--ts"&gt;8.1 前端（Vue3 + TS）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;组件库：Ant Design Vue 4&lt;/li&gt;
&lt;li&gt;状态：Pinia 持久化到 IndexedDB&lt;/li&gt;
&lt;li&gt;实时识别：WebSocket 二进制流传输，前端 WASM 做帧级缓存，降低后端压力。&lt;/li&gt;
&lt;li&gt;可视化：ECharts 5 动态绘制混淆矩阵、训练曲线、网络拓扑图（支持点击查看参数量）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="82-后端spring-boot-3"&gt;8.2 后端（Spring Boot 3）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;多租户：学校/机构隔离（Schema-per-tenant）。&lt;/li&gt;
&lt;li&gt;微服务：用户、课程、成绩、模型网关四模块。&lt;/li&gt;
&lt;li&gt;鉴权：JWT + Redis 黑名单，支持单点踢出。&lt;/li&gt;
&lt;li&gt;文件存储：MinIO S3 协议，视频自动生命周期 30 天后转冷归档。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="83-推理服务fastapi"&gt;8.3 推理服务（FastAPI）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;镜像大小：nvidia/cuda:11.8-runtime，仅保留 onnxruntime-gpu，压缩到 1.2 GB。&lt;/li&gt;
&lt;li&gt;动态批处理：自适应 N=1~4，延迟 &amp;lt;800 ms@N=1，吞吐提升 2.3×@N=4。&lt;/li&gt;
&lt;li&gt;灰度发布：通过 Header &lt;code&gt;Model-Version=signformer-v1.2&lt;/code&gt; 一键切换。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="84-扣子智能体"&gt;8.4 扣子智能体&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Prompt 模板 1200 token，注入《中国手语词典》第三版 5600 词条。&lt;/li&gt;
&lt;li&gt;多轮记忆：Redis Stream 保存最近 5 轮对话，支持断网续问。&lt;/li&gt;
&lt;li&gt;卡片回复：返回 JSON 含 &lt;code&gt;gif_url&lt;/code&gt;、&lt;code&gt;动作要领&lt;/code&gt;、&lt;code&gt;易错点&lt;/code&gt;，前端自动渲染。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="9-性能基准csl-500-测试集"&gt;9. 性能基准（CSL-500 测试集）&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;Top-1&lt;/th&gt;
&lt;th&gt;Top-5&lt;/th&gt;
&lt;th&gt;延迟(P99)&lt;/th&gt;
&lt;th&gt;显存&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SignFormer&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;94.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;99.1%&lt;/td&gt;
&lt;td&gt;670 ms&lt;/td&gt;
&lt;td&gt;3.4 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;R(2+1)D&lt;/td&gt;
&lt;td&gt;89.7%&lt;/td&gt;
&lt;td&gt;97.3%&lt;/td&gt;
&lt;td&gt;320 ms&lt;/td&gt;
&lt;td&gt;1.6 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CNN-LSTM&lt;/td&gt;
&lt;td&gt;82.4%&lt;/td&gt;
&lt;td&gt;94.5%&lt;/td&gt;
&lt;td&gt;120 ms&lt;/td&gt;
&lt;td&gt;0.9 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;目标：在 RTX 4060 笔记本端 SignFormer INT8 量化后延迟 &amp;lt;400 ms，精度下降 ≤1%。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="10-安全--伦理"&gt;10. 安全 &amp;amp; 伦理&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;数据脱敏：人脸模糊化开源脚本，默认勾选。&lt;/li&gt;
&lt;li&gt;未成年人模式：13 岁以下禁用上传真人视频，仅用官方素材。&lt;/li&gt;
&lt;li&gt;偏差审查：每季度抽检 500 条预测结果，若性别/地域偏差&amp;gt;5%，立即重训。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="13-一分钟本地体验"&gt;13. 一分钟本地体验&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone https://github.com/xxx/signlm.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; docker &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; docker-compose up
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 浏览器打开 http://localhost:5173&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 上传 video/hello.mp4 → 看到识别结果“你好”&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id="14-许可证"&gt;14. 许可证&lt;/h2&gt;
&lt;p&gt;代码：MIT&lt;br&gt;
模型权重：CC BY-NC-SA 4.0（禁止商用）&lt;br&gt;
CSL-500 数据：遵循原协议，仅提供下载脚本。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="15-联系方式"&gt;15. 联系方式&lt;/h2&gt;
&lt;p&gt;如有问题或建议，请联系：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;邮箱:
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote class="border-l-4 border-neutral-300 dark:border-neutral-600 pl-4 italic text-neutral-600 dark:text-neutral-400 my-6"&gt;
&lt;p&gt;让 AI 做手语翻译，让科技更有温度。❤️&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>Yolo-AI</title><link>https://liuchenlili.github.io/projects/yolo/</link><pubDate>Fri, 22 Aug 2025 00:00:00 +0000</pubDate><guid>https://liuchenlili.github.io/projects/yolo/</guid><description>&lt;h1 id="yolo目标检测系统"&gt;YOLO目标检测系统&lt;/h1&gt;
&lt;p&gt;基于yolo的智能目标检测系统，支持图片、视频和实时摄像头检测。&lt;/p&gt;
&lt;p&gt;github地址：https://github.com/liuchenlili/yoloaiv3&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bilibili演示视频demo:&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="w-full h-auto aspect-video relative"&gt;
&lt;iframe src="//player.bilibili.com/player.html?bvid=BV1u4t8zsEz2&amp;page=1&amp;autoplay=0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture;"
class="w-full h-full"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="项目概述"&gt;项目概述&lt;/h2&gt;
&lt;p&gt;这是一个完整的目标检测解决方案，包含以下组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AI检测服务&lt;/strong&gt; (Python Flask + YOLOv8)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后端API服务&lt;/strong&gt; (Java Spring Boot + MySQL)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前端界面&lt;/strong&gt; (Vue3 + TypeScript + Element Plus)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库&lt;/strong&gt; (MySQL + Redis)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="技术栈"&gt;技术栈&lt;/h2&gt;
&lt;h3 id="ai检测服务"&gt;AI检测服务&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Flask 2.3.3&lt;/li&gt;
&lt;li&gt;YOLOv8 (Ultralytics)&lt;/li&gt;
&lt;li&gt;OpenCV&lt;/li&gt;
&lt;li&gt;WebSocket (Flask-SocketIO)&lt;/li&gt;
&lt;li&gt;Celery (异步任务处理)&lt;/li&gt;
&lt;li&gt;Redis (缓存和任务队列)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="后端服务"&gt;后端服务&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spring Boot 3.2.0&lt;/li&gt;
&lt;li&gt;Spring Security + JWT&lt;/li&gt;
&lt;li&gt;Spring Data JPA&lt;/li&gt;
&lt;li&gt;MySQL 8.0&lt;/li&gt;
&lt;li&gt;Redis&lt;/li&gt;
&lt;li&gt;Swagger/OpenAPI&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="前端界面"&gt;前端界面&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Vue 3.3.8&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Element Plus 2.4.2&lt;/li&gt;
&lt;li&gt;Vue Router 4&lt;/li&gt;
&lt;li&gt;Pinia (状态管理)&lt;/li&gt;
&lt;li&gt;ECharts (数据可视化)&lt;/li&gt;
&lt;li&gt;Axios (HTTP客户端)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="功能特性"&gt;功能特性&lt;/h2&gt;
&lt;h3 id="-检测功能"&gt;🎯 检测功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;图片检测&lt;/strong&gt;: 支持多种图片格式，批量检测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;视频检测&lt;/strong&gt;: 逐帧分析，生成结果视频&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时检测&lt;/strong&gt;: 摄像头实时画面检测&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-模型管理"&gt;🤖 模型管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;模型上传&lt;/strong&gt;: 支持上传自定义训练的.pt模型文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型列表&lt;/strong&gt;: 卡片式展示所有可用模型，显示名称和大小&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型切换&lt;/strong&gt;: 一键激活不同的模型进行检测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型详情&lt;/strong&gt;: 查看模型架构、类别数量、参数等详细信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-模型训练"&gt;🎓 模型训练&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;自定义训练&lt;/strong&gt;: 使用自己的数据集训练YOLO模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;训练参数配置&lt;/strong&gt;:&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时监控&lt;/strong&gt;: WebSocket实时显示训练进度和指标&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;训练日志&lt;/strong&gt;: 详细的训练过程日志记录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;指标可视化&lt;/strong&gt;: 实时图表显示损失、精度、召回率等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-用户管理"&gt;🔒 用户管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;用户注册/登录/权限管理&lt;/li&gt;
&lt;li&gt;JWT认证和刷新机制&lt;/li&gt;
&lt;li&gt;角色分离 (管理员/普通用户)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-数据分析"&gt;📊 数据分析&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;检测结果统计和可视化&lt;/li&gt;
&lt;li&gt;实时仪表板&lt;/li&gt;
&lt;li&gt;历史记录查询和筛选&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-系统管理"&gt;⚙️ 系统管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;多模型支持 (YOLOv8n/s/m/l/x) 支持自定义训练模型和架构&lt;/li&gt;
&lt;li&gt;文件存储和清理&lt;/li&gt;
&lt;li&gt;系统日志和监控&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="快速开始"&gt;快速开始&lt;/h2&gt;
&lt;h3 id="环境要求"&gt;环境要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.8+&lt;/li&gt;
&lt;li&gt;Java 17+&lt;/li&gt;
&lt;li&gt;Node.js 16+&lt;/li&gt;
&lt;li&gt;MySQL 8.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="1-数据库设置"&gt;1. 数据库设置&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 创建数据库&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -u root -p
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;CREATE DATABASE yolo_detection_system&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 导入数据库结构&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysql -u root -p yolo_detection_system &amp;lt; database/schema.sql
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-ai检测服务"&gt;2. AI检测服务&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ai-service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python app.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-后端服务"&gt;3. 后端服务&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; backend-service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 修改数据库配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 编辑 src/main/resources/application.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 构建和运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mvn spring-boot:run
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="4-前端界面"&gt;4. 前端界面&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动开发服务器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="服务端口"&gt;服务端口&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;前端&lt;/strong&gt;: http://localhost:3000&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;后端API&lt;/strong&gt;: http://localhost:8080&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI服务&lt;/strong&gt;: http://localhost:5000&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Swagger文档&lt;/strong&gt;: http://localhost:8080/swagger-ui.html&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="使用说明"&gt;使用说明&lt;/h2&gt;
&lt;h3 id="1-系统登录"&gt;1. 系统登录&lt;/h3&gt;
&lt;p&gt;或注册新用户账号&lt;/p&gt;
&lt;h3 id="2-图片检测"&gt;2. 图片检测&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入&amp;quot;图片检测&amp;quot;页面&lt;/li&gt;
&lt;li&gt;拖拽或点击上传图片&lt;/li&gt;
&lt;li&gt;调整检测参数&lt;/li&gt;
&lt;li&gt;查看检测结果&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="3-视频检测"&gt;3. 视频检测&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入&amp;quot;视频检测&amp;quot;页面&lt;/li&gt;
&lt;li&gt;上传视频文件&lt;/li&gt;
&lt;li&gt;等待处理完成&lt;/li&gt;
&lt;li&gt;下载结果视频&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="4-实时检测"&gt;4. 实时检测&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入&amp;quot;摄像头检测&amp;quot;页面&lt;/li&gt;
&lt;li&gt;允许摄像头权限&lt;/li&gt;
&lt;li&gt;开始实时检测&lt;/li&gt;
&lt;li&gt;查看检测框和结果&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="5-模型管理"&gt;5. 模型管理&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入&amp;quot;模型管理&amp;quot;页面&lt;/li&gt;
&lt;li&gt;查看当前所有可用模型&lt;/li&gt;
&lt;li&gt;上传新模型:&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;切换模型&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;点击模型卡片上的&amp;quot;激活&amp;quot;按钮&lt;/li&gt;
&lt;li&gt;系统会加载新模型用于后续检测&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;管理模型:&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="6-模型训练"&gt;6. 模型训练&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;进入&amp;quot;模型训练&amp;quot;页面&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;准备数据集&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;确保数据集在&lt;code&gt;ai-service/datasets/&lt;/code&gt;目录下&lt;/li&gt;
&lt;li&gt;数据集应包含&lt;code&gt;data.yaml&lt;/code&gt;配置文件&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置训练参数&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;选择基础模型（yolov8n.pt、yolov8s.pt等）&lt;/li&gt;
&lt;li&gt;配置图像尺寸（320/416/512/640/832）&lt;/li&gt;
&lt;li&gt;调整批量大小和学习率&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开始训练&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;点击&amp;quot;开始训练&amp;quot;按钮&lt;/li&gt;
&lt;li&gt;实时查看训练进度和指标&lt;/li&gt;
&lt;li&gt;监控损失值、精度、召回率等&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;训练完成&lt;/strong&gt;:
&lt;ul&gt;
&lt;li&gt;最佳模型自动保存到&lt;code&gt;runs/train/&lt;/code&gt;目录&lt;/li&gt;
&lt;li&gt;可将训练好的模型移动到&lt;code&gt;models/&lt;/code&gt;目录使用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="api文档"&gt;API文档&lt;/h2&gt;
&lt;p&gt;访问 http://localhost:8080/swagger-ui.html 查看完整的API文档。&lt;/p&gt;
&lt;h3 id="主要接口"&gt;主要接口&lt;/h3&gt;
&lt;h4 id="认证接口"&gt;认证接口&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POST /api/auth/login&lt;/code&gt; - 用户登录&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/auth/register&lt;/code&gt; - 用户注册&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/auth/refresh&lt;/code&gt; - 刷新令牌&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="检测接口"&gt;检测接口&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POST /api/detect/image&lt;/code&gt; - 图片检测&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/detect/video&lt;/code&gt; - 视频检测&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/tasks/{taskId}/status&lt;/code&gt; - 查询任务状态&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="模型管理接口"&gt;模型管理接口&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/models/management&lt;/code&gt; - 获取模型管理列表&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/models/upload&lt;/code&gt; - 上传模型文件&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /api/models/{id}/rename&lt;/code&gt; - 重命名模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DELETE /api/models/{id}/delete&lt;/code&gt; - 删除模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/models/{id}/activate&lt;/code&gt; - 激活模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/models/{id}/info&lt;/code&gt; - 获取模型详细信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/models&lt;/code&gt; - 获取可用模型列表&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="模型训练接口"&gt;模型训练接口&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;POST /api/training/start&lt;/code&gt; - 开始训练&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/training/status&lt;/code&gt; - 获取训练状态&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POST /api/training/stop&lt;/code&gt; - 停止训练&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/training/models&lt;/code&gt; - 获取可用预训练模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="用户管理"&gt;用户管理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/users&lt;/code&gt; - 获取用户列表&lt;/li&gt;
&lt;li&gt;&lt;code&gt;PUT /api/users/{id}&lt;/code&gt; - 更新用户信息&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DELETE /api/users/{id}&lt;/code&gt; - 删除用户&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="部署说明"&gt;部署说明&lt;/h2&gt;
&lt;h3 id="生产环境配置"&gt;生产环境配置&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;数据库优化&lt;/strong&gt;: 调整MySQL配置参数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Redis集群&lt;/strong&gt;: 使用Redis Cluster提高可用性&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;负载均衡&lt;/strong&gt;: 使用Nginx进行负载均衡&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SSL证书&lt;/strong&gt;: 配置HTTPS&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;监控告警&lt;/strong&gt;: 集成Prometheus + Grafana&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="开发指南"&gt;开发指南&lt;/h2&gt;
&lt;h3 id="项目结构"&gt;项目结构&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;yolo&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;detection&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;ai&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# AI检测服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="c1"&gt;# Flask应用主文件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="c1"&gt;# Python依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# YOLO模型存储 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;datasets&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 训练数据集存储 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;runs&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 训练结果存储 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;uploads&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 上传文件存储&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;backend&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Spring Boot后端&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Java源码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;pom&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;xml&lt;/span&gt; &lt;span class="c1"&gt;# Maven配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;application&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;yml&lt;/span&gt; &lt;span class="c1"&gt;# 应用配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;frontend&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# Vue3前端&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 源码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# API接口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;management&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ts&lt;/span&gt; &lt;span class="c1"&gt;# 模型管理API &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;training&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ts&lt;/span&gt; &lt;span class="c1"&gt;# 训练API&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;views&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 页面组件&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 模型管理页面 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;training&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 训练页面 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;router&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 路由配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;package&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt; &lt;span class="c1"&gt;# npm配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;vite&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ts&lt;/span&gt; &lt;span class="c1"&gt;# Vite配置&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="n"&gt;database&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="c1"&gt;# 数据库脚本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="n"&gt;schema&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt; &lt;span class="c1"&gt;# 数据库结构&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="代码规范"&gt;代码规范&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Python&lt;/strong&gt;: 遵循PEP 8规范&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Java&lt;/strong&gt;: 使用Google Java Style&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;: 使用ESLint + Prettier&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git&lt;/strong&gt;: 使用约定式提交规范&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="测试"&gt;测试&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 后端测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; backend-service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mvn &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 前端测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; frontend
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# AI服务测试&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ai-service
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python -m pytest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="常见问题"&gt;常见问题&lt;/h2&gt;
&lt;h3 id="q-模型下载慢怎么办"&gt;Q: 模型下载慢怎么办？&lt;/h3&gt;
&lt;p&gt;A: 可以手动下载YOLO模型文件到 &lt;code&gt;ai-service/models/&lt;/code&gt; 目录。&lt;/p&gt;
&lt;h3 id="q-摄像头检测连接失败"&gt;Q: 摄像头检测连接失败？&lt;/h3&gt;
&lt;p&gt;A: 检查浏览器权限和摄像头设备状态。&lt;/p&gt;
&lt;h3 id="q-文件上传失败"&gt;Q: 文件上传失败？&lt;/h3&gt;
&lt;p&gt;A: 检查文件大小限制和服务器磁盘空间。&lt;/p&gt;
&lt;h3 id="q-数据库连接失败"&gt;Q: 数据库连接失败？&lt;/h3&gt;
&lt;p&gt;A: 检查MySQL服务状态和连接配置。&lt;/p&gt;
&lt;h3 id="q-历史记录中不存在视频和图片"&gt;Q: 历史记录中不存在视频和图片&lt;/h3&gt;
&lt;p&gt;A: 查看后端spring启动路径&lt;/p&gt;
&lt;p&gt;修改backend-service/src/main/resources/application.yml&lt;/p&gt;
&lt;p&gt;upload-path:
results-path:&lt;/p&gt;
&lt;h2 id="更新日志"&gt;更新日志&lt;/h2&gt;
&lt;h3 id="v100-2025-06-27"&gt;v1.0.0 (2025-06-27)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;初始版本发布&lt;/li&gt;
&lt;li&gt;支持图片、视频、实时检测&lt;/li&gt;
&lt;li&gt;用户权限管理&lt;/li&gt;
&lt;li&gt;基础数据可视化&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="v201-2025-08-01"&gt;v2.0.1 (2025-08-01)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;优化数据可视化&lt;/li&gt;
&lt;li&gt;优化界面ui&lt;/li&gt;
&lt;li&gt;修复检测记录bug&lt;/li&gt;
&lt;li&gt;增加统计指标&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="v310-2025-08-10"&gt;v3.1.0 (2025-08-10)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;🆕 &lt;strong&gt;模型管理功能&lt;/strong&gt;:&lt;/li&gt;
&lt;li&gt;🆕 &lt;strong&gt;模型训练功能&lt;/strong&gt;:&lt;/li&gt;
&lt;li&gt;🔧 &lt;strong&gt;系统优化&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="联系方式"&gt;联系方式&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;邮箱:
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="致谢"&gt;致谢&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="检测记录功能完成状态"&gt;检测记录功能完成状态&lt;/h2&gt;
&lt;h3 id="-已完成功能"&gt;✅ 已完成功能&lt;/h3&gt;
&lt;h4 id="1-数据库设计"&gt;1. 数据库设计&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;✅ detection_tasks表：包含user_id字段，支持用户数据隔离&lt;/li&gt;
&lt;li&gt;✅ detection_results表：通过task_id关联，间接支持用户隔离&lt;/li&gt;
&lt;li&gt;✅ 索引优化：添加user_id、task_id、status等关键字段索引&lt;/li&gt;
&lt;li&gt;✅ 外键约束：确保数据一致性&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="2-后端api实现"&gt;2. 后端API实现&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;✅ DetectionRecordController：用户检测记录CRUD操作
&lt;ul&gt;
&lt;li&gt;获取检测记录列表（分页、排序、筛选）&lt;/li&gt;
&lt;li&gt;获取检测记录详情&lt;/li&gt;
&lt;li&gt;获取检测结果列表&lt;/li&gt;
&lt;li&gt;获取统计信息&lt;/li&gt;
&lt;li&gt;删除检测记录&lt;/li&gt;
&lt;li&gt;批量删除检测记录&lt;/li&gt;
&lt;li&gt;获取用户概览统计&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;✅ InternalDetectionController：供AI服务使用的内部API
&lt;ul&gt;
&lt;li&gt;创建检测任务&lt;/li&gt;
&lt;li&gt;更新任务状态&lt;/li&gt;
&lt;li&gt;保存检测结果&lt;/li&gt;
&lt;li&gt;获取任务信息&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;✅ 权限控制：所有用户API基于@AuthenticationPrincipal验证&lt;/li&gt;
&lt;li&gt;✅ 数据隔离：确保用户只能访问自己的检测记录&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="3-前端界面实现"&gt;3. 前端界面实现&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;✅ 检测记录列表页面（/history）
&lt;ul&gt;
&lt;li&gt;用户概览统计卡片&lt;/li&gt;
&lt;li&gt;搜索和筛选功能&lt;/li&gt;
&lt;li&gt;表格和卡片两种视图模式&lt;/li&gt;
&lt;li&gt;分页功能&lt;/li&gt;
&lt;li&gt;批量选择和删除&lt;/li&gt;
&lt;li&gt;操作按钮（查看详情、下载、删除）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;✅ 检测记录详情页面（/history/detail/:taskId）
&lt;ul&gt;
&lt;li&gt;基本信息展示&lt;/li&gt;
&lt;li&gt;文件预览功能&lt;/li&gt;
&lt;li&gt;统计图表（类别分布、置信度分布）&lt;/li&gt;
&lt;li&gt;检测结果列表（分页、筛选）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;✅ 路由配置：支持详情页面访问&lt;/li&gt;
&lt;li&gt;✅ 权限验证：自动登录测试用户功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="4-ai服务集成"&gt;4. AI服务集成&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;✅ 后端API客户端：与后端服务通信&lt;/li&gt;
&lt;li&gt;✅ 检测任务创建：自动创建数据库记录&lt;/li&gt;
&lt;li&gt;✅ 状态更新：实时更新任务处理状态&lt;/li&gt;
&lt;li&gt;✅ 结果保存：检测完成后保存结果到数据库&lt;/li&gt;
&lt;li&gt;✅ 图片检测集成：完整的检测流程&lt;/li&gt;
&lt;li&gt;✅ 错误处理：异常情况的状态更新&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="5-文件管理"&gt;5. 文件管理&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;✅ FileController：文件下载和预览API&lt;/li&gt;
&lt;li&gt;✅ 文件上传：支持图片和视频文件&lt;/li&gt;
&lt;li&gt;✅ 结果文件：处理后的文件存储和访问&lt;/li&gt;
&lt;li&gt;✅ 缩略图：任务缩略图生成和显示&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="6-安全配置"&gt;6. 安全配置&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;✅ 内部API：不需要认证，供AI服务使用&lt;/li&gt;
&lt;li&gt;✅ 用户API：需要JWT认证&lt;/li&gt;
&lt;li&gt;✅ CORS配置：支持跨域访问&lt;/li&gt;
&lt;li&gt;✅ 权限隔离：用户数据完全隔离&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-技术特性"&gt;🔧 技术特性&lt;/h3&gt;
&lt;h4 id="用户权限隔离"&gt;用户权限隔离&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;每个用户只能查看自己的检测记录&lt;/li&gt;
&lt;li&gt;所有查询均基于当前登录用户&lt;/li&gt;
&lt;li&gt;数据库级别的权限控制&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="性能优化"&gt;性能优化&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;分页查询：避免大数据量加载&lt;/li&gt;
&lt;li&gt;索引优化：提高查询效率&lt;/li&gt;
&lt;li&gt;懒加载：图片和文件按需加载&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="用户体验"&gt;用户体验&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;响应式设计：支持多种屏幕尺寸&lt;/li&gt;
&lt;li&gt;实时反馈：操作状态提示&lt;/li&gt;
&lt;li&gt;快速搜索：关键词和条件筛选&lt;/li&gt;
&lt;li&gt;批量操作：提高管理效率&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-支持的检测类型"&gt;📊 支持的检测类型&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;✅ 图片检测：单张图片处理&lt;/li&gt;
&lt;li&gt;✅ 视频检测：视频文件处理&lt;/li&gt;
&lt;li&gt;✅ 实时检测：摄像头检测&lt;/li&gt;
&lt;li&gt;✅ 模型管理：自定义模型上传和管理 (新增)&lt;/li&gt;
&lt;li&gt;✅ 模型训练：自定义数据集训练 (新增)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-新功能详细说明"&gt;🚀 新功能详细说明&lt;/h2&gt;
&lt;h3 id="-模型管理系统"&gt;🤖 模型管理系统&lt;/h3&gt;
&lt;h4 id="功能特性-1"&gt;功能特性&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;智能模型识别&lt;/strong&gt;: 自动识别YOLO模型格式和架构&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可视化管理&lt;/strong&gt;: 美观的卡片式界面展示所有模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型信息&lt;/strong&gt;: 显示模型大小、类别数量、修改时间等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一键切换&lt;/strong&gt;: 快速切换不同模型进行检测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;安全管理&lt;/strong&gt;: 防止删除正在使用的模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="支持的模型格式"&gt;支持的模型格式&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;YOLOv8 系列: yolov8n.pt, yolov8s.pt, yolov8m.pt, yolov8l.pt, yolov8x.pt&lt;/li&gt;
&lt;li&gt;YOLOv11 系列: yolov11n.pt 及其他变体&lt;/li&gt;
&lt;li&gt;自定义训练模型: 支持用户训练的所有YOLO格式模型&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="使用流程"&gt;使用流程&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;📁 将模型文件上传到系统&lt;/li&gt;
&lt;li&gt;✅ 系统自动验证模型有效性&lt;/li&gt;
&lt;li&gt;📋 查看模型详细信息和架构&lt;/li&gt;
&lt;li&gt;🔄 一键激活模型用于检测&lt;/li&gt;
&lt;li&gt;🗑️ 管理不需要的模型文件&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="-模型训练系统"&gt;🎓 模型训练系统&lt;/h3&gt;
&lt;h4 id="训练能力"&gt;训练能力&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;多GPU支持&lt;/strong&gt;: 自动检测和使用可用GPU&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;断点续训&lt;/strong&gt;: 支持从检查点恢复训练&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;实时监控&lt;/strong&gt;: WebSocket实时推送训练状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;自动调优&lt;/strong&gt;: 智能调整训练参数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结果保存&lt;/strong&gt;: 自动保存最佳模型权重&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="训练参数配置"&gt;训练参数配置&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;训练参数&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;- &lt;span class="nt"&gt;数据集路径&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;datasets/your_dataset/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="实时监控指标"&gt;实时监控指标&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;📈 &lt;strong&gt;损失函数&lt;/strong&gt;: 训练损失和验证损失&lt;/li&gt;
&lt;li&gt;🎯 &lt;strong&gt;精度指标&lt;/strong&gt;: Precision, Recall, F1-Score&lt;/li&gt;
&lt;li&gt;🏆 &lt;strong&gt;mAP指标&lt;/strong&gt;: mAP@50, mAP@50-95&lt;/li&gt;
&lt;li&gt;⏱️ &lt;strong&gt;进度信息&lt;/strong&gt;: 当前轮次、剩余时间、ETA&lt;/li&gt;
&lt;li&gt;💾 &lt;strong&gt;资源使用&lt;/strong&gt;: GPU使用率、内存占用&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="数据集格式要求"&gt;数据集格式要求&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;datasets/your_dataset/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── data.yaml # 数据集配置文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── images/ # 图像文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── train/ # 训练图像
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── val/ # 验证图像
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── labels/ # 标注文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── train/ # 训练标注 (.txt格式)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── val/ # 验证标注 (.txt格式)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="训练输出"&gt;训练输出&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;🏆 &lt;strong&gt;最佳模型&lt;/strong&gt;: &lt;code&gt;runs/train/exp_xxx/weights/best.pt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;训练曲线&lt;/strong&gt;: 损失和指标变化图表&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;训练日志&lt;/strong&gt;: 完整的训练过程记录&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;验证结果&lt;/strong&gt;: 验证集上的检测结果示例&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-用户功能"&gt;🎯 用户功能&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;查看检测记录&lt;/strong&gt;：分页浏览所有检测任务&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;筛选搜索&lt;/strong&gt;：按类型、状态、时间、关键词筛选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;查看详情&lt;/strong&gt;：详细信息、文件预览、统计图表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;管理记录&lt;/strong&gt;：删除单个或批量删除记录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;统计分析&lt;/strong&gt;：个人检测数据统计和可视化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;下载结果&lt;/strong&gt;：下载处理后的文件&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="-部署说明"&gt;🚀 部署说明&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;前端：Vue3 + TypeScript + Element Plus&lt;/li&gt;
&lt;li&gt;后端：Spring Boot + JPA + MySQL&lt;/li&gt;
&lt;li&gt;AI服务：Flask + YOLOv8&lt;/li&gt;
&lt;li&gt;数据库：MySQL 8.0+&lt;/li&gt;
&lt;li&gt;认证：JWT Token&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="测试指南"&gt;测试指南&lt;/h2&gt;
&lt;h3 id="启动服务"&gt;启动服务&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动后端服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; backend-service &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; mvn spring-boot:run
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动AI服务 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ai-service &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; python app.py
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 启动前端服务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; frontend &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="访问地址"&gt;访问地址&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;前端界面：http://localhost:3000&lt;/li&gt;
&lt;li&gt;后端API文档：http://localhost:8080/swagger-ui.html&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;检测记录功能已完全实现，支持完整的用户隔离和记录管理功能！&lt;/p&gt;</description></item><item><title>ActionRecognitionWeb</title><link>https://liuchenlili.github.io/projects/actionrecognitionweb/</link><pubDate>Thu, 26 Oct 2023 00:00:00 +0000</pubDate><guid>https://liuchenlili.github.io/projects/actionrecognitionweb/</guid><description>&lt;p&gt;github地址：https://github.com/liuchenlili/ActionRecognitionWeb&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bilibili演示视频demo:&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="w-full h-auto aspect-video relative"&gt;
&lt;iframe src="//player.bilibili.com/player.html?bvid=BV17V4y1Y7XQ&amp;page=1&amp;autoplay=0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture;"
class="w-full h-full"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h1 id="动作识别web应用-actionrecognitionweb"&gt;动作识别Web应用 (ActionRecognitionWeb)&lt;/h1&gt;
&lt;p&gt;基于Django和R3D模型的视频动作识别Web应用，支持实时监控、视频分析和异常行为检测。&lt;/p&gt;
&lt;h2 id="项目简介"&gt;项目简介&lt;/h2&gt;
&lt;p&gt;本项目是一个完整的Web应用系统，集成了深度学习模型（R3D）进行视频动作识别，主要功能包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;🎥 视频上传与分析&lt;/li&gt;
&lt;li&gt;📹 实时监控设备管理&lt;/li&gt;
&lt;li&gt;🚨 异常行为检测与报警&lt;/li&gt;
&lt;li&gt;📊 数据可视化展示&lt;/li&gt;
&lt;li&gt;🔐 用户权限管理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="核心技术栈"&gt;核心技术栈&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;后端框架&lt;/strong&gt;: Django 3.2&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;深度学习&lt;/strong&gt;: PyTorch + R3D模型&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库&lt;/strong&gt;: MySQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;前端&lt;/strong&gt;: Bootstrap + jQuery&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI框架&lt;/strong&gt;: SimpleUI&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="下载模型权重"&gt;下载模型权重&lt;/h2&gt;
&lt;p&gt;下载模型权重放到R3D/weight文件夹里&lt;/p&gt;
&lt;p&gt;谷歌网盘地址：https://drive.google.com/file/d/132DU_Ps1jh5zNLjKoiSgngCqv9AUHyUo/view?usp=drive_link&lt;/p&gt;
&lt;p&gt;百度网盘地址： 链接:
提取码: 5t6p&lt;/p&gt;
&lt;h2 id="环境要求"&gt;环境要求&lt;/h2&gt;
&lt;h3 id="系统要求"&gt;系统要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.8.10&lt;/li&gt;
&lt;li&gt;CUDA ≥ 10.2 (GPU版本)&lt;/li&gt;
&lt;li&gt;MySQL 5.7+&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="硬件要求"&gt;硬件要求&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;GPU: NVIDIA显卡（推荐GTX 1060以上）&lt;/li&gt;
&lt;li&gt;内存: 8GB以上&lt;/li&gt;
&lt;li&gt;存储: 10GB以上可用空间&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="快速开始"&gt;快速开始&lt;/h2&gt;
&lt;h3 id="一键安装"&gt;一键安装&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 1. 创建并激活虚拟环境&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda create -n pytorch &lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3.8.10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda activate pytorch
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 2. 安装PyTorch (选择适合你CUDA版本的命令)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# CUDA 11.1:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install &lt;span class="nv"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;1.10.1+cu111 &lt;span class="nv"&gt;torchvision&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.11.2+cu111 &lt;span class="nv"&gt;torchaudio&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 3. 安装项目依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 4. 配置数据库后运行&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py makemigrations
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py migrate
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py createsuperuser
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py runserver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="安装指南"&gt;安装指南&lt;/h2&gt;
&lt;h3 id="1-安装anaconda"&gt;1. 安装Anaconda&lt;/h3&gt;
&lt;p&gt;参考教程：
&lt;/p&gt;
&lt;h3 id="2-创建python虚拟环境"&gt;2. 创建Python虚拟环境&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda create -n pytorch &lt;span class="nv"&gt;python&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3.8.10
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;conda activate pytorch
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-安装pytorch"&gt;3. 安装PyTorch&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;: 需要根据你的CUDA版本选择对应的PyTorch版本&lt;/p&gt;
&lt;h4 id="cuda-111"&gt;CUDA 11.1&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install &lt;span class="nv"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;1.10.1+cu111 &lt;span class="nv"&gt;torchvision&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.11.2+cu111 &lt;span class="nv"&gt;torchaudio&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.10.1 -f https://download.pytorch.org/whl/cu111/torch_stable.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="cuda-102"&gt;CUDA 10.2&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install &lt;span class="nv"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;1.10.1+cu102 &lt;span class="nv"&gt;torchvision&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.11.2+cu102 &lt;span class="nv"&gt;torchaudio&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.10.1 -f https://download.pytorch.org/whl/cu102/torch_stable.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="cuda-116-高版本"&gt;CUDA 11.6 (高版本)&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip --default-timeout&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;300&lt;/span&gt; install &lt;span class="nv"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;1.13.1+cu116 &lt;span class="nv"&gt;torchvision&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.14.1+cu116 &lt;span class="nv"&gt;torchaudio&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.13.1 --extra-index-url https://download.pytorch.org/whl/cu116
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id="cpu版本"&gt;CPU版本&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install &lt;span class="nv"&gt;torch&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;1.10.1+cpu &lt;span class="nv"&gt;torchvision&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.11.2+cpu &lt;span class="nv"&gt;torchaudio&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;0.10.1 -f https://download.pytorch.org/whl/cpu/torch_stable.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;CUDA安装参考&lt;/strong&gt;:
&lt;/p&gt;
&lt;h3 id="4-安装依赖包"&gt;4. 安装依赖包&lt;/h3&gt;
&lt;h4 id="使用requirementstxt"&gt;使用requirements.txt&lt;/h4&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 或者使用清华镜像源加速&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;: 如果安装过程中提示缺少某些包，请根据错误信息进行补充安装。&lt;/p&gt;
&lt;h2 id="数据库配置"&gt;数据库配置&lt;/h2&gt;
&lt;h3 id="1-创建mysql数据库"&gt;1. 创建MySQL数据库&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;SHOW&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DATABASES&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DATABASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CHARSET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;utf8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLLATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;utf8_general_ci&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-修改数据库配置"&gt;2. 修改数据库配置&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;ActionRecognitionWeb/settings.py&lt;/code&gt; 文件中的数据库配置：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DATABASES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;default&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;ENGINE&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;django.db.backends.mysql&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;NAME&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;action&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 数据库名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;USER&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;your_username&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 用户名&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;PASSWORD&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;your_password&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 密码&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;HOST&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;127.0.0.1&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 主机地址&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s1"&gt;&amp;#39;PORT&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3306&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;# 端口号&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-数据库迁移"&gt;3. 数据库迁移&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py makemigrations
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py migrate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="运行应用"&gt;运行应用&lt;/h2&gt;
&lt;h3 id="1-创建管理员账号"&gt;1. 创建管理员账号&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py createsuperuser
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-启动服务"&gt;2. 启动服务&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python manage.py runserver
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;访问地址：http://127.0.0.1:8000&lt;/p&gt;
&lt;h2 id="项目结构"&gt;项目结构&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ActionRecognitionWeb/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── ActionRecognitionWeb/ # Django项目配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── settings.py # 项目设置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── urls.py # URL路由
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── wsgi.py # WSGI配置
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── devices/ # 设备管理应用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── models.py # 数据模型
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── views.py # 视图函数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── EventViews.py # 事件视图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── MonitorViews.py # 监控视图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── VideoViews.py # 视频视图
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── R3D/ # R3D模型模块
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── model.py # 模型定义
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── inference.py # 推理脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── weight/ # 模型权重
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── static/ # 静态文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── templates/ # 模板文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── media/ # 媒体文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── manage.py # Django管理脚本
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="功能模块"&gt;功能模块&lt;/h2&gt;
&lt;h3 id="设备管理"&gt;设备管理&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;设备信息录入与编辑&lt;/li&gt;
&lt;li&gt;设备状态监控&lt;/li&gt;
&lt;li&gt;设备分组管理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="视频分析"&gt;视频分析&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;视频文件上传&lt;/li&gt;
&lt;li&gt;动作识别分析&lt;/li&gt;
&lt;li&gt;结果可视化展示&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="异常检测"&gt;异常检测&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;实时异常行为检测&lt;/li&gt;
&lt;li&gt;异常事件记录&lt;/li&gt;
&lt;li&gt;报警信息管理&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="监控中心"&gt;监控中心&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;实时视频流监控&lt;/li&gt;
&lt;li&gt;多路视频同时监控&lt;/li&gt;
&lt;li&gt;历史记录查询&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="模型信息"&gt;模型信息&lt;/h2&gt;
&lt;h3 id="r3d模型"&gt;R3D模型&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;架构&lt;/strong&gt;: ResNet3D-18&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;预训练&lt;/strong&gt;: 基于大规模视频数据集&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;支持动作类别&lt;/strong&gt;: 101种（UCF-101数据集）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型文件&lt;/strong&gt;: &lt;code&gt;R3D/weight/R3D-ucf101_epoch-35.pth.tar&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="检测类别"&gt;检测类别&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;正常行为&lt;/li&gt;
&lt;li&gt;打架&lt;/li&gt;
&lt;li&gt;爆炸&lt;/li&gt;
&lt;li&gt;车祸&lt;/li&gt;
&lt;li&gt;抢劫&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="常见问题"&gt;常见问题&lt;/h2&gt;
&lt;h3 id="q1-cuda版本不匹配"&gt;Q1: CUDA版本不匹配&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;A&lt;/strong&gt;: 请根据你的GPU和CUDA版本选择对应的PyTorch版本，参考上述安装指令。&lt;/p&gt;
&lt;h3 id="q2-数据库连接错误"&gt;Q2: 数据库连接错误&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;A&lt;/strong&gt;: 检查MySQL服务是否启动，数据库配置是否正确。&lt;/p&gt;
&lt;h3 id="q3-模型加载失败"&gt;Q3: 模型加载失败&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;A&lt;/strong&gt;: 确保模型权重文件存在于 &lt;code&gt;R3D/weight/&lt;/code&gt; 目录下。&lt;/p&gt;
&lt;h3 id="q4-依赖包安装失败"&gt;Q4: 依赖包安装失败&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;A&lt;/strong&gt;: 尝试使用国内镜像源，或者逐个安装依赖包。&lt;/p&gt;
&lt;h2 id="开发指南"&gt;开发指南&lt;/h2&gt;
&lt;h3 id="添加新的动作类别"&gt;添加新的动作类别&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;修改 &lt;code&gt;devices/models.py&lt;/code&gt; 中的 &lt;code&gt;work_choices&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;更新模型标签文件 &lt;code&gt;R3D/weight/ucf_labels.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;重新训练或调整模型输出层&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="自定义ui界面"&gt;自定义UI界面&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;修改 &lt;code&gt;templates/&lt;/code&gt; 目录下的HTML模板&lt;/li&gt;
&lt;li&gt;调整 &lt;code&gt;static/css/&lt;/code&gt; 中的样式文件&lt;/li&gt;
&lt;li&gt;使用SimpleUI配置自定义管理界面&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="联系方式"&gt;联系方式&lt;/h2&gt;
&lt;p&gt;如有问题或建议，请联系项目维护者。&lt;/p&gt;
&lt;p&gt;邮箱:2464228500@qq.com&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;: 首次运行前请确保已完成所有环境配置和数据库设置。&lt;/p&gt;</description></item><item><title>TextClassification</title><link>https://liuchenlili.github.io/projects/textclassification/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://liuchenlili.github.io/projects/textclassification/</guid><description>&lt;h1 id="中文文本分类系统"&gt;中文文本分类系统&lt;/h1&gt;
&lt;p&gt;基于深度学习的中文文本分类系统，支持多种模型算法，包括 TextCNN、LSTM 和朴素贝叶斯分类器。&lt;/p&gt;
&lt;p&gt;github地址：https://github.com/liuchenlili/TextClassification&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bilibili演示视频demo:&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="w-full h-auto aspect-video relative"&gt;
&lt;iframe src="//player.bilibili.com/player.html?bvid=BV19s421P7go&amp;page=1&amp;autoplay=0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture;"
class="w-full h-full"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="-项目简介"&gt;📖 项目简介&lt;/h2&gt;
&lt;p&gt;本项目是一个基于深度学习的中文文本分类系统，支持多种模型算法，包括 TextCNN、LSTM 和朴素贝叶斯分类器。系统提供了完整的训练、评估和推理功能，并配备了基于 Streamlit 的 Web 界面，方便用户进行文本分类任务。&lt;/p&gt;
&lt;h2 id="-主要特性"&gt;🚀 主要特性&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;📊 支持多种深度学习模型（TextCNN、LSTM、Naive Bayes）&lt;/li&gt;
&lt;li&gt;🎯 基于 THUCNews 数据集的中文文本十分类任务&lt;/li&gt;
&lt;li&gt;🖥️ 直观的 Web 界面，支持实时文本分类&lt;/li&gt;
&lt;li&gt;📈 完整的训练日志和可视化功能&lt;/li&gt;
&lt;li&gt;🔧 模块化设计，易于扩展和维护&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-环境要求"&gt;🛠️ 环境要求&lt;/h2&gt;
&lt;h3 id="python-版本"&gt;Python 版本&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Python 3.8+&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="依赖库"&gt;依赖库&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install torch torchvision torchaudio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install streamlit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install scikit-learn
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install pandas numpy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install tqdm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install matplotlib seaborn
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="快速安装"&gt;快速安装&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-数据集说明"&gt;🎯 数据集说明&lt;/h2&gt;
&lt;h3 id="thucnews-中文新闻文本分类数据集"&gt;THUCNews 中文新闻文本分类数据集&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;分类类别&lt;/strong&gt;（共10类）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;📈 &lt;strong&gt;财经&lt;/strong&gt; - 财经新闻&lt;/li&gt;
&lt;li&gt;🏠 &lt;strong&gt;房产&lt;/strong&gt; - 房地产相关&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;股票&lt;/strong&gt; - 股票市场&lt;/li&gt;
&lt;li&gt;🎓 &lt;strong&gt;教育&lt;/strong&gt; - 教育资讯&lt;/li&gt;
&lt;li&gt;💻 &lt;strong&gt;科技&lt;/strong&gt; - 科技新闻&lt;/li&gt;
&lt;li&gt;👥 &lt;strong&gt;社会&lt;/strong&gt; - 社会新闻&lt;/li&gt;
&lt;li&gt;🏛️ &lt;strong&gt;时政&lt;/strong&gt; - 时事政治&lt;/li&gt;
&lt;li&gt;⚽ &lt;strong&gt;体育&lt;/strong&gt; - 体育新闻&lt;/li&gt;
&lt;li&gt;🎮 &lt;strong&gt;游戏&lt;/strong&gt; - 游戏资讯&lt;/li&gt;
&lt;li&gt;🎬 &lt;strong&gt;娱乐&lt;/strong&gt; - 娱乐新闻&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="数据集划分"&gt;数据集划分&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;数据集&lt;/th&gt;
&lt;th&gt;数据量&lt;/th&gt;
&lt;th&gt;用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;训练集&lt;/td&gt;
&lt;td&gt;180,000条&lt;/td&gt;
&lt;td&gt;模型训练&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;验证集&lt;/td&gt;
&lt;td&gt;10,000条&lt;/td&gt;
&lt;td&gt;超参数调优&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;测试集&lt;/td&gt;
&lt;td&gt;10,000条&lt;/td&gt;
&lt;td&gt;模型评估&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="-快速开始"&gt;🚀 快速开始&lt;/h2&gt;
&lt;h3 id="1-启动-web-界面"&gt;1. 启动 Web 界面&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;streamlit run app.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;访问 &lt;code&gt;http://localhost:8501&lt;/code&gt; 即可使用 Web 界面进行文本分类。&lt;/p&gt;
&lt;h3 id="2-模型训练"&gt;2. 模型训练&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 训练 TextCNN 模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python run.py --model TextCNN
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 训练 LSTM 模型 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python run.py --model LSTM
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 训练朴素贝叶斯模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python run.py --model bayes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-模型评估"&gt;3. 模型评估&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 评估指定模型&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python train_eval.py --model TextCNN
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-项目结构"&gt;📁 项目结构&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;TextClassification/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 📁 models/ # 模型定义
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── TextCNN.py # TextCNN 模型
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── LSTM.py # LSTM 模型
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── bayes.py # 朴素贝叶斯模型
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 📁 THUCNews/ # 数据集和模型文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── data/ # 数据文件
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── log/ # 训练日志
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── saved_dict/ # 保存的模型
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 📄 app.py # Streamlit Web 应用
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 📄 run.py # 训练脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 📄 train_eval.py # 评估脚本
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── 📄 utils.py # 工具函数
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── 📄 README.md # 项目说明
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-模型介绍"&gt;🎨 模型介绍&lt;/h2&gt;
&lt;h3 id="textcnn"&gt;TextCNN&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;基于卷积神经网络的文本分类模型&lt;/li&gt;
&lt;li&gt;使用多个不同尺寸的卷积核捕获n-gram特征&lt;/li&gt;
&lt;li&gt;适合短文本分类任务&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="lstm"&gt;LSTM&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;长短期记忆网络，能够捕获文本的序列信息&lt;/li&gt;
&lt;li&gt;处理长文本效果较好&lt;/li&gt;
&lt;li&gt;能够学习文本的上下文依赖关系&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="naive-bayes"&gt;Naive Bayes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;经典的概率分类算法&lt;/li&gt;
&lt;li&gt;训练速度快，对小数据集友好&lt;/li&gt;
&lt;li&gt;作为基线模型进行对比&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-性能表现"&gt;📊 性能表现&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;模型&lt;/th&gt;
&lt;th&gt;准确率&lt;/th&gt;
&lt;th&gt;训练时间&lt;/th&gt;
&lt;th&gt;推理速度&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;TextCNN&lt;/td&gt;
&lt;td&gt;91.2%&lt;/td&gt;
&lt;td&gt;快&lt;/td&gt;
&lt;td&gt;很快&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LSTM&lt;/td&gt;
&lt;td&gt;89.8%&lt;/td&gt;
&lt;td&gt;中等&lt;/td&gt;
&lt;td&gt;快&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Naive Bayes&lt;/td&gt;
&lt;td&gt;85.6%&lt;/td&gt;
&lt;td&gt;很快&lt;/td&gt;
&lt;td&gt;很快&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="-自定义配置"&gt;🔧 自定义配置&lt;/h2&gt;
&lt;p&gt;可以通过修改各模型配置文件来调整超参数：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;学习率、批次大小&lt;/li&gt;
&lt;li&gt;网络结构参数&lt;/li&gt;
&lt;li&gt;训练轮数等&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;⭐ 如果这个项目对你有帮助，请给个 Star！&lt;/p&gt;</description></item><item><title>FaceSign</title><link>https://liuchenlili.github.io/projects/facesign/</link><pubDate>Sun, 22 Oct 2023 00:00:00 +0000</pubDate><guid>https://liuchenlili.github.io/projects/facesign/</guid><description>&lt;h1 id="facesign---智能人脸识别考勤系统"&gt;FaceSign - 智能人脸识别考勤系统&lt;/h1&gt;
&lt;p&gt;FaceSign是一个基于深度学习的人脸识别签到考勤系统，采用Streamlit框架开发，支持教师和学生两种角色。系统通过Dlib库实现人脸特征提取和识别，结合MySQL数据库实现考勤数据的存储和管理。&lt;/p&gt;
&lt;p&gt;github地址：https://github.com/liuchenlili/FaceSign&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bilibili演示视频demo:&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="w-full h-auto aspect-video relative"&gt;
&lt;iframe src="//player.bilibili.com/player.html?bvid=BV1zZtwzbE5P&amp;page=1&amp;autoplay=0"
allow="accelerometer; clipboard-write; encrypted-media; gyroscope; fullscreen; picture-in-picture;"
class="w-full h-full"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;h2 id="-项目简介"&gt;📝 项目简介&lt;/h2&gt;
&lt;p&gt;FaceSign是一个基于深度学习的人脸识别签到考勤系统，采用Streamlit框架开发，支持教师和学生两种角色。系统通过Dlib库实现人脸特征提取和识别，结合MySQL数据库实现考勤数据的存储和管理。&lt;/p&gt;
&lt;h2 id="-主要功能"&gt;✨ 主要功能&lt;/h2&gt;
&lt;h3 id="-教师功能"&gt;👨‍🏫 教师功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;人脸录入&lt;/strong&gt;: 为学生录入人脸信息，建立人脸特征数据库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;课堂考勤&lt;/strong&gt;: 实时人脸识别签到，自动记录考勤数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;考勤统计&lt;/strong&gt;: 查看班级考勤情况，生成统计报表&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据管理&lt;/strong&gt;: 管理学生信息，修改学生资料&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;账户管理&lt;/strong&gt;: 修改个人密码和账户信息&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="-学生功能"&gt;👨‍🎓 学生功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;签到统计&lt;/strong&gt;: 查看个人考勤记录和统计数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;个人信息&lt;/strong&gt;: 管理个人资料和头像&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;密码修改&lt;/strong&gt;: 修改登录密码&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-技术栈"&gt;🛠️ 技术栈&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;前端框架&lt;/strong&gt;: Streamlit&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算机视觉&lt;/strong&gt;: OpenCV + Dlib&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据库&lt;/strong&gt;: MySQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;图像处理&lt;/strong&gt;: PIL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据分析&lt;/strong&gt;: Pandas + Plotly&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI组件&lt;/strong&gt;: streamlit-option-menu&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-依赖包"&gt;📦 依赖包&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;streamlit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencv-python
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;dlib
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pymysql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pandas
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;plotly
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pillow
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;streamlit-option-menu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;numpy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-安装和运行"&gt;🚀 安装和运行&lt;/h2&gt;
&lt;h3 id="1-环境准备"&gt;1. 环境准备&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 安装依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-数据库配置"&gt;2. 数据库配置&lt;/h3&gt;
&lt;p&gt;创建MySQL数据库并执行以下SQL语句：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 创建数据库
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DATABASE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;face&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;CHARACTER&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;SET&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;utf8mb4&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLLATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;utf8mb4_unicode_ci&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="c1"&gt;-- 使用数据库
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="n"&gt;USE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;face&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="c1"&gt;-- 创建用户表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;PRIMARY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;UNIQUE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;255&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;role&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ENUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;teacher&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;student&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;face_feature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;BLOB&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;created_at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TIMESTAMP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;updated_at&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TIMESTAMP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="c1"&gt;-- 创建考勤记录表
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TABLE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attendance&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;AUTO_INCREMENT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;PRIMARY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;INT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NOT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attendance_time&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;TIMESTAMP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ENUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;present&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;absent&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;late&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DEFAULT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;present&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FOREIGN&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;REFERENCES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;ON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;DELETE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;CASCADE&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="c1"&gt;-- 插入默认管理员账户
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;&lt;/span&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;admin123&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;teacher&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;系统管理员&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="3-模型文件准备"&gt;3. 模型文件准备&lt;/h3&gt;
&lt;p&gt;下载Dlib预训练模型文件到 &lt;code&gt;data_dlib/&lt;/code&gt; 目录：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;dlib_face_recognition_resnet_model_v1.dat&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;shape_predictor_68_face_landmarks.dat&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;可从官方网站下载：http://dlib.net/files/&lt;/p&gt;
&lt;h3 id="4-运行应用"&gt;4. 运行应用&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;streamlit run app.py
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-项目结构"&gt;📁 项目结构&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;FaceSign/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── app.py # 主应用程序
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── dock_in.py # 考勤签到模块
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── get_face.py # 人脸录入模块
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── stu_statistics.py # 学生统计模块
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── tea_statistics.py # 教师统计模块
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── README.md # 项目说明文档
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── requirements.txt # 依赖包列表
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── data_dlib/ # Dlib模型文件目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── dlib_face_recognition_resnet_model_v1.dat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── shape_predictor_68_face_landmarks.dat
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── imgs/ # 用户头像存储目录
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── config/ # 配置文件目录(建议新增)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="-配置说明"&gt;🔧 配置说明&lt;/h2&gt;
&lt;h3 id="数据库配置"&gt;数据库配置&lt;/h3&gt;
&lt;p&gt;在各个模块中修改数据库连接参数：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;DatabaseConnection&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;localhost&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3306&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;root&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;your_password&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;face&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;建议将数据库配置抽取到独立的配置文件中。&lt;/p&gt;
&lt;h2 id="-使用说明"&gt;📊 使用说明&lt;/h2&gt;
&lt;h3 id="首次使用流程"&gt;首次使用流程&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;管理员登录&lt;/strong&gt;: 使用默认账户 admin/admin123 登录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学生注册&lt;/strong&gt;: 通过注册功能创建学生账户&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;人脸录入&lt;/strong&gt;: 为每个学生录入人脸特征&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开始考勤&lt;/strong&gt;: 使用课堂考勤功能进行签到&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="考勤流程"&gt;考勤流程&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;教师选择&amp;quot;课堂考勤&amp;quot;功能&lt;/li&gt;
&lt;li&gt;系统启动摄像头&lt;/li&gt;
&lt;li&gt;学生面向摄像头进行人脸识别&lt;/li&gt;
&lt;li&gt;系统自动识别并记录考勤信息&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="-安全说明"&gt;🔒 安全说明&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;密码采用明文存储，建议在生产环境中使用哈希加密&lt;/li&gt;
&lt;li&gt;人脸特征数据已进行加密存储&lt;/li&gt;
&lt;li&gt;建议定期备份数据库数据&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-故障排除"&gt;🐛 故障排除&lt;/h2&gt;
&lt;h3 id="常见问题"&gt;常见问题&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;摄像头无法打开&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查摄像头权限&lt;/li&gt;
&lt;li&gt;确认摄像头未被其他程序占用&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;人脸识别失败&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;确保光线充足&lt;/li&gt;
&lt;li&gt;检查Dlib模型文件是否正确加载&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;数据库连接失败&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查MySQL服务是否启动&lt;/li&gt;
&lt;li&gt;验证数据库连接参数&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="-更新日志"&gt;🔄 更新日志&lt;/h2&gt;
&lt;h3 id="v100-当前版本"&gt;v1.0.0 (当前版本)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;基本的人脸识别考勤功能&lt;/li&gt;
&lt;li&gt;用户管理系统&lt;/li&gt;
&lt;li&gt;考勤统计功能&lt;/li&gt;
&lt;li&gt;Web界面交互&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-未来规划"&gt;🎯 未来规划&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 增加批量导入学生功能&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 支持多课程管理&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 增加考勤报告导出功能&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 添加移动端支持&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 优化人脸识别算法&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 增加实时通知功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="-联系方式"&gt;📞 联系方式&lt;/h2&gt;
&lt;p&gt;如有问题或建议，请联系：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;邮箱:
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>