默认的HuggingFace模型

news2025/2/28 3:35:47

ca7842a2919aaf62ad2ed51b6525d38a.png

介绍

在本文中,我将探讨表征学习中常见的一种做法——使用预训练神经网络的冻结状态作为学习特征提取器。

具体而言,我感兴趣的是研究使用这些提取的神经网络特征训练的简单模型的性能与使用迁移学习初始化的微调神经网络的性能的比较。预期受众主要是数据科学家,以及对计算机视觉和机器学习感兴趣的任何人。

稍微跳过一点......下面的结果表明,使用提取的神经网络特征训练的 scikit-learn 模型的表现几乎与使用相同的预训练权重微调的完整网络相当(平衡准确度下降了 3% 至 6%)。

背景

如今,微软等公司每年发布数千个预训练神经网络模型。这些模型越来越强大和易于使用。

由于有这么多的模型检查点开源,神经网络作为人工智能/机器学习中的核心关注点的演变并不令人意外。想想人们都听说过能够将文本提示转换成图像/艺术品的 DALL-E-2 和 Stable Diffusion - 神经网络。

据报道,Stable Diffusion 已经被超过 1000 万个用户下载。许多人不知道的是,这些技术今天之所以存在很大程度上是因为统计学子领域表征学习的进步。

“2020 年代看起来是表征学习在机器学习中实现其承诺的时代。使用在特定域(有监督或无监督)上训练的模型,我们可以使用它们的后期激活在处理输入时作为其输入的表征。

表征可以以各种方式使用,最常见的是直接用作下游模型的输入,或用作共同训练具有多种模型类型的共享潜在空间的目标(文本和视觉,GNN 和文本等)。”—Kyle Kranen[1]

让我们来检验一下这些说法......

数据集详情

下面使用的图像数据集源自2013/2014年的Chesapeake Conservancy土地覆盖项目[2]。

它由国家农业图像计划(NAIP)卫星图像组成,以1米平方分辨率提供4个信息通道(红、绿、蓝和近红外)。最初的地理空间数据跨越6个州,总面积达100,000平方英里:弗吉尼亚州、西弗吉尼亚州、马里兰州、特拉华州、宾夕法尼亚州和纽约州。

为了获得n = 15,809个唯一的大小为128 x 128像素的补丁和相同数量的土地覆盖标签,它首先被子采样。检查示例补丁(参见图1),1米平方分辨率似乎相当细致,因为图像中的结构和物体可以以相当高的清晰度解释。

注:原始的Chesapeake Conservancy土地覆盖数据集包括标签掩码,旨在进行分割而不是分类。为了改变这一点,我只保存了出现单一类别且在采样地理空间数据时至少出现85%频率的补丁。

这里实验使用的5个土地覆盖类别定义如下:

  • 水域:包括池塘、河流和湖泊等开放水域

  • 树冠和灌木:包括树木和灌木等木本植物

  • 低植被:高度小于2米的植物材料,包括草坪

  • 贫瘠:不生长植被的天然土壤区域

  • 不透水表面:人造表面

经过检查,数据集似乎具有许多有趣的特征,包括季节变化(例如叶片)、噪声和跨6个州的分布偏移。少量的“自然”噪声有助于使这个有些简化的分类任务变得更加困难,这是有益的,因为我们不希望监督任务过于轻松。

使用美国各州作为划分机制,生成了训练集、验证集和测试集。测试集选取来自宾夕法尼亚州的补丁(n=2,586,占数据的16.4%),验证集选取来自特拉华州的补丁(n=2,088,占数据的13.2%),其余则用于训练集(n=11,135,占数据的70.4%)。

总的来说,该数据集存在显著的类别不平衡问题:荒地(49/15,809)和不透水表面(124/15,809)的表示不足,而树冠和灌木(9,514/15,809)的表示则超过了预期。相比之下,低植被(3,672/15,809)和水(2,450/15,809)的表示则更加平衡。

由于标签不平衡,我们在下面的实验中使用平衡准确度。该指标将每个类别的单独准确度的平均值作为统计值,因此无论类别大小如何,每个类别都被赋予相同的权重。

see: torchgeo.datasets

学习特征

