DFL-CNN 使用教程
1. 项目介绍
DFL-CNN 是一个基于 PyTorch 的细粒度分类器,它是对 CVPR 2018 论文《Learning a Discriminative Filter Bank Within a CNN for Fine-Grained Recognition》的简单重实现。该项目使用了 VGG16 作为基础网络,并通过全局平均池化来减少参数。训练在 4 块 Titan V 显卡上进行,经过 120 个周期后,在 batchsize 为 56 的情况下,得到了 Top1 为 85.140%,Top5 为 96.237% 的结果。
2. 项目快速启动
环境准备
确保已经安装了 PyTorch 和其他必要的 Python 库。
数据集准备
你可以从以下地址下载 CUB-200-2011 数据集:
wget http://www.vision.caltech.edu/visipedia-data/CUB-200-2011/CUB_200_2011.tgz
或者从百度云链接获取。下载后,需要将数据集链接到项目目录:
ln -s ./train path/to/code/dataset/train
ln -s ./test path/to/code/dataset/test
训练与测试
修改 run.sh
文件中的 GPU 配置,然后运行:
sh run.sh
训练过程中,损失信息会保存在 log/
目录中。权重文件(checkpoint.pth.tar
和 model_best.pth.tar
)会保存在 weight/
目录中。
可视化
将想要可视化的图片放在 vis_img/
目录下,命名为 number.jpg
。训练过程中,每隔一些周期,十个最佳斑块的结果会被保存在 vis_result/
目录中。
3. 应用案例和最佳实践
- 数据增强:使用 TenCrop 变换可以在测试时进一步提高结果。
- 模型调整:可以尝试使用 ResNet-101 或者多尺度 DFL-CNN 来改进模型性能。
4. 典型生态项目
目前没有列出具体的生态项目,但你可以通过搜索和查看其他使用 PyTorch 进行细粒度分类的项目来扩展 DFL-CNN 的应用范围。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考