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

跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)

Dissecting Deep Metric Learning Losses for Image-Text Retrieval
剖析图像文本检索中的深度度量学习损失
2022.10

视觉语义嵌入(VSE)是图像-文本检索中的一种流行的应用方法,它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性。三元组损失与硬负值的挖掘已经成为大多数VSE方法的事实目标。

图像领域深度度量学习(DML)产生了新的损失函数,超越了三元损失。 尽管在设计基于梯度运动的损失方面做了一些尝试,但大多数DML损失是在嵌入空间中根据经验定义的。

本文提出了一个新的基于梯度的目标分析框架,即GOAL,以系统地分析现有DML函数中梯度的组合和重新加权,而不是直接应用这些损失函数,这可能导致模型参数的次优梯度更新。在这个分析框架的帮助下,我们进一步提出了梯度空间中新的目标系列,探索不同的梯度组合。在梯度不能与有效的损失函数积分的情况下,我们实现了我们提出的目标,使它们在梯度空间而不是在嵌入空间的损失上直接运作。 综合实验表明,我们的新目标在不同的视觉/文本特征和模型框架中都比基线有持续的性能提高。 我们还展示了GOAL框架的通用性,将其扩展到其他使用三元损失的模型,包括具有严重跨模式交互的视觉-语言模型,并在COCO和Flick30K的图像-文本检索任务中取得了最先进的结果。

简介

视觉语义嵌入(VSE)是在图像和自然语言之间建立联系的主要课题之一。它旨在将图像和它们的描述性文本信息映射到一个联合空间中,这样,一对相关的图像和文本应该被映射到彼此附近,而一对不相关的图像和文本应该被映射到彼此远处。本文专注于图像-文本匹配和检索任务的视觉-语义嵌入,但我们的方法可以推广到其他使用三重损失系列的图像-文本检索模型(如X-VLM)。

一个VSE模型通常由图像和文本的特征提取器、特征聚合器和训练期间的目标函数组成。尽管VSE在特征提取器和特征聚合器方面取得了重大进展,但人们对训练模型的损失函数关注较少。

基于铰链的三联体排名损失与硬负抽样已经成为许多VSE方法的事实训练目标。许多损失函数被提出来以提高图像嵌入任务的训练性能,显示出三重损失对于一般的度量学习来说不是最佳的。早期的损失,如triplet loss和contrastive loss的定义是,在嵌入空间中,正对应该接近,而负对应该分开。然而,这种定义的损失函数可能不会导致理想的特征,这可能会明确地影响模型参数的更新。

Triplet loss是一种常用的深度度量学习损失函数,用于学习样本间的距离度量,其基本思想是使得同类样本之间的距离尽可能小,异类样本之间的距离尽可能大。
具体来说,在训练过程中,Triplet loss需要输入一个样本三元组(anchor,positive,negative),其中anchor表示锚样本,positive表示与anchor同类的样本,negative表示与anchor不同类的样本。Triplet loss的目标就是最小化锚样本和同类样本之间的距离,同时最大化锚样本和不同类样本之间的距离。

本文提出了基于梯度的目标分析框架,即GOAL,一个新的基于梯度的VSE问题分析框架。我们首先提出了一个新的梯度框架,以剖析梯度层面的损失,并提取其关键梯度元素。然后,我们探索了一种新的训练思路,即在每个训练步骤中直接定义梯度来更新模型,而不是定义损失函数,如图1所示。这个新的框架允许我们简单地将DML损失中的关键梯度元素结合起来,形成一个新的梯度家族,避免了将梯度整合到损失函数中的问题。最后,新的梯度继续改善了现有的VSE在图像文本检索任务上的表现。

在这里插入图片描述
图1。为了实现所需的视觉语义嵌入空间,一种常见的方法是设计一个损失函数,该函数可以在PyTorch或TensorFlow等深度学习平台上计算。这些平台上的自动梯度机制自动计算梯度以更新模型参数,形成所需的嵌入空间。在实践中,视觉语义嵌入的目标是优化从图像和文本中提取的特征点的聚类或分离,而损失函数在某种程度上是实现该目标的间接方法,而梯度更直接地影响嵌入空间的更新。我们提出了一种直接设计梯度来训练模型的方法。

