食品计算—Navigating weight prediction with diet diary

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中一起航行,共同成长,探索技术的无限可能。

🚀 探索专栏:学步_技术的首页 —— 持续学习,不断进步,让学习成为我们共同的习惯,让总结成为我们前进的动力。

🔍 技术导航:

  • 人工智能:深入探讨人工智能领域核心技术。
  • 自动驾驶:分享自动驾驶领域核心技术和实战经验。
  • 环境配置:分享Linux环境下相关技术领域环境配置所遇到的问题解决经验。
  • 图像生成:分享图像生成领域核心技术和实战经验。
  • 虚拟现实技术:分享虚拟现实技术领域核心技术和实战经验。

🌈 非常期待在这个数字世界里与您相遇,一起学习、探讨、成长。不要忘了订阅本专栏,让我们的技术之旅不再孤单!

💖💖💖 ✨✨ 欢迎关注和订阅,一起开启技术探索之旅! ✨✨

1. 背景介绍

Gui Y, Zhu B, Chen J, et al. Navigating weight prediction with diet diary[C]//Proceedings of the 32nd ACM International Conference on Multimedia. 2024: 127-136.

🚀以上学术论文翻译由ChatGPT辅助。

当前的食品分析研究主要集中在诸如食物识别、菜谱检索以及基于单张图像的营养估计等任务上。然而,在探索食物摄入对生理指标(如体重)随时间变化的影响方面,仍存在显著的研究空白。

本文针对这一问题,引入了 DietDiary 数据集,该数据集包含真实用户的每日饮食日记对应的体重测量数据

此外,我们提出了一个新颖的任务 —— 基于饮食日记的体重预测任务,旨在利用历史的食物摄入记录和体重信息来预测未来体重变化。

为了解决这一任务,我们提出了一个模型无关的时间序列预测框架。具体而言,我们设计了一个统一餐食表示学习模块(Unified Meal Representation Learning, UMRL),用于提取每顿餐食的特征表示。

同时,我们还构建了一个饮食感知的损失函数(diet-aware loss function),用于将食物摄入与体重变化关联起来。

我们在 DietDiary 数据集上,使用两种最先进的时间序列预测模型 —— NLineariTransformer 进行实验。结果表明:我们提出的预测框架相较于原始模型在预测精度上具有显著优势

我们已将数据集、代码与模型开源,地址为:

👉 https://yxg1005.github.io/weight-prediction

食物在人类生活中起着至关重要的作用,不仅影响生活质量,还关系到多种生理指标,其中体重是最基本且最关键的因素之一。[24] 指出,能量消耗与饮食摄入之间的相对平衡决定了体重的增加或减少。尤其值得注意的是,非运动类活动(如久坐)所消耗的能量通常远远高于运动本身 [21]。

基于上述认识,本文旨在研究食物摄入对体重预测的影响,这对于那些希望长期监测饮食、管理体重和保持健康的个体具有重要意义。

目前,已有大量研究聚焦于食品领域的多个任务 [39],例如:

  • 食物分类 [11, 25, 31, 37, 40];
  • 食材识别 [2, 6, 7];
  • 菜谱检索 [19, 47, 49, 55, 56, 66, 67];
  • 食物体积预测 [34, 36, 51];
  • 热量与营养信息估计 [38, 52, 54]。

然而,这些方法往往是对单个食物图像进行独立分析,并未深入探究食物摄入对体重等生理指标的长期影响

为填补这一空白,本文提出一个新的研究方向:基于饮食日记进行体重预测

  • 一方面,我们构建了一个全新数据集 DietDiary,该数据集包含了来自健康管理系统的 611 位用户的每日饮食记录及其对应的体重测量值。与现有食品领域的数据集 [3, 6, 40] 不同,DietDiary 是首个提供“食物摄入 + 对应体重测量”的时间序列数据集

  • 另一方面,如图 1 所示,我们定义了一个新的任务:利用历史体重和食物摄入记录来预测未来体重

该任务面临两个主要挑战:

  • 餐食表示学习:由于食物摄入可能以文本标签或图像形式呈现,如何从不同形式的历史摄入信息中学习有效的餐食表示是核心难点。

  • 建模食物摄入与体重变化之间的相关性:体重变化不仅仅是历史体重的时间序列延续,还受到饮食摄入强烈影响。因此,需要构建模型理解复杂的摄入-体重相关性与依赖关系,这为体重预测带来了更大挑战。

