即插即用|XBN让ResNet、ShuffleNet彻底解决BN的局限和缺点

OpenCV学堂 2022-04-01 22:34


BN是深度学习中的一项里程碑技术。它在训练过程中使用small-batch-size统计来标准化激活的输出,但在推理过程中使用的是总体统计。

本文主要研究统计数据的估计。定义了BN的估计偏移的幅度来定量地测量其估计的统计量和预期的统计量之间的差异。本文的主要观察结果是:由于网络中BN的堆栈作用,估计偏移会被累积,这对测试性能有不利的影响

作者进一步发现,batch-free normalization(BFN)可以阻止这种估计偏移的累计。这些观察结果也促使了XBNBlock的设计,该模块可以在残差网络的bottleneck块中用BFN替换一个BN。

在ImageNet和COCO基准测试上的实验表明,XBNBlock持续地提高了不同架构的性能,包括ResNet和ResNeXt,并且似乎对分布式偏移更稳健。

1简介

输入标准化在神经网络训练中广泛应用了几十年,在线性模型优化中显示了良好的理论特性。它使用统计数据进行标准化,而这些统计量可以直接从可用的训练数据中计算出来。

一个很自然的想法是扩展网络中激活输出的标准化。然而,由于内部激活的分布不同,标准化激活更具有挑战性,因为激活导致了对标准化的统计量估计不准确。通过总体统计标准化的激活网络显示了训练不稳定性。

BN在训练期间使用mini-Batch统计来对激活输出进行标准化,但在推理/测试期间使用估计的总体统计。BN确保了每次迭代的标准化mini-Batch输出标准化,实现了稳定的训练、高效的优化和潜在的泛化。它已被广泛应用于各种体系结构,并成功地在的不同领域扩散。

尽管BN取得了普遍的成功,但在某些场景时仍然存在问题。BN的限制是它的mini-Batch问题——随着Batch规模变小,BN的误差迅速增加。此外,如果训练数据和测试数据之间存在协变量偏差,则具有朴素BN的网络就会得到显著的退化性能。虽然这些问题在不同的场景和上下文中提出,但用于推理的BN的统计量估计似乎是它们之间的联系:

  1. 如果在测试中修正其统计量的估计,则BN的mini-Batch问题可以得到缓解;
  2. 如果根据可用的测试数据调整统计量的估计,则模型对不可见域数据(损坏的图像)更鲁棒。

本文系统地研究了统计量的估计问题。作者引入了BN的预期统计数据,考虑到在训练过程中具有不同分布激活的模糊统计数据。如果BN的估计总体统计量不等于其期望的总体统计量,将其称为估计偏差,并设计实验来定量研究估计偏差如何对批量归一化网络的影响。

主要观察结果是,BN的估计偏差可以在一个网络中积累(图1(a))。

这一观察结果为解释为什么具有BN的网络在small-batch-size训练下的性能显著退化,以及为什么如果在测试过程中存在输入数据的分布偏移,则需要调整BN的总体统计数据提供了线索。

作者进一步发现BFN对每个样本进行独立归一化,而不需要跨Batch维数,可以阻止BN估计偏差的积累。如果发生了分布偏移,这就缓解了网络的性能退化。

这些观察结果促使了XBNBlock的诞生,可以在残差网络的bottleneck中用BFN取代了一个BN。

作者将所提出的XBNBlock应用于ResNet和ResNeXt体系结构,并在ImageNet和COCO基准测试上进行了实验。XBNBlock持续提高架构的性能。

2相关工作

2.1 估计和使用统计量

BN存在小批量的问题,因为统计量的估计可能不准确。为了解决这个问题,很多研究提出了各种BFN,例如,层归一化(LN)和组归一化(GN)。这些工作在训练和推理过程中对每个样本都执行相同的归一化操作。

另一种减少训练和推理之间差异的方法是将估计的总体统计量与小批量统计数据结合起来,在训练期间进行归一化。这些工作可能优于在small-batch-size下训练的BN,其中估计是主要问题,但当批处理大小中等时,它们的性能通常较差。

