大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记

这篇具有很好参考价值的文章主要介绍了大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

  马上又是一周周末了,开始写论文博客啦。

  这是一篇顶会文章,标题很清楚,就是一个一统的框架用于解决各种任务。这类文章在 21 年的时候挺多的,现在倒是不常见了。因为需要的资源很多,外部数据集也很庞大,一般的小资源团队基本搞不定。但一旦出世,效果必然十分炸裂。

  • 论文地址:Universal Instance Perception as Object Discovery and Retrieval
  • 代码地址:https://github.com/MasterBin-IIAU/UNINEXT
  • 收录于:CVPR 2023
  • Ps:2023 年每周一篇博文阅读笔记,主页 更多干货,欢迎关注呀,期待 6 千粉丝有你的参与呦~

一、Abstract

  所有的实例感知任务旨在发现利用 queries 查询到的目标,例如类别名、语言表达式、目标标注,但这一领域被划分为多个独立的子任务。于是本文提出了一种统一的实例感知模型 UNINEXT。UNINEXT 将多个实例感知任务划分为一个统一的目标发现和检索过程,通过改变输入的 promots 能够弹性地感知不同类型的目标。于是有一些好处:不同任务的数据和标签词汇能够用于训练统一的模型,而且有益于那些缺乏训练数据的任务;参数有效性,能够降低冗余的计算。UNINEXT 在 20 个 数据集,10 种实例级别的任务,6 种视频级别的任务上效果很好。

二、引言

  计算机视觉领域中,以目标为中心的理解是其中一个最关键和挑战性的任务。本文主要讨论其中的 10 个子任务。如下图所示:

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer
  
  最基础的任务则是目标检测、实例分割、多目标跟踪\分割、视频实例分割。除了这些类别名外,还有一些任务则需要其他的指代信息,例如 Referring Expression Comprehension (REC) /Segmentation (RES)、Referring Video Object Segmentation (R-VOS)、单目标跟踪、视频目标分割等等。这些任务统称为实例感知。

  当前的实例感知方法都是基于一个或一部分子任务开发出的方法,且仅仅在特定的数据集上训练。这一设计有如下缺陷:独立的设计阻止了模型学习和共享不同任务的知识;多个任务间的交互合作可能被忽略掉了。受限于固定范围的类别,传统的目标检测器很难在多个目标类别的数据集上进行训练。于是问题来了:所有的实例感知任务旨在根据一些 queries 发现某些特定的目标,那么有没有可能设计一个统一的模型用于所有主流的实例感知任务呢?

  于是本文提出 UNINEXT,首先根据三种不同的输入 prompt 重新组织 10 种感知任务:

  • 类别名作为 Prompt,包含 Object Detection、Instance Segmentation、VIS,、MOT、MOTS
  • 语言表达式作为 Prompt,包含 REC、RES、R-VOS
  • 指代标注作为 Prompt,包含 SOT、VOS

  然后提出一种统一的,prompt 引导的目标发现和检测方法来解决这些任务。具体来说,UNINEXT 首先在 prompts 的引导下发现 N N N 个目标 Proposals,然后根据实例-Prompt 匹配得分检索出最终的实例。为解决不同的 prompt 模态,采用一种 Prompt 生成模块,由一个指代文本编码器和一个指代视觉编码器组成。然后一个早期融合模块用于增强初始的视觉特征和 prompt embeddings。选择基于 Transformer 的目标检测器作为实例解码器。具体来说,解码器首先生成 N N N 个实例 Proposals,然后这些 Prompt 从这些 Proposals 中检索出匹配的目标。

  在 10 个实例级别的感知任务上,统一使用一个模型,相同的模型参数,UNINEXT 在 20 个 benchmarks 上达到了 SOTA 的性能。本文贡献总结如下:

  • 提出一个统一的 Prompt 框架用于统一的实例感知;
  • UNINEXT 能够在不同的任务和领域上训练,不需要特定的任务头;
  • UNINEXT 在 20 个 benchmarks,10 个实例感知任务上,达到了 SOTA 的性能。