为解决上述问题,我们提出了一个新颖的预测框架,整合食物摄入信息进行体重预测。核心包括:

  • 统一餐食表示学习模块(UMRL):借助 CLIP [44] 文本或图像编码器,从不同形式的历史饮食信息中提取统一的餐食特征表示;
  • 饮食感知损失函数(diet-aware loss function):帮助模型学习食物摄入与体重变化之间的关联与依赖关系。

该框架具备良好的扩展性,可以与任意现有的时间序列预测模型集成,实现基于饮食信息的体重预测。

我们在 DietDiary 数据集上选用两种代表性的时间序列预测模型 —— NLinear [61]iTransformer [33] 进行实证研究。结果表明,我们的框架在所有指标上都优于原始模型,验证了其有效性。

本文贡献总结如下:

  • 🥗 提出 DietDiary 数据集:首个同时包含“饮食摄入 + 体重测量”的时间序列数据集;
  • 📈 定义新的体重预测任务:将食物摄入信息作为时间序列输入,引导体重预测;
  • ⚙️ 提出模型无关的时间序列预测框架:利用饮食信息进行体重预测,在多个实验中显著优于已有方法。

2 相关工作

2.1 时间序列预测

时间序列预测是金融、交通、气象等多个领域中的一项基础性任务。多年来,为了应对基于历史观测值预测未来值所带来的挑战,研究者提出了大量模型,例如著名的 ARIMA 模型 [4]。

随着深度学习的发展,基于神经网络的方法在时间序列预测中越来越受欢迎。例如:

  • 长短期记忆网络(LSTM) [22]、
  • DeepAR [45]、
  • Prophet [53]

这些模型被用于捕捉数据中的长期依赖关系与非线性特征。

Transformer [33] 在自然语言处理 [14]、计算机视觉 [5, 15] 等领域展现了强大的序列建模能力,随后也被大量研究者尝试改造其结构以适应时间序列预测任务。例如:

  • Informer [62]
  • Autoformer [58]
  • Pyraformer [32]
  • FEDformer [64]

虽然许多研究专注于改进注意力结构以获得更优的 Transformer 预测模型,[61] 对 Transformer 的有效性提出了质疑,并提出了一系列简单而高效的线性模型,包括:

  • Linear
  • NLinear
  • DLinear

这也促使更多研究者开始关注基于线性模型的时间序列预测方法。

例如:

  • TiDE [13] 设计了一个基于多层感知机(MLP)的编码-解码模型,用于捕捉协变量与非线性依赖;
  • TSMixer [16] 将时间序列数据进行 patch 化,并增强了简单 MLP 结构的学习能力;
  • PatchTST [42] 使用 patched 数据作为输入,并采用通道独立设计,使每个 token 只包含一个通道的信息;
  • iTransformer [33] 则反转了 attention 与 feedforward 层的职责,从而增强了模型对时间信息的建模能力,提升了性能与泛化能力。

与上述方法不同,我们提出了一个模型无关的时间序列预测框架,用于结合饮食摄入信息进行体重预测。为了验证其有效性,我们选用了两种代表性模型进行评估:

  • 基于线性结构的 NLinear [61]
  • 基于 Transformer 的 iTransformer [33]

2.2 食品分析

随着计算机视觉技术的发展以及多种食品数据集的发布,食品领域的研究方法与任务变得越来越多样化。

许多传统视觉任务被扩展至食品领域,例如:

  • 食物分类 [11, 25, 28, 37, 40]
  • 食材识别 [2, 6, 7, 30]
  • 食物检测 [1, 63]
  • 食物分割 [17, 23, 29, 59]

随着 Recipe1M 数据集 [48] 的发布,食品相关的跨模态任务也被广泛研究,例如:

  • 从图像检索菜谱,或从菜谱反查图像 [9, 10, 19, 49, 50, 66]
  • 从图像生成菜谱 [12, 20, 46],或从菜谱生成图像 [43, 65]

这些任务都是对单张图像进行独立分析,而本文首次提出了对时间序列饮食数据进行建模的问题,这是以往研究中尚未涉足的方向。

