cqylunlun / GLASS

[ECCV 2024] Official Implementation and Dataset Release for <A Unified Anomaly Synthesis Strategy with Gradient Ascent for Industrial Anomaly Detection and Localization>
MIT License
130 stars 17 forks source link

Why wideresnet101 is not good as wideresnet50? #13

Closed durongzheng closed 4 weeks ago

durongzheng commented 1 month ago

我的实验设置:distribution - 2, imagesie - 512, resize - 512 数据集:MVTec AD / screw screw 数据的测试集包含41个良品和119个缺陷品。

一、先用 wideresnet50 主干,评估如下:

image_auroc:99.67 image_ap:99.89 pixel_auroc:99.61 pixel_ap:55.94 pixel_pro:0.0 best_epoch:260   

然后用 test 方式拿到测试集异常分数 scores,检查:

  1. 良品的最高异常分数,缺陷品的最低异常分数;
  2. 如果用良品最高异常分数作为异常阈值,则不会过杀,但缺陷品中将有7个漏检;
  3. 如果用缺陷品最低异常分数作为异常阈值,则不会漏检,但缺陷品中将有6个过杀。

二、换成 wideresnet101 主干,评估如下:

image_auroc:98.07 image_ap:99.36 pixel_auroc:99.43 pixel_ap:53.84 pixel_pro:0.0 best_epoch:148 

用 test 方式拿到测试集异常分数 scores,检查:

  1. 良品的最高异常分数,缺陷品的最低异常分数;
  2. 如果用良品最高异常分数作为异常阈值,不会过杀,但缺陷品中将有22个漏检;
  3. 如果用缺陷品最低异常分数作为异常阈值,不会漏检,但缺陷品中将有22个过杀。

我的问题是:为什么参数量更大的 101 表现还不如 50?

cqylunlun commented 1 month ago

根据您的详细实验,参数量更大的WideResNet101表现差于WideResNet50。异常检测领域中普遍采用WideResNet50,由于我们没有做过WideResNet101的实验,目前仅进行如下猜测:

本算法默认只使用了Backbone的第二块和第三块,而WideResNet101WideResNet50在这两块的卷积层数相同(分别为3个和4个残差块)。然而,由于WideResNet101网络整体更深,通常有更大的 batch normalization 参数空间和额外的调整配置,这些会导致总的网络参数数量不同。在这种情况下,WideResNet101的优势无法完全体现出来,因为它的额外深度(主要集中在第四块)没有被利用。作为结果,较浅的WideResNet50可能会更高效,且更不容易过拟合,从而在该任务下表现更好。

上述分析仅供参考,我们建议更换不同的参数 layer(特别是layer4的组合)进行实验。

durongzheng commented 1 month ago

好的,我实验一下。只是 layer2 和 layer3 的输出通道都是 1024, 可以 concat,layer4 的输出通道是 2048, 得做点儿处理才行。