项目简介
本项目基于PaddlePaddle框架实现了DCL(Destruction and Construction Learning)模型,用于细粒度图像分类。DCL模型通过“破坏”和“重建”图像的方式,学习区分区域和特征,从而提高细粒度图像分类的准确性。该模型在CVPR 2019上提出,并在多个数据集上取得了优异的表现。
项目的主要特性和功能
- 破坏重建学习:通过区域混淆机制(RCM)和区域对齐网络,学习图像的局部细节和语义相关性。
- 多数据集支持:支持CUB - 200 - 2011、Stanford - Cars和FGVC - Aircraft等多个细粒度图像分类数据集。
- 高精度复现:在CUB - 200 - 2011、Stanford - Cars和FGVC - Aircraft数据集上,复现精度接近或达到论文中的精度。
- 完整功能:包括模型训练、验证、测试、单张图片预测、模型导出和推理等功能。
安装使用步骤
1. 环境准备
- 安装Python 3.7
- 安装PaddlePaddle 2.2.2
- 安装必要的Python库:numpy、pandas、Pillow、tqdm
2. 数据准备
- 下载所需的数据集(CUB - 200 - 2011、Stanford - Cars、FGVC - Aircraft)并解压。
- 修改
main.py
中的数据集路径。
3. 下载项目及训练权重
下载PaddlePaddle的ResNet50预训练权重,并修改main.py
中的预训练权重路径。
4. 训练模型
运行以下命令开始训练:
sh
python -m paddle.distribututed.launch --gpus 0,1 main.py \
--data=CUB \
--backbone=resnet50 \
--epoch=360 \
--lr_step=60 \
--tb=8 \
--vb=8 \
--tnw=16 \
--vnw=16 \
--lr=0.0008 \
--start_epoch=0 \
--detail=dcl_cub \
--size=512 \
--crop=448 \
--swap_num=7
5. 验证模型
运行以下命令验证模型:
sh
python test.py --gpus=0 --data=CUB --pdparams=./outputs/CUB/checkpoints/dcl_cub-20220422-143357.pdparams --vb=16 --vnw=16 --size=512
6. 单张图片预测
运行以下命令进行单张图片预测:
sh
python predict.py --data CUB_TINY --img resources/Black_Footed_Albatross_0001_796111.jpg --pdparams outputs/CUB_TINY/checkpoints/dcl_cub_tiny-cub_tiny.pdparams
7. 模型导出
运行以下命令导出模型:
sh
python export_model.py --data CUB_TINY --save_dir outputs/STATIC --model_path outputs/CUB_TINY/checkpoints/dcl_cub_tiny-cub_tiny.pdparams
8. 模型推理
运行以下命令进行模型推理:
sh
python infer.py --model_file outputs/STATIC/model.pdmodel --params_file outputs/STATIC/model.pdiparams --img resources/Black_Footed_Albatross_0001_796111.jpg
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】