Densely Connected Convolutional Networks(2018.1)


文章目录

  • Abstract
  • 1. Introduction
    • 提出问题
    • 以前的解决方法
    • 我们的方法
    • 效果
  • 2. Related Work
  • 3. DenseNets
    • ResNets.
    • Dense connectivity.
    • Composite function.
    • Pooling layers.
    • Growth rate.
    • Bottleneck layers.
    • Compression.
    • Implementation Details.
  • 4. Experiments
  • 5. Discussion
    • Model compactness.
    • 隐性深度监督。
    • 随机与确定性联系
    • Feature Reuse.
  • 6. Conclusion

原文
源码

Abstract

最近的研究表明,如果卷积网络在靠近输入和接近输出的层之间包含更短的连接,那么卷积网络可以更深入、更准确、更有效地训练。在本文中,我们接受了这一观察结果,并引入了密集卷积网络(DenseNet),它以前馈方式将每一层连接到其他每一层。传统的L层卷积网络有L个连接——每层和后续层之间有一个连接——而我们的网络有L(L+1) 2个直接连接
对于每一层,使用所有前一层的特征映射作为输入,并使用其自身的特征映射作为所有后续层的输入。DenseNets有几个引人注目的优点:它们缓解了梯度消失问题,加强了特征传播,鼓励特征重用,并大大减少了参数的数量。我们在四个高度竞争的目标识别基准任务(CIFAR-10、CIFAR-100、SVHN和ImageNet)上评估了我们提出的架构。DenseNets在大多数情况下获得了最先进的显著改进,同时需要更少的计算来实现高性能

1. Introduction

先简要介绍了下此前的工作,从LeNet到ResNet

提出问题

随着cnn变得越来越深,一个新的研究问题出现了:当关于输入或梯度的信息通过许多层时,当它到达网络的末端(或开始)时,它可能会消失并“洗出”

以前的解决方法

许多最近的出版物解决了这个或相关的问题。ResNets[11]和公路网[34]通过身份连接将信号从一层传递到下一层随机深度[13]通过在训练过程中随机丢弃层来缩短ResNets,以获得更好的信息和梯度流。FractalNets[17]反复组合多个具有不同数量卷积块的并行层序列,以获得较大的标称深度,同时在网络中保持许多短路径。尽管这些不同的方法在网络拓扑结构和训练过程上各不相同,但它们都有一个关键特征:它们都创建了从早期层到后期层的短路径

我们的方法

在本文中,我们提出了一种架构,将这种见解提炼成一种简单的连接模式:为了确保网络中各层之间的最大信息流,我们将所有层(具有匹配的特征映射大小)直接相互连接为了保持前馈性质,每一层从所有前一层获得额外的输入,并将自己的特征映射传递给所有后续层。图1图解地说明了这种布局。关键的是,与ResNets相比,我们从未在将特征传递到一个层之前通过求和来组合特征;相反,我们通过连接它们来组合特征。因此,第L层有L个输入,由前面所有卷积块的特征映射组成。它自己的特征映射被传递到所有随后的层。这在L层网络中引入了L(L+1) / 2个连接,而不是像在传统架构中那样只有L个连接。由于其密集的连接模式,我们将我们的方法称为密集卷积网络(DenseNet)。
这种密集连接模式的一个可能反直觉的影响是,它比传统的卷积网络需要更少的参数,因为不需要重新学习冗余的特征映射。传统的前馈体系结构可以被视为具有状态的算法,这种状态在层与层之间传递。每一层从前一层读取状态,并写入后继层。它改变了状态,但也传递了需要保存的信息。ResNets[11]通过加性恒等变换使这种信息保存显式地实现ResNets的最新变化[13]表明,许多层的贡献非常小,实际上可以在训练期间随机丢弃。这使得ResNets的状态类似于(展开的)递归神经网络[21],但ResNets的参数数量要大得多,因为每层都有自己的权重。我们提出的DenseNet架构明确区分了添加到网络中的信息和保留的信息DenseNet层非常窄(例如,每层12个过滤器),只向网络的“集体知识”中添加一小部分特征图,并保持剩余的特征图不变,最终分类器根据网络中的所有特征图做出决策。

