当前位置: 首页 > news >正文

食品计算—FoodSAM: Any Food Segmentation

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

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

🔍 技术导航:

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

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

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

文章目录

  • 1. 背景介绍
  • 2. 方法
    • 2.1 初步回顾
    • 2.2 总览
        • **FoodSAM 框架**
    • 2.3 FoodSAM 框架
        • **语义增强**
        • **实例分割**
        • **全景分割**
        • **可提示分割**
  • 3. 实验
    • 3.1 实验设置
        • 数据集
    • 3.2 实现细节
    • 3.3 评估指标
    • 3.4 与最新方法的比较
        • **语义分割评估**
        • **实例分割评估**
        • **全景分割评估**
        • **可提示分割评估**
    • 3.5 FoodSAM 的改进
        • **融合实验**
        • **消融实验**
        • **阈值影响**
  • 4. 结论

1. 背景介绍

Lan X, Lyu J, Jiang H, et al. Foodsam: Any food segmentation[J]. IEEE Transactions on Multimedia, 2023.

在本文中,我们探讨了 Segment Anything Model (SAM) 在食品图像分割任务中的零样本能力。为了解决 SAM 生成的掩码中缺乏类别特定信息的问题,我们提出了一个新框架,称为 FoodSAM。该创新方法将粗语义掩码与 SAM 生成的掩码相结合,以提升语义分割的质量。此外,我们注意到食品中的食材可以被视为独立的个体,这启发我们在食品图像上执行实例分割。

进一步地,FoodSAM 通过集成一个目标检测器,将其零样本能力扩展到全景分割,从而有效捕获非食品对象的信息。受最近可提示分割(promptable segmentation)成功的启发,我们还将 FoodSAM 扩展为支持各种提示变体的可提示分割。结果,FoodSAM 成为一个多层次粒度分割的全方位解决方案。

值得注意的是,这一开创性框架成为首个在食品图像上实现实例分割全景分割可提示分割的工作。大量实验表明了 FoodSAM 的可行性和出色的性能,验证了 SAM 在食品图像分割领域作为重要和有影响力工具的潜力。

自然语言处理领域【1】【2】【3】因大规模语言模型的出现【4】【5】【6】而发生了革命性变化,这些模型基于海量网页数据训练,展现了令人印象深刻的零样本泛化能力,能够超越其原始训练领域,在多个任务和数据分布上表现出色。在计算机视觉领域,Meta AI 最近发布的 Segment Anything Project (SAM) 提出了一种开创性的可提示分割任务,用于训练一个强大的视觉基础模型。这项雄心勃勃的工作标志着向全面认知识别所有物体迈出了重要一步,同时探索了交互式分割的挑战,并有效地考虑了真实世界的约束。

SAM 在各种分割基准测试中表现卓越,其零样本迁移能力在23个不同分割数据集上得到了验证【7】。本文聚焦于 SAM 在食品图像分割领域的零样本能力,这是一项食品计算领域中的关键任务【8】【9】【10】。然而,SAM 单独生成的掩码效果并不令人满意,主要是由于其生成的掩码缺乏类别特定信息。此外,与一般物体图像的语义分割相比,食品图像分割更具挑战性,因为食品外观的多样性大且食材类别分布不平衡【11】。因此,利用 SAM 准确区分食品的类别和属性是一项艰巨的任务。

为了解决上述问题,我们提出了一个名为 FoodSAM 的新型零样本分割框架,它通过将原始语义掩码与 SAM 生成的类别无关的掩码结合起来,提升分割效果。尽管 SAM 在食品图像分割中展现了显著的能力,但其缺乏类别特定信息。相较之下,传统分割方法保留了类别信息,但在分割质量上有所妥协。为提升语义分割质量,我们倡导将原始分割输出与 SAM 生成的掩码融合,并通过识别掩码的主要元素确定其类别,这是一种新颖且有效的增强语义分割的方式。

由于食品中的食材通常被随机切割并放置,它们可以被视为独立的个体。这启发我们在食品图像上实现实例分割。SAM 生成的掩码与独立实例天然相关,为我们在食品图像上执行实例分割奠定了基础。

