Advertisement

Learning Semantically Enhanced Feature for Fine-Grained Image Classification论文复现

阅读量:

Title: Developing Semantically Enhanced Representations for Fine-Grained Image Classification
Writers: Wei Luo (Senior Member, IEEE), Hengmin Zhang, Jun Li, and Xiu-Shen Wei
Conference: IEEE 2020
作者单位:South China Agricultural University, Guangzhou, China; East China University of Science and Technology, Shanghai, China; Nanjing University of Science and Technology, Nanjing, China
论文链接:
https://ieeexplore.ieee.org/document/9180030
代码链接:
https://github.com/cswluo/SEF

  1. 加载数据集
    进入此目录:
在这里插入图片描述

然后把CUB200官方给的四个txt文件放到此目录下,直接加载:

在这里插入图片描述

运行python文件:
这里以鸟类数据集为例:

复制代码
    python cubbirds-imdb.py
    
    
      
    
    代码解释

在当前目录下会生成imdb.pkl文件,在后续步骤中会完成数据集的读取过程。

在这里插入图片描述

运行之前,在main.py文件目录下必须创建results、models和ckpt三个文件夹。如果不这样做,在运行过程中可能会遇到找不到这些文件的错误。这是处理此类问题最直接的方法。

在这里插入图片描述

运行main.py
先在resnet50 backbone上进行训练

复制代码
    python main.py
    
    
      
    
    代码解释

结果:

在这里插入图片描述

最大值仅为86.8%,而研究者在其论文中报告的数值为87.3%,仅差百分之一半左右!这似乎暗示着某种技术细节上的改进。
无奈地发现,在使用Resnext50架构时(即Resnext50设置为batch_size=16),模型无法正常运行。
无奈地发现,在使用batch_size=32时运行失败(即模型无法收敛),经排查发现原因在于显存不足(即计算过程中遇到了内存限制)。最终不得不将批次大小缩减至原先的一半(即16)以完成训练任务。

最后的结果竟然降低了!85.59%,与论文中给的87.8%相比,差远了。

论文中的结果:

在这里插入图片描述

3.直接用作者给的模型测试、评估

Github上分享了百度资源:i5wk

还是以CUB200为例、共有三个model:
1、cubbirds-resnext50-att4-lmgm1-entropy1-soft0.05-lr0.01-imgsz448-bsz32.model
说下:

在这里插入图片描述

经测试,在resnext50、等参数条件下确实达到了论文中的87.8%精度!

2、cubbirds-resnext50-att1-lmgm0-entropy0-soft0-lr0.01-imgsz448-bsz32.model
注意:

复制代码
    python eval.py
    
    
      
    
    代码解释

报错,应该是加载模型参数时过于严格

在这里插入图片描述

我是把参数strict改为False后发现正常运行了!

在这里插入图片描述

精度吻合!

3、cubbirds-resnet50 -att4-lmgm1-entropy1-soft0.05-lr0.01-imgsz448-bsz32.model

哈哈,第一次运行的时候精度没达到正常的水平:

在这里插入图片描述

当我将npart参数强制设置为1时(如上图所示),结果令人满意地达到了论文中所描述的精度水平。(虽然有些难以理解)看到这个结果后会让人感到困惑的是:在训练阶段nparts都设置为4(而测试阶段却意外地全部变为1)。

全部评论 (0)

还没有任何评论哟~