除了更好的参数效率外,DenseNets的一大优势是其改进了整个网络的信息流和梯度,这使得它们易于训练每一层都可以直接访问损失函数和原始输入信号的梯度,从而实现隐式深度监督[20]。这有助于训练更深层次的网络架构。此外,我们还观察到密集连接具有正则化效应,这减少了训练集规模较小的任务的过拟合

效果

我们在四个高度竞争的基准数据集(CIFAR-10、CIFAR-100、SVHN和ImageNet)上评估DenseNets。我们的模型往往只需要更少的参数就能获得与现有的算法相当的精度。此外,我们在大多数基准任务上的表现明显优于当前最先进的结果

2. Related Work

公路网络[34]是第一批提供有效训练超过100层的端到端网络的架构之一。使用旁路路径和门控单元,具有数百层的高速公路网可以毫无困难地进行优化。旁路路径被认为是简化这些深度网络训练的关键因素。这一点在ResNets中得到了进一步的支持[11],其中纯实体映射被用作绕过路径。ResNets在许多具有挑战性的图像识别、定位和检测任务上取得了令人印象深刻的、破纪录的性能,例如ImageNet和COCO对象检测[11]。最近,随机深度被提出作为一种成功训练1202层ResNet的方法[13]。随机深度改进通过在训练过程中随机丢层来证明深度残差网络的训练。这表明并不是所有的层都需要,并强调在深度(残差)网络中存在大量的冗余

一种使网络更深的正交方法(例如,借助跳跃连接)是增加网络宽度GoogLeNet[36,37]使用一个“Inception模块”来连接由不同大小的过滤器生成的特征图。在[38]中,提出了一种具有广泛广义残差块的ResNets变体。事实上,只要深度足够,简单地增加ResNets每层的过滤器数量就可以提高其性能[42]。FractalNets还使用广泛的网络结构在多个数据集上取得了具有竞争力的结果[17]。

DenseNets不是从极深或极广的架构中提取表征能力,而是通过特征重用来挖掘网络的潜力产生易于训练和高度参数效率的浓缩模型。将不同层学习到的特征图连接起来,增加了后续层输入的变化,提高了效率。这构成了DenseNets和ResNets之间的主要区别。与同样连接来自不同层的特征的Inception网络[36,37]相比,DenseNets更简单、更高效

还有其他值得注意的网络架构创新产生了竞争性结果。网络中的网络(Network in Network, NIN)[22]结构将微多层感知器纳入卷积层的过滤器中,以提取更复杂的特征。在深度监督网络(DSN)[20]中,内部层由辅助分类器直接监督,这可以增强前一层接收到的梯度阶梯网络[27,25]将横向连接引入自动编码器,在半监督学习任务中产生了令人印象深刻的准确性。文献[39]提出了深度融合网络(deep - fused Nets, DFNs),通过结合不同基础网络的中间层来改善信息流。通过最小化重建损失的路径增强网络也被证明可以改善图像分类模型

3. DenseNets

考虑通过卷积网络传递的单个图像x0。网络由L层组成,每一层实现一个非线性变换H l(·),l是索引层。H l(·)可以是诸如批归一化(Batch Normalization, BN)[14]、整流线性单元(rectified linear units, ReLU)[6]、池化(Pooling)[19]或卷积(Convolu, Conv)等操作的复合函数。我们表示l这一层是x l.

ResNets.

传统的卷积前馈网络将第l层的输出作为输入连接到(l + 1)层[16],这就产生了如下的层转换:x l= Hl (x l−1)。ResNets[11]添加了一个跳过连接,通过恒等函数绕过非线性转换:
ResNets的一个优点是,梯度可以直接通过恒等函数从后面的层流向前面的层。然而,恒等函数和H l以求和的方式组合,这可能会阻碍信息在网络中的流动。

Dense connectivity.

为了进一步改善层之间的信息流,我们提出了一种不同的连接模式:我们引入从任何层到所有后续层的直接连接。图1图解地说明了结果DenseNet的布局。因此,l这一层接收所有前一层的特征映射,x 0,…,x l−1,作为输入:
其中[x 0,x 1,…],x l−1]表示第0,…,l−1层生成的特征图的拼接。
由于其密集的连通性,我们将这种网络架构称为密集卷积网络(DenseNet)。为了便于实现,我们将H l的多个输入连接起来。将eq.(2)中的(·)分解为单个张量。