一些工作只集中在推理过程中估计校正后的归一化统计量,无论是领域自适应、鲁棒性还是小批量训练。这些策略并不影响模型的训练方案。

  • Li等人提出了域自适应的自适应批归一化(AdaBN),其中在测试过程中对可用目标域的BN统计量的估计进行调制。进一步利用这一思想提高输入数据在协变量偏移下的鲁棒性。

  • 另一种工作通过在推理过程中优化样本权重来纠正小批量训练的归一化统计,寻求总体统计的归一化输出与在训练过程中使用小批量统计观察到的相似。

  • 此外,还考虑了深度生成模型的预测时间batch量设置,并防止测试数据的协变量偏移,其中使用来自测试数据的小批量统计数据进行推断。

与上面显示的工作相比,本文的工作重点是研究网络中BN的估计偏移。设计了将BN和BFN混合的XBN-Block,以阻止BNs估计偏移的积累。

2.2 将BN与其他归一化方法相结合

研究人员还通过结合不同的标准化策略来构建一层的标准化模块。

Luo等人提出了可切换归一化(SN),它通过学习不同的Softmax的重要性权重,将引入的稀疏性约束、白化操作等操作进行动态计算。

其他方法解决了特定场景中归一化方法的组合,包括图像风格转移、图像到图像转换、域泛化和元学习场景。

与这些旨在在一个层中构建规范化模块的方法不同,本文提出的XBN-Block是一个混合在不同层中的BN和BFN的构建块。此外,作者观察到,BFN可以阻断网络中BNs估计偏移的积累,这为解释上述方法与其他归一化方法相结合的成功提供了一个新的观点。

本文工作与IBN-Net密切相关,它仔细地将实例规范化(IN)和BN集成为构建块,并可以封装到几个深度网络中,以提高它们的性能。

请注意,IBNNet仔细设计了IN的位置及其通道号,而XBNBlock的设计被简化了。此外,IBN-Net的动机是IN可以学习样式不变特征,从而有利于泛化,而XBNBlock的动机是BFN可以缓解BN的估计偏移,从而避免其在估计不准确时的测试性能退化的问题。

在这里,作者强调了BFN(例如,IN)可以阻止BNs估计偏移的累计,这也为IBN-Net测试性能的成功提供了一个合理的解释,特别是在分布位移的情况下。

3理论前提

3.1 Batch normalization

是给定的多层感知器(MLP)的输入。在训练过程中,批归一化将m个小批数据中的每个神经元/通道归一化为:

其中,分别是每个神经元的均值和方差,是一个很小的数字,以防止数值不稳定。

在推理/测试过程中,BN需要层输入的总体均值和方差来进行确定性预测为:

尽管层输入的总体统计量{}是不明确的,它们的估计量{}通常在上式中使用。通过计算更新因子α在不同训练迭代t上的小批统计数据的运行平均值,如下:

BN在训练和推理过程中的差异限制了其在递归神经网络中的使用,或者有损小批量训练的性能,因为估计可能不准确。

3.2 Batch-free normalization

Batch-free normalization避免沿Batch维度归一化,从而避免了统计量估计的问题。这些方法在训练和推理过程中使用了一致的操作。一种代表性的方法是层归一化(LN),它对每个训练样本神经元的层输入进行标准化,如下:

式中,分别为每个样本的均值和方差。LN通过进一步推广为组归一化(GN),将神经元划分为组,并分别在各组神经元内进行标准化。

通过改变组数,GN比LN更灵活,使其能够在小批量训练(如目标检测和分割)上获得良好的性能。虽然这些BFN方法可以在某些场景中很好地工作,但在大多数情况下,它们无法匹配BN的性能,并且在CNN架构中并不常用。

4BN的估计偏移

4.1 BN的预期统计数据

设S是训练集,是训练过程中采样的小批量数据。考虑一个带有BN的神经网络,这里定义

某些训练集S的总体统计量是定义良好的,并且可以利用的小批量统计量直接很好地估计它们。然而,激活的总体统计量是不明确的,因为X在训练过程中由于每次迭代中参数θ的更新而发生变化。