本文贡献

  • 提出了一个通用框架GOAL来全面分析现有深度度量学习损失函数的梯度更新,并应用这个框架来帮助寻找VSE问题的更好目标。
  • 提出了一种新的方法,通过用梯度目标家族来优化模型,而不是使用损失函数,直接处理图像-文本检索任务。
  • 展示了对现有方法的持续改进,在COCO数据集的图像-文本检索任务中取得了最先进的结果。

相关工作

用于图像-文本匹配的视觉语义嵌入:
VSE++是一种基本的VSE模式,其中视觉和文本嵌入是单独训练的,然后在投射到一个共享空间后用AvgPool进行聚合,之后通过硬负挖掘的三倍损失来联合优化。 与使用特征图的局部网格作为视觉特征的主流相比,自下而上的注意力被引入到学习图像-文本匹配的视觉语义内联,这通常是通过堆叠预先训练好的物体检测器的区域表征来实现的。通用集合运算符(GPO)来学习最佳集合策略,它优于具有复杂图像聚合器的方法。受语言模型大规模预训练的成功启发,最近出现了一种趋势,即在大规模图像-文本对上进行任务无关的视觉-语言预训练(VLP),以获得通用的表达,然后在特定任务的数据和损失上进行微调,以在下游任务(包括图像-文本检索)中获得最先进的结果。然而,与我们提出的方法相比,流行的方法选择优化三联体损失作为图像-文本匹配任务的事实目标。 在本文中,我们将努力重新审视为视觉语义嵌入寻找更好的训练目标的问题。

深度度量学习在极端的分类环境中很有用,比如细粒度识别。其目的是训练网络将语义相关的图像映射到附近的位置,将不相关的图像映射到嵌入空间中的远处位置。有许多损失函数被提出来解决深度度量学习问题。三元损失函数及其变体,如圆圈损失,形成一个包含锚、正和负实例的三元组,其中锚和正实例共享相同的标签,而锚和负实例共享不同的标签。成对的损失函数,如对比性损失、二项式偏差损失、解除结构损失和多重相似性损失,当一对具有相同标签的实例之间的距离很大时,以及一对具有不同标签的实例之间的距离很小时,就会受到惩罚。所有这些损失函数都鼓励正面图像对的距离要小于负面图像对的距离。由于DML的训练目标与VSE问题相似,本文借用DML的这些损失设计思想来改进VSE问题。

梯度修改:
最近在DML方面的工作,如Multi-Similarity Loss和Circle Loss,从标准的三元损失公式开始,调整损失函数的梯度,通过非常简单的代码修改就可以得到明显的改进。这些工作都找到了明确的损失函数,其梯度是理想的。 其他的策略是从一个理想的梯度加权函数开始,然后整合理想的梯度,得出一个带有适当属性的梯度的损失函数。这通常仅限于简单的加权策略,如简单线性形式和当三联体包含硬负数时对正数的简单梯度去除,因为它可能难以找到梯度与复杂加权策略一致的损失函数。 最相关的工作是P2Sgrad,它分析了基于边际的softmax损失家族中的梯度,并直接用余弦相似度修改梯度以达到更好的优化效果。与P2Sgrad相比,我们的工作侧重于三联体损失及其变体损失函数。
本文的框架直接探索了所需梯度更新的空间。通过不局限于用适当的梯度去除损失函数,我们可以更明确地在实验中剖析梯度的不同部分的影响。此外,我们还可以将实验中最有用的梯度项重新组合成一种梯度条件,稍微改变现有的算法以提高性能。

基于梯度的目标设计框架工作

我们为一批图像和文本如何影响网络定义了一系列的术语。 设X是一批输入图像,Y是一批输入文本,x是用图像提取器提取的图像的L2标准化特征向量,y是用文本提取器提取的文本的L2标准化特征向量,l是这批图像的损失值、 θ是图像提取器的参数,φ是文本提取器的参数,η是学习率,fθ(·)是图像提取器的映射函数,gφ(·)是文本提取器的映射函数,L(·)是损失函数。在前向训练步骤中,表达式为:
在这里插入图片描述
这两个方程强调,提取器参数的更新与两组导数项相结合。第一组导数项∂l/∂x和∂l/∂y代表了图像和文本嵌入特征的变化对损失的影响,这也是本工作中最详细探讨的术语。第二组导数项∂x/∂θ和∂y/∂φ表示模型的参数变化如何影响嵌入特征。由于导数链规则的存在,在具有多层的现代深度网络中,这个项总是可以用每层的多个项的乘法来扩展,这在工作中没有讨论。