Composite function.

受[12]的影响,我们定义H l(·)为三个连续操作的复合函数:批归一化(batch normalization, BN)[14],然后是整流线性单元(rectified linear unit, ReLU)[6]和3 × 3卷积(Conv)。

Pooling layers.

当特征图的大小发生变化时,Eq.(2)中使用的连接操作是不可行的。然而,卷积网络的一个重要部分是下采样层,它改变了特征图的大小。为了便于我们架构中的下采样,我们将网络划分为多个紧密连接的密集块;见Figure2。我们将块之间的层称为过渡层,它们进行卷积和池化。我们实验中使用的过渡层包括一个批处理归一化层和一个1×1卷积层,然后是一个2×2平均池化层

一个有三个dense块的深致密网。两个相邻块之间的层称为过渡层,(包括一个批处理归一化层和一个1×1卷积层,然后是一个2×2平均池化层)通过卷积和池化来改变特征图的大小

Growth rate.

如果每个函数H l产生k个特征映射,则第l层有k 0 + k x (l−1)个输入特征映射,其中k 0为输入层的通道数(每个通道对应着一个特征映射)。DenseNet和现有网络架构的一个重要区别是,DenseNet可以有非常窄的层,例如,k = 12。我们把超参数k称为网络的增长率。
我们在第4节中表明,相对较小的增长率足以在我们测试的数据集上获得最先进的结果。对此的一种解释是,每一层都可以访问其块中的所有前面的特征图,因此可以访问网络的“集体知识”。可以将特征映射视为网络的全局状态。每一层向这个状态添加k个自己的特征映射。增长率决定了每一层对全局状态贡献多少新信息。全局状态一旦写入,就可以从网络中的任何地方访问,并且与传统网络体系结构不同,不需要从一层到另一层复制它。

Bottleneck layers.

虽然每一层只产生k个输出特征映射,但它通常有更多的输入。在[37,11]中已经指出,可以在每次3×3卷积之前引入1×1卷积作为瓶颈层,以减少输入特征映射的数量,从而提高计算效率。我们发现这种设计对DenseNet特别有效,我们参考了具有这种瓶颈层的网络,即**BN-ReLU-Conv(1x1)-BN-ReLU-Conv(3×3)**版本的H l,如DenseNet-B。在我们的实验中,我们让每个1×1卷积生成4k特征映射。
1×1卷积

Compression.

为了进一步提高模型的紧凑性,我们可以减少过渡层的特征映射的数量。如果一个密集块包含m个特征映射,我们让下面的过渡层生成θm(向下取整)输出特征映射,其中0 < θ≤1称为压缩因子。当θ=1时,跨过渡层的特征映射数保持不变。我们将θ<1的DenseNet称为DenseNet- C,实验中设θ = 0.5。当瓶颈层和过渡层均为θ <1;我们称我们的模型为DenseNet-BC。

Implementation Details.

在除ImageNet以外的所有数据集上,我们实验中使用的DenseNet有三个dense块,每个块都有相同数量的层。在进入第一个密集块之前,对输入图像执行16个(或DenseNet-BC增长率的两倍)输出通道的卷积。对于内核大小为3×3的卷积层,输入的每一边都用一个像素填充零,以保持特征图大小的固定。我们使用1×1卷积和2×2平均池化作为两个连续密集块之间的过渡层。在最后一个密集块结束时,执行全局平均池化,然后附加一个softmax分类器。三个密集块的特征图大小分别为32× 32, 16×16和8×8。我们对基本的DenseNet结构进行了实验,配置为{L = 40,k = 12}, {L = 100,k = 12}和{L = 100,k = 24}。对于DenseNet- BC,计算了配置为{L= 100,k = 12}, {L=250,k=24}和{L=190,k=40}的网络
在ImageNet上的实验中,我们在224×224输入图像上使用具有4个密集块的DenseNet-BC结构。初始卷积层包括2k个卷积,大小为7×7,步幅为2;所有其他层中的特征映射的数量也遵循设置k。我们在ImageNet上使用的确切网络配置如表1所示。

4. Experiments


5. Discussion