事实上,X的小批样本是,它不仅依赖于小批输入,还依赖于模型序列。因此,X的期望统计量应该是训练集S和训练过程中变化的模型序列的函数。

尽管很难从统计视图中明确定义X的总体统计量,但注意到子网络的小批输入总是每次迭代的标准化分布。因此,X的期望统计量应该确保在测试集上的标准化输出的标准化。作者隐式地定义了BN的期望统计量如下。

是训练集S上的训练模型。给定测试集,参考是BN的期望统计量,其中分别是BN的输入的均值(方差)。

注意,期望统计量的定义在训练模型条件输入测试集S的而不是训练集S',因为统计量只考虑最后训练的模型,而不是模型序列

事实上,一旦模型被训练好,的统计数据就可以很容易地计算出来。然而,它们的泛化性能通常比Eqn3中显示的运行平均性能要差。

4.2 对估计偏移的研究

给定定义的BN的期望统计量,如果其估计的统计量不等于其期望的统计量,称为BN的估计偏移

研究BN的估计偏移如何影响批处理归一化网络的性能是很重要的。因此,作者尝试寻求定量地衡量估计的统计量与其预期的统计量之间的差异的大小。

为BN的期望均值(方差),是估计的BN的期望均值(方差)。将估计偏移幅度(ESM)定义为它们的差值的l2-范数。例如,

在接下来的部分中,将设计实验来研究BN的估计偏移如何影响批处理归一化网络的性能,以及如何对其进行修正。

1、网络中估计偏移的累积

作者考虑了2个实验设置:

  1. 在设置1中,使用等于测试集S'的训练集S来研究在没有输入数据分布偏移的情况下BN的估计偏移
  2. 在设置2中,训练集S从测试集S'中采样。通过改变S的大小来调节训练集和测试集之间的分布偏移。

第1步:

实验配置的细节和结果如图2所示。可以观察到,在前30个Epoch,训练误差和测试误差之间存在显著的差距。

请注意,如果BN在训练和推理过程中采用了相同的操作,那么这个设置中的训练和测试误差应该是相同的。

在图2(b)和(c)中,某些层中BN的在前30个Epoch显著大于0,然后逐渐收敛到0。这一现象清楚地表明,训练和测试之间的误差差距主要是由于BN的总体统计量估计不准确造成的。

一个重要的观察结果是:较深层BN的在前30个Epoch可能具有更高的值。这意味着浅层的估计会影响深层的估计。如果浅层的BN发生估计偏移,则深层的BN的估计偏移就会被放大。因此,由于BN层的堆栈,对统计数据的不准确估计可能会被积累放大。

第2步:

在这个设置中,训练集S从测试集S'中采样,改变训练集|S|的大小来调节训练集和测试集之间的分布位移。希望看到不同的分布变化如何影响在一个网络中对BN的统计量的估计。

实验设置和结果的细节如图3所示。当减少图3(b)中采样训练集的大小时,分布差异可能更大,所有BN层的都显著大于零,而在样本较少的模型中,BN层的更高。

此外,在图3(a)中,可以看到所有的模型都可以用零训练误差进行训练,而如果一个模型在样本较少的训练集上进行训练,测试误差显著更高。这些观察结果表明,训练集和测试集之间的输入分布偏差会导致BN的估计偏差,从而对测试性能产生不利影响。

例如,作者发现不使用BN的模型的检验误差为57.73%,而使用BN模型的检验误差为73.02%。

一个重要的观察结果是,更深层的BN的在训练结束时可能具有更高的价值。这一观察结果显示了显著的证据,支持BN的估计偏移可以由于BN层的叠加而积累。此外,如果训练样本较少,输入数据的分布偏移更强,估计偏移更严重。

在这里,作者强调了定义而不是上的BN的期望统计量是很重要的。作者注意到,在这个实验中,BN的逐渐收敛到一个稳定的值(图3(c)),这表明均值所使用的估计收敛于在训练集上对训练模型的估计。如果在上定义了,则将为零。这不是所期望的,因为它没有提供任何信息来诊断在训练集上训练的模型的退化测试性能,并且在测试集上遭受更大的分布偏移。

