数据采集与融合应用综合实践
综合设计——多源异构数据采集与融合应用综合实践
这个项目属于哪个课程 | 2024数据采集与融合技术实践 |
---|---|
组名 | 数据"融合炖" 异构 "大杂绘"队 |
项目简介 | 项目名称:味谱魔方 项目logo: 项目介绍: 智能购物菜谱助手是一款结合AI技术的智能化应用,旨在为用户提供从食材购买到菜肴烹饪的一站式服务。通过该平台,用户不仅可以完成食材的在线选购,还能根据选购的食材生成个性化菜谱。 |
团队成员学号 | 102202156 王贺雯 102202156 高涛 102202157 王党兵 102202119 吴佳辉 032004126 曾祥宝 |
项目目标 | 本系统旨在实现用户将食品加入购物车,生成对应的食谱核心功能 |
其他参考文献 | https://www.spkx.net.cn/CN/abstract/abstract58653.shtml |
gitee链接 | https://gitee.com/jyppx000/data-collection-and-fusion |
系统总体技术概述
1.系统架构概述
系统分为后端管理系统、安卓、模型训练及其搭建、爬取数据、调用模型算法接口,部署等多层。
后端管理系统:管理员对安卓端的商家、客户进行管理。
安卓:
- 用户可以在安卓手机端浏览生鲜品类
- 商家可以在安卓手机端发布商品
模型训练及搭建
- 使用开源模型——ChatGLM-6B
爬取数据:核心涉及到js
逆向
2 各模块技术实现
2.1 一键生成菜谱功能
目标:根据用户购物车中的食材信息,通过自己部署的 ChatGLM-6B 模型生成个性化的菜谱并展示给用户。
技术方案:
- 前端技术(安卓):
- 编程语言:使用 Java 进行安卓应用开发。
- UI 设计:采用 XML 布局来设计用户界面。
- 弹框显示:使用 AlertDialog 弹框来展示生成菜谱的过程,以增强用户体验。
- 接口请求:前端通过 RESTful API 向后端发送请求,传递购物车中的食材数据,并等待生成的菜谱内容。
- 后端技术:
- 编程语言:后端使用Java和 Spring Boot 构建 RESTful API。
- 与 ChatGLM-6B 模型集成
- API 接口:后端通过 HTTP 请求将食材数据传递给部署的 ChatGLM-6B 模型,模型返回生成的菜谱内容。
- MySQL 数据存储:使用 MySQL 数据库存储用户数据,以及菜品,名称,价格等。
流程:
- 用户选择食材:用户在安卓应用中选择食材并添加到购物车。
- 生成推荐食谱:前端通过 RESTful API 向后端发送请求,传递购物车中的食材数据。
- 后端请求 ChatGLM-6B 模型:后端接收食材数据后,将其通过 HTTP 请求传递给部署的 ChatGLM-6B 模型接口。使用 HttpURLConnection 发起 HTTP 请求。
- ChatGLM-6B 模型生成菜谱:模型根据传入的食材数据,生成详细的食谱内容(包括菜名、食材等)。
- 返回生成的食谱:后端收到模型返回的菜谱数据后,将其以 JSON 格式 返回给前端。
- 展示菜谱:前端接收到菜谱数据后,展示生成的菜谱内容,弹窗显示展示详细信息。
2.2 ChatGLM-6B 模型集成
目标:生成个性化的菜谱。
技术方案:
- 后端与模型通信
- ChatGLM-6B 模型暴露 API 接口供后端调用。
- 使用 JSON 格式在前后端和模型之间传递数据,保证数据结构一致性。
- 模型训练与调优
- 使用爬取的食谱数据,对 ChatGLM-6B 进行了微调训练
- 集成方式
- 后端调用 API:后端通过 Java 代码发送 HTTP 请求,将用户购物车数据传给模型。
- 模型生成菜谱:模型处理请求并生成菜谱后,返回包含菜谱内容的 JSON 数据,后端将该数据转发给前端展示。
流程:
- 生成请求:后端将用户的购物车数据转换为模型所需的输入格式(如食材名称、数量、价格等)。
- 调用模型接口:后端发起 HTTP 请求,传递数据到 ChatGLM-6B 模型接口,模型根据输入生成菜谱。
- 返回生成结果:模型返回的菜谱信息包含菜名、食材、步骤等内容,后端将这些数据包装为 JSON 格式 并传递给前端。
- 前端展示菜谱:前端接收到菜谱数据后,展示在界面中。
2.3 异步处理与生成过程
目标:保证菜谱生成过程不阻塞主线程,提升用户体验。
技术方案:
- 前端异步请求
- 使用 Coroutines处理后台请求,确保 UI 线程不被阻塞。
- 使用 OkHttp 发起网络请求,结合协程来处理请求,避免 UI 界面卡顿。
- 后端异步处理
- 后端通过 Spring Boot 提供的 @Async 注解实现异步调用,避免请求阻塞。
流程:
- 异步请求:前端触发请求后,后台执行异步任务生成菜谱。
- 后台生成:后端异步调用 ChatGLM-6B 模型进行菜谱生成。
- 结果返回:生成完毕后,后端将菜谱数据通过回调或轮询返回前端,前端更新界面。
3.我的工作感悟
3.1 关于项目
一晃眼,项目已经接近尾声,终于可以放松一下,迎接即将到来的假期了。这次项目的周期和工程量都不小,从数据采集,到 Java 前后端的开发【包括后台管理系统】,再到安卓客户端的 App 开发,还融入了智谱6B驱动的 ChatGML 模块。此外,我还与团队一起查阅国内外顶级论文,深入讨论并确定目标算法:包括食物图像识别、食物检索与推荐、多模态食谱分析,以及烹饪动作预测。
整个项目过程中,我们不仅需要面对繁杂的技术实现,还要协调队友之间的对接工作。比如在联调和跨域问题的解决上,大家花了不少时间,经过多次尝试和调整才找到合适的方案。而项目的最大难点,无疑是将算法与 Android 应用集成的环节——这一部分既需要技术上的深度理解,又考验了团队的协作能力。
回顾整个过程,虽然一路充满挑战,但看到从最初的设想到如今功能完善的项目成品,还是非常值得的。这次项目不仅让我们积累了技术经验,也提升了团队的沟通与协作能力,不管是于我,还是队友们,都有很大的进步。
3.2 关于团队
关于这个团队,大家从始到终都在尽力的负责自己的模块,有汇报,会主动进行沟通,会互相帮忙,很团结,对于我来说,关键不在做这个大作业,而是遇到了他们,原来,一个项目,从前端到后端不需要自己从0到1的做,我感觉到了项目的进度会推的很快,作为组长的我,大家对于我的调度也是很积极,这次的合作很舒服,感恩遇见了你们!!!