第一组导数项总是受到损失函数的分析形式的制约。例如,由于提升结构损失和二项式偏差损失的指数形式,它们的导数也包含一个指数项。这样的项可能会导致梯度不稳定,这也是损失函数的设计最多只能隐含地控制提取器的学习行为的一个例子。

通过最新的深度学习平台,如Pytorch,它支持前向模块的定制梯度反向计算,而不是依赖于损失的导数,我们可以明确地定义基于所提出的GOAL框架的梯度更新,以直接影响提取器的学习行为。 在下面的讨论中,我们重点讨论了DML文献中许多三重损失函数中第一组术语的特殊形式,然后提出直接定义模型训练的第一组术语。

Gradient Components

给定一对图像和文本特征x和y,当图像特征x被当作锚点时,我们表示其在文本批次Y中挖掘的文本硬负面特征y′;当文本特征y被当作锚点时,我们表示其在图像批次X中挖掘的图像硬负面特征x′。然后,我们可以得到两个三联体(x, y, y′)和(y, x, x′)。在第一个三联体中,Sx,y = xTy和Sx,y′ = xTy′是作为归一化图像特征和归一化文本特征的正负对的点积计算的余弦相似度。类似的余弦相似度是为第二个三联体计算的,Sy,x = yTx和Sy,x′ = yTx′。最后,这些余弦相似度被输入一个对称的三联体损失函数l = L(Sx,y, Sx,y′) + L(Sy,x, Sy,x′)。

与图像和文本特征有关的梯度是:
在这里插入图片描述
三联体损失及其变体的区别主要来自标量。在DML文献中,主要有两组标量形式:与三联体的正负对相似性都有关的标量,我们表示为(Triplet Weight T ),与三联体的正或负对相似性有关的标量,我们表示为(Pair Weight P )。

Triplet Weights

对于标准的三联体损失函数与硬性负向开采,梯度可推导为:在这里插入图片描述

Pair Weight

除了三联体权重,许多 DML 工作也提出了损失函数中的配对权重。为了详细讨论对权重P,我们表示正数对的权重为P+,负数对的权重为P-。让一个恒定的缩放参数作为公平比较的基线。在这种情况下,两对权重都设置为常数1。
最近的工作认为,当负数对彼此接近时,负数对的权重应该很大。否则,正如[36]中提到的,对DML的优化任务会很快收敛到一个糟糕的局部最小值。Circle loss中的解决方案是应用线性配对权重Plin:对于负的配对,如果相似度大,权重就大,如果相似度小,权重就小;对于正的配对,如果相似度小,权重就大,如果相似度大就小:

Combinations of Gradient Components

在这一节中,我们从DML的三元权重和配对权重方面剖析了许多以前的损失函数。表1显示了如何将Gradient Components的不同组合映射到现有的损失函数中。除了这些组合之外,其余标注为 "新 "的组合都是未曾探索过的。如果训练需要损失函数,这些gradient component组合就很难被探索,如果它们不是可整合的,就几乎不可能的。然而,在我们的GOAL框架下,我们能够用这些梯度训练一个模型。
在这里插入图片描述
表1. 将三联体权重和成对权重的不同梯度组合映射到现有的DML损失函数中。在我们的GOAL框架下,标记为 "新 "的组合是可以被探索的

实验

我们直接用梯度目标取代三个开源作品中的损失模块: VSE++、VSE和X-VLM,并保持所有其他训练设置与他们的原始工作相同。我们在前面测试了这三个作品中由三联体权重和成对权重组合形成的所有可能梯度目标。每个目标运行3次,以消除来自批次随机抽样和联合空间映射层随机初始化的随机性造成的影响。我们报告了两种常见的检索结果,即图像到文本检索和文本到图像检索,用Recall@1的平均值和标准偏差作为两个数据集的衡量标准。

我们在最新的最先进的方法X-VLM[40]中应用了相同的梯度目标,在下游微调中替换了其对比性损失项。这个结果被称为 “X-VLM ours”。我们继续在MSCOCO 5K测试和Flickr 1K测试中推动最先进的结果的边界。
在这里插入图片描述

