选择基于微信小程序 + SpringBoot 深度学习食物图像分类识别系统课题的学弟学妹注意啦✨!本系统答辩高频考点与核心亮点,就是依托小程序轻量化免安装的优势,搭建食物拍照识别、食物信息查阅、识别记录留存的图像识别服务闭环。开发不必堆砌繁杂冗余功能,牢牢抓住核心业务:用户在微信小程序拍摄或者上传食物图片,后端调用深度学习 CNN 模型完成图像分类推理,快速返回食物名称与简介,随时回看历史识别记录;管理员在 Vue 后台维护食物信息、查看全部识别记录、管理小程序注册用户;系统打通图片上传、模型推理、结果回传整套链路。做好普通用户、系统管理员两类角色的权限划分,吃透微信小程序授权登录 — 图片上传识别 — 模型推理预测 — 识别结果展示与记录保存这条主线流程。答辩重点讲解前后端分离架构、小程序降低图像识别工具使用门槛的优势、深度学习模型与 SpringBoot 业务服务的对接方案、识别数据持久化存储管理,完整演示微信小程序客户端和 Vue 管理后台功能,答辩从容发挥,轻松拿高分💪。
博主介绍:
深耕计算机专业项目 开发多年,基于springboot,vue,node,javaweb,微信小程序,安卓,android,鸿蒙,Harmony,python,毕业设计,课程设计,支持定制开发,附全套资料。
文末有本题目的源码+全套资料⬇️⬇️⬇️
中文摘要
随着计算机视觉与深度学习技术快速发展,图像识别在生活服务领域得到广泛应用。针对大众难以快速识别食物种类、获取食物基础信息的痛点,本文设计并实现一套基于深度学习的食物图像分类识别系统。系统后端采用 SpringBoot+Vue 技术架构,移动端客户端基于微信小程序开发,选用 MySQL 作为数据存储数据库。系统采用卷积神经网络模型完成食物图片特征提取与分类识别,用户通过小程序上传食物照片,即可快速得到食物类别、基础介绍等识别结果。系统划分为普通用户、管理员两类角色,普通用户可实现图片上传识别、识别记录查看、食物信息查询;管理员负责食物类别管理、识别记录查看、用户信息管理等。本文完成系统需求分析、数据库设计、功能模块设计与编码实现,对深度学习模型进行部署封装,通过接口实现小程序、Vue 管理后台与识别模型之间的数据交互。测试结果表明,本系统操作简单、响应稳定,能够准确完成常见食物图像分类识别,方便用户快速识别食物,同时为食物识别类小程序应用提供可行的实现方案。
关键词:食物识别;深度学习;微信小程序;SpringBoot;MySQL
Abstract
With the rapid development of computer vision and deep learning technology, image recognition has been widely used in the field of life services. Aiming at the problem that it is difficult for the public to quickly identify food types and obtain basic food information, this paper designs and implements a food image classification and recognition system based on deep learning. The back-end of the system adopts SpringBoot + Vue technical architecture, the mobile client is developed based on WeChat Mini Program, and MySQL is used as the database. The system uses convolutional neural network to extract image features and classify food. Users can upload food photos through the mini program and quickly obtain recognition results such as food category and introduction. The system includes two types of users: ordinary users and administrators. Ordinary users can upload pictures for recognition, view recognition history and query food information. Administrators manage food categories, recognition records and user information. This paper completes requirement analysis, database design, module design and system implementation. The deep learning model is packaged and deployed, and data interaction among mini program, Vue management background and recognition model is realized through API. The test results show that the system is easy to operate and stable, which can accurately classify common food images. It provides a feasible scheme for food recognition mini program application.
Key words: Food Recognition; Deep Learning; WeChat Mini Program; SpringBoot; MySQL
一、研究目的与意义
研究目的
本课题旨在开发一套轻量化、易使用的食物图像识别系统,依托深度学习图像分类算法,结合微信小程序便捷即用的优势,解决普通用户无法快速识别陌生食物的问题。系统搭建 SpringBoot 后端服务,提供模型调用接口与数据管理能力,配套 Vue 后台管理页面方便管理员维护数据。本系统目标是:用户打开微信小程序拍照或者上传本地食物图片,后端调用训练好的深度学习模型完成推理,返回食物分类结果与食物简介;同时保存用户识别记录,支持历史记录查看。管理员通过 Web 后台完成食物类别维护、用户管理、识别记录查看。本研究同时验证深度学习模型和小程序、SpringBoot 后端联合部署的可行性,搭建一套完整的图像识别 Web 应用开发流程,为同类图像识别小程序项目提供参考案例。
研究意义
从实用层面来看,食物识别有很多生活化场景,例如饮食参考、辅食识别、户外食材辨别等。微信小程序无需下载安装,门槛低、传播方便,更容易面向普通用户推广。传统食物识别软件大多是独立 APP,占用手机存储空间,本系统依托微信生态,降低用户使用成本。 从技术层面来看,本项目融合深度学习、小程序开发、SpringBoot 后端开发、Vue 前端开发等多项技术,打通深度学习模型和业务系统的对接流程,研究图像上传、模型推理、结果回传整套链路。 从毕业设计层面,通过本系统开发,可以综合锻炼计算机视觉、Web 后端、小程序前端、数据库设计等开发能力,熟悉项目从需求分析、设计、编码到测试的完整软件工程流程。 综上,本系统兼具实用价值与教学研究价值,具备一定的研究意义。
二、需求分析(分角色、权限、功能模块)
系统一共两类用户:普通小程序用户、系统管理员(Vue 后台登录)
1. 普通用户(微信小程序端)
权限:注册登录、图片识别、查看识别历史、查看食物详情,无后台管理权限
- 用户登录模块微信授权登录,获取微信 openid 作为用户唯一标识,自动完成用户注册,不需要手动填写账号密码;登录状态保存,下次打开小程序免重复授权。
- 食物图像识别模块(核心)支持拍照上传、相册选择图片;图片上传到 SpringBoot 后端,后端调用深度学习模型预测分类;识别成功后展示食物名称、食物介绍;识别失败给出提示。
- 识别历史记录模块自动保存每一次识别记录,展示识别时间、食物名称、原图;支持单条记录删除;点击记录可以再次查看食物详情。
- 食物信息查询模块支持查看系统内所有食物分类信息,浏览食物简介。
2. 管理员用户(Vue 网页管理后台)
权限:全部管理权限,不能使用小程序识别功能
- 管理员登录模块账号密码登录,校验账号密码;登录成功进入管理主页;会话超时自动退出。
- 食物类别管理模块新增、修改、删除食物信息;填写食物名称、简介;信息会同步到小程序端供用户查看。
- 用户信息管理模块查看所有注册小程序用户列表,查看用户 openid、注册时间;支持删除违规用户。
- 识别记录管理模块查看全部用户的识别记录,查看识别图片、识别结果、识别时间;支持清空记录。
- 个人信息模块修改管理员登录密码。
非功能需求:图片上传大小限制;接口响应稳定;小程序适配手机;后端可以独立部署;MySQL 数据持久化;模型推理接口异常捕获。
三、关键技术介绍
- SpringBoot:后端核心框架,简化 SSM 配置,自动装配,快速开发 RESTful 接口,接收小程序和 Vue 前端的请求,处理业务逻辑,调用深度学习模型接口,操作 MySQL 数据库。内置 Tomcat,方便项目打包部署。
- Vue2/Vue3:管理后台前端框架,组件化开发,页面渲染速度快,搭配 Element UI 组件库快速搭建后台管理页面,完成表单、表格、弹窗等功能。
- 微信小程序:客户端,WXML+WXSS+JS 开发,依托微信运行,提供拍照、相册选择、网络请求等 API,作为用户直接使用的入口。
- MySQL:关系型数据库,存储用户信息、食物信息、识别记录、管理员信息,数据稳定,适合毕业设计项目。
- 深度学习(卷积神经网络 CNN):选用轻量模型 MobileNet,训练食物数据集,输出分类结果;模型封装成接口,SpringBoot 后端调用模型推理,完成图片分类。
- MyBatis-Plus:持久层框架,简化 MySQL 增删改查代码,减少重复 SQL 编写。
- Maven:项目依赖管理工具,统一管理 SpringBoot、MyBatis-plus 等 jar 包。
四、数据库表设计
说明:id 统一为主键,长度 10;其他 varchar 默认长度 50
表 1:管理员表 admin
| 字段名 | 中文释义 | 类型 | 长度 | 是否为空 |
|---|---|---|---|---|
| id | 主键 ID | int | 10 | 否 |
| username | 管理员账号 | varchar | 50 | 否 |
| password | 登录密码 | varchar | 50 | 否 |
表 2:小程序用户表 user
| 字段名 | 中文释义 | 类型 | 长度 | 是否为空 |
|---|---|---|---|---|
| id | 主键 ID | int | 10 | 否 |
| openid | 微信唯一标识 | varchar | 50 | 否 |
| create_time | 注册时间 | datetime | - | 否 |
表 3:食物信息表 food
| 字段名 | 中文释义 | 类型 | 长度 | 是否为空 |
|---|---|---|---|---|
| id | 主键 ID | int | 10 | 否 |
| food_name | 食物名称 | varchar | 50 | 否 |
| food_desc | 食物简介 | varchar | 200 | 是 |
表 4:识别记录表 record
| 字段名 | 中文释义 | 类型 | 长度 | 是否为空 |
|---|---|---|---|---|
| id | 主键 ID | int | 10 | 否 |
| user_id | 用户 ID(外键关联 user) | int | 10 | 否 |
| food_id | 食物 ID(外键关联 food) | int | 10 | 否 |
| img_url | 识别图片地址 | varchar | 100 | 否 |
| rec_time | 识别时间 | datetime | - | 否 |
五、系统详细设计 + 核心代码片段
整体架构分为三层:小程序前端层、SpringBoot 后端服务层、深度学习模型层小程序和 Vue 后台通过 HTTP 请求访问 SpringBoot 提供的接口;SpringBoot 负责业务处理、数据库操作,调用 CNN 模型推理接口得到分类结果,再返回前端。
5.1 接口设计简述
- 用户登录接口:
/api/user/wxLogin - 图片识别接口:
/api/rec/recognize(核心接口) - 食物信息 CRUD 接口:
/api/food/* - 识别记录接口:
/api/record/* - 管理员登录接口:
/api/admin/login
5.2 SpringBoot 核心代码片段
(1)食物实体类 Food.java
@Data @TableName("food") public class Food { @TableId(type = IdType.AUTO) private Integer id; private String foodName; private String foodDesc; }(2)识别 Controller 核心接口(图片识别)
@RestController @RequestMapping("/api/rec") public class RecController { @Autowired private RecService recService; @PostMapping("/recognize") public Result recognize(MultipartFile file, Integer userId){ // 1.保存上传图片,获取图片访问地址 String imgUrl = recService.uploadImg(file); // 2.调用深度学习模型,预测食物类别编号 Integer foodId = recService.predictByModel(imgUrl); // 3.查询食物信息 Food food = recService.getFoodById(foodId); // 4.新增识别记录 recService.addRecord(userId,foodId,imgUrl); return Result.success(food); } }(3)Service 层调用模型片段(模型服务单独部署,http 调用)
@Service public class RecServiceImpl implements RecService { @Override public Integer predictByModel(String imgUrl) { // 请求深度学习模型服务,传入图片地址,返回分类编号 Map<String,String> param = new HashMap<>(); param.put("img",imgUrl); String res = HttpUtil.post("http://127.0.0.1:8089/model/predict", JSONUtil.toJsonStr(param)); JSONObject json = JSONUtil.parseObj(res); return json.getInt("foodId"); } }5.3 小程序端核心识别页面 JS 片段
// 拍照/选择图片 chooseImg(){ wx.chooseMedia({ count:1, mediaType:['image'], success:res=>{ const path = res.tempFiles[0].tempFilePath; wx.uploadFile({ url:"https://xxx/api/rec/recognize", filePath:path, name:"file", formData:{userId:this.data.userId}, success:uploadRes=>{ let result = JSON.parse(uploadRes.data); if(result.code===200){ wx.showModal({ title:"识别结果", content:"食物:"+result.data.foodName+"\n"+result.data.foodDesc }) } } }) } }) }5.4 Vue 后台食物新增页面核心片段(ElementUI)
<el-form :model="foodForm"> <el-form-item label="食物名称"> <el-input v-model="foodForm.foodName"></el-input> </el-form-item> <el-form-item label="食物简介"> <el-input type="textarea" v-model="foodForm.foodDesc"></el-input> </el-form-item> <el-button type="primary" @click="submitFood">提交</el-button> </el-form>5.5 深度学习模块简要设计
使用 MobileNet 轻量卷积神经网络,在食物数据集上训练,导出模型;使用 Python(Flask)封装推理接口,单独跑在 8089 端口;SpringBoot 通过 HTTP 方式调用推理接口,解耦模型和业务系统,方便后期替换模型。
5.6 系统流程
小程序用户授权登录 → 拍照上传图片 → SpringBoot 接收图片存储 → 调用 Flask 模型接口推理分类 → 根据分类 ID 查询食物信息 → 新增识别记录 → 将识别结果返回小程序展示。
最后出来的界面UI效果如下:
前台:
后台:
小程序及APP:
上面分享的这套系统,包含一些特色功能和创新设计。完全符合导师的要求。也可根据要求修改。完整的项目代码、MySQL 数据库文件、全套文档、界面效果图、PPT 我都已经打包整理好了🎓。 正在准备同题目的学弟学妹,想要拿来参考学习的,可以点击下方链接。👇👇👇👇👇