项目简介
本项目基于PaddlePaddle框架实现了PeleeNet模型。PeleeNet是由传统卷积法构建的高效卷积神经网络架构,在速度上相比其他高效架构优势明显,可广泛应用于图像分类及其他计算机视觉任务。
项目的主要特性和功能
- 高效架构:基于DenseNet思想构建,计算效率高。
- 数据增强支持:支持RandAugment、AutoAugment和AugMix等多种数据增强技术,提升模型泛化能力。
- 模型评估:提供模型评估功能,可计算模型在验证集上的准确率。
- 模型导出:支持将模型导出为静态图模型,便于部署和推理。
- 分布式训练:支持分布式训练,有效提升训练速度。
安装使用步骤
假设用户已下载本项目的源码文件,可按以下步骤操作:
准备环境
- 硬件:建议使用4 * RTX3090。
- 框架:安装PaddlePaddle >= 2.2.0版本,可参考以下命令:
- 安装GPU版本的Paddle:
pip install paddlepaddle-gpu==2.2.0
- 安装CPU版本的Paddle:
pip install paddlepaddle==2.2.0
- 更多安装方法可参考Paddle安装指南。
- 安装GPU版本的Paddle:
- 下载代码:
bash cd PeleeNet-paddle
- 安装依赖:
bash pip install -r requirements.txt
- 准备数据:若已有ImageNet1k数据集可跳过此步骤;若没有,可从ImageNet官网申请下载。
模型训练
- 单机多卡预训练:
shell export CUDA_VISIBLE_DEVICES=0,1 python -m paddle.distributed.launch --gpus="0,1" \ main.py \ --model peleenet \ --batch_size 256 \ --aa '' --smoothing 0 --train_interpolation 'bilinear' --reprob 0 \ --mixup 0 --cutmix 0 \ --opt momentum --weight_decay 1e-4 --min_lr 0 --warmup_epochs 0 \ --lr 0.18 --epochs 120 \ --data_path /path/to/imagenet/ \ --cls_label_path_train /path/to/train_list.txt \ --cls_label_path_val /path/to/val_list.txt \ --output_dir output/peleenet_pt/ \ --dist_eval
若未指定cls_label_path_train
/cls_label_path_val
,会读取data_path
下train/val里的图片作为train-set/val-set。 - 微调训练:
shell export CUDA_VISIBLE_DEVICES=0,1 python -m paddle.distributed.launch --gpus="0,1" \ main.py \ --model peleenet \ --batch_size 256 \ --aa '' --smoothing 0 --train_interpolation 'bilinear' --reprob 0 \ --mixup 0 --cutmix 0 \ --opt momentum --weight_decay 1e-4 --min_lr 0 --warmup_epochs 0 \ --lr 0.005 --epochs 20 \ --data_path /path/to/imagenet/ \ --cls_label_path_train /path/to/train_list.txt \ --cls_label_path_val /path/to/val_list.txt \ --output_dir output/peleenet_ft/ \ --dist_eval \ --no_remove_head_from_pretained --finetune $PRETRAINED_MODEL
若未指定cls_label_path_train
/cls_label_path_val
,会读取data_path
下train/val里的图片作为train-set/val-set。
模型评估
shell
python eval.py \
--model peleenet \
--batch_size 256 \
--train_interpolation 'bilinear' \
--data_path /path/to/imagenet/ \
--cls_label_path_val /path/to/val_list.txt \
--resume $TRAINED_MODEL
若未指定cls_label_path_val
,会读取data_path
/val里的图片作为val-set。
模型预测
shell
python predict.py \
--model peleenet \
--infer_imgs./demo/ILSVRC2012_val_00020010.JPEG \
--resume $TRAINED_MODEL
模型导出
```shell python export_model.py \ --model peleenet \ --output_dir /path/to/save/export_model/ \ --resume $TRAINED_MODEL
python infer.py \ --train_interpolation 'bilinear' \ --model_file /path/to/save/export_model/output/model.pdmodel \ --params_file /path/to/save/export_model/output/model.pdiparams \ --input_file./demo/ILSVRC2012_val_00020010.JPEG ```
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】