通常,学习特征可以定义为源自黑匣子算法的特征。通过提取图像表示的学习特征,你通常会信任计算机视觉社区中的其他团队,他们在首次训练黑匣子时对算法进行了优化。

例如,可以使用诸如keras、pytorch和transformers等包从经过大型基准数据集(如ImageNet)进行预训练的神经网络中提取学习特征。

学习特征通常是下游任务的出色表示,无论是无监督还是有监督任务。假设做出的假设是,模型的权重以稳健的方式进行了预训练。幸运的是,你可以信任Google / Microsoft / Facebook的这一点。

为了提供一些背景,当原始图像被输入到神经网络中时,它经历了几个连续的转换层,其中每个隐藏状态层从原始图像中提取新的信息。在将图像输入到网络后,可以直接提取隐藏状态或嵌入作为特征。通常惯例是使用最后一个隐藏状态嵌入作为提取的特征,即前面的有监督任务头之前的层。

在这个项目中,我们将研究两个预训练模型:Microsoft的双向编码图像变换器(BEiT)[3]和Facebook的ConvNext模型[4]。

BEiT-base和ConvNext-base是Hugging Face上用于图像分类的两个最流行的检查点,它们在初步测试中表现良好,胜过其他选项。由于提取的隐藏状态通常比1 x n的维数要高,常见做法是沿较小的维度取平均值,以得到每个图像的1 x n嵌入。

下面,我们从基础BEiT中得到了1 x 768大小的嵌入,从基础ConvNext中得到了1 x 1024维的嵌入。这些嵌入被任意调整为矩形形状以进行可视化,从而揭示出一些不同的模式。

0913beb9420a8e087d3b1e00c45bb27a.png

图2展示了数据集中四个随机示例的两个学习特征表示。顶部一行对应于BEiT Vision Transformer嵌入,底部一行对应于ConvNext模型嵌入。四个补丁来自Water(左)、Tree Canopy和Shrubs(左中)、Low Vegetation(右中)和Impervious Surfaces(右)。请注意,这些嵌入已经从原始的1 x n嵌入中调整大小,以便将它们可视化为矩形补丁。

接下来,我们将查看数据在学习特征空间中的可视化呈现方式。为此,我们将对n个图像嵌入进行PCA,以将它们转换为2D空间。然后将它们与类标签一起作为颜色绘制出来。

dff8899865713dc559fcd0b3a81d98c2.png 84c378ad2285071ad7e4d96666184cfc.png
see: transformers.BeitModel/ConvNextModel

建模

如果你去 Kaggle 竞赛的笔记本,你会发现在图像分类中,使用预训练神经网络进行迁移学习和微调是目前最常见的做法。

在这种情况下,首先将权重加载到网络中(迁移学习),然后在新的感兴趣数据集上进行更新(微调)。后一步通常在几个epoch 内运行,并采用较小的学习权重,以便不偏离原始权重太远。

然而,与使用相同的模型作为特征提取器相比,迁移学习和微调过程通常需要更多的时间和计算。

下面的模型的前半部分是使用学习特征和 scikit-learn 模型进行训练的。我使用以下软件包来实现完整的流程:从特征提取(transformers)到模型训练(sklearn)到超参数优化(optuna)。

对于超参数优化,我在 10 个随机试验中搜索了各种逻辑回归器和前馈神经网络 (FFNN),结果显示具有维度为 175-200 的一个隐状态的 FFNN 通常是最佳选择。

转移学习和微调的神经网络随后被训练以与这些学习特征模型进行比较,这构成了模型的第二部分。我使用transformers包来微调BEiT和ConvNext基础模型,这些模型与上面的模型完全相同。为了更好地进行比较,使用了相同的预训练权重。

请参阅Hugging Face的优秀的图像分类教程:https://colab.research.google.com/github/nateraw/huggingface-hub-examples/blob/main/vit_image_classification_explained.ipynb

see: optuna, sklearn, transformers

模型评估

为了评估模型,我选择在保留的测试集上检查平衡准确性、各个类别的准确性和混淆矩阵。混淆矩阵显示模型犯错误的地方,有助于解释。每一行代表存在于给定类别中的已知样本(实际值),而每一列代表模型分类出的样本(预测值)。每行总和等于实际值的数量,每列总和等于预测值的数量。