另一研究分支则关注于从食物图像中预测营养成分和热量,帮助用户监测饮食摄入模式。相关研究包括:

  • 先通过体素 [38]、点云 [18, 35] 或 3D 网格 [41] 预测体积;
  • 然后根据单位体积的热量数据进行映射。

随着 Nutrition5K 数据集 [54] 的发布(该数据集提供了精细的营养成分信息、食物质量数据以及视频数据),一些工作开始尝试:

  • 使用神经网络 [52, 54] 直接从图像中预测营养成分;
  • 使用多模态大语言模型 [26, 60] 进行营养估计。

但这些研究仅预测营养信息未进一步将食物摄入与体重建立联系

据我们所知,本文是首个利用饮食日记进行体重预测的工作

3 数据集构建

我们提出了一个全新数据集 DietDiary,专为分析饮食摄入与体重关系而设计。与现有的 Food-101 [3]、VIREO Food-172 [6, 8]、Food2K [40] 和 Recipe1M [48] 等数据集不同,DietDiary 包含了一个时间段内的三餐饮食日记和每日体重记录。据我们所知,DietDiary 是食品领域中第一个提供此类数据的数据集,为饮食模式分析及其对体重管理的影响提供了新的研究机会。


3.1 DietDiary 数据集

DietDiary 数据集采集自一个健康管理系统¹,参与者需要详细记录每日三餐的饮食摄入情况以及当天的体重数据。饮食记录包括:

  • 三餐照片(即早餐、午餐和晚餐)
  • 每餐的手工标注的食材信息

该数据集共包含 611 位参与者,涵盖:

  • 超过 5,000 条日常记录
  • 30,000 张食物图片
  • 超过 15,000 条食材注释

注:我们已对数据中的用户隐私信息进行匿名化处理,数据仅包括体重与食物图片,不包含任何敏感个人信息。

如图 2 所示,不同参与者记录时间跨度不同,从最短一周到最长超过一个月不等。其中,91.6% 的参与者持续记录了一到两周;另外有 9 位参与者的记录时间超过一个月

图 4 展示了所有用户的每日体重波动分布:

  • 大多数用户每日体重变动在 ±1kg 范围内;
  • 由于数据来源特性,减重记录占多数
  • 小部分用户在一天内体重波动超过 2kg。


3.2 食物图像与食材标注

图 3 展示了不同参与者的餐食图像,分别是早餐、午餐和晚餐的典型样本。我们对数据集进行了人工筛选,剔除非食物相关图像

对于食材的标注,我们进行了标准化预处理,具体包括:

  • 统一分隔符:不同用户使用了不同的符号(如 “-”、“/”、“()”)来分隔食材名称,我们进行了统一处理;
  • 翻译语言:将原始中文注释统一翻译为英文;
  • 归类整理:借鉴 inverse cooking [46] 方法,对常见前缀或后缀的食材进行归类。例如:
    • “boiled eggs”、“steamed eggs”、“egg slices” → 都归为 “egg”
  • 去除低频食材:出现次数少于 5 次的食材被移除。

最终处理后,保留的独特食材数量为 197 个。图 5 展示了出现频率最高的前十个食材,如 “milk”、“egg”、“rice”,这些均为日常饮食中的常见成分。

此外,图 6 展示了一个完整的示例,包括:

  • 两位用户的食物图像、
  • 注释的食材名称、
  • 对应的体重变化趋势。

例如:

  • 用户 A 饮食健康,体重呈持续下降趋势;
  • 用户 B 在第 3 天和第 5 天摄入了高热量食物(如油炸虾和糖),晚餐还吃了大量主食(饺子和寿司),导致体重明显上升。

4 方法

4.1 任务定义

给定过去连续 L L L 天的历史体重序列 W = { w t } t = 1 L W = \{w_t\}_{t=1}^{L} W={wt}t=1L 和对应的每日饮食摄入信息 F = { Breakfast t , Lunch t , Supper t } t = 1 L F = \{\text{Breakfast}_t, \text{Lunch}_t, \text{Supper}_t\}_{t=1}^{L} F={Breakfastt,Luncht,Suppert}t=1L,本任务的目标是预测未来连续 T T T 天的体重序列 W ^ = { w ^ t } t = L + 1 L + T \hat{W} = \{\hat{w}_t\}_{t=L+1}^{L+T} W^={w^t}t=L+1L+T

