cnulab / RealNet

Offical implementation of "RealNet: A Feature Selection Network with Realistic Synthetic Anomaly for Anomaly Detection (CVPR 2024)"
MIT License
143 stars 5 forks source link

efficientnet_b4 #39

Open wuwuwuyue opened 2 weeks ago

wuwuwuyue commented 2 weeks ago

你好!不好意思又来打扰了,之前按照你提供的配置文件我们更换了backbone为efficientnet_b4,但是在训练过程我们发现loss近乎无穷,而在wide_resnet上没有这个问题, 您看方不方便再检查一下backbone替换为efficientnet_b4的问题,万分感谢

cnulab commented 1 week ago

你好! 这个问题是由于timm在0.5.4版本前后对于BatchNorm的不同行为导致的。 你可以参考 https://github.com/huggingface/pytorch-image-models/issues/1444 https://github.com/huggingface/pytorch-image-models/issues/1631

解决方案:

  1. 使用efficientnet_b4训练只需要单卡,可以直接删除掉train_realnet.py中的
    model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model) #注释掉这一行

    https://github.com/huggingface/pytorch-image-models/issues/1254

wuwuwuyue commented 1 week ago

非常感谢你的帮助!关于其他backbone的配置您看有空的时候方不方便上传一下

cnulab commented 1 week ago

ResNet34 的配置


structure:
  - name: block1
    layers:
      - idx: layer1
        planes: 64
    stride: 4

  - name: block2
    layers:
      - idx: layer2
        planes: 128
    stride: 8

  - name: block3
    layers:
      - idx: layer3
        planes: 256
    stride: 16

  - name: block4
    layers:
      - idx: layer4
        planes: 256
    stride: 32

net:
  - name: backbone
    type: models.backbones.Backbone
    frozen: True
    kwargs:
      backbone: resnet34

  - name: afs
    type: models.afs.AFS
    frozen: True
    prev: backbone
    kwargs:
      init_bsn: 64

  - name: recon
    type: models.recon.ReconstructionLayer
    prev: afs
    kwargs:
      num_res_blocks: 2
      hide_channels_ratio: 0.5
      channel_mult: [1,2,4]
      attention_mult: [2,4]

  - name: rrs
    type: models.rrs.RRS
    prev: recon
    kwargs:
      modes: [max,mean]
      mode_numbers: [128,128]
      num_residual_layers: 2
      stop_grad: False