三、相关工作

实例感知

通过类别名进行检索

  目标检测和实例感知旨在找到所有特定类别的目标 boxes 或 masks。早期的目标检测器可以大致划分为两阶段和一阶段的方法。最近是一些基于 Transformer 的检测器开始兴起。同时,实例分割方法也可以根据是否需要 box 级别的检测器划分为基于检测器和无检测器的方法。目标检测和实例分割同时也是 MOT、MOTS、VIS 的基石。主流的方法采用在线 “检测-关联” 的策略。然而最近的一些 VIS 方法采用离线的方式,在 VIS2019 数据集上表现很好,但是在 OVIS 上表现不行。

通过语言表达式的检索

  REC、RES、RVOS 旨在根据一条语言表达式发现一个特定的目标。与目标检测类似,REC 方法同样可以划分为三种类型。两阶段、单阶段和基于 Transformer 的方法。不同于 REC,RES 关注于设计不同的注意力机制从而实现视觉-语言的对齐。最近,SeqTR 提出将 REC 和 RES 视为点预测问题,达到了新的 SOTA。最后 R-VOS 可以视为 RES 在视频领域上的拓展。当前的 SOTA 方法是基于 Transformer 的离线方式。然而,离线方式妨碍了现实世界的应用,例如自动驾驶。

通过指代标注的检索

  SOT 和 VOS 首先在视频的第一帧上面使用 boxes 或者 masks 确定要跟踪的目标,然后要求算法去预测被跟踪目标的轨迹。这一任务核心问题在于:如何提取信息量丰富的目标特征?如何融合目标信息与当前帧的表示?

  对于第一个问题,大部分 SOT 方法通过一个 Siamese Backbone 编码目标信息。而 VOS 方法通常聚合多帧信息与相应的 masks 送入一个 memory 编码器中,提取细粒度的目标信息。对于第二个问题,之前的方法通常采用关联的手段,可能会导致信息丢失。最近的一些工作利用 Transformer 得到更具有区分性的表示。此外,VOS 中的特征融合也被空间-时间 memory 网络采用。

统一的视觉模型

  分为统一的学习算法和统一的模型架构

Unified Learning Paradigms

  通常是一种统一的学习算法用于覆盖尽可能多的任务和模态。例如 MuST、INTERN、Unified-IO、OFA。尽管这些工作在多个任务上的表现很好,但是模态内和模态间的关系还有待探索。

Unified Model Architectures

  通常设计一种统一的框架或者模型结构用于一组密切关联的任务。例如 Mask R-CNN、Mask2Former、Pix2SeqV2、GLIP、Unicorn。而本文提出一种统一的 Prompt 引导的结构用于 10 种实例感知任务。

四、方法

  首先将现有的实例感知任务分为三类:

  • 目标检测、实例分割、MOT、MOTS、VIS,以类别名为 Prompt ,找到所有特定类别的实例。
  • REC、RES、R-VOS,以表达式作为 Prompt,定位到某个特定的目标。
  • SOT 和 VOS,使用第一帧给定的标注作为 Prompt,预测被跟踪目标的轨迹。
    大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer
      UNINEXT 由三个主要模块组成:prompt 生成、image-prompt 特征融合、目标发现和检索。