食品图像中常包含非食品物体,如叉子、勺子、玻璃杯和餐桌等。这些物体虽非食材,但对食品的属性表征至关重要。FoodSAM 引入目标检测方法【12】【13】【14】,检测背景中的非食品物体,并通过结合 SAM 生成的背景掩码,将物体类别标签作为语义标签。结合实例分割方法,该框架能够成功实现食品图像的全景分割。

SAM 项目的启发,我们将研究扩展到“食品图像分割提示任务”。我们设计了一种简单而有效的目标检测方法,使 FoodSAM 支持可提示分割,支持多种提示形式,如点、框和掩码提示。通过点定位、框覆盖或掩码重叠来选择感兴趣的物体。结合 SAM 的可提示分割和原始语义掩码,我们在食品和非食品物体上实现了多个粒度级别的可提示分割。

主要贡献:

  • 全方位分割能力:我们提出了一个全新的零样本框架 FoodSAM,能够在不同粒度级别上完成食品分割任务。这项工作首次探索了 SAM 在食品图像分割领域的应用,成功扩展了其零样本能力。

  • 多种分割任务的突破:这是首个在食品图像上实现 实例分割全景分割可提示分割 的工作。

  • 实验结果:通过在 FoodSeg103UECFoodPix Complete 数据集上的全面评估,FoodSAM 在两个数据集上均优于当前最先进的方法。此外,FoodSAM 的性能在所有食品分割任务中都超越了其他 SAM 变体。

2. 方法

2.1 初步回顾

Segment Anything Model (SAM)【7】是第一个将基础模型应用于图像分割任务领域的模型。如图2所示,该模型包含三个关键组件:图像编码器、提示编码器和轻量化的掩码解码器模块。

  • 图像编码器

    • 使用计算密集型的视觉 Transformer 架构,包含数百万个参数,有效提取输入图像的显著视觉特征。
    • 提供三种特定尺度的预训练配置:
      • ViT-B(91M 参数)
      • ViT-L(308M 参数)
      • ViT-H(636M 参数)【56】【57】。
  • 提示编码器

    • 支持四种文本或空间提示输入:
      1. 点(points)
      2. 框(boxes)
      3. 自由格式文本(freeform text)
      4. 现有掩码(existing masks)
    • 提示的表示方法:
      • 点和框使用位置编码【58】。
      • 文本由预训练的 CLIP 模型中的文本编码器编码【20】。
      • 掩码输入通过卷积嵌入。
    • 提示嵌入和图像特征逐元素相加。
  • 掩码解码器模块

    • 使用基于 Transformer 的架构:
      • 对提示应用自注意力。
      • 对提示和图像编码器输出应用交叉注意力。
    • 动态掩码预测头输出像素级掩码概率和预测的 IoU(Intersection over Union)指标。
    • 使用转置卷积对解码器特征进行上采样。
    • 能够为每个提示输入生成多个掩码,默认情况下每个提示生成三个掩码。
    • 图像特征仅需提取一次,可在相同图像的不同提示间重复使用,从而支持实时交互式应用(如移动增强现实)。

SAM 在超过 1100 万张图像和 10 亿掩码的大规模数据集上训练,展现了强大的零样本迁移能力。正如其名称所示,SAM 可以分割几乎任何概念,包括训练期间从未见过的新物体。

最近,有几项相关工作提出了解决 SAM 局限性的改进方法:

  • RAM【59】

    • 一种基于 SAM 的创新图像标记基础模型。
    • 通过在大量图像-文本对上训练,能够高效识别常见类别,无需手动标注即可获得大量图像标签。
  • SEEM【60】

    • 一种交互式分割模型,可同时在全像素和全语义范围内执行图像分割。
    • 支持多种交互提示类型(包括点击、框、多边形、涂鸦、文本和引用区域)。
    • 在开放词汇分割和交互式分割任务中表现出色,并展现了对多样化用户需求的强大泛化能力。
  • SSA【61】

    • 一种新型开放框架,将 SAM 应用于语义分割任务。
    • 允许用户将现有语义分割器无缝集成到 SAM 中,而无需重新训练或微调 SAM 的参数。
    • 提升了语义分割任务中的泛化能力和掩码边界的细化效果。

2.2 总览