综上所述,根据上述实验,作者认为BN的估计偏移可能会在具有BN叠加的网络中累积,这可能会对网络的测试性能产生不利影响,特别是在发生分布不同的情况下。

2、阻止估计偏移的累积

实验表明,如果在网络中插入一个BFN,则可以一定程度上缓解BN估计偏移的积累问题。作者把奇数层的BN替换为GN,并将这个网络称为“GNBN”。遵循第4.2.1节中所示的前2个实验设置,分别显示图4和图5的结果。

在图4(a)中的前30个Epoch,训练和测试之间的误差差距显著减少,重要的是图4(b)中观察到,在训练过程中,所有层中BN的几乎相同这意味着奇数层中的GN可能会阻碍其相邻2层中BN的估计偏移的积累。

在图5(a)中可以观察到“GNBN”中的BNs的显著低于原始网络(“BN”)。此外,在训练结束时,不同层间BN的没有显著差异。这些观察结果进一步证实了GN可以阻断相邻2层BN的估计位移的积累。

作者将此归因于训练和推理之间(对于每个样本)的GN的一致操作,这确保了后期层的输入具有几乎相同的分布。如图5(b)中的“GNBN”和“BN”的比较所示,估计位移的阻塞积累确保了网络性能的显著提高。

根据以上实验,作者认为BFN(如GN)可以阻断网络中BN估计位移的积累,如果存在分布偏移,也可以缓解网络的性能退化。

5XBN Block的实现

def GroupNorm(num_features, num_groups=64, eps=1e-5, affine=True, *args, **kwargs):
    if num_groups > num_features:
        print('------arrive maxum groub numbers of:', num_features)
        num_groups = num_features
    return nn.GroupNorm(num_groups, num_features, eps=eps, affine=affine)

5.1 ResNet + XBN Block

class BasicBlock_XBNBlock_P2(nn.Module):
    expansion = 1

    def __init__(self, inplanes, planes, stride=1, downsample=None):
        super(BasicBlock_XBNBlock_P2, self).__init__()
        self.conv1 = conv3x3(inplanes, planes, stride)
        # 原始ResNet
        #self.bn1 = nn.BatchNorm2d(planes)
        # ResNet XBNBlock
        self.bn1 = GroupNorm(planes, num_groups=32)
        self.relu = nn.ReLU(inplace=True)
        self.conv2 = conv3x3(planes, planes)
        self.bn2 = nn.BatchNorm2d(planes)
        self.downsample = downsample
        self.stride = stride

    def forward(self, x):
        residual = x

        out = self.conv1(x)
        out = self.bn1(out)
        out = self.relu(out)

        out = self.conv2(out)
        out = self.bn2(out)

        if self.downsample is not None:
            residual = self.downsample(x)

        out += residual
        out = self.relu(out)

        return out

5.2 MobileNet v2 + XBN Block

class InvertedResidual_XBNBlock(nn.Module):
    def __init__(self, inp, oup, stride, expand_ratio):
        super(InvertedResidual_XBNBlock, self).__init__()
        self.stride = stride
        assert stride in [12]

        hidden_dim = int(inp * expand_ratio)
        self.use_res_connect = self.stride == 1 and inp == oup

        if expand_ratio == 1:
            self.conv = nn.Sequential(
                # dw
                nn.Conv2d(hidden_dim, hidden_dim, 3, stride, 1, groups=hidden_dim, bias=False),
                # nn.BatchNorm2d(hidden_dim),
                GroupNorm(hidden_dim, num_groups=16),
                nn.ReLU6(inplace=True),
                # pw-linear
                nn.Conv2d(hidden_dim, oup, 110, bias=False),
                nn.BatchNorm2d(oup),
            )
        else:
            self.conv = nn.Sequential(
                # pw
                nn.Conv2d(inp, hidden_dim, 110, bias=False),
                nn.BatchNorm2d(hidden_dim),
                nn.ReLU6(inplace=True),
                # dw
                nn.Conv2d(hidden_dim, hidden_dim, 3, stride, 1, groups=hidden_dim, bias=False),
                # nn.BatchNorm2d(hidden_dim),
                GroupNorm(hidden_dim, num_groups=16),
                nn.ReLU6(inplace=True),
                # pw-linear
                nn.Conv2d(hidden_dim, oup, 110, bias=False),
                nn.BatchNorm2d(oup),
            )

    def forward(self, x):
        if self.use_res_connect:
            return x + self.conv(x)
        else:
            return self.conv(x)