表6. 我们在MS-COCO 5K和Flickr 1K测试中使用所提出的GOAL框架设计的新型损失函数进行的最先进的图像-文本检索结果

结论

我们提供了一个新的框架GOAL,用从深度度量学习损失函数中剖析出来的梯度成分组合来训练图像-文本匹配任务。在实践中,所提出的梯度目标可以很容易地应用于替代损失函数的训练。对三重权重和一对权重的详尽组合进行的实验表明,三重权重和一对权重对检索性能都有各自的影响,一般来说,Tcir和Psig-ms的组合在图像-文本检索中取得了最佳性能。这个框架有助于找到更好的梯度目标,这些梯度目标在这一领域从未被探索过,并在多种既定方法上提供了一致的检索改进,包括取得新的最先进的结果。

相关文章:

跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)

Dissecting Deep Metric Learning Losses for Image-Text Retrieval 剖析图像文本检索中的深度度量学习损失 2022.10 视觉语义嵌入(VSE)是图像-文本检索中的一种流行的应用方法,它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性…...

贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间

文章目录 435. 无重叠区间思路思路代码困难 763.划分字母区间思路官方题解代码困难 56. 合并区间思路思路代码 今日收获 435. 无重叠区间 思路 重叠问题都需要先排好序,再贪心 思路代码 func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(interva…...

IMX6ULL裸机篇之SPI实验-ICM20608代码实现

一. SPI 实验 SPI实验:学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608,读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中,涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写,如下所示: IMX6ULL…...

51单片机读取DS18B20温度传感器

1.首先我们知道DS18B20是单总线协议,只有一根数据线。所以Data数据线即使发送端又是接收端,同时DS18B20内部接了弱上拉电阻(如图一所示),数据线默认为高电平。有了这些概念,我们就能进行下一步。 图一&…...

set/map学习

我们要开始学习map和set的使用,虽然使用更加复杂,但是STL整体的设计,本身就具有很强的前瞻性和延续性,比如说迭代器等,我们顺着文档来看。这也是除了vector之外最重要的容器,当然还有unordered_map 和 unor…...

JavaScript Web APIs学习总结

以后声明变量我们有限使用哪一个? const 有了变量先给const,如果发现它后面是要被修改的,再改为let 为什么const声明的对象可以修改里面的属性? 因为对象是引用类型,里面存储的是地址,只要地址不变&…...

萤石摄像头RTSP流获取(黑屏解决)

前言 在获取萤石摄像头RTSP视频流时,视频流获取不成功,黑屏并且一直显示缓冲中。下面对获取过程中查阅的资料和解决方案做一下汇总。 打开RTSP 在萤石云视频APP中打开RTSP,【我的】-【工具】-【局域网设备预览】-【开始扫描】-【选择摄像头…...

ThreadLocal引发的内存泄漏分析

预备知识(引用) Object o new Object(); 这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 onull时,只是表示o不再指向堆中object的对象实例,不代表这个…...

银行数据治理:数据质量管理实践

现代商业银行日常经营活动中积累了大量数据,这些数据除了支持银行前台业务流程运转之外,越来越多地被用于决策支持领域,风险控制、产品定价、绩效考核等管理决策过程也都需要大量高质量数据支持。银行日常经营决策过程的背后,实质…...

2.7V至25V宽输入电压15A 峰值电流

HT7179是一款高功率异步升压转换器,集成 20mΩ功率开关管,为便携式系统提供高效的 小尺寸解决方案。 HT7179具有2.7V至25V宽输入电压范围,可为 采用单节或两节锂电池,或12V铅酸电池的应 用提供支持。该器件具备15A开关电流能力&a…...

Vue 父子组件应用指南:从基础到实战

文章目录 一、创建父组件二、创建子组件三、在父组件中使用子组件四、父子组件之间的通信1. 数据传递2. 事件传递 Vue.js 是一种流行的 JavaScript 框架,用于构建用户界面。其中,父子组件的概念是 Vue 开发中非常重要的一部分。本文将介绍如何使用 Vue 创…...

todotodo

todotodo...

创建autotool项目

GNU Autotools是linux系统一套自动化编译工具,生成的项目可移植,通过configure && make即可生成目标程序。GNU Autotools组件有:autoscan, aclocal, autoconf, automake,autoheader等。 不用管这些工具的原理,只要知道他们…...

计算机概念

计算机的体系结构 计算机俗称“电脑”computer(kəmˈpjuːtə(r))哈哈,本质上就是一台在各个领域被广泛使用的设备,主要由硬件和软件两大部分组成。 常见的硬件:CPU、内存、硬盘、显卡、主板、键盘、显示器、鼠标、... CPU - 中央处理…...

【数学建模系列】TOPSIS法的算法步骤及实战应用——MATLAB实现

文章目录 TOPSIS简介方法和原理数学定义数学语言描述现实案例 正负理想解定义实例 量纲 TOPSIS法的算法步骤1.用向量规范化的方法求得规范决策矩阵2.构成加权规范阵C(c~ij~)~m*n~3.确定正负理想解的距离4.计算各方案到正理想解与负理想解的距离5.计算各方案的综合评价指数6.排列…...

网络安全(黑客)工具

1.Nmap 它是网络管理员 必用的软件之一,以及用以评估网络系统安全。正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子 )爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器&#xff…...

