《Deep learning for fine-grained image analysis: A survey》阅读笔记
论文标题
《Deep learning for fine-grained image analysis: A survey》
作者
魏秀参,旷世研究院
初读
摘要
-
细粒度图像分析(FGIA)的任务是分析从属类别的视觉对象。
-
细粒度性质引起的类间小变化和类内大变化使其成为一个具有挑战性的问题。
-
本文旨在系统地调查基于深度学习的 FGIA 技术的最新进展。
-
本文将现有的 FGIA 技术研究分为三大类:
-
细粒度图像识别
-
细粒度图像检索
-
细粒度图像生成
-
-
本文还涵盖了 FGIA 的其他一些重要问题,例如公开的基准数据集及其相关的特定领域应用。
-
最后在总结这项调查时强调了几个方向和有待社会进一步探索的问题。
结论
这篇文章主要是未来展望,后面写。
再读
Section 1 Introduction
-
第一段:介绍 CV
-
第二段:介绍细粒度图像分析(FGIA)
-
FGIA 的目标是检索、识别和生成属于超类别(也称为元类别)的多个次级类别的图像,例如不同种类的动物/植物、不同型号的汽车、不同种类的零售产品等。
-
关于 FGIA 的一些有影响力的学术竞赛经常在 Kaggle 上举行。几项具有代表性的竞赛,例如自然保护协会渔业监测(用于鱼类物种分类)、座头鲸识别(用于鲸鱼身份分类)等。每项竞赛都吸引了全球 300 多个团队参加,有些甚至超过了 2000 支队伍。
-
-
第三段:深度学习+FGIA 很火
根据每年的粗略统计,平均每年约有十篇基于深度学习的 FGIA 技术的会议论文发表在人工智能和简历的高级会议上,如 IJCAI、AAAI、CVPR、ICCV、ECCV 等。
-
第四段:本文工作亮点
-
在文献中,已有一项与细粒度任务相关的调查 [Zhao et al., 2017](上一篇读的那个),其中仅包括几种用于比较的细粒度识别方法。
-
本文工作更全面。
本文还分析和讨论了另外两个核心且不可忽视的细粒度分析任务,即细粒度图像检索和细粒度图像生成。
-
此外,在环太平洋国家举行的另一次重要的人工智能会议上,PRICAI、Wei 和 Wu 组织了一场针对细粒度图像分析主题的专题辅导会。我们推荐感兴趣的读者参考教程,该教程提供了一些额外的详细信息。
-
-
第五段 三大贡献:
-
对基于深度学习的 FGIA 技术进行了全面的综述,包括问题背景、基准数据集、具有深度学习的一系列 FGIA 方法、特定领域的 FGIA 应用等。
-
以分层和结构化的方式对基于深度学习的 FGIA 技术的最新进展进行了系统概述,参见下图。

-
讨论了挑战和悬而未决的问题,并确定了新的趋势和未来方向,为细粒度的研究人员或广泛的人工智能社区中的其他感兴趣的读者提供了一个潜在的路线图。
-
-
第六段:其他部分
- 第二节介绍了本文的背景,即 FGIA 问题及其主要挑战。
- 第三节回顾了多个常用的细粒度基准数据集。
- 第四节分析了细粒度图像识别的三种主要范式。
- 第五节介绍了细粒度图像检索的最新进展。
- 第六节从生成的角度讨论细粒度图像生成。
- 第七节中介绍了现实世界中与 FGIA 相关的其他一些特定领域的应用。
- 第八节总结了本文并在中讨论了未来的方向和悬而未决的问题。
Section 2 Background: problem and main challenges
背景:问题和主要挑战
-
细粒度识别(FGIA)是干啥的:
FGIA 专注于处理属于同一元类别的多个子类别的对象(如鸟、狗和汽车),通常涉及细粒度图像识别、细粒度图像检索、细粒度图片生成等核心任务。
-
FGIA 与一般图像分析的区别:
-
在一般图像分析中,目标对象属于粗粒度的元类别(例如,鸟类、橙子和狗),因此在视觉上截然不同。
-
然而,在 FGIA 中,由于对象来自一个元类别的子类别,细粒度的特性使它们在视觉上非常相似。
-
以图像识别为例。在细粒度识别中,需要识别多个类似物种的狗,例如哈士奇、萨摩耶和阿拉斯加。为了准确识别,需要通过捕捉细微的差异(如耳朵、鼻子、尾巴)来区分它们,这也满足了其他 FGIA 任务(如检索和生成)的需求。