5.3 ShuffleNet v2 + XBN Block

class ShuffleV2XBNBlock(nn.Module):
    def __init__(self, inp, oup, mid_channels, *, ksize, stride):
        super(ShuffleV2XBNBlock, self).__init__()
        self.stride = stride
        assert stride in [12]

        self.mid_channels = mid_channels
        self.ksize = ksize
        pad = ksize // 2
        self.pad = pad
        self.inp = inp

        outputs = oup - inp

        branch_main = [
            # pw
            nn.Conv2d(inp, mid_channels, 110, bias=False),
            nn.BatchNorm2d(mid_channels),
            nn.ReLU(inplace=True),
            # dw
            nn.Conv2d(mid_channels, mid_channels, ksize, stride, pad, groups=mid_channels, bias=False),
            #nn.BatchNorm2d(mid_channels),
            GroupNorm(mid_channels, num_groups=8),
            # pw-linear
            nn.Conv2d(mid_channels, outputs, 110, bias=False),
            nn.BatchNorm2d(outputs),
            nn.ReLU(inplace=True),
        ]
        self.branch_main = nn.Sequential(*branch_main)

        if stride == 2:
            branch_proj = [
                # dw
                nn.Conv2d(inp, inp, ksize, stride, pad, groups=inp, bias=False),
                #nn.BatchNorm2d(inp),
                GroupNorm(inp, num_groups=8),
                # pw-linear
                nn.Conv2d(inp, inp, 110, bias=False),
                nn.BatchNorm2d(inp),
                nn.ReLU(inplace=True),
            ]
            self.branch_proj = nn.Sequential(*branch_proj)
        else:
            self.branch_proj = None

    def forward(self, old_x):
        if self.stride==1:
            x_proj, x = self.channel_shuffle(old_x)
            return torch.cat((x_proj, self.branch_main(x)), 1)
        elif self.stride==2:
            x_proj = old_x
            x = old_x
            return torch.cat((self.branch_proj(x_proj), self.branch_main(x)), 1)

    def channel_shuffle(self, x):
        batchsize, num_channels, height, width = x.data.size()
        assert (num_channels % 4 == 0)
        x = x.reshape(batchsize * num_channels // 22, height * width)
        x = x.permute(102)
        x = x.reshape(2-1, num_channels // 2, height, width)
        return x[0], x[1]

6实验

OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论 (0)
  • 四、芯片封测技术及应用场景1、封装技术的发展历程 (1)DIP封装:早期分立元件封装,体积大、引脚少; (2)QFP封装:引脚密度提升,适用于早期集成电路。 (3)BGA封装:高密度互连,散热与信号传输优化; (4)3D封装:通过TSV(硅通孔)实现垂直堆叠,提升集成度(如HBM内存堆叠); (5)Chiplet封装:异质集成,将不同工艺节点的模块组合(如AMD的Zen3+架构)。 (6)SiP封装:集成多种功能芯片(如iPhone的A系列SoC整合CPU、GPU、射频模块)。2、芯片测试 (1
    碧海长空 2025-04-15 11:45 160浏览
  • 展会名称:2025成都国际工业博览会(简称:成都工博会)展会日期:4月23 -25日展会地址:西部国际博览城展位号:15H-E010科士威传动将展示智能制造较新技术及全套解决方案。 2025年4月23-25日,中国西部国际博览城将迎来一场工业领域的年度盛会——2025成都国际工业博览会。这场以“创链新工业,共碳新未来”为主题的展会上,来自全球的600+ 家参展企业将齐聚一堂,共同展示智能制造产业链中的关键产品及解决方案,助力制造业向数字化、网络化、智能化转型。科士威传动将受邀参展。&n
    科士威传动 2025-04-14 17:55 81浏览
  • 二、芯片的设计1、芯片设计的基本流程 (1)需求定义: 明确芯片功能(如处理器、存储、通信)、性能指标(速度、功耗、面积)及目标应用场景(消费电子、汽车、工业)。 (2)架构设计: 确定芯片整体框架,包括核心模块(如CPU、GPU、存储单元)的协同方式和数据流路径。 (3)逻辑设计: 通过硬件描述语言(如Verilog、VHDL)将架构转化为电路逻辑,生成RTL(寄存器传输级)代码。 (4)物理设计: 将逻辑代码映射到物理布局,涉及布局布线、时序优化、功耗分析等,需借助EDA工具(如Ca
    碧海长空 2025-04-15 11:30 123浏览
  •   高空 SAR 目标智能成像系统软件:多领域应用的前沿利器   高空 SAR(合成孔径雷达)目标智能成像系统软件,专门针对卫星、无人机等高空平台搭载的 SAR传感器数据,融合人工智能与图像处理技术,打造出的高效目标检测、识别及成像系统。此软件借助智能算法,显著提升 SAR图像分辨率、目标特征提取能力以及实时处理效率,为军事侦察、灾害监测、资源勘探等领域,提供关键技术支撑。   应用案例系统软件供应可以来这里,这个首肌开始是幺伍扒,中间是幺幺叁叁,最后一个是泗柒泗泗,按照数字顺序组合
    华盛恒辉l58ll334744 2025-04-14 16:09 144浏览
  • 时源芯微 专业EMC解决方案提供商  为EMC创造可能(适用于高频时钟电路,提升EMC性能与信号稳定性)一、设计目标抑制电源噪声:阻断高频干扰(如DC-DC开关噪声)传入晶振电源。降低时钟抖动:确保晶振输出信号纯净,减少相位噪声。通过EMC测试:减少晶振谐波辐射(如30MHz~1GHz频段)。二、滤波电路架构典型拓扑:电源输入 → 磁珠(FB) → 大电容(C1) + 高频电容(C2) → 晶振VDD1. 磁珠(Ferrite Bead)选型阻抗特性:在目标频段(如100MHz~1GH
    时源芯微 2025-04-14 14:53 94浏览
  • 在当今汽车电子化和智能化快速发展的时代,车规级电子元器件的质量直接关系到汽车安全性能。三星作为全球领先的电子元器件制造商,其车规电容备受青睐。然而,选择一个靠谱的三星车规电容代理商至关重要。本文以行业领军企业北京贞光科技有限公司为例,深入剖析如何选择优质代理商。选择靠谱代理商的关键标准1. 授权资质与行业地位选择三星车规电容代理商首先要验证其授权资质及行业地位。北京贞光科技作为中国电子元器件行业的领军者,长期走在行业前沿,拥有完备的授权资质。公司专注于市场分销和整体布局,在电子元器件领域建立了卓
    贞光科技 2025-04-14 16:18 137浏览
  • 一、芯片的发展历程总结:1、晶体管的诞生(1)电子管时代 20世纪40年代,电子管体积庞大、功耗高、可靠性差,无法满足计算机小型化需求。(2)晶体管时代 1947年,贝尔实验室的肖克利、巴丁和布拉顿发明点接触晶体管,实现电子信号放大与开关功能,标志着固态电子时代的开端。 1956年,肖克利发明晶体管。(3)硅基晶体管时代 早期晶体管采用锗材料,但硅更耐高温、成本低,成为主流材料。2、集成电路的诞生与发展 1958年,德州仪器工程师基尔比用锗材料制成世界上第一块含多个晶体管的集成电路,同年仙童半导
    碧海长空 2025-04-15 09:30 104浏览
  • 一、智能门锁市场痛点与技术革新随着智能家居的快速发展,电子门锁正从“密码解锁”向“无感交互”进化。然而,传统人体感应技术普遍面临三大挑战:功耗高导致续航短、静态人体检测能力弱、环境适应性差。WTL580微波雷达解决方案,以5.8GHz高精度雷达感知技术为核心,突破行业瓶颈,为智能门锁带来“精准感知-高效触发-超低功耗”的全新交互范式。二、WTL580方案核心技术优势1. 5.8GHz毫米波雷达:精准感知的革命全状态人体检测:支持运动、微动(如呼吸)、静态(坐卧)多模态感知,检测灵敏度达0.1m/
    广州唯创电子 2025-04-15 09:20 75浏览
  • 一、智能语音播报技术演进与市场需求随着人工智能技术的快速发展,TTS(Text-to-Speech)技术在商业场景中的应用呈现爆发式增长。在零售领域,智能收款机的语音播报功能已成为提升服务效率和用户体验的关键模块。WT3000T8作为新一代高性能语音合成芯片,凭借其优异的处理能力和灵活的功能配置,正在为收款机智能化升级提供核心技术支持。二、WT3000T8芯片技术特性解析硬件架构优势采用32位高性能处理器(主频240MHz),支持实时语音合成与多任务处理QFN32封装(4x4mm)实现小型化设计
    广州唯创电子 2025-04-15 08:53 93浏览
  • 三、芯片的制造1、制造核心流程 (1)晶圆制备:以高纯度硅为基底,通过拉晶、切片、抛光制成晶圆。 (2)光刻:光刻、离子注入、薄膜沉积、化学机械抛光。 (3)刻蚀与沉积:使用干法刻蚀(等离子体)精准切割图形,避免侧壁损伤。 (4)掺杂:注入离子形成PN结特性,实现晶体管开关功能。2、材料与工艺创新 (1)新材料应用: 高迁移率材料(FinFET中的应变硅、GaN在射频芯片中的应用); 新型封装技术(3D IC、TSV硅通孔)提升集成度。 (2)工艺创新: 制程从7nm到3nm,设计架构由F
    碧海长空 2025-04-15 11:33 158浏览
  • 你知道精益管理中的“看板”真正的意思吗?在很多人眼中,它不过是车间墙上的一块卡片、一张单子,甚至只是个用来控制物料的工具。但如果你读过大野耐一的《丰田生产方式》,你就会发现,看板的意义远不止于此。它其实是丰田精益思想的核心之一,是让工厂动起来的“神经系统”。这篇文章,我们就带你一起从这本书出发,重新认识“看板”的深层含义。一、使“看板”和台车结合使用  所谓“看板”就是指纸卡片。“看板”的重要作用之一,就是连接生产现场上道工序和下道工序的信息工具。  “看板”是“准时化”生产的重要手段,它总是要
    优思学院 2025-04-14 15:02 116浏览
  •   无人装备作战协同仿真系统软件:科技的关键支撑   无人装备作战协同仿真系统软件,作为一款综合性仿真平台,主要用于模拟无人机、无人车、无人艇等无人装备在复杂作战环境中的协同作战能力、任务规划、指挥控制以及性能评估。该系统通过搭建虚拟战场环境,支持多种无人装备协同作战仿真,为作战指挥、装备研发、战术训练和作战效能评估,提供科学依据。   应用案例   系统软件供应可以来这里,这个首肌开始是幺伍扒,中间是幺幺叁叁,最后一个是泗柒泗泗,按照数字顺序组合就可以找到。   核心功能   虚拟战
    华盛恒辉l58ll334744 2025-04-14 17:24 85浏览
  • 一、磁场发生设备‌电磁铁‌:由铁芯和线圈组成,通过调节电流大小可产生3T以下的磁场,广泛应用于工业及实验室场景(如电磁起重机)。‌亥姆霍兹线圈‌:由一对平行共轴线圈组成,可在线圈间产生均匀磁场(几高斯至几百高斯),适用于物理实验中的磁场效应研究。‌螺线管‌:通过螺旋线圈产生长圆柱形均匀磁场,电流与磁场呈线性关系,常用于磁性材料研究及电子束聚焦。‌超导磁体‌:采用超导材料线圈,在低温下可产生3-20T的强磁场,用于核磁共振研究等高精度科研领域。‌多极电磁铁‌:支持四极、六极、八极等多极磁场,适用于
    锦正茂科技 2025-04-14 13:29 67浏览
我要评论
0
2
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