探究前后端数据交互方式

前端和后端在 Web 开发中扮演着不同的角色,两者需要进行数据的传递和交互。本篇文章将主要讨论前后端数据交互方式的不同类型和应用场景。 一、什么是前后端数据交互? 在 Web 开发中,前端负责用户界面的设计和交互,后端负责数据…...

Yolov5轻量化:CVPR2023|RIFormer:无需TokenMixer也能达成SOTA性能的极简ViT架构

1.RIFormer介绍 论文:https://arxiv.org/pdf/2304.05659.pdf 本文基于重参数机制提出了RepIdentityFormer方案以研究无Token Mixer的架构体系。紧接着,作者改进了学习架构以打破无Token Mixer架构的局限性并总结了优化策略。搭配上所提优化策略后,本文构建了一种极致简单且…...

Spring-Retry实现及原理

前言 重试,其实我们其实很多时候都需要的,为了保证容错性,可用性,一致性等。一般用来应对外部系统的一些不可预料的返回、异常等,特别是网络延迟,中断等情况。还有在现在流行的微服务治理框架中&#xff0…...

Java中的锁

为什么会有这些锁呢? 因为一种类型的锁很难应对线程操作同步资源的情况。 乐观锁和悲观锁 自旋锁和适应性自旋锁 无锁、偏向锁、轻量级锁和重量级锁 公平锁和非公平锁 可重入锁和非可重入锁 乐观锁和悲观锁 悲观锁认为当它操作数据的时候,必然用一…...

学习系列:5种常见的单例模式变体及其实现方式

单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供了一个全局访问点。在实际应用中,我们可能会遇到一些特殊情况,需要对单例模式进行一些变体,以满足不同的需求。下面介绍几种常见的单例模式变体。 1. 懒…...

三菱FX5U系列PLC之间进行简易PLC间链接功能的具体方法

三菱FX5U系列PLC之间进行简易PLC间链接功能的具体方法 功能介绍: 在最多8台FX5U或者FX3U PLC之间通过RS-485通信方式连接,进行软元件相互链接的功能。 接线注意事项: 根据链接模式和所使用的从站数量的不同,链接软元件的占用点数也有所变化。根据链接软元件的起始编号,对占…...

基于DBACAN的道路轨迹点聚类

目录 前言道路栅格化轨迹聚类参考资料 前言 很多针对道路轨迹的挖掘项目前期都需要对道路进行一段一段的分割成路段,然后对每一个路段来单独进行考察,如设定路段限速标识,超速概率等,如何对道路进行划分,其实是一个很…...

【项目】接入飞书平台

前言 项目有和飞书打通的需求,因为是第一次打通,摸索过程还是花了些时间的,现在相关笔记分享给大家。 步骤 1、熟悉开发文档 熟悉飞书的开发文档:开发文档 ,找到你需要的接口,拿我为例,我需…...

c++11 标准模板(STL)(std::ios_base)(三)

定义于头文件 <ios> class ios_base; 类 ios_base 是作为所有 I/O 流类的基类工作的多用途类。它维护数种数据&#xff1a; 1) 状态信息&#xff1a;流状态标志&#xff1b; 2) 控制信息&#xff1a;控制输入和输出序列格式化和感染的本地环境的标志&#xff1b; 3)…...

在线协同办公小程序开发搭建开发环境