模型1,BEiT嵌入+sklearn FFNN:

平衡准确率……79.6%

+============+=======+========+============+========+=========+
|            | Water | Trees  | Vegetation | Barren | Manmade |
+============+=======+========+============+========+=========+
| Water      |    64 |      0 |          2 |      0 |       0 |
+------------+-------+--------+------------+--------+---------+
| Trees      |     1 |   1987 |          3 |      1 |       0 |
+------------+-------+--------+------------+--------+---------+
| Vegetation |     1 |      3 |        457 |      0 |       0 |
+------------+-------+--------+------------+--------+---------+
| Barren     |     2 |      0 |         14 |      5 |       3 |
+------------+-------+--------+------------+--------+---------+
| Manmade    |     0 |      0 |          6 |      2 |      35 |
+------------+-------+--------+------------+--------+---------+

各类别准确率 … 水:97.0%,树冠和树木:99.7%,低植被:99.1%,贫瘠地区:20.8%,不透水表面:81.4%。

Beit embeddings 模型总体上表现第三。


模型2,ConvNext embeddings + sklearn FFNN:

平衡精度… 78.1%

+============+=======+========+============+========+=========+
|            | Water | Trees  | Vegetation | Barren | Manmade |
+============+=======+========+============+========+=========+
| Water      |    62 |      0 |          4 |      0 |       0 |
+------------+-------+--------+------------+--------+---------+
| Trees      |     2 |   1982 |          6 |      2 |       0 |
+------------+-------+--------+------------+--------+---------+
| Vegetation |     1 |      3 |        457 |      0 |       0 |
+------------+-------+--------+------------+--------+---------+
| Barren     |     1 |      1 |         17 |      4 |       1 |
+------------+-------+--------+------------+--------+---------+
| Manmade    |     0 |      0 |          8 |      0 |      35 |
+------------+-------+--------+------------+--------+---------+

分类精度... 水域:93.9%,树冠和树木:99.5%,低植被:99.1%,裸露地面:16.6%,不透水表面:81.4%。

ConvNext嵌入模型总体表现最差


模型3,经过微调的BEiT神经网络:

平衡精度... 82.9%

+============+=======+========+============+========+=========+
|            | Water | Trees  | Vegetation | Barren | Manmade |
+============+=======+========+============+========+=========+
| Water      |    64 |      0 |          2 |      0 |       0 |
+------------+-------+--------+------------+--------+---------+
| Trees      |     0 |   1986 |          5 |      1 |       0 |
+------------+-------+--------+------------+--------+---------+
| Vegetation |     2 |      3 |        455 |      0 |       1 |
+------------+-------+--------+------------+--------+---------+
| Barren     |     0 |      0 |         13 |      9 |       2 |
+------------+-------+--------+------------+--------+---------+
| Manmade    |     1 |      0 |          6 |      1 |      35 |
+------------+-------+--------+------------+--------+---------+

分类精度... 水域:97.0%,树冠和树木:99.7%,低植被:98.7%,裸露地面:37.5%,不透水表面:81.4%。

经过微调的BEiT模型在总体表现中排名第二


模型4,经过微调的ConvNext神经网络:

平衡精度... 84.4%

+============+=======+========+============+========+=========+
|            | Water | Trees  | Vegetation | Barren | Manmade |
+============+=======+========+============+========+=========+
| Water      |    65 |      0 |          1 |      0 |       0 |
+------------+-------+--------+------------+--------+---------+
| Trees      |     0 |   1978 |         12 |      2 |       0 |
+------------+-------+--------+------------+--------+---------+
| Vegetation |     1 |      2 |        457 |      0 |       1 |
+------------+-------+--------+------------+--------+---------+
| Barren     |     0 |      0 |         13 |     11 |       0 |
+------------+-------+--------+------------+--------+---------+
| Manmade    |     0 |      0 |          7 |      2 |      34 |
+------------+-------+--------+------------+--------+---------+

分类精度... 水域:98.5%,树冠和树木:99.3%,低植被:99.1%,裸露地面:45.8%,不透水表面:79.1%。

经过微调的ConvNext模型在总体表现中表现最佳


模型过程中的改进/限制:

模型流程可以在多个方面得到改进,包括接下来讨论的这些方面。这些模型在裸露地面的分类上表现最差,因此如果能进行单一更改,我会首先添加更多这种类型的分类。

目前,这些模型实际上更像4分类器,因为裸露地面的性能非常差。另一种改进是在超参数优化中使用交叉验证;但是,交叉验证需要更长的运行时间,对于这个实验来说可能有点过度。

输出模型的泛化局限性包括在其他类别类型、不同分辨率和其他条件(新对象、新结构、新类别等)的图像上表现更差。我已经将经过微调的ConvNext和BEiT推送到Hugging Face进行托管推理,在其中可以通过加载图像和/或运行每个模型中配置的默认值来测试模型的泛化性能。

学习到的知识

  1. 掌握Python包的知识是至关重要的。请参见本文的代码块,其中列出了使用的各种库。

  2. 可视化图像特征的变化可以更深入地理解数据集中的信号。

  3. 预训练的嵌入配合较简单的模型可以表现得几乎与微调的神经网络一样好。

  4. Hugging Face不仅在自然语言处理方面表现出色,也在计算机视觉方面表现出色!

结论:

这些结果和学习对于当今计算机视觉领域的神经网络有何启示?让我们回顾一下。

2017年,特斯拉自动驾驶部门前主管Andrej Karpath在一篇著名的博客文章中谈到了从旧式工程到深度学习的转变,他称之为“软件2.0”[5]。

从这个观点来看,神经网络不是“机器学习工具箱中的另一个工具”。相反,它们代表了我们可以开发软件的方式的转变。

感谢阅读!

参考

[1] K. Kranen (2022), The 2020s are looking like the age of representation learning’s promise being realized in ML, LinkedIn.

[2] Chesapeake Bay Program Office (2022). One-meter Resolution Land Cover Dataset for the Chesapeake Bay Watershed, 2017/18. Developed by the University of Vermont Spatial Analysis Lab, Chesapeake Conservancy, and U.S. Geological Survey. [Nov 15, 2022], [URL],

  • Dataset License: The dataset used herein is publicly available to all without restriction.

[3] Bao, H., Dong, L., & Wei, F. (2021). BEiT: BERT Pre-Training of Image Transformers. CoRR, abs/2106.08254. https://arxiv.org/abs/2106.08254

[4] Liu, Z., Mao, H., Wu, C.-Y., Feichtenhofer, C., Darrell, T., & Xie, S. (2022). A ConvNet for the 2020s. CoRR, abs/2201.03545. https://arxiv.org/abs/2201.03545

[5] A. Karpath (2017), Software 2.0, Medium.

[6] Nanni, L., Ghidoni, S., & Brahnam, S. (2017). Handcrafted vs. non-handcrafted features for computer vision classification. Pattern Recognition, 71, 158–172. doi:10.1016/j.patcog.2017.05.025

附录

在计算机视觉中,非学习特征可以被认为是从图像中手工制作的特征 [6]。针对给定问题的最佳非学习特征通常依赖于了解数据集中不同信号的位置。在提取非学习特征之前,让我们先在 RGB 空间中绘制一些随机图像块。

29a4661acfc79fa1d13c4805119ef7f4.png

我们将首先探讨主成分分析(PCA)作为第一个非学习特征。PCA是一种降维技术,我们在这里使用它将128 x 128 x 4图像转换为1 x n向量。PCA转换数据集的大小n是用户指定的,并且可以是小于数据的原始维度的任何数字。

在算法的内部,使用特征向量(数据中的扩展方向)和特征值(方向的相对重要性)来找到保留原始图像中最大方差的一组基础。计算完成后,PCA可以用于将新图像转换为低维空间和/或将图像可视化为二维或三维(见图3和图4)。

在下面的示例中,当n = 3000时,PCA结果保留了95%的维数并保存了几乎所有来自原始图像的信号。为了可视化PCA,我逆转了操作并将示例绘制为128 x 128像素的图像。

329c72b86810eecaeaad37dbfb63f0ef.png

让我们再看一下另一个老派的特征:梯度直方图(HOG)。为了计算HOG,首先在图像上计算梯度(变化强度)和方向。然后,将图像分割成若干个单元格,在其中方向被分层到直方图柱中。然后,在单元格中的每个像素处,我们查找其方向,找到直方图中相应的柱,并将给定值添加到其中。然后,这个过程在图像的单元格上重复执行。完成!