我们探索了将 SAM 这一强大的掩码生成器应用于食品图像分割。尽管 SAM 能够高质量地分割食品图像,其生成的掩码缺乏类别语义信息,而标准语义分割方法虽然提供了类别标签,但分割质量较差。

FoodSAM 框架
  • 提出了 FoodSAM,融合了 SAM 和传统语义分割的优点。
  • 语义增强:通过基于掩码与类别匹配的方式,为 SAM 的高质量掩码赋予语义标签。
  • 实例分割:将食品食材视为独立个体,进行实例分割。
  • 全景分割:通过引入目标检测器,检测背景中的非食品物体(如餐桌、盘子、勺子等),实现食品图像的高质量全景分割。
  • 可提示分割:结合 SAM 的提示学习方法,引入点、框和掩码提示,支持多粒度的交互式提示分割。

2.3 FoodSAM 框架

FoodSAM 由以下三大模型组成:

  • SAM (Ma)
    • 提供高质量的类别无关掩码。
  • 语义分割模块 (Ms)
    • 提供类别标签的分割结果。
  • 目标检测器 (Md)
    • 检测背景中的非食品物体,并为其分配语义标签。

框架的核心创新包括:

  • 掩码-类别匹配
    • 为 SAM 掩码分配语义标签。
  • 融合策略
    • 将重叠掩码按面积排序,从大到小融合。
  • 提示优先选择
    • 通过点、框和掩码提示实现交互式分割。
语义增强
  • 假设输入食品图像 I ∈ R H × W I \in R^{H \times W} IRH×W
    • 语义分割模块生成语义掩码 m s = M s ( I ) m_s = M_s(I) ms=Ms(I)
    • SAM 生成二值掩码 m a ∈ R K × H × W m_a \in R^{K \times H \times W} maRK×H×W
  • 掩码类别匹配:
    • 对于 m a m_a ma 的第 i i i 个掩码 m a i m^i_a mai,通过投票选择类别标签 s i s_i si,并根据阈值 τ \tau τ 过滤不稳定的掩码。
实例分割
  • 将小型掩码合并到相邻的同类掩码中。
  • 过滤掉与背景类别对应的掩码。
全景分割
  • 引入目标检测器 M d M_d Md
    • 检测非食品物体的边界框 B d B_d Bd 和类别标签 C d C_d Cd
    • 结合 SAM 掩码,通过 IoU 匹配为非食品物体分配类别标签。
可提示分割
  • 支持点提示、框提示和掩码提示,通过 SAM 和目标检测器的提示优先选择机制,实现多粒度交互分割。

最终,FoodSAM 实现了语义、实例、全景和可提示分割,为食品图像分割设立了新的标准。

3. 实验

3.1 实验设置

数据集
  • UECFoodPix Complete [15]

    • 由电气通信大学在2020年发布。
    • 包含102种菜肴,共有9000张训练图像和1000张测试图像。
    • 为每个食品项提供语义标签,共有103个类别标签。
    • 分割掩码通过 GrabCut 半自动生成(基于用户初始化的种子)【63】,然后由人工根据预定义规则进一步精炼【64】。
  • FoodSeg103 [11]

    • 最近设计的食品图像分割数据集,共包含7118张图像,涉及730种菜肴。
    • 提供更细粒度的注释,捕获每道菜肴中单独成分的特性。
    • 训练集包含4983张图像,提供29530个成分掩码;测试集包含2135张图像,提供12567个成分掩码。
    • 掩码均通过人工注释获得。与 UECFoodPix Complete 相比,FoodSeg103 提供更具挑战性的基准,并具有更细粒度的成分注释。

3.2 实现细节

  • 硬件:实验基于 NVIDIA GeForce RTX 3090 GPU 运行。
  • FoodSAM 组件
    • SAM 的图像编码器使用 ViT-H【56】,超参数与原论文一致。
    • 目标检测器使用 UniDet【14】。
    • 语义分割模块:
      • 在 FoodSeg103 上基于 SETR【37】,使用 ViT-16/B 作为编码器,MLA 作为解码器,使用 GitHub 提供的检查点。
      • 在 UECFoodPix Complete 上基于 Deeplabv3+【65】,使用与论文中相同的超参数重新训练检查点。

