深度学习模型参数量、计算量和推理速度计算
转载自 深度学习模型参数量/计算量和推理速度计算 (qq.com)
概念理解FLOPS注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
计算公式:对卷积层:(K_h * K_w * C_in * C_out) * (H_out * W_out)对全连接层:C_in * C_out
FLOPs注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度
Params是指模型训练中需要训练的参数总数
模型参数量计算公式为:对卷积层:(K_h * K_w * C_in) * C_out对全连接层:C_in * C_out
注意:
params只与你定义的网络结构有关,和forward的任何操作无关。即定义好了网络结构,参数就已经决定了。FLOPs和不同的层运算结构有关。如果forward时在同一层(同一名字命名的层)多次运算,FLOPs不会增加
Model_size ...
为什么 Image to Image 任务中去掉 BN
Batch Norm可谓深度学习中非常重要的技术,不仅可以使训练更深的网络变容易,加速收敛,还有一定正则化的效果,可以防止模型过拟合。在很多基于CNN的分类任务中,被大量使用。
但在图像超分辨率和图像生成方面,Batch Norm的表现并不好,加入了Batch Norm,反而使得训练速度缓慢,不稳定,甚至最后发散。
以图像超分辨率来说,网络输出的图像在色彩、对比度、亮度上要求和输入一致,改变的仅仅是分辨率和一些细节,而Batch Norm,对图像来说类似于一种对比度的拉伸,任何图像经过Batch Norm后,其色彩的分布都会被归一化,也就是说,它破坏了图像原本的对比度信息,所以Batch Norm的加入反而影响了网络输出的质量。虽然Batch Norm中的scale和shift参数可以抵消归一化的效果,但这样就增加了训练的难度和时间,还不如直接不用。不过有一类网络结构可以用,那就是残差网络(Residual Net),但也仅仅是在residual block当中使用,比如SRResNet,就是一个用于图像超分辨率的残差网络。为什么这类网络可以使用Batch Norm呢?有人认为是因为图 ...
SwinTransformer原理源码解读
转载自 SwinTransformer原理源码解读 - 知乎 (zhihu.com)
模型总览input的H=224,W=224,经过4个stage,得到7 * 7 * C的输出。
如果做分类的话,可以做一个拉直,然后连接分类头即可。pytorch中做分类任务时,前向传播代码为:
12345678def forward(self, x): x = self.features(x) x = self.norm(x) x = x.permute(0, 3, 1, 2) x = self.avgpool(x) x = torch.flatten(x, 1) x = self.head(x) return x
Patch Partition下面来看Patch Partition的部分主要工作就是 split image into non-overlapping patches代码为:
123456789layers.append( nn.Sequential( nn.Conv2d( 3, ...
CNN对高低频信号的学习
Related work: [1905.13545] High Frequency Component Helps Explain the Generalization of Convolutional Neural Networks (arxiv.org)
观点
对于任何一个数据集,都应该包括语义信息(纹理信息或者说低频信息)和高频信息,只不过包括比例不定而已,并且对于同一个分布数据集,其语义分布和高频分布都应该有自己的分布特性。可以简单认为对于同一个类别标注的数据集,假设该数据集收集自多个场景,每个场景内的语义分布应该是近乎一致的(不然也不会标注为同一类),但是高频分布就不一定了,可能和特定域有关,该高频成分可能包括和类别相关的特定信息,也可以包括分布外的噪声,并且该噪声对模型训练是有害的,会影响泛化能力。
对于人类而言,标注时候由于无法感知高频成分故仅仅依靠语义进行标注,忽略了高频成分。但是CNN训练时候会同时面对语义低频成分和高频成分,这个差别就会导致CNN学习出来的模型和人类理解的模型不一样,从而出现常规的泛化认知错误。这一切实际上是数据分布特性决定的。
当CNN采用优化器来 ...
医学图像处理研究方向
可解释的人工智能:可解释的人工智能是一个研究领域,专注于开发能够为其决策提供可理解和透明解释的模型。这在医学图像处理中尤为重要,可解释的 AI 可以帮助医生更好地理解模型决策背后的推理,并提供更准确和可靠的诊断。
多模态数据集成:多模态数据集成涉及组合来自多种成像模式(如 MRI、CT 和 PET)的数据,以创建更全面、更准确的患者状况图。这可以提高诊断和治疗计划的准确性,并有助于确定潜在的治疗目标。
基于深度学习的分割:基于深度学习的分割涉及使用深度神经网络将医学图像自动分割成感兴趣的区域,例如器官或肿瘤。这可以节省时间并提高医学图像分析的准确性。
生成式模型:生成式模型是一种深度学习模型,可以根据从现有数据中学习到的模式和特征生成新的医学图像。这对于生成合成数据以扩充训练集或生成新图像以帮助诊断和治疗计划很有用。
迁移学习:迁移学习涉及将从一个领域学到的知识迁移到另一个领域。在医学图像处理中,迁移学习可用于在大型、公开可用的数据集(例如 ImageNet)上训练模型,然后在较小的医学图像数据集上对其进行微调。这可以提高医学图像处理模型的准确性和通用性。
先进的可视化技术 ...