首页 > 其他分享 >Anomalib(6):EfficientAD训练自己的数据集

Anomalib(6):EfficientAD训练自己的数据集

时间:2024-08-15 17:25:03浏览次数:10  
标签:教师 训练 EfficientAD 模型 Anomalib ImageNet 数据

        在前几篇博文中,我使用了Anomalib进行异常检测。之后我尝试将模型更换为EfficientAD,但模型训练过程中会报错,提示我在本地找不到ImageNet数据集。

        起初我对EfficientAD的细节不够了解,我只是简单的知道EfficientAD属于“教师-学生”类型,需要在大型数据集(如ImageNet)上对教师模型进行训练,之后在异常检测数据集(如MVTecAD)上利用教师模型对学生模型进行蒸馏。这样使学生模型无法在异常图像上取得与教师模型相同的输出来进行异常检测。因此,我以为只要找到别人在ImageNet上训练好的权重,接下来直接在我自己的数据集上蒸馏就好了。

        但经过详细阅读我才发现,ImageNet数据集不仅仅是用于教师网络训练那么简单,甚至它并没有直接被用于训练教师网络。EfficientAD是采用了预训练的WideResNet-101来对自己的PDN进行蒸馏。PDN(patch description network)仅仅是一个只有4个卷积层的简单网络,用于将33x33的patch提取出一个特征,这样的网络当然无法直接在ImageNet上预训练。此外,为了进行快速的检测,教师和学生都采用了这种最简单的PDN结构,相同的模型结构会更加容易让学生模型对教师模型产生过度的泛化,进而影响检测效果。为此,在训练阶段,EfficientAD不仅会用到异常检测的数据集,还会用到ImageNet数据集,并惩罚学生在ImageNet数据集上对教师的过度泛化!所以,ImageNet数据集是不可以被省略的!

        解决办法:

        在训练时开启一个代理软件,Anomalib会自动下载ImageNet数据集的。而且下载的不是100多个G的完整数据集,是一个2G左右的数据。这样就可以开启训练啦!官方默认的训练参数是1000个epoch或者70000个step。

        训练时会要求batchsize必须为1,这里我还没有搞懂为什么必须这么做,请知道的朋友留言指点一下,谢谢!

        

从上图可以看出,EfficientAD的可训练参数是非常少的,这就是它速度快的原因。

标签:教师,训练,EfficientAD,模型,Anomalib,ImageNet,数据
From: https://blog.csdn.net/gaooolianggg/article/details/141222968

相关文章

  • windows下yolov8训练环境配置
    安装anaconda3condacreate-nyolov8python=3.8##进入yolov8虚拟环境activateyolov8pipinstallultralyticscondainstallchardet安装pytorch、cudahttps://pytorch.org/get-started/locally/condainstallpytorchtorchvisiontorchaudiopytorch-cuda=11.......
  • 代码随想录算法训练营第43天:动态规划part10:子序列问题
    300.最长递增子序列力扣题目链接(opensnewwindow)给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2......
  • 60行代码就可以训练/微调 Segment Anything 2 (SAM 2)
    SAM2(SegmentAnything2)是Meta开发的一个新模型,可以对图像中的任何物体进行分割,而不局限于特定的类别或领域。这个模型的独特之处在于其训练数据的规模:1100万张图像和110亿个掩码。这种广泛的训练使SAM2成为训练新图像分割任务的强大起点。如果SAM可以分割任何东西,为什么我们还需......
  • 使用diffusers来训练自己的Stable Diffusion 3大模型
    基于diffusers的Stablediffusion训练代码这里给大家介绍一个基于diffusers库来训练stablediffusion相关模型的训练代码,包含Lora、ControlNet、IP-adapter、Animatediff,以及最新的stablediffusion3lora版本的训练代码。现有的一些类似kohya-ss训练器虽然用起来方便,但......
  • 一个单机多卡训练模型的例子
    """Mydemotrainscript."""importargparseimportloggingimportosimportrandomimporttimeimportnumpyasnpimporttorchfromtorchimportnn,optim,Tensorfromtorch.utils.dataimportDataLoader,Datasetdefparse......
  • 大语言模型训练部署流程及步骤
    01.确定需求大小在构建大语言模型的前期准备中,基础设施是最为重要的,GPU的型号以及数据直接关系到模型的训练质量和训练时间。例如:使用单个V100的GPU训练具有1750亿个参数的GPT-3将需要约288年,那就更不用提现在动辄万亿参数的大模型。好在随着A100和H100更强算力资源的推出,......
  • 【机器学习】CNN卷积神经网络算法的基本概念、训练过程(含python代码)和应用领域
    引言卷积神经网络(ConvolutionalNeuralNetwork,CNN)是一种深度学习模型,主要用于图像识别、图像分类、物体检测和计算机视觉等领域文章目录引言一、卷积神经网络(ConvolutionalNeuralNetwork,CNN)1.1基本原理1.2主要结构1.2.1卷积层(ConvolutionalLayer)1.2.2激活函......
  • 图像识别,训练数据集---GPU篇 3090免费使用
     大家一般都在window上训练yolo等一些深度学习模型,会发现很慢或者说GPU显存不够用而云GPU平台则解决了一系列该问题深度学习目标检测交流群1:985499650yolo2D3D目标检测行为识别交流群2:782537412接下来以该平台为例---有一些免费的3090,4090可以用(24G):https://cloud.lanyun.n......
  • 2024牛客暑期多校训练营9 C Change Matrix
    题目大意维护一个\(n\)阶矩阵\(A\),其中最开始\(A_{i,j}=\gcd(i,j)\),共有\(q\)次操作,每次操作将矩阵某一行或某一列同乘一个数\(y\),求每一次操作后矩阵的所有元素之和。对\(10^9+7\)取模。\(n,q\leq10^5\),且保证数据随机生成。思路根据欧拉函数的性质,有\[\sum_{c|i......
  • 百万级超长序列大模型训练如何加速,硬核解读MindSpeed方案
    摘要:针对现有长序列训练场景的痛点,MindSpeed在并行算法、计算效率、内存占用以及通信四个维度系统性优化大模型长序列训练效率,支持大模型百万级长序列训练。1      长序列已经成为主流大模型能力之一23年底Gemini1.5Pro发布以来,大模型序列长度迅速增长,处理超长序列上下......