AP-CNN: Weakly Supervised Attention Pyramid Convolutional Neural Network论文复现

这是21年发表在IEEE上的一篇关于弱监督注意力金字塔卷积神经网络用于细粒度识别的一篇论文的代码。
论文地址:https://ieeexplore.ieee.org/document/9350209
github地址:https://github.com/PRIS-CV/AP-CNN_Pytorch-master
跑完这篇代码之后,觉着这篇代码很容易上手,可以从中学习到不少知识!
1、环境
关于环境、github上给的很清楚、不再累赘。
在这里插入图片描述
需要注意的是,安装open-cv的时候可能会遇到问题,下面给出我的安装步骤:
https://blog.csdn.net/hb_learing/article/details/114926316
关于可视化的工具visdom,我没有用,有想要用的小伙伴可以自己尝试!
2、数据集的加载

trainset = torchvision.datasets.ImageFolder(root=train_dir, transform=transform_train)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size, shuffle=True, num_workers=4)
testset = torchvision.datasets.ImageFolder(root=test_dir, transform=transform_test)
testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size, shuffle=False, num_workers=4)

直接使用了pytorch中的ImageFolder、DataLoader类,使用之前的准备工作就是要把训练和测试的图片分别放在train_dir、test_dir文件夹中,由以下的三个文件完成、然后torch的这两个类会自动加载train_dir、test_dir文件夹下的图片。也是挺方便的!
在这里插入图片描述
以CUB200为例,把数据集放到相应的文件夹目录下,运行split_dataset文件夹下的python文件即可把CUB数据集分割!分割后效果如下:

python utils/split_dataset/birds_dataset.py

在这里插入图片描述
3、然后就直接加载模型训练
选择对应的参数即可(三个数据集、两个主干网络):

python train.py --dataset {cars,airs,birds} --model {resnet50,vgg19} 

4、结果:
以下的结果都是在resnet50上跑出的结果(从论文中可看到resnet50优于vgg19):
CUB200:86.7%
在这里插入图片描述
Airs:93.4%
在这里插入图片描述
Cars:93.6%
在这里插入图片描述
在CUB200数据集上表现的不是很突出,在另外两个数据集上表现不错!

个人认为这篇论文还是很强的,代码方面简洁又清晰。论文方面亮点如下:
1)、提出了一种新的双路径体系结构,它结合了自顶向下的特征路径和自底向上的关注路径,从而为细粒度分类学习增强的高层语义和低层细节表示。
2)、在金字塔关注的基础上,采用弱监督自适应区域建议生成器生成具有自适应大小的区分性区域。该生成器允许网络在不使用box/part注释的情况下定位重要区域。
3)、我们提出了一个由感兴趣区域引导的投影块(dropblock)和感兴趣区域引导的放大操作(zoom-in operation)组成的感兴趣区域引导的细化模块,以进一步细化特征。dropblock操作有助于定位更具区分性的局部区域,而放大操作将特征与消除的背景噪声对齐。
在三个普遍测试的FGVC数据集(CUB-200-2011 [16]、斯坦福车[17]和FGVC-飞机[18])上进行了广泛的实验。可视化和消融研究进一步进行,以得出关于该方法的见解。实验结果表明,该模型显著提高了细粒度分类的准确性。
在这里插入图片描述
值得学习的一篇文章!推荐一波。

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值