3.3 评估指标

  • mIoU (平均交并比):衡量推理结果与真实值之间的重叠和联合。
    mIoU = 1 N ∑ i = 1 N TP i TP i + FP i + FN i \text{mIoU} = \frac{1}{N} \sum_{i=1}^N \frac{\text{TP}_i}{\text{TP}_i + \text{FP}_i + \text{FN}_i} mIoU=N1i=1NTPi+FPi+FNiTPi
    其中:

    • TP i \text{TP}_i TPi:正确分类为类别 i i i 的像素数。
    • FP i \text{FP}_i FPi:错误分类为类别 i i i 的像素数。
    • FN i \text{FN}_i FNi:真实值为类别 i i i,但未正确分类的像素数。
  • mAcc (平均精度):所有类别的平均精度。
    mAcc = 1 N ∑ i = 1 N TP i TP i + FN i \text{mAcc} = \frac{1}{N} \sum_{i=1}^N \frac{\text{TP}_i}{\text{TP}_i + \text{FN}_i} mAcc=N1i=1NTPi+FNiTPi

  • aAcc (总体精度):所有像素的准确分类比例。
    aAcc = ∑ i = 1 N TP i ∑ i = 1 N ( TP i + FN i ) \text{aAcc} = \frac{\sum_{i=1}^N \text{TP}_i}{\sum_{i=1}^N (\text{TP}_i + \text{FN}_i)} aAcc=i=1N(TPi+FNi)i=1NTPi

3.4 与最新方法的比较

语义分割评估
  • FoodSeg103 上性能:
    • FoodSAM 达到 46.42 mIoU, 58.27 mAcc, 84.10 aAcc。
  • UECFoodPix Complete 上性能:
    • FoodSAM 达到 66.14 mIoU, 78.01 mAcc, 88.47 aAcc。
  • 与其他零样本方法对比:
    • FoodSAM 的 mIoU 均高于30,超越监督方法最高 45.1 mIoU。
  • 定性分析:
    • FoodSAM 利用 SAM 的强大分割能力补偿原始分割器的缺陷,在细粒度成分上表现更优。
实例分割评估
  • 无相关基准,定性分析表明:
    • FoodSAM 能有效识别食材实例身份,并实现高质量实例分割。
    • 与 RAM【59】相比,FoodSAM 能更细粒度地分割草莓等复杂食材。
全景分割评估
  • 在无相关数据集的情况下,与 RAM 和 SEEM 进行定性对比:
    • FoodSAM 在非食品物体(如碗、盘子)上的分割表现优异。
    • 能有效区分细粒度差异,如装有食材的碗和装牛奶的玻璃杯。
可提示分割评估
  • FoodSAM 支持点提示、框提示和掩码提示。
  • 定性分析表明:
    • FoodSAM 能识别食品成分类别,并在背景中分割非食品物体。

3.5 FoodSAM 的改进

融合实验
  • 随着合并掩码数量的增加,性能显著提高。
  • 在 FoodSeg103 和 UECFoodPix Complete 上使用 80 个掩码时,性能达到最佳。
消融实验
  • 在 FoodSeg103 上验证不同组件的功能:
    • 过滤含混类别标签(FCC)或未过滤。
    • 使用或未使用 SAM 生成的掩码(WSM)。
    • 将面积从大到小排序融合表现最佳。
阈值影响
  • 在 FoodSeg103 上,较高的阈值对改进效果有限。
  • 在 UECFoodPix Complete 上,混淆标签数量较多时,改进更显著。

4. 结论

本文研究了 SAM 在食品图像分割中的零样本能力,针对其类别信息不足的问题,提出了 FoodSAM 框架。FoodSAM 通过结合原始语义掩码与 SAM 的类别无关掩码,显著提升了语义分割质量。此外,FoodSAM 利用 SAM 的实例掩码,实现了食品图像的实例分割,并结合目标检测器完成了全景分割。

FoodSAM 还支持多种提示形式,实现交互式提示分割。综合评估表明,FoodSAM 在多个数据集上超越现有方法,验证了 SAM 在食品图像分割领域的潜力。

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

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

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

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

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

相关文章:

食品计算—FoodSAM: Any Food Segmentation

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