从表面上看,DenseNets与ResNets非常相似:Eq.(2)与Eq.(1)的不同之处在于H l(·)是串联而不是求和。然而,这个看似很小的修改的含义导致了两种网络体系结构的本质不同的行为。

Model compactness.

作为输入连接的直接结果,任何DenseNet层学习的特征图都可以被所有后续层访问。这鼓励了整个网络中的特性重用,并导致了更紧凑的模型。
图4中的左两个图显示了一项实验的结果,该实验旨在比较DenseNets的所有变体(左)和可比较的ResNet架构(中)的参数效率。我们在C10+上训练了多个不同深度的小网络,并绘制了它们的测试准确率作为网络参数的函数。与AlexNet[16]或VGG-net[29]等其他流行的网络架构相比,预激活的ResNets使用更少的参数,但通常获得更好的结果[12]。因此,我们将DenseNet (k = 12)与该架构进行比较。DenseNet的训练设置与前一节保持相同。

该图显示,DenseNet-bc始终是DenseNet参数效率最高的变体。此外,为了达到相同的精度水平,DenseNet-BC只需要大约1/3的ResNets参数(中间图)。这个结果与我们在图3中展示的ImageNet上的结果一致。图4的右图显示,只有0.8M可训练参数的DenseNet-BC能够达到与具有10.2M参数的1001层(预激活)ResNet[12]相当的精度。

隐性深度监督。

密集卷积网络精度提高的一种解释可能是,通过较短的连接,各个层从损失函数获得了额外的监督。人们可以将DenseNets理解为一种“深度监督”。深度监督的好处之前已经在深度监督网络(DSN;[20]),其中每个隐藏层都附加了分类器,强制中间层学习判别特征
DenseNets以隐式的方式执行类似的深度监督:网络顶部的单个分类器通过最多两到三个过渡层为所有层提供直接监督。然而,DenseNets的损失函数和梯度基本上不那么复杂,因为所有层之间共享相同的损失函数

随机与确定性联系

在密集卷积网络和残差网络的随机深度正则化之间有一个有趣的联系[13]。在随机深度下,残差网络中的层被随机丢弃,从而在周围层之间建立直接连接由于池化层永远不会被丢弃,因此网络产生了与DenseNet类似的连接模式:在相同池化层之间的任何两层都有很小的概率直接连接——如果所有中间层都被随机丢弃。尽管方法最终是完全不同的,但DenseNet对随机深度的解释可能会为该正则化器的成功提供见解。

Feature Reuse.

通过设计,DenseNets允许各层访问其所有前一层的特征图(尽管有时通过过渡层)。我们进行了一个实验来调查一个训练过的网络是否利用了这个机会。我们首先在C10+上训练DenseNet, L = 40, k = 12。对于每个卷积层l在一个块内,我们计算分配给具有层5的连接的平均(绝对)权重。图5显示了所有三个密集块的热图。平均绝对权重充当卷积层对其前一层的依赖关系的代理。位置(l,s)中的红点表示层l通常情况下大量使用之前生成的s层特征图。从图中可以得出以下几点结论:
1. 所有层将权重分散到同一块内的许多输入上。这表明,早期层提取的特征确实被同一密集块中的深层层直接使用。
2. 过渡层的权重也在前一个密集块内的所有层上分散它们的权重,表明信息流通过很少的间接从DenseNet的第一层流向最后一层。
3. 第二和第三密集块内的层一致地为过渡层(三角形的顶部行)的输出分配了最小的权重,这表明过渡层输出了许多冗余特征(平均权重较低)。这与DenseNet-BC的强大结果保持一致,这些输出正是被压缩的。
4. 尽管最后的分类层,如最右边所示,也在整个密集块上使用权重,但似乎有一种对最终特征图的集中,这表明在网络后期可能会产生一些更高级的特征。

经过训练的DenseNet中卷积层的平均绝对滤波器权值。像素(s,l)的颜色编码了密集块内连接卷积层s到l的权重的平均L1范数(通过输入特征映射的数量归一化)。用黑色矩形突出显示的三列分别对应两个过渡层和分类层。第一行编码连接到密集块的输入层的权重。

6. Conclusion