-
-
FIGA 的挑战:
-
细粒度性质还带来了由高度相似的子类别引起的小的类间变化,以及姿态、尺度和旋转方面的大的类内变化,
-
它与一般图像分析(即小的类内变化和大的类间变化)相反,这使得细粒度图像分析成为一个具有挑战性的问题。下图分别展示了图中每行四种燕鸥中的每一种。

-
Section 3 Benchmark datasets
基准数据集
-
数据集介绍:
-
在过去的十年里,视觉社区发布了许多基准细粒度数据集,涵盖了不同的领域,如鸟类、狗、汽车、飞机、花卉、蔬菜、水果,零售产品等等。下表列出了细粒度社区常用的一些图像数据集,并具体指出了它们的元类别、细粒度图像的数量、细粒度类别的数量、额外不同类型的可用监督,即边界框、零件注释、层次标签、属性标签和文本视觉描述,下图为示例。

-
示例图像及其与 CUB200-2011 相关的监督。如图所示,多种类型的监督包括:图像标签、零件注释(也称为关键点定位)、对象边界框(即绿色边界框)、属性标签(即“ATR”)和自然语言的文本描述。

-
-
这些数据集功不可没:
这些数据集是该领域取得长足进展的最重要因素之一,不仅是衡量和比较竞争方法性能的共同基础,而且将该领域推向越来越复杂、实用和具有挑战性的问题。
-
CUB200-2011 记首功:
- 具体来说,其中 CUB200-2011 是最受欢迎的细粒度数据集之一。几乎所有的 FGIA 方法都选择它来与现有技术进行比较。
- 此外,CUB200-2011 不断为进一步的研究做出贡献,例如,收集细粒度图像的文本描述用于多模态分析。
-
这两年的新数据集及其引入的新特征:
- 此外,近年来越来越多地提出了更具挑战性和实用性的细粒度数据集,例如,用于植物和动物自然物种的 iNat2017 和用于日常零售产品的 RPC。
- 从这些数据集衍生出的许多新特征,仅举几个例子,就是大规模、层次结构、域间隙和长尾分布,这揭示了现实世界中的实际需求,并可能引发在更现实的环境中对 FGIA 的研究。
Section 4 Fine-grained image recognition
细粒度图像识别
-
地位:
在过去的十年里,细粒度图像识别一直是 FGIA 最活跃的研究领域。
-
从广义上讲,这些细粒度识别方法可以分为三个主要范式:
- 具有本地化分类子网络;
- 具有端到端特征编码;
- 具有外部信息。
-
第一和第二范式通过仅利用与细粒度图像相关联的监督来限制自身,所述细粒度图像诸如图像标签、边界框、零件注释等。
-
多模态趋势:
由于细粒度的挑战,自动识别系统还不能获得优异的性能。因此,研究人员逐渐尝试将外部但廉价的信息(如网络数据、文本描述)纳入细粒度识别,以进一步提高准确性,这与细粒度识别的第三范式相对应。
-
评估指标:
细粒度识别中常用的评估指标是数据集所有次级类别的平均分类精度。
4.1 By localization-classification subnetworks
按本地化分类的子网络
-
第一个范式——具有本地化分类子网络的细粒度识别
-
思想:
为了缓解类内变异的挑战,细粒度社区的研究人员关注捕捉细粒度对象的判别语义部分,然后构建与这些部分相对应的中级表示,用于最终分类。
-
架构:
- 定位子网络:定位这些关键部分;
- 分类子网络紧随其后用于识别;
- 这两个协作子网络的框架形成了第一个范式。
-
-
定位信息的作用:
定位信息,例如零件级边界框或分割掩码,可以获得与这些细粒度零件相比更具鉴别力的中级(零件级)表示。进一步增强了分类子网络的学习能力,可以显著提高最终识别的准确性。
-
注释依赖:
- 属于该范式的早期工作依赖于额外的密集部分注释(也称为关键点定位)来定位对象的语义关键部分(例如,头部、躯干)。
- 他们中的一些人训练基于零件的检测器,另一些人利用分割方法定位零件。
- 这些方法将多个部分级特征连接为一个完整的图像表示,并将其输入到下面的分类子网络中进行最终识别。因此,这些方法也被称为基于零件的识别方法。
-
克服注释依赖的新趋势:
- 获得如此密集的零件注释是费力的,这限制了现实世界细粒度应用程序的可扩展性和实用性。
- 最近,出现了一种趋势,即在这种范式下,更多的技术只需要图像标签来实现准确的零件定位。它们的共同动机是首先找到相应的部分,然后比较它们的外观。
- 具体来说,我们希望捕捉语义部分(例如,头部和躯干),以便在细粒度的类别中共享,同时,我们也渴望发现这些部分表示之间的细微差异。
- 先进的技术,如注意力机制和多阶段策略使集成定位分类子网络的联合训练复杂化。
4.2 By end-to-end feature encoding
通过端到端特征编码
-
第二范式思想:
与第一种范式不同,第二种范式,即端到端特征编码,倾向于通过开发用于细粒度识别的强大深度模型来直接学习更具鉴别力的特征表示。
-
其中最具代表性的方法——双线性 CNN
- 它将图像表示为源自两个深层 CNN 的特征的合并外积,并因此对卷积激活的高阶统计量进行编码,以增强中级学习能力。
- 由于其高模型容量,双线性 CNN 实现了显著的细粒度识别性能。
- 问题与解决:
- 但同时,双线性特征的极高维数仍然使其在现实应用中不切实际,尤其是在大规模应用中。
- 针对这个问题的最近的尝试:试图通过应用张量绘制来聚合低维嵌入,这可以近似双线性特征并保持可比或更高的识别精度。
-
其他工作,专注于设计针对细粒度定制的特定损失函数,并能够驱动整个深度模型来学习有区别的细粒度表示。
4.3 With external information
有外部信息
-
第三范式思想:
第三范式是利用外部信息,例如网络数据、多模态数据或人机交互,来进一步帮助细粒度识别。
-
使用 web 数据:
利用自由但有噪声的网络数据来提高识别性能。这条线路上的大多数现有工程大致可以分为两个方向。
-
一是网络监督学习:抓取测试类别的有噪声标记的网络数据作为训练数据。
-
此方法的主要努力集中在:
-
克服容易获取的 web 图像和来自标准数据集的标记良好的数据之间的数据集差距;
-
减少由噪声数据引起的负面影响。
-
-
为了解决上述问题:经常使用对抗性学习的深度学习技术和注意力机制。
-
-
另一是将知识从具有良好标记的训练数据的辅助类别转移到测试类别,这通常采用零样本学习或元学习来实现这一目标。
-
-
使用多模态数据:
-
思想:
在细粒度识别中用多模态数据来建立联合表示/嵌入,以合并多模态信息,能够提高细粒度识别的准确性。
-
常用的两种多模态数据
经常使用的多模态数据包括文本描述(例如,自然语言的句子和短语)和图形结构知识图谱。
-
文本描述
-
与细粒度图像的强监督(例如,零件注释)相比,文本描述是弱监督。
-
普通人可以相对准确地返回文本描述,而不是特定领域的专家。
-
-
图形结构知识图谱:
- 高级知识图是现有的资源,包含丰富的专业知识,如 DBpedia。
- 在实践中,文本描述和知识库都是有效的,可以作为更好的细粒度图像表示学习的额外指导。
-
-
具体应用:
-
[Reed et al.,2016] 收集文本描述,并通过结合文本和图像,为零样本细粒度图像识别引入结构化联合嵌入。
-
后来,[He和Peng,2017a] 以端到端的联合训练方式结合了视觉和语言流,以保留模态内和模态间信息,用于生成互补的细粒度表示。
-
对于具有知识库的细粒度识别,例如 [Chen et al.,2018;Xu et al.,2018a],引入了知识库信息(总是与属性标签相关联),以隐含地丰富嵌入空间(也推理细粒度对象的判别属性)。