2411rust,1.83

原文 1.83.0稳定版 新的常能力 此版本包括几个说明在常环境中运行代码可干的活的大型扩展.这是指编译器在编译时必须计算的所有代码:常和静项的初值,数组长度,枚举判定值,常模板参数及可从(constfn)此类环境调用的函数. 引用静.当前,除了静项的初化器式外,禁止常环境引用静…...

tomcat加载三方包顺序

共享库 tomcat支持多个webapp共享一个三方库,而不需要每个webapp都引入该三方库 tomcat加载类顺序 bootstrap:加载jvm提供的类system:加载$CATALINA_HOME/bin下的bootstrap.jar,commons-daemon.jar,tomcat-juli.jar三个包//加载$CLASSPATH…...

计算机的错误计算(一百七十一)

摘要 探讨 MATLAB 中秦九韶(Horner)多项式的错误计算。 例1. 用秦九韶(Horner)算法计算(一百零七)例1中多项式 直接贴图吧: 这样,MATLAB 给出的仍然是错误结果,因为准…...

js对于json的序列化、反序列化有哪几种方法

在JavaScript中,对JSON(JavaScript Object Notation)进行序列化(将对象转换为JSON字符串)和反序列化(将JSON字符串转换为对象)是常见的操作。以下是一些常用的方法: 序列化&#xf…...

Linux——基础命令(2) 文件内容操作