我们提出了一种新的卷积网络架构,我们称之为密集卷积网络(DenseNet)。它引入了具有相同特征图大小的任意两个层之间的直接连接。我们表明,DenseNets可以自然地扩展到数百层,同时没有优化困难
在我们的实验中,随着参数数量的增加,DenseNets倾向于在精度上得到一致的提高,而没有任何性能下降或过拟合的迹象。在多种设置下,它在几个高度竞争的数据集上获得了最先进的结果。此外,densenet只要更少的参数和更少的计算来实现最先进的性能。由于我们在研究中采用了针对残差网络优化的超参数设置,因此我们相信,通过更详细地调整超参数和学习率计划,可以进一步提高DenseNets的准确性。
在遵循简单的连接规则的同时,DenseNets自然地集成了身份映射、深度监督和多元化深度的特性。它们允许在整个网络中重用特征,因此可以学习更紧凑,根据我们的实验,更准确的模型。由于其紧凑的内部表示和减少的特征冗余,DenseNets可能是基于卷积特征的各种计算机视觉任务的良好特征提取器,例如[4,5]。我们计划在未来的工作中使用DenseNets研究这种特征转移。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

星闪的三层架构

在数字化转型的浪潮中&#xff0c;物联网技术正成为连接世界的纽带&#xff0c;将各种智能设备融为一个无缝的整体。而在这个大背景下&#xff0c;星闪崭露头角&#xff0c;将成为连接未来的关键枢纽。本文将介绍星闪系统的三层架构&#xff0c;包括基础应用层、基础服务层和星…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(五)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存4. 上传结果5. 小程序开发1&#xff09;查询图片2&#xff09;查询识别结…

集团型企业如何做好组织管理?泛微聚才林来支招

随着业务发展&#xff0c;组织越发庞大复杂&#xff0c;组织内部管理事务也愈加复杂。尤其是集团型企业&#xff0c;人员多、事务多、组织架构股权结构复杂&#xff0c;面临着越来越大的集团组织治理难度。 数字经济大潮中&#xff0c;不少中大型集团选择数字化的方式&#xf…

DevOps搭建(五)-JDK安装详细步骤

1、官网下载 官方网站下载JDK,这里我们安装JDK8 https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html 点击上图中的Java SE Downloads项目,也可直接点击下面链接进入: Java Downloads | Oracle 往下滚动找到jdk8点击下载

《使用ThinkPHP6开发项目》 - 设置项目环境变量

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 在上一编我们讲了ThinkPHP6框架的创建&#xff0c;创建完成ThinkPHP6框架后&#xff0c;我们这里就可以开始设置我们的环境变量了。 安装完成ThinkPHP6框架生成的项目文件 修改项目配置我们修改项目config文件夹里的对…

Ray构建GPU隔离的机器学习平台

Ray框架介绍 Ray 是一个开源分布式计算框架,在 机器学习基础设施中发挥着至关重要的作用。Ray 促进分布式机器学习训练,使机器学习从业者能够有效利用多个 GPU 的能力。 Ray可以在集群上分布式地运行任务,并且可以指定任务运行时需要使用的GPU数量。Ray可与Nvidia-docker等…

JSON字符串转泛型对象

JSON字符串转泛型对象 以下问题只仅限于博主自身遇到&#xff0c;不代表绝对出现问题 相关类展示&#xff1a; 参数基类 public class BaseParams { }基类 public abstract class AbstractPush<Params extends BaseParams> {protected abstract void execute(Params…

T天池SQL训练营(五)-窗口函数等

–天池龙珠计划SQL训练营 5.1窗口函数 5.1.1窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数。OLAP 是OnLine AnalyticalProcessing 的简称&#xff0c;意思是对数据库数据进行实时分析处理。 为了便于理解&#xff0c;称之为窗口函数。常规的SELECT语句都是对整张表进…

硬件基础:运放

理想运算放大器 理想运算放大器放大倍数无穷大&#xff1b;输入端阻抗无穷大&#xff0c;所以输入端电流为0&#xff1b;输出电压和负载无关&#xff0c;不管负载怎么变化&#xff0c;输出电压都是固定的。 还有个就是输出阻抗为0&#xff1b; 输出阻抗越小&#xff0c;输出时就…

类风湿性关节炎口腔黏膜破裂引发抗瓜氨酸细菌和人蛋白抗体反应