目录 介绍 开发环境说明 虚拟机 原因 VirtualBox虚拟机 VMware虚拟机v15 安装MySQL数据库 安装步骤 导入EMOS系统数据库 安装MongoDB数据库 启动Navicat&#xff0c;选择创建MongoDB连接 创建用户 搭建Redis数据库 配置Maven 安装IDEA插件 Lombok插件 …...

【编译、链接、装载六】汇编——目标文件

【编译和链接六】汇编——目标文件 一、目标文件_存储格式1、生成目标文件2、目标文件存储格式3、file查看文件格式 二、查看目标文件的内部结构——objdump三、代码段四、 数据段和只读数据段五、 ELF文件结构描述1、头文件2、段表2.1、重定位表2.2、字符串表2.3、查看重定位表…...

王道计算机考研408计算机组成原理汇总(下)

提示:真正的英雄是明白世界的残酷,也遭受了社会带给他的苦难,他依然能用心的说“我热爱这个世界,我愿竭尽所能去为我的世界而好好战斗 文章目录 前言4.1.1 指令格式4.1.2 扩展操作码指令格式4.2.1 指令寻址4.2.2 数据寻址4.2.3 偏移寻址4.2.4 堆栈寻址汇总前言4.3.1 高级语…...

偏向锁、轻量级锁、重量级锁、自旋锁、自适应自旋锁

1. 偏向锁 偏向锁就是在运行过程中&#xff0c;对象的锁偏向某个线程。即在开启偏向锁机制的情况下&#xff0c;某个线程获得锁&#xff0c;当该线程下次再想要获得锁时&#xff0c;不需要重新申请获得锁&#xff08;即忽略synchronized关键词&#xff09;&#xff0c;直接就可…...

Delta 一个新的 git diff 对比显示工具

目录 介绍git diff 介绍delta介绍 一、安装1.下载 Git2.下载 delta3.解压4.修改配置文件5. 修改主题6.其他配置和说明 二、对比命令1.在项目中 git diff 常用命令2.对比电脑上两个文件3.对比电脑上的两个文件夹 三、在Git 命令行中使用效果四、在idea 的Terminal命令行中使用效…...

建设网站要学什么/seo投放

hive的tar包下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1m3VKT2-kIgR1QyjmfnWvGw?pwdr45r 提取码&#xff1a;r45rmysql的tar包&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1--s1m3hfNNKEVGkFEqi5iA?pwdb7h4 提取码&#xff1a;b7h4由于hive的元…...

网站建设免费模板哪家好/自动点击器安卓

如果你有一个C/C的函数需要测试&#xff0c;利用MATLAB平台是一个经济高效的选择。你不必花过多的精力去理会IO的问题&#xff0c;并且可以很方便的利用 MATLAB的函数来验证你的函数的正确性。有时&#xff0c;你还可以利用MATLAB产生测试数据。这样做还有一个很大的好处&#…...

网站建设怎样接业务/市场推广

W3cplus有关于CSS3的教程在国内来说算是比较多&#xff0c;也比较全的了&#xff0c;有理论介绍&#xff0c;也有实例分析。但有关于质感这种细节上的分析文章还没有写过。由于自己的美感较差&#xff0c;也不敢班门弄斧&#xff0c;恐怕误人子弟。今天由好友99客串W3cplus&…...

wordpress分享到微博才能看到/信息发布平台推广有哪些

一、选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图。在Android 3.0 以上的版本中&#xff0c;我们已经可以使用ActionBar提供的Tab来实现这种效果&#xff0c;而不需要我们自己去实现碎片的切换。ActionBar默认是不具备选项卡功能的&#xff0c;所…...

wordpress 定时脚本/近期时事新闻10条

python-file-23 #文件常用操作   -打开关闭(一旦打开&#xff0c;必须要有关闭操作)   -读写内容   -查找 #open函数-open函数负责打开文件&#xff0c;带有很多参数-第一个参数&#xff1a;必须有&#xff0c;文件的路径和名称-mode&#xff1a;表明文件用什么方式打开 …...

网站关键词排名全掉了/福州短视频seo获客

直接贴图出来观赏,图中所有UI功能都是Flex提供的,你并不需要编写额外的代码,可以自己调整颜色来适应自己的需要.当然这里几张图只体现一部分.除了UI美观功能外,Flex的语言机制在功能实现上也很方便;这也是自己喜欢它的原因....