目录 ​编辑 文件内容操作 1.Vim (1)移动光标 (2)复制 (3)剪切 (4)删除 (5)粘贴 (6)替换,撤销,查找 (7&#xff…...

简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署

在node18环境下,用react18创建qiankun主应用和两个子应用,react路由用V6版本,都在/main路由下访问子应用,用Dockerfile部署到腾讯云CentOS7.6服务器的8000端口进行访问,且在部署过程中进行nginx配置以进行合理的路由访…...

Python知识分享第十六天

“”" 故事7: 小明把煎饼果子技术传给徒弟的同时, 不想把独创配方传给他, 我们就要加私有. 问: 既然不想让子类用, 为什么要加私有? 答: 私有的目的不是不让子类用, 而是不让子类直接用, 而必须通过特定的 途径或者方式才能使用. 大白话: ATM机为啥要设计那么繁琐, 直接…...

管家婆财贸ERP BR045.大类存货库存数量明细表

最低适用版本: C系列 23.8 插件简要功能说明: 库存数量明细表支持按存货展示数据更多细节描述见下方详细文档 插件操作视频: 进销存类定制插件--大类存货库存数量明细表 插件详细功能文档: 应用中心增加菜单【大类存货库存数…...

Pytorch-GPU版本离线安装

最近在复现一项深度学习的工作,发现自己的pytorch是装的cpu版的(好像当时是直接加清华源,默认是cpu版本)。从官网在线下载速度太慢,还时不时断开连接,我们可以配置conda的清华源去这个问题,但是考虑到是在用…...

k8s 1.28 二进制安装与部署

第一步 :配置Linux服务器 #借助梯子工具 192.168.196.100 1C8G kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubectl、haproxy、keepalived 192.168.196.101 1C8G kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubectl、…...

【C语言】扫雷游戏(一)

我们先设计一个简单的9*9棋盘并有10个雷的扫雷游戏。 1,可以用数组存放,如果有雷就用1表示,没雷就用0表示。 2,排查(2,5)这个坐标时,我们访问周围的⼀圈8个位置黄色统计周围雷的个数是1。排查(8,6)这个坐标时&#xf…...

二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(1)

前言 二分法,这一看似简单却又充满哲理的算法,犹如一道精巧的数学之门,带领我们在问题的迷雾中找到清晰的道路。它的名字虽简单,却深藏着智慧的光辉。在科学的浩瀚星空中,二分法如一颗璀璨的星辰,指引着我们…...

# 01_Python基础到实战一飞冲天(三)--python面向对象(一)--简单类

01_Python基础到实战一飞冲天(三)–python面向对象(一)–简单类 一、面向对象-01-基本概念 1、面向对象(OOP) 面向对象编程 —— Object Oriented Programming 简写 OOP。 2、面向对象(OOP) 学习目标 了解 面向对象 基本概念…...

sentinel使用手册

1.引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency>2.yaml spring:cloud:sentinel:transport:dashboard: localhost:8090 #sentinel控制台地址…...

搜索二维矩阵 II(java)

题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性&#xff1a; 每行的元素从左到右升序排列。每列的元素从上到下升序排列。 代码思路&#xff1a; 用暴力算法&#xff1a; class Solution {public boolean searchMatrix(…...

Python语法基础(四)

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 高阶函数之map 高阶函数就是说&#xff0c;A函数作为B函数的参数&#xff0c;B函数就是高阶函数 map&#xff1a;映射 map(func,iterable) 这个是map的基本语法&#xff0c;…...

03_Django视图

三、Django模板 模板Templates 在Django框架中&#xff0c;模板是可以帮助开发者快速生成呈现给用户页面的工具 模板的设计方式实现了我们MVT中VT的解耦(M:Model&#xff0c;V:View&#xff0c;T:Template)&#xff0c;VT有着N:M的关系&#xff0c;一个V可以调用任意T&#xf…...

如何从 Hugging Face 数据集中随机采样数据并保存为新的 Arrow 文件

如何从 Hugging Face 数据集中随机采样数据并保存为新的 Arrow 文件 在使用 Hugging Face 的数据集进行模型训练时&#xff0c;有时我们并不需要整个数据集&#xff0c;尤其是当数据集非常大时。为了节省存储空间和提高训练效率&#xff0c;我们可以从数据集中随机采样一部分数…...

11 设计模式之代理模式(送资料案例)

一、什么是代理模式&#xff1f; 在现实生活中&#xff0c;我们常常遇到这样的场景&#xff1a;由于某些原因&#xff0c;我们可能无法亲自完成某个任务&#xff0c;便会委托他人代为执行。在设计模式中&#xff0c;代理模式 就是用来解决这种“委托”问题的&#xff0…...

MongoDB聚合操作

1.聚合操作 聚合操作处理数据记录并返回计算结果。聚合操作组值来自多个文档&#xff0c;可以对分组数据执行各种操作以返回单个结果。聚合操作包含三类&#xff1a;单一作用聚合、聚合管道、MapReduce。 单一作用聚合&#xff1a;提供了对常见聚合过程的简单访问&#xff0c…...

第二十三周周报:High-fidelity Person-centric Subject-to-Image Synthesis

目录 摘要 Abstract TDM SDM SNF 测试时的人物细节捕捉 主要贡献 总结 摘要 本周阅读了一篇2024年CVPR的关于高保真度、以人物为中心的图像合成方法的论文&#xff1a;High-fidelity Person-centric Subject-to-Image Synthesis。该论文提出了一种名为Face-diffuser的…...

Cesium 与 Leaflet:地理信息可视化技术比较

在现代地理信息系统(GIS)和空间数据可视化领域,Cesium 和 Leaflet 是两种非常常见的地理可视化库,它们各自适用于不同的应用场景。Cesium 专注于三维地球视图和复杂空间分析,而 Leaflet 则注重轻量级的二维地图展示。本文将对这两种技术进行详细的对比,帮助开发者根据具体…...

Linux 服务器使用指南:诞生与演进以及版本(一)

一、引言 在当今信息技术的浪潮中&#xff0c;Linux 操作系统无疑是一个关键的支柱&#x1f60e;。无论是在服务器管理、软件开发还是大数据处理领域&#xff0c;Linux 都以其卓越的适应性和优势脱颖而出&#x1f44d;。然而&#xff0c;对于许多新手而言&#xff0c;Linux 系统…...

龙蜥 Linux 安装 JDK

龙蜥 Linux 安装 JDK 下载安装解压到目标路径设置环境变量直接在启动脚本中临时设置 参考资料 下载 这个就不赘述了&#xff0c;参考资料中的另外两篇安装帖&#xff0c;都有。 如果不能上网&#xff0c;也可以去内网其他之前装过JDK的服务器&#xff0c;直接复制过来。 tar …...

Python小白语法基础20(模块与包)

0) 参考文章 python的模块(module)、包(package)及pip_python package-CSDN博客Python之函数、模块、包库_python函数、模块和包-CSDN博客Python函数模块自定义封装及模块嵌套导入&#xff08;手把手教程&#xff09;_python如何封装一个模块-CSDN博客 1) 模块与包说明 软件…...