今天给同学们分享一篇实验文章“Oral mucosal breaks trigger anti-citrullinated bacterial and human protein antibody responses in rheumatoid arthritis”&#xff0c;这篇文章发表在Sci Transl Med期刊上&#xff0c;影响因子为17.1。 结果解读&#xff1a; 口腔黏膜破…

VSCODE 运行C程序缓慢解决方法之一

最近更换了mingw的版本&#xff0c;安装路径与之前的mingw路径不大一样。结果发现代码运行的时候很慢&#xff0c;弹出窗口后&#xff0c;迟迟没有打印任何东西&#xff0c;就像卡死了一样。试过网上说的一堆方法&#xff0c;没有什么用。 我按照以下流程进行检查: 1.检查min…

【计算机网络学习之路】HTTP请求

目录 前言 HTTP请求报文格式 一. 请求行 HTTP请求方法 GET和POST的区别 URL 二. 请求头 常见的Header 常见的额请求体数据类型 三. 请求体 结束语 前言 HTTP是应用层的一个协议。实际我们访问一个网页&#xff0c;都会像该网页的服务器发送HTTP请求&#xff0c;服务…

Microsoft 365 Copilot正式上线,如何稳定访问体验?

如果将微软对人工智能的投资看成一场豪赌&#xff0c;Microsoft Copilot无疑是现阶段最受瞩目的赌注。2023年9月正式发布的Microsoft Copilot是一种基于大型语言模型&#xff08;LLM&#xff09;和微软图形&#xff08;Microsoft Graph&#xff09;的数据和人工智能&#xff08…

JavaWeb(十一)

一、会话跟踪技术的概述 1.1、会话的概念 用户打开浏览器&#xff0c;访问web服务器的资源&#xff0c;会话建立&#xff0c;直到有一方断开连接&#xff0c;会话结束。在一次会话中可以包含多次请求和响应。 从浏览器发出请求到服务端响应数据给前端之后&#xff0c;一次会话…

麦谈帮集成API如何优化电商平台、CRM和客服系统:无代码开发的未来

无代码开发的游戏规则改变者 在数字化的浪潮下&#xff0c;电商平台、CRM和客服系统的效率和同步性直接影响着企业的运营成效。麦谈帮以其领先的无代码API集成技术&#xff0c;正重新定义这一领域的游戏规则。通过其提供的400多个接口&#xff0c;企业能够迅速连接不同的系统和…

CentOS 7.9安装宝塔面板,安装gitlab服务器

docker安装方式比较慢&#xff0c;安装包1.3GB 安装后启动很慢 docker logs q18qgztxdvozdv_gitlab-ce-gitlab-1 docker ps docker exec -it q18qgztxdvozdv_gitlab-ce-gitlab-1 sh cd /etc/gitlab cat initial_root_password 软件商店安装方式&#xff0c;失败了2023.12…

生产上线需要注意的安全点

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse&#xff0c;否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…

多窗口量子纠缠技术实现

1. 前言 最近看到下面这个&#xff0c;多窗口下实现量子纠缠的特效感觉很惊艳和有创意。 除 Three.js 的特效果部分&#xff0c;技术实现上还是很简单的。 2. 技术点分析 这里面核心两个技术点&#xff1a; 不同 Tab 窗口下的消息通讯。窗口的位置获取。 2.1 Tab 窗口通讯…

小红书蒲公英平台开通后,有哪些注意的地方,以及如何进行报价?

今天来给大家聊聊当小红书账号过1000粉后&#xff0c;开通蒲公英需要注意的事项。 蒲公英平台是小红书APP中的一个专为内容创作者设计的平台。它为品牌和创作者提供了一个完整的服务流程&#xff0c;包括内容的创作、推广、互动以及转换等多个方面。 2.蒲公英平台的主要功能 &…

LIS检验系统,涵盖实验室全部管理流程,适合各种实验机构的业务流程

LIS检验系统源码&#xff0c;云LIS医学检验系统源码 LIS检验系统涵盖实验室的全部管理流程&#xff0c;包括从检验申请、标本采集、实验检测、报告发布的、质控管理、科室事务、试剂管理等完整流程的功能&#xff0c;实现智能化、自动化、规范化管理&#xff0c;遵循医学实验室…