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

        在前几篇博文中,我使用了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的可训练参数是非常少的,这就是它速度快的原因。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值