其中:

  • w t w_t wt 表示第 t t t 天的体重值;
  • Breakfast t \text{Breakfast}_t Breakfastt Lunch t \text{Lunch}_t Luncht Supper t \text{Supper}_t Suppert 分别表示第 t t t 天早餐、午餐、晚餐的图像或食材标签。

注意,历史观测数据可包括文本形式的食材标签、食物图片,以及数值型的体重数据。


4.2 所提出的框架

图 7 展示了我们提出的整体框架,主要由以下三部分组成:

  • 统一膳食表示学习模块(UMRL):用于提取每一餐的表示。
  • 模型无关的时间序列预测器:可接入任意主流时间序列模型。
  • 饮食感知损失函数:用于建模饮食与体重变化之间的关系。


Unified Meal Representation Learning (UMRL)

UMRL 模块旨在从历史饮食数据(如食物图像或食材标签)中提取早餐、午餐和晚餐的特征表示。对于每一天 t t t,我们分别得到:

f = { b t , l t , s t } t = 1 L f = \{b_t, l_t, s_t\}_{t=1}^L f={bt,lt,st}t=1L

其中, b t b_t bt l t l_t lt s t s_t st 分别为该天早餐、午餐和晚餐的特征表示。UMRL 的具体实现见第 4.3 节。


模型无关的体重预测

获得历史饮食表示后,将其与体重序列 W W W 进行拼接,构成输入序列:

X = { b t , l t , s t , w t } t = 1 L X = \{b_t, l_t, s_t, w_t\}_{t=1}^L X={bt,lt,st,wt}t=1L

然后输入时间序列预测模型 M M M,得到未来预测结果:

Y ^ = { b ^ t , l ^ t , s ^ t , w ^ t } t = L + 1 L + T = M ( X ) ( 1 ) \hat{Y} = \{ \hat{b}_t, \hat{l}_t, \hat{s}_t, \hat{w}_t \}_{t=L+1}^{L+T} = M(X) \quad (1) Y^={b^t,l^t,s^t,w^t}t=L+1L+T=M(X)(1)

其中, b ^ t , l ^ t , s ^ t \hat{b}_t, \hat{l}_t, \hat{s}_t b^t,l^t,s^t 是每一餐对体重影响的预测, w ^ t \hat{w}_t w^t 是最终预测的体重。

我们提出的框架对时间序列模型无依赖性,因而可灵活接入现有主流模型。本文中选用了:

  • 线性模型:NLinear [61]
  • Transformer 模型:iTransformer [33]

饮食感知损失函数(Diet-aware Loss)

我们引入饮食感知损失,用于建模每日三餐对体重变化的影响。

t t t 天的体重变化量定义为:

Δ t = w t − w t − 1 ( 2 ) \Delta_t = w_t - w_{t-1} \quad (2) Δt=wtwt1(2)

基于三餐对体重的影响,饮食损失为:

L d i e t = 1 3 [ ( Δ t − b ^ t ) 2 + ( Δ t − l ^ t ) 2 + ( Δ t − s ^ t ) 2 ] ( 3 ) L_{diet} = \frac{1}{3} \left[ (\Delta_t - \hat{b}_t)^2 + (\Delta_t - \hat{l}_t)^2 + (\Delta_t - \hat{s}_t)^2 \right] \quad (3) Ldiet=31[(Δtb^t)2+(Δtl^t)2+(Δts^t)2](3)

另一个损失是体重预测误差:

L w e i g h t = ( w t − w ^ t ) 2 ( 4 ) L_{weight} = (w_t - \hat{w}_t)^2 \quad (4) Lweight=(wtw^t)2(4)

最终总损失函数为两者加权和:

L = λ L w e i g h t + ( 1 − λ ) L d i e t ( 5 ) L = \lambda L_{weight} + (1 - \lambda) L_{diet} \quad (5) L=λLweight+(1λ)Ldiet(5)

其中 λ \lambda λ 是控制两个损失之间平衡的超参数。


4.3 统一膳食表示学习(UMRL)

如图 8 所示,我们提出的 UMRL 模块 可从历史饮食信息中提取每餐的表示。由于饮食数据既可以是食物图像,也可以是食材标签,我们采用 CLIP 模型 [44] 对视觉或文本输入进行统一编码。

  • 如果是食材标签(文本):使用 CLIP 的文本编码器
  • 如果是食物图像:使用 CLIP 的图像编码器

