数据采集与融合应用综合实践

综合设计——多源异构数据采集与融合应用综合实践

这个项目属于哪个课程 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 数据库存储用户数据,以及菜品,名称,价格等。

流程:

  1. 用户选择食材:用户在安卓应用中选择食材并添加到购物车。
  2. 生成推荐食谱:前端通过 RESTful API 向后端发送请求,传递购物车中的食材数据。
  3. 后端请求 ChatGLM-6B 模型:后端接收食材数据后,将其通过 HTTP 请求传递给部署的 ChatGLM-6B 模型接口。使用 HttpURLConnection 发起 HTTP 请求。
  4. ChatGLM-6B 模型生成菜谱:模型根据传入的食材数据,生成详细的食谱内容(包括菜名、食材等)。
  5. 返回生成的食谱:后端收到模型返回的菜谱数据后,将其以 JSON 格式 返回给前端。
  6. 展示菜谱:前端接收到菜谱数据后,展示生成的菜谱内容,弹窗显示展示详细信息。

2.2 ChatGLM-6B 模型集成

目标:生成个性化的菜谱。

技术方案:

  • 后端与模型通信
    • ChatGLM-6B 模型暴露 API 接口供后端调用。
    • 使用 JSON 格式在前后端和模型之间传递数据,保证数据结构一致性。
  • 模型训练与调优
    • 使用爬取的食谱数据,对 ChatGLM-6B 进行了微调训练
  • 集成方式
    • 后端调用 API:后端通过 Java 代码发送 HTTP 请求,将用户购物车数据传给模型。
    • 模型生成菜谱:模型处理请求并生成菜谱后,返回包含菜谱内容的 JSON 数据,后端将该数据转发给前端展示。

流程:

  1. 生成请求:后端将用户的购物车数据转换为模型所需的输入格式(如食材名称、数量、价格等)。
  2. 调用模型接口:后端发起 HTTP 请求,传递数据到 ChatGLM-6B 模型接口,模型根据输入生成菜谱。
  3. 返回生成结果:模型返回的菜谱信息包含菜名、食材、步骤等内容,后端将这些数据包装为 JSON 格式 并传递给前端。
  4. 前端展示菜谱:前端接收到菜谱数据后,展示在界面中。

2.3 异步处理与生成过程

目标:保证菜谱生成过程不阻塞主线程,提升用户体验。

技术方案:

  • 前端异步请求
    • 使用 Coroutines处理后台请求,确保 UI 线程不被阻塞。
    • 使用 OkHttp 发起网络请求,结合协程来处理请求,避免 UI 界面卡顿。
  • 后端异步处理
    • 后端通过 Spring Boot 提供的 @Async 注解实现异步调用,避免请求阻塞。

流程:

  1. 异步请求:前端触发请求后,后台执行异步任务生成菜谱。
  2. 后台生成:后端异步调用 ChatGLM-6B 模型进行菜谱生成。
  3. 结果返回:生成完毕后,后端将菜谱数据通过回调或轮询返回前端,前端更新界面。

3.我的工作感悟

3.1 关于项目

​ 一晃眼,项目已经接近尾声,终于可以放松一下,迎接即将到来的假期了。这次项目的周期和工程量都不小,从数据采集,到 Java 前后端的开发【包括后台管理系统】,再到安卓客户端的 App 开发,还融入了智谱6B驱动的 ChatGML 模块。此外,我还与团队一起查阅国内外顶级论文,深入讨论并确定目标算法:包括食物图像识别、食物检索与推荐、多模态食谱分析,以及烹饪动作预测。

​ 整个项目过程中,我们不仅需要面对繁杂的技术实现,还要协调队友之间的对接工作。比如在联调和跨域问题的解决上,大家花了不少时间,经过多次尝试和调整才找到合适的方案。而项目的最大难点,无疑是将算法与 Android 应用集成的环节——这一部分既需要技术上的深度理解,又考验了团队的协作能力。

​ 回顾整个过程,虽然一路充满挑战,但看到从最初的设想到如今功能完善的项目成品,还是非常值得的。这次项目不仅让我们积累了技术经验,也提升了团队的沟通与协作能力,不管是于我,还是队友们,都有很大的进步。

3.2 关于团队

关于这个团队,大家从始到终都在尽力的负责自己的模块,有汇报,会主动进行沟通,会互相帮忙,很团结,对于我来说,关键不在做这个大作业,而是遇到了他们,原来,一个项目,从前端到后端不需要自己从0到1的做,我感觉到了项目的进度会推的很快,作为组长的我,大家对于我的调度也是很积极,这次的合作很舒服,感恩遇见了你们!!!

posted @ 2024-12-15 15:40  清风拂山岗(小高同学)  阅读(43)  评论(0编辑  收藏  举报