-
-
-
人在循环:
- 循环中有人的细粒度识别通常是一个由机器和人类用户组成的迭代系统,它结合了人类和机器的努力和智能。
- 此外,它要求该系统尽可能以人类劳动经济的方式工作。
- 通常,对于这类识别方法,每一轮的系统都在寻求了解人类是如何进行识别的,
- 例如,通过要求未经训练的人类标记图像类别并选取硬例子;
- 或者通过识别关键部分定位并选择判别特征进行细粒度识别。
Section 5 Fine-grained image retrieval
细粒度图像检索
-
评估指标:共同平均精度(mAP)
-
细粒度图像检索是什么:
-
给定相同子类别(例如,鸟类或汽车)的数据库图像和查询,它应该返回与查询相同种类的图像,而不需要求助于任何其他监督信号。
-
与基于内容相似性(如纹理、颜色和形状)检索近似重复图像的通用图像检索相比,细粒度检索侧重于检索相同类型的图像(如动物的相同从属物种和汽车的相同模型)。同时,细粒度图像中的对象只有细微的差异,并且在姿势、比例和旋转方面各不相同。
-
示例:
下图给定“Dodge Charger Sedan 2012”的查询图像(又名探测器),通过细粒度检索从汽车数据库(又名星系)返回同一车型的图像。在这张图中,红色矩形标记的前4名返回图像显示了错误的结果,因为其型号是“Dodge Caliber Wagon 2012”。