CLIP 模型在训练过程中保持冻结,不更新参数。

考虑到实际用户更倾向于拍摄食物图像而非输入详细标签,我们还进一步研究了使用预训练的食材识别模型,从图像中自动提取标签(如图左下所示)。

对单餐图像(如早餐)表示过程如下:

设 $ \text{Breakfast}_t = {\text{img}_1, …, \text{img}_N} $ 是第 t t t 天早餐的图像集合(共 N N N 张图),则:

  • 使用 CLIP 编码每张图:

E n = CLIPEncoder ( img n ) E_n = \text{CLIPEncoder}(\text{img}_n) En=CLIPEncoder(imgn)

  • 对所有图像特征求平均:

E ˉ = 1 N ∑ n = 1 N E n \bar{E} = \frac{1}{N} \sum_{n=1}^N E_n Eˉ=N1n=1NEn

  • 使用 MLP 得到早餐最终特征表示:

b t = MLP ( E ˉ ) b_t = \text{MLP}(\bar{E}) bt=MLP(Eˉ)

其中, E ˉ \bar{E} Eˉ 是平均的 CLIP 图像特征, b t b_t bt 是早餐表示。


5 实验

5.1 实验设置

数据集:我们在 DietDiary 数据集上进行了实验。受到时间序列预测任务 [33, 61] 的启发,我们深入探索了在不同历史窗口 L L L 天内使用体重和饮食摄入信息预测未来 T T T 天体重的多种组合,记为设置 L-T。所研究的设置包括:{3-3, 3-5, 3-7, 5-5, 5-7, 7-3 和 7-7}。例如,在 7-3 设置中( L = 7 L = 7 L=7, T = 3 T = 3 T=3),我们使用过去 7 天的历史体重和饮食信息来预测未来 3 天的体重。

数据集按比例 7:1:2 分为训练集、验证集和测试集,确保每位参与者只出现在一个划分中,避免数据泄漏。不同设置决定了训练所需的最小天数。为了最大程度地利用数据,我们为不同设置采用不同的数据划分。例如,5-5 和 7-3 设置要求参与者至少记录 10 天饮食数据,而 7-7 设置则至少需要 14 天。表 1 展示了各设置下的数据统计信息。

评估指标:我们采用平均平方误差(MSE)和平均绝对误差(MAE)作为性能评估指标。考虑到用户更关注长期趋势,我们采用自回归的方式进行预测。在测试阶段,模型基于前 L L L 天历史数据首先预测接下来的 T T T 天体重,并将预测结果作为输入继续进行预测,直到为测试集中所有用户生成完整预测序列。

实现细节:由于 FoodLMM [60] 在食物领域表现出色,我们采用该模型作为食材识别器。时间序列预测模型选用代表线性方法的 NLinear [61] 和基于 Transformer 的 iTransformer [33]。两者均使用 Adam 优化器,批大小设为 32,满足早停条件(验证集损失 7 个 epoch 未下降即停止训练)。初始学习率为 0.005,并在每个 epoch 衰减。方程 (5) 中的 λ \lambda λ 设置为 {0, 0.1, 0.25, 0.5, 0.75, 1},用于探索 diet loss 所占比例对性能的影响,相关内容将在第 5.4 节展示。


5.2 性能对比

表 2 和 3 展示了在 NLinear 和 iTransformer 模型上融合我们方法后的表现。与未结合饮食信息的原始模型相比,我们的方法在所有设置中均实现了显著提升,且适用于三种类型的饮食输入:食物图像、用户标注的食材标签,以及 FoodLMM 预测的标签。

一个值得关注的发现是,FoodLMM 预测的食材标签在大多数设置下表现可与用户标注持平甚至更优。考虑到获取图片通常比手动标注食材更容易,这一结果极具现实意义。图 9 展示了 FoodLMM 与用户标注结果的对比。通常,用户更容易漏标而不是误标,如图 9(a) 中的“面条”“香菜”“葱”被漏掉,FoodLMM 成功识别。而图 9(b)© 中也存在部分 FoodLMM 的误判。尽管如此,图 9(d) 中除“番茄”预测失败外,其余食材均准确识别。


5.3 饮食信息的多模态融合