看看HOG在这里的酷炫表现:

7ff9a93cf6845a4f174b4405f6719482.png

虽然这些手工特征作为首次对数据集进行可视化的工具很有趣,但是它们并不适合我们的监督建模目的。在这里,最初的测试表明,使用HOG和PCA特征构建的模型相对于下面探讨的学习特征训练的模型,其平衡准确率显著下降(PCA下降了35%,HOG下降了50%)。

see: skimage.feature.hog, sklearn.decomposition.PCA

☆ END ☆

如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。

扫描二维码添加小编↓

33c90b2d3037cc8d249756999fe19dbf.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一款功能强大的多合一聚合支付Discuz插件,可直接替换DiscuzX 3.5自带的支付接口

源码介绍: Discuz论坛多合一聚合支付接口插件,该插件直接替换了自带的支付接口功能, 增强了支付的扩展性,自带支持支付宝、微信、QQ钱包官方支付, 以及彩虹易支付、我爱支付、虎皮椒等支付通道,并且可以…

专家共话:存力一体成“东数西算”全场景利器

从2022年2月17日正式全面启动至今,“东数西算”工程已经度过了一周年。一年多的实践探索证明,激活数据要素,推动算力成为核心生产力,离不开“存力先行”。其中,东西部存力一体化,是支撑“东数西算”全场景应…

「读书感悟系列」友者生存:与人为善的进化力量(我会解释人类善良和暴力的进化原因)...

作者 | gongyouliu 编辑 | gongyouliu ‍ 最近花了不长的时间读完了这本『友者生存:与人为善的进化力量』,由于我对进化生物学非常感兴趣,又有4年的生物学学习背景,读起来还是非常容易的,这本书算是人类进化学的科普读…

tcp cubic 与随机丢包

前面提到过一个 AIMD 的修正方法,“二次机会 MD”:首次丢包只 MD 收缩一个相对较小的比例,再次丢包时再继续收缩,直到 beta * Wmax。 效果如下图: 大意是在检测到丢包时,先 MD 一个相对小的缩放比例&…

DS215KLDCG1AZZ03A如何编写温度比例的代码?

DS215KLDCG1AZZ03A如何编写温度比例的代码&#xff1f; 可编程逻辑控制&#xff0c;简称PLC&#xff0c;由美国机械工程师迪克莫利于1年1968月<>日首次设计。PLC最初是为了减少汽车行业员工的工作量而开发的&#xff0c;从那时起&#xff0c;它们已被用于所有其他恶劣环境…

常用linux多场景查找文件的方法及对比

波哥整理了在linux中根据文件名称查文件&#xff0c;根据文件内容查找文件&#xff0c;根据进程号查找文件的方法及命令详细解释。 一、find命令 find命令可以在指定目录下查找文件&#xff0c;其语法如下&#xff1a; find <目录> <选项> <匹配模式> 选项和…

vue-4:注册组件,组件传参,特殊属性ref $parent $root,透传,内置组件,自定义指令,mixins混入

注册组件&#xff0c;使用组件&#xff08;项目中都是写component中&#xff09; 为什么用组件&#xff1a;组件可以复用&#xff0c;每一个组件都是独立的&#xff0c;模板&#xff0c;数据&#xff0c;css样式互不影响 全局注册组件component&#xff1a;请勿滥用全局组件in…

一个打通基于XML管理Bean

目录 准备工作 添加依赖 引入配置文件 获取bean ①方式一&#xff1a;根据id获取 ②方式二&#xff1a;根据类型获取 ③方式三&#xff1a;根据id和类型 ④注意的地方 ⑤扩展知识 依赖注入之setter注入 ①创建学生类Student ②配置bean时为属性赋值 ③测试 依赖注…

Powerlink协议在嵌入式linux上的移植和主从站通信(电脑和linux板通信实验)

使用最新的openPOWERLINK 2.7.2源码&#xff0c;业余时间搞定了Powerlink协议在嵌入式linux上的移植和测试&#xff0c;并进行了下电脑和linux开发板之间的通信实验。添加了一个节点配置&#xff0c;跑通了源码中提供的主站和从站的两个demo。这里总结下移植过程分享给有需要的…