详解 Qt QtPDF之QPdfPageNavigator 页面跳转

文章目录 前言头文件&#xff1a; 自 Qt 6.4 起继承自&#xff1a; 属性backAvailable : const boolcurrentLocation : const QPointFcurrentPage : const intcurrentZoom : const qrealforwardAvailable : const bool 公共函数QPdfPageNavigator(QObject *parent)virtual ~QPd…...

通俗易懂:序列标注与命名实体识别(NER)概述及标注方法解析

目录 一、序列标注&#xff08;Sequence Tagging&#xff09;二、命名实体识别&#xff08;Named Entity Recognition&#xff0c;NER&#xff09;**命名实体识别的作用****命名实体识别的常见实体类别** &#xff1a; 三、标签类型四、序列标注的三种常见方法1. **BIO&#xf…...

【C语言】二叉树(BinaryTree)的创建、3种递归遍历、3种非递归遍历、结点度的实现

代码主要实现了以下功能&#xff1a; 二叉树相关数据结构定义 定义了二叉树节点结构体 BiTNode&#xff0c;包含节点数据值&#xff08;字符类型&#xff09;以及指向左右子树的指针。 定义了顺序栈结构体 SqStack&#xff0c;用于存储二叉树节点指针&#xff0c;实现非递归遍历…...

2024年11月文章一览

2024年11月编程人总共更新了21篇文章&#xff1a; 1.2024年10月文章一览 2.《使用Gin框架构建分布式应用》阅读笔记&#xff1a;p307-p392 3.《使用Gin框架构建分布式应用》阅读笔记&#xff1a;p393-p437 4.《使用Gin框架构建分布式应用》读后感 5.《Django 5 By Example…...

自己做网站怎么加定位/日本网站源码

一、并发控制 当程序中可能出现并发]的情况时&#xff0c;就需要保证在并发情况下数据的准确性&#xff0c;以此确保当前用户和其他用户一起操作时&#xff0c;所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另…...

没有备案的网站怎么访问/网站推广优化排名教程

熔断 当某个服务调用慢或者有大量超时现象(过载)&#xff0c;系统停止后续针对该服务的调用而直接返回&#xff0c;直至情况好转才恢复调用。这通常是为防止造成整个系统故障而采取的一种保护措施&#xff0c;也称过载保护。很多时候刚开始&#xff0c;可能只是出现了局部小规…...

温州生活网招聘信息/seo优化排名易下拉软件

用pip 更新 numpy, 提示: Operation notpermitted解决办法: 1. pipinstall --upgrade --ignore-installednumpy2. pipinstall --upgrade --user numpy原因: 是因为os(El Capitan)中加入了新的安全机制SIP(System IntegrityProtection)也可以在重启机器的时候command r 进入恢复…...

建设网站需要什么设施/seo企业优化方案

终端进入工程Runner目录 执行 pod setup 编辑PodFile文件 新增 #必须集成 //由原来的UMCCommon变为UMCommonpod UMCommonpod UMDevice 具体位置如下 终端执行命令 pod install 安装好后 因为我的工程是Flutter接入友盟&#xff0c;原生桥接文件 flutter 种sdk已经有了 新…...

建立旅游网站的目的/成都短视频代运营

Navicat for MySQL 是一套管理和开发 MySQL 或 MariaDB 的理想解决方案&#xff0c;支持单一程序&#xff0c;可同时连接到 MySQL和MariaDB。这个功能齐备的前端软件为数据库管理、开发和维护提供了直观而强大的图形界面&#xff0c;给 MySQL 或 MariaDB 新手以及专业人士提供了…...

廊坊那家做网站排行榜/微信朋友圈广告推广代理

深入学习JVM内存设置原理和调优这里向大家描述一下JVM内存设置原理和内存调优&#xff0c;设置jvm内存的方法&#xff0c;对于单独的.class&#xff0c;可以用下面的方法对Test运行时的jvm内存进行设置。JVM内存设置原理默认的java虚拟机的大小比较小&#xff0c;在对大数据进行…...