4.1 Prompt 生成

  首先一个 Prompt 模块将原始的 prompts 输入转化为统一的格式。为解决语言相关的 Prompt,使用语言编码器 BERT,表示为 EncL。具体来说。对于类别引导的任务,将当前数据集内出现的类别名作为语言表达式。以 COCO 为例,表达式可以写作:“person. bicycle. … . toothbrush”。对于所有的类别引导和表达式引导的任务,语言表达式通过 EncL,得到一个 Prompt embedding F p ∈ R L × d F_p\in\mathbb{R}^{L\times d} FpRL×d L L L 为序列长度。

  对于标注引导的任务,采用一个指代视觉编码器 Enc V ref \text{Enc}_\text{V}^\text{ref} EncVref。具体来说,首先在相关帧的指代位置处裁剪出一个 2 2 2^2 22 倍原目标区域的模板。然后将这一模板调整为固定尺寸 256 × 256 256\times256 256×256。接下来添加一个额外的通道,名为目标先验,拼接上去形成一个 4 通道的输入。目标区域先验处的值设为 1,其它为 0。然后这一模板图像与目标先验一起通过 Enc V ref \text{Enc}_\text{V}^\text{ref} EncVref,得到一个级联的特征金字塔 { C 3 , C 4 , C 5 , C 6 } \{C_3,C_4,C_5,C_6\} {C3,C4,C5,C6},相应的空间尺寸为 32 × 32 32\times32 32×32 16 × 16 16\times16 16×16 8 × 8 8\times8 8×8 4 × 4 4\times4 4×4。最后将所有特征上采样到 32 × 32 32\times32 32×32,之后相加。展平后得到最终的 Prompt embedding F p ∈ R 1024 × d F_p\in\mathbb{R}^{1024\times d} FpR1024×d

  Prompt 生成过程表示如下:
F p = { E n c L r e f ( exp ⁡ ression )                                      expression-guided E n c L r e f ( concat ( categories ) )                         category-guided m e r g e ( E n c V r e f ( [template, prior] )                 annotation-guided F_p=\begin{cases}\mathrm{Enc}_\mathrm{L}^\mathrm{ref} (\exp\text{ression})~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\text{expression-guided}\\\mathrm{Enc}_\mathrm{L}^\mathrm{ref}(\text{concat}(\text{categories}))~~~~~~~~~~~~~~~~~~~~~~~~\text{category-guided}\\\mathrm{merge}(\mathrm{Enc}_\mathrm{V}^\mathrm{ref}(\text{[template, prior]})~~~~~~~~~~~~~~~~ \text{annotation-guided}&\end{cases} Fp= EncLref(expression)                                     expression-guidedEncLref(concat(categories))                        category-guidedmerge(EncVref([template, prior])                annotation-guided

4.2 图像-Prompt 特征融合

  与 Prompt 并行,整个图像穿过另一个视觉编码器 Enc V \text{Enc}_\text{V} EncV,得到级联的视觉特征 F v F_v Fv,然后采用一个提前融合模块。具体来说。一个双向的 cross-attention(Bi-XAtt)模块用于检索不同输入的信息,然后将检索到的表示添加到原始的特征上。这一过程描述为:
F p 2 v , F v 2 p = B i − X A t t ( F v , F p ) F v ′ = F v + F p 2 v ; F p ′ = F p + F v 2 p \begin{aligned} &F_{\mathrm{p2v}},F_{\mathrm{v2p}}=\mathrm{Bi-XAtt}(F_{v},F_{p}) \\ &F_{v}^{\prime}=F_{v}+F_{\mathbf{p}2\mathbf{v}};F_{p}^{\prime}=F_{p}+F_{\mathbf{v}2\mathbf{p}} \end{aligned} Fp2v,Fv2p=BiXAtt(Fv,Fp)Fv=Fv+Fp2v;Fp=Fp+Fv2p  不同于 GLIP,其采用 6 层的视觉-语言融合层和 6 层外部 BERT 层用于特征增强,本文的提前融合模块则更有效率。

4.3 目标发现和检索

  在提出显著性的视觉和 prompt 表示后,下一个关键步骤则是将输入的特征转化为不同感知任务中的实例。UNINEXT 采用 Deformable-DETR 中的编码器-解码器架构。

  Transformer 编码器以级联的 prompt 感知的视觉特征作为输入。然后采用 Multi-scale Deformable Self-Attention 增强目标信息。此外,添加辅助的预测头用于编码器的结尾,生成 N N N 个初始的参考点作为解码器的输入。

  Transformer 解码器以增强的多尺度特征, N N N 个参考点 和 N N N 个目标 queries 作为输入。本文尝试两种 query 生成策略:静态 query,不随图像或 Prompts 而改变;基于 Prompt 的动态 queries。第一种策略很容易通过 nn.Embedding(N,d) \text{nn.Embedding(N,d)} nn.Embedding(N,d) 实现,而第二种策略则可以通过池化序列维度,增强的 Prompt 特征 F v ′ F_v^{\prime} Fv 得到,之后重复 N N N 次。实验部分表明静态策略通常执行的比动态策略好。原因可能是静态部分包含了更丰富的信息,同时拥有更好的训练稳定性。

  在解码器的结尾,采用一组预测头来得到最终的实例预测,产生目标的 boxes 和 masks。此外,引入一个 embedding 头用于辅助 MOT、MOTS、VIS 所需要的轨迹。

  接下来产生精确的目标。具体来说,给定早期融合后的 prompt embedding F p ′ F_p^{\prime} Fp,对于类别引导任务,将每个名字的 embedding 视为一个权重矩阵 W ∈ R 1 × d W\in\mathbb{R}^{1\times d} WR1×d。此外,对于表达式引导和标注引导的任务,权重矩阵 W W W 通过对聚合的 prompt embedding F p ′ F_p^{\prime} Fp,使用全局平均池化 global average pooling (GAP) 沿着序列维度得到。给出公式描述过程:
W = { F p ′ [ i ] , i ∈ { 0 , 1 , . . . , C − 1 } category 1 L ∑ i = 0 L F p ′ ( i , j ) expression/annotation W=\begin{cases}F_p'[i],i\in\{0,1,...,C-1\}&\text{category}\\\frac{1}{L}\sum_{i=0}^LF_p'(i,j)&\text{expression/annotation}\end{cases} W={Fp[i],i{0,1,...,C1}L1i=0LFp(i,j)categoryexpression/annotation
  最终,实例-Prompt 匹配得分 S S S ,表示为目标特征和转换后的权重矩阵的乘积: S = F ins W T S=F_\text{ins}W^{\text{T}} S=FinsWT,通过 Focal Loss 监督其训练。

4.4 训练和推理

训练

  整体的训练过程包含三个连续阶段:通用的感知预训练;图像级别的共同训练;视频级别的共同训练。第一阶段,预训练 UNINEXT 在大规模目标检测数据集 Objects365 上。由于 Objects365 没有 mask 标注,于是引入 BoxInst 中提出的辅助损失用于训练 mask 分支,于是损失函数为:
L s t a g e 1 = L r e t r i e v e + L b o x + L m a s k b o x i n s t \mathcal{L}_{\mathrm{stage}1}=\mathcal{L}_{\mathrm{retrieve}}+\mathcal{L}_{\mathrm{box}}+\mathcal{L}_{\mathrm{mask}}^{\mathrm{boxinst}} Lstage1=Lretrieve+Lbox+Lmaskboxinst
然后基于第一阶段的预训练权重,在图像数据集 COCO、RefCOCO、RefCOCO+、RefCOCOg 上微调 UNINEXT。使用 Dice Loss 和 Focal Loss 进行 mask 的训练:
L s t a g e 2 = L r e t r i e v e + L b o x + L m a s k \mathcal{L}_{\mathrm{stage2}}=\mathcal{L}_{\mathrm{retrieve}}+\mathcal{L}_{\mathrm{box}}+\mathcal{L}_{\mathrm{mask}} Lstage2=Lretrieve+Lbox+Lmask
  最后在视频级别的数据集上微调 UNINEXT。为防止模型遗忘之前在图像级别上学到的知识,将图像级别的数据集转化为伪视频,和其它视频数据集一起训练。总结下,第三阶段的训练数据包含:伪标签视频、SOT&VOS 数据集(GOT-10K、LaSOT、TrackingNet、Youtube-VOS),MOT&VIS 数据集(BDD100K、VIS19、OVIS),R-VOS 数据集 Ref-Youtube-VOS。同时,一个用于 SOT&VOS 任务的指代视觉编码器和一个外部的 embedding 头用于辅助优化。于是第三阶段的损失如下:
L s t a g e 3 = L r e t r i e v e + L l o o x + L m a s k + L e m b e d \mathcal{L}_{\mathrm{stage}3}=\mathcal{L}_{\mathrm{retrieve}}+\mathcal{L}_{\mathrm{loox}}+\mathcal{L}_{\mathrm{mask}}+\mathcal{L}_{\mathrm{embed}} Lstage3=Lretrieve+Lloox+Lmask+Lembed

推理

  对于类别引导的任务,UNINEXT 预测不同类别的实例并将其与之前的轨迹关联起来,这一过程是在线的方式。对于表达式引导和标注引导的任务,直接选择与给定 Prompt 最高匹配得分的目标作为最终的结果,无需后处理。

五、实验

5.1 实施细节

  尝试不同的视觉 Backbone 作为编码器,如 ResNet-50、ConvNeXt-Large、ViT-Huge。BERT 为文本编码器,其参数在第一个阶段训练而在第二个阶段冻结。Transformer 中的编码器和解码器结构有 6 层的编码器层和 6 层的解码器层。目标 queries 的数量 N = 900 N=900 N=900。优化器 AdamW,权重衰减 0.05。预训练在 Objects365 上采用 32 个 A100 GPU,而在其它阶段则采用 16 块 A100(一般的小作坊就不用尝试啦)。

5.2 在 10 个任务上的评估

目标检测和实例分割

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

REC 和 RES

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

SOT

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

VOS

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

MOT

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

MOTS

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

VIS

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

R-VOS

大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

5.3 消融和其它分析

  所有的模型均采用 ResNet-50 作为 backbone,在五个任务(目标检测、REC、VOS、R-VOS、VIS)的五个数据集 COCO、RefCOCO、Youtube-VOS、Ref-Youtube-VOS、Youtube-VIS 2019 上进行评估。结果如下表所示:
大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记,新东西,论文阅读,笔记,图像处理,人工智能,transformer

六、结论

  本文提出 UNINEXT,采用 Prompt 引导的目标发现和检索算法统一了 10 个实例感知任务,大量实验表明 UNINEXT 在 20 个数据集上,同一套模型参数达到了 SOTA 的性能。

写在后面

  附录还有一些内容,关于训练细节、可视化、损失函数啥的,这里就不过多展开了。通篇读下来,是一个以 Prompt 为主要形式的框架,新颖性可能也不算太高吧,毕竟有 SAM 和 Unified 等模型在前面开路,但是这个调参和实验的工作量应该是值得一篇顶会论文的。文章来源地址https://www.toymoban.com/news/detail-760116.html

到了这里,关于大一统模型 Universal Instance Perception as Object Discovery and Retrieval 论文阅读笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity Perception合成数据生成、标注与ML模型训练

    在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D场景编辑器 任何训练过机器学习模型的人都会告诉你,模型是从数据得到的,一般来说,更多的数据和标签会带来更好的性能。 收集数据,尤其是标记数据非常耗时,因此成

    2024年02月06日
    浏览(42)
  • 3D医学图像分割大模型 SegVol: Universal and Interactive Volumetric Medical Image Segmentation

    pub: 22 November, 2023 ArXiv [ paper] [ code] 1 体积图像分割通过准确提取器官、病变和组织等感兴趣的区域,在医学图像分析中起着至关重要的作用,在肿瘤监测、手术计划、疾病诊断和优化治疗等临床应用中有着广泛的应用。 2 公开可用的体积医学图像数据集通常由来自不同类别的

    2024年02月03日
    浏览(49)
  • 详解视觉BEV3D检测模型: Fast-BEV: A Fast and Strong Bird‘s-Eye View Perception Baseline

    本文介绍一篇视觉BEV3D检测模型: Fast-BEV ,论文收录于 NeurIPS2022 。 目前大多数现有的BEV感知方案要么需要相当多的资源来执行车端推理,要么性能不高。本文提出了一种简单而有效的框架,称为 Fast-BEV ,它能够在车载芯片上执行更快的BEV感知。为了实现这一目标,本文通过试

    2024年02月02日
    浏览(44)
  • Language Models as Knowledge Embeddings:语言模型用作知识嵌入 IJCAI 2022

    1)基于结构的知识嵌入 进一步分成基于翻译的模型和基于语义匹配的模型 基于翻译的模型采用基于距离的评分函数,TransE把实体和关系嵌入到一个维度为d的共享向量空间中;TransH,TransR,RotatE. 语义匹配模型采用基于相似性的评分函数,RESCAL,DistMult,CoKE. 2)基于描述的知识嵌入

    2024年02月07日
    浏览(44)
  • 【Agent论文】大型语言模型智能评估新尺度:AGENTBENCH(Agentbench: Evaluating llms as agents)

    论文题目:Agentbench: Evaluating llms as agents 论文链接:https://arxiv.org/pdf/2308.03688 目录: 摘要 总览 方法 代码环境中的智能Agent评估 操作系统环境:OS 数据库环境:DB 知识图谱环境:KG 游戏环境中的智能Agent评估 数字卡牌游戏:策略与决策的试金石 横向思维谜题:非传统思维的展

    2024年01月22日
    浏览(37)
  • Avellaneda & Stoikov’s market-making strategy AS模型的通俗理解篇(一)

    AS是经典的做市模型,最主要就是为了控制库存风险。一般来说在震荡行情中,很适合做市,特别是波动率不高情况下,我们通过AS的经典论文得到2个最关键公式,下面来解读一下这个公式的含义,如何在hummingbot 策略中如何设置这些参数。 本文大部分思路来自英文版: A c

    2023年04月09日
    浏览(28)
  • AIGC杀入社交,微信一统江湖的时代要变天了?

    在沉寂已久后,不信邪的社交江湖又出现了新变化。一些企业开始摩拳擦掌,希冀用AIGC的方式杀入社交市场。在面对微信的强大面前,他们打算怎么做?会有人成功吗?   @数科星球 原创 作者丨科科 编辑丨十里香 不得不说,在近几年中,社交从业者们已许久没有在创新圈中

    2024年02月11日
    浏览(31)
  • MaaS(Model as a Service)是一种云计算模式,它提供了一种将机器学习模型作为服务的方式

    MaaS(Model as a Service)是一种云计算模式,它提供了一种将机器学习模型作为服务的方式。MaaS允许用户在不需要拥有自己的硬件设备或专业技能的情况下,使用高质量的机器学习算法和模型。MaaS已经成为了人工智能和机器学习领域的热门趋势之一,对多个行业产生广泛的影响

    2024年04月17日
    浏览(44)
  • 我设计了个【方案】:比redis好10倍的kv库【一统kv】

    我设计的redis9.0方案:redis自带中间件 基于ssd磁盘,此我设计了比redis更好的缓存方案。此方案:没有缓存击穿问题。没有缓存雪崩问题。没有缓存污染问题。没有热key问题。 不需要snap和aof。支持任何sql库,sql库不需要带有任何分布式功能。  基于ssd磁盘,此我设计了比red

    2024年02月02日
    浏览(27)
  • 一统天下 flutter - 插件: flutter 使用 android 原生控件,并做数据通信

    源码 https://github.com/webabcd/flutter_demo 作者 webabcd 示例如下: libpluginplugin2.dart androidappsrcmainkotlincomexampleflutter_demoMainActivity.kt androidappsrcmainkotlincomexampleflutter_demoMyFlutterPlugin2.kt androidappsrcmainkotlincomexampleflutter_demoMyView.kt androidappsrcmainreslayoutview_my.xml 源码 http

    2024年02月03日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包