飞桨EasyDL月刊:4月功能全新升级,模型训练步骤缩短63%

亲爱的开发者&#xff1a; 近来以生成式 AI、多模态预训练大模型为代表的技术变革正席卷全球&#xff0c;与此相关的智能化工具和平台陆续发布。飞桨 EasyDL 和 BML 位于文心全景图的工具与平台层&#xff0c;提供大模型开发套件及多种建模方式&#xff0c;全面支持基于大模型能…

访客接入-唯一客服系统文档中心

网站可以通过多种方式接入客服系统&#xff0c;直接跳转链接&#xff0c;或者在页面右下角弹窗 访客链接 可以在自己的网站接入&#xff0c;访客独立链接&#xff0c;入口形式可以完全自己写&#xff0c;只是跳转链接。 例如下面的访客链接https://gofly.v1kf.com/chatIndex?k…

Angular开发之——安装Angular CLI并初始化项目(02)

一 概述 Angular CLI介绍及开发环境准备安装Angular CLI开发工具使用Angular CLI初始化Angular项目简单体验Angular 二 Angular CLI介绍及开发环境准备 2.1 Angular CLI介绍 目前&#xff0c;无论你使用什么前端框架&#xff0c;都必须要使用到各种NodeJS工具&#xff0c;An…

Leetcode 剑指 Offer II 026. 重排链表

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&a…

day32_HTML

今日内容 零、 复习昨日 一、二阶段介绍 二、HTML 零、 复习昨日 晨考 一、二阶段介绍 第一阶段: JavaSE, 对java基本语法,面向对象知识,和编程有了基本了解 第二阶段: javaweb阶段 开发入门 前端 网页(用户直接交互界面)html 网页css 美化js 动起来 - jquerybootstrap 服务器 …

C++三部曲|C++内存管理全景指南

导语 深入理解C内存管理&#xff0c;一文了解所有C内存问题&#xff0c;万字长文&#xff0c;建议收藏 随着人工智能&#xff0c;云计算等技术的迅猛发展&#xff0c;让Python&#xff0c;go等新兴语言流行了起来&#xff0c;很多人以为C可能已经过时了&#xff0c;确实&…

《vector的模拟实现》

本文主要介绍vector的常见接口的模拟实现 文章目录 vector中常用类成员二、vector的底层结构三、vector的默认成员函数构造函数1—空构造构造函数2—迭代器区间构造拷贝构造函数赋值运算符重载析构函数 四、迭代器相关的函数迭代器的分类迭代器对应的STL容器分类迭代器失效问题…

软件系统架构对测试的影响分析

我们知道软件系统的架构会对系统测试产生影响&#xff0c;而到底会产生哪些影响呢?   首先看一下软件系统架构到底是如何定义的?   软件系统架构就是组成系统的主要重要模块、过程、数据的管理和分配、用户界面的种类和风格&#xff0c;以及系统运行平台等。其中包括它们…

在MacBook上编译v3s内核出错

刚开始的时候&#xff0c;我捣鼓esp8266「现在我也还有8266的开发板&#xff0c;后面也还是会推荐」 后面&#xff0c;我推荐了esp32&#xff0c;买了esp32开发板&#xff0c;可以做uac相关的实验&#xff0c;也可以搞图形界面了。 现在&#xff0c;终于到捣鼓Linux了 PS&#…

完整的医学影像PACS系统全套源码(带三维重建)

一套完整的医学影像存储与传输系统源码&#xff0c;PACS部分主要提供医学影像获取、影像信息网络传递、大容量数据存储、影像显示和处理、影像打印等功能。 RIS主要提供分诊登记、叫号、检查报告生成和打印等功能。本套影像存储与传输系统将二者进行无缝对接&#xff0c;提供了…

Navicat Premium 15安装注教程

Navicat Premium 15安装 准备工作 下载好安装包navicat150_premium_cs_x64和安装完成Navicat Premium 15 链接&#xff1a;https://pan.baidu.com/s/1TJs3pjAXJXhu7-13DJLzpg 提取码&#xff1a;hunk 安装Navicat Premium 15 无脑操作&#xff0c;下一步下一步就行了&…