-
-
相关工作:
- [Wei et al.,2017] 首次尝试使用深度学习进行细粒度图像检索。它使用预先训练的 CNN 模型,通过在细粒度图像中无监督地定位主要对象来选择有意义的深度描述符,并进一步表明,只选择去除背景或噪声的有用深度描述符可以显著有利于检索任务。
- 最近,为了突破预训练模型进行无监督细粒度检索的局限性,一些试验倾向于在监督度量学习范式下发现新的损失函数。同时,他们仍然为细粒度对象设计了额外的特定子模块,例如,在 [Zheng et al.,2018] 中提出的弱监督定位模块,该模块是在 [Wei等人,2017] 的启发下提出的。
Section 6 Fine-grained image generation
细粒度图像生成
-
什么是图像生成:
细粒度生成将合成细粒度类别中的图像,例如特定人物的面部或从属类别中的对象。
-
相关工作:
- 这方面的第一项工作是 [Bao et al.,2017] 中提出的 CVAE-GAN,它将变分自动编码器与条件生成过程下的生成对抗性网络相结合,以解决这个问题。具体地,CVAE-GAN 将图像建模为概率模型中的标签和潜在属性的组合。然后,通过改变输入生成模型的细粒度类别,它可以生成特定类别的图像。
- 最近,从文本描述生成图像由于其多样性和实际应用,如艺术生成和计算机辅助设计,表现得很流行。通过执行具有注意力的生成网络,该模型可以通过关注文本描述的相关单词来合成细微区域的细粒度细节。
Section 7 Domain specific applications related to fine-grained image analysis
与细粒度图像分析相关的特定领域应用程序
- 基于深度学习的细粒度图像分析技术在现实世界中各种特定领域的应用
- 推荐系统中的衣服/鞋子检索、
- 电子商务平台中的时尚图像识别、
- 智能零售中的产品识别等。
- 在极端情况下,人脸识别可以被视为细粒度识别的一个实例,其中粒度低于身份粒度级别。
- 人/车再识别是另一项细粒度相关任务,旨在确定两张图像是否取自同一特定人/车。显然,重新识别任务也处于身份粒度之下。
在实践中,这些工作通过遵循 FGIA 的动机来解决相应的领域特定任务,包括捕捉物体(人脸、人和车辆)的辨别部分,发现从粗到细的结构信息。
Section 8 Concluding remarks and future directions
结束语和今后的方向
- 自动细粒度模型
- **自动机器学习(AutoML)和神经架构搜索(NAS)**正吸引着人工智能界尤其是在计算机视觉领域的热烈关注
- AutoML 的目标是将机器学习应用于现实世界任务的端到端过程自动化。
- NAS,即自动化神经网络架构设计的过程,因此是 AutoML 中合乎逻辑的下一步。
- AutoML 和 NAS 的最新方法在各种计算机视觉应用中可以与手工设计的架构相媲美,甚至优于手工设计的体系结构。因此,利用 AutoML 或 NAS 技术开发的自动细粒度模型也有望找到更好、更具针对性的深度模型,同时反过来推动 AutoML 和 NAS 的研究。
- **自动机器学习(AutoML)和神经架构搜索(NAS)**正吸引着人工智能界尤其是在计算机视觉领域的热烈关注
- 细粒度的少镜头学习
- 人类能够在很少的监督下学习一个新的细粒度概念,例如,一种鸟类的示例图像很少,但我们最好的深度学习细粒度系统需要数百或数千个标记的示例。更糟糕的是,对细粒度图像的监督既耗时又昂贵,因为领域专家应该始终准确地标记细粒度对象。因此,需要开发细粒度的少镜头学习(fine-grained few-shot,FGFS)。
- FGFS 的任务要求学习系统以元学习的方式从几个例子(只有一个或少于五个)中为新的细粒度类别构建分类器。
- 稳健的 FGFS 方法可以极大地增强细粒度识别的可用性和可扩展性。
- 细粒度哈希
- 在参考数据库非常大的情况下,找到精确的最近邻居的成本高得令人望而却步。
- 哈希作为最流行、最有效的近似近邻搜索技术之一,具有处理大规模细粒度数据的潜力。因此,细粒度哈希是一个值得进一步探索的方向。
- 在更真实的设置中进行细粒度分析
- 在过去的十年中,细粒度图像分析相关技术得到了发展,并在其传统设置中取得了良好的性能,例如经验协议。然而,这些设置无法满足当今各种现实世界应用的日常要求,例如,通过使用在受控环境中收集的图像训练的模型来识别货架中的零售产品,以及识别/检测野生自然物种。
- 因此,新的细粒度图像分析主题,仅举几个例子——具有域自适应的细粒度分析、具有知识转移的细粒度解析、具有长尾分布的细粒度剖析,以及在资源受限的嵌入式设备上运行的细粒度分析,为更先进、更实用的 FGIA 提供了大量研究工作。
相关文章:
《Deep learning for fine-grained image analysis: A survey》阅读笔记
论文标题 《Deep learning for fine-grained image analysis: A survey》 作者 魏秀参,旷世研究院 初读 摘要 细粒度图像分析(FGIA)的任务是分析从属类别的视觉对象。 细粒度性质引起的类间小变化和类内大变化使其成为一个具有挑战性的…...
节点导纳矩阵
节点导纳矩阵(Node Admittance Matrix)是电力系统分析中的关键工具,它用于描述电力系统中不同节点之间的电导和电纳参数。这个矩阵为电力工程师提供了深入了解电力系统运行和分析所需的数学工具。 节点导纳矩阵是一个复数矩阵,通常…...
小米真无线耳机 Air 2s产品蓝牙配对ubuntu20.04 笔记本电脑
小米真无线耳机 Air 2s产品蓝牙配对ubuntu20.04 笔记本电脑 1.我的笔记本是 22款联想拯救者y9000k,安装了双系统,ubuntu20.04。 2.打开耳机,按压侧面按钮2秒,指示灯显示白色闪烁。 3.打开ubunru20.04 系统右上角wifi的位置&…...
Python爬虫批量下载图片
一、思路: 1. 分析URL,图片的URL内嵌于base_url的返回当中 2. 下载图片 二、代码 import time import requests import os from lxml import etreeclass DownloadImg():爬虫进行美女图片下载def __init__(self):self.url http://xxxxxx/4kmeinv/self…...
java入门,从CK导一部分数据到mysql
一、需求 需要从生产环境ck数据库导数据到mysql,数据量大约100w条记录。 二、处理步骤 1、这里的关键词是生产库,第二就是100w条记录。所以处理数据的时候就要遵守一定的规范。首先将原数据库表进行备份,或者将需要导出的数据建一张新的表了…...
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
🧸欢迎来到dream_ready的博客,📜相信你对这篇博客也感兴趣o (ˉ▽ˉ;) 📜表白墙/留言墙初级Spring Boot项目(此篇博客的简略版,不带MyBatis数据库开发) 目录 1、项目前端页面及项目…...
Stable Diffusion - StableDiffusion WebUI 软件升级与扩展兼容
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/134463035 目前,StableDiffusion WebUI 的版本是 1.6.0,同步更新 controlnet、tagcomplete、roop、easy-prompt-selector等…...
git创建新分支将项目挂载到新分支操作
1.如果是本地项目,没有关联过git // 在git创建仓库(默认master分支) // 复制克隆链接(默认下载下来的是master仓库,克隆指定分支如下所示) git clone -b 分支名 克隆地址 // 将某分支克隆下来后,直接将项目放到新文件夹内(执行以下命令提交即可) git add . git commit -m 备注…...
WEB 自动化神器 TestCafe(一)—安装和入门篇
今天小编给大家带来WEB 自动化神器 TestCafe(一) —安装和入门篇 一、TestCafe 介绍: TestCafe 是一款基于 Node.js 的端到端 Web 自动化测试框架,支持 TypeScript 或 JavaScript 来编写测试用例,运行用例,并生成自动化测试报告。…...
asp.net 学校资源信息管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
一、源码特点 asp.net 学校资源信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 asp.net学校资源管理系统 二、功能介绍 本系统使用Microsoft Visual Studio 2019为开发工具,SQL …...
【汇编】栈及栈操作的实现
文章目录 前言一、栈是什么?二、栈的特点三、栈操作四、8086cpu操作栈4.1 汇编指令4.2 汇编代码讲解问题:回答: 4.3 栈的操作4.3 push 指令和pop指令的执行过程执行入栈(push)时,栈顶超出栈空间执行出栈(pop)时,栈顶超…...
前段-用面向对象的方式开发一个水管小鸟的游戏
首先准备好各类空文件 index.js css html 和图片 图片是下面这些,如果没有的可在这里下载 2 开发开始 好了,基础准备工作完毕,开发开始, 首先,先把天空,大地,小鸟的盒子准备好,并…...
Java中利用OpenCV进行人脸识别
OpenCV 概述 OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,它提供了丰富的工具和算法,用于处理图像和视频数据。该库由一系列高效的计算机视觉算法组成,涵盖了许多领域,包括目…...
23111708[含文档+PPT+源码等]计算机毕业设计基于javaweb的旅游网站前台与后台旅景点
文章目录 **论文截图:****实现:****代码片段:** 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 下面是系统运行起来后的部分截图: 论文截图: 实现: 代码片段…...
Windows安装nvm【node.js版本管理工具】
目录 下载安装包 安装 配置 配置node的国内镜像源 配置npm的国内镜像源 常用命令 查看可安装的node版本 安装指定的版本 查看已有的node版本列表 切换版本 下载安装包 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.11 安装 安装过程就不贴了࿰…...
让资产权利归于建设者:Kiosk使过程变得更简单
区块链凭借着其将人的权利地位置于平台之上的能力,可以重塑互联网,而自托管为个人提供了控制和管理其资产和数据的能力。链上交易支持建设者和客户之间的点对点交易。这些特质联合起来,可以将数字世界从基于价值提取的模式转变为基于价值创造…...
MLP感知机python实现
from torch import nn from softmax回归 import train_ch3 import torch import torchvision from torch.utils import data from torchvision import transforms# ①准备数据集 def load_data_fashion_mnist(batch_size, resizeNone):# PyTorch中的一个转换函数,它…...
Es 拼音搜索无法高亮
目录 背景: Es 版本: 第一步 第二步 (错误步骤 - 只是记录过程) 第三步 第四步 第五步 第六步 第七步 背景: app 原有的搜索功能无法进行拼音搜索,产品希望可以支持,例如内容中含有&a…...
java线性并发编程介绍-锁(二)
2.5 重量锁底层ObjectMonitor 需要去找到openjdk,在百度中直接搜索openjdk,第一个链接就是 找到ObjectMonitor的两个文件,hpp,cpp 先查看核心属性:http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/69087d08d473…...
Java JPA详解:从入门到精通
描述:本文详细介绍了Java JPA的概念、使用方法以及常见问题,帮助读者从入门到精通掌握JPA。 关键词:Java JPA、Hibernate、持久层框架、ORM、数据库访问 一、Java JPA概述 Java Persistence API(JPA)是JavaEE 5规范…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