我们进一步探索了食物图像与食材标签的多模态融合效果,方法是对同一餐的不同模态表示(UMR)进行平均融合。表 4 和 5 分别展示了图像+用户标签与图像+FoodLMM 标签的融合结果。除 5-5 设置下的 MSE 外,融合方式在所有设置下均优于单一模态,表明多模态信息具有互补性。

此外,该结果也证明我们提出的 UMRL 模块能够将图像与文本嵌入到同一表示空间,学习统一的膳食表示。


5.4 消融实验

餐次数量影响:表 6 展示了使用不同餐次数量对预测性能的影响。无论包含几餐,引入饮食信息均能提升性能。仅使用一餐时,午餐带来的增益最大,原因是午餐食物多样性更高,而早餐与晚餐多为粥类或代餐粉,辨识度较低,如图 3 中所示。但使用三餐结合能提供互补信息,最终表现最优。

超参数 λ \lambda λ:我们进一步研究了公式 (5) 中超参数 λ \lambda λ 的影响。图 10 展示了 λ ∈ { 0 , 0.1 , 0.25 , 0.5 , 0.75 , 1 } \lambda \in \{0, 0.1, 0.25, 0.5, 0.75, 1\} λ{0,0.1,0.25,0.5,0.75,1} 下模型在不同设置中的表现。随着 λ \lambda λ 增大(即 diet loss 权重减小),性能先提升后下降。大多数设置在 λ = 0.1 \lambda = 0.1 λ=0.1 时取得最优。

λ = 1 \lambda = 1 λ=1 时,模型只使用 L_weight 训练,相当于 NLinear 基线模型;而当 λ = 0 \lambda = 0 λ=0 时,仅使用 L_diet,性能也下降。结果表明同时融合体重损失与饮食损失对于准确预测至关重要。


5.5 体重预测可视化

图 11 展示了我们框架与 NLinear 模型在多个用户下的预测曲线,其中蓝色表示真实体重,绿色为 NLinear 预测,橙色为我们框架的预测结果。整体来看,橙色曲线在数值与趋势上更接近真实曲线。

例如,图 (b) 中真实体重呈下降-上升-再下降趋势,橙色曲线精准反映了该趋势,并在数值上更接近于蓝线。类似趋势也出现在图 (a)、(d)、(f)、(g)。不过,在图 © 和 (i) 中,我们模型虽优于 NLinear,但仍未能完美拟合真实趋势,这可能是由于体重变化较大、长期预测误差累积导致的,这是时间序列预测领域尚未解决的难题 [57, 61]。


6 结论

本文提出了一项新的任务:基于饮食日记进行体重预测。我们构建了全新数据集 DietDiary,记录了个体每日饮食摄入与对应体重,填补了食物领域长期缺乏时序体重数据的空白。

为解决该任务,我们提出了一个模型无关的时间序列预测框架,并引入 UMRL 膳食表示模块与饮食感知损失函数。在 NLinear 与 iTransformer 两种代表性模型上进行实验,验证了我们方法在不同饮食信息形式下(图像、用户标签、模型预测标签、多模态组合)均显著提升了预测精度。

尽管结果令人鼓舞,本文的研究仍聚焦于饮食对体重的影响。未来,我们将扩展该研究,探索饮食对血糖等其他生理指标的作用。

🌟 在这篇博文的旅程中,感谢您的陪伴与阅读。如果内容对您有所启发或帮助,请不要吝啬您的点赞 👍🏻,这是对我最大的鼓励和支持。

📚 本人虽致力于提供准确且深入的技术分享,但学识有限,难免会有疏漏之处。如有不足或错误,恳请各位业界同仁在评论区留下宝贵意见,您的批评指正是我不断进步的动力!😄😄😄

💖💖💖 如果您发现这篇博文对您的研究或工作有所裨益,请不吝点赞、收藏,或分享给更多需要的朋友,让知识的力量传播得更远。

🔥🔥🔥 “Stay Hungry, Stay Foolish” —— 求知的道路永无止境,让我们保持渴望与初心,面对挑战,勇往直前。无论前路多么漫长,只要我们坚持不懈,终将抵达目的地。🌙🌙🌙

👋🏻 在此,我也邀请您加入我的技术交流社区,共同探讨、学习和成长。让我们携手并进,共创辉煌!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学步_技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值