首页 / 更多教程 / paddleclas 入门
paddleclas 入门
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了paddleclas 入门,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5615字,纯文字阅读大概需要9分钟。
内容图文
![paddleclas 入门](/upload/InfoBanner/zyjiaocheng/998/655fa6b98d7342a3a53b1ed7902ad32b.jpg)
文章目录
前言
简要记录paddleclass入门教程,便于以后使用
一、解压数据集
!unzip -q data/data68810/螺栓质量检测-训练集.zip -d ~/work/data
二、划分训练集和测试集
在研究过程中发现可用jikuai来代替一系列繁琐的工程代码
!pip install jikuai -q
# 想把数据集列表放在哪里,就在哪个目录下执行下面的命令。这里我们生成数据集列表文件在用户根目录:~/目录 。
%cd ~/
from jikuai.dataset import Dataset
dataset = Dataset("work/data/螺栓质量检测-训练集") # 参数为数据集所在的位置,是分类目录的上一级目录
dataset.paddleclastxt(0.8) # 生成训练集和测试集列表,参数为两者划分的比例值。
!ls
三、选PaddleClas模型并训练
1.配置yaml文件
paddleclas可以通过配置的yaml文件来进行训练
我们可以在work路径中创建model文件夹,创建yaml文件,下面我以ResNet50_vd为例,标注配置文件中的重要参数
mode: 'train'
ARCHITECTURE:
name: 'ResNet50_vd'
checkpoints: "" #断点模型路径,用于恢复训练
last_epoch:-1 #上一次训练结束时已经训练的epoch数量,与checkpoints一起使用
pretrained_model: "" #预训练模型路径
model_save_dir: "./output/"
classes_num: 2
total_images: 320
save_interval: 1 #每隔多少个epoch保存模型
validate: True
valid_interval: 1
epochs: 20 #训练总epoch数
topk: 2 #评估指标K值大小
image_shape: [3, 224, 224]
LEARNING_RATE:
function: 'Cosine'
params:
lr: 0.0125
OPTIMIZER:
function: 'Momentum'
params:
momentum: 0.9
regularizer:
function: 'L2'
factor: 0.00001
TRAIN:# 训练配置
batch_size: 32 # 训练的batch size
num_workers: 0 # 每个trainer(1块GPU上可以视为1个trainer)的进程数量
file_list: "../train.txt" # 训练集标签文件,每一行由"image_name label"组成
data_dir: "../" # 训练集的图像数据路径
shuffle_seed: 0 # 数据打散的种子
transforms: # 训练图像的数据预处理
- DecodeImage: # 解码
to_rgb: True
to_np: False
channel_first: False
- RandCropImage: # 随机裁剪
size: 224
- RandFlipImage: # 随机水平翻转
flip_code: 1
- NormalizeImage: # 归一化
scale: 1./255.
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
order: ''
- ToCHWImage: # 通道转换
VALID:
batch_size: 20
num_workers: 0
file_list: "../eval.txt"
data_dir: "../"
shuffle_seed: 0
transforms:
- DecodeImage:
to_rgb: True
to_np: False
channel_first: False
- ResizeImage:
resize_short: 256
- CropImage:
size: 224
- NormalizeImage:
scale: 1.0/255.0
mean: [0.485, 0.456, 0.406]
std: [0.229, 0.224, 0.225]
order: ''
- ToCHWImage:
# confit.txt
vdl_dir: "../log/resnet50" #log输出,后续可用于可视化与恢复训练
2.PaddleClas普通训练
安装paddleclas
!git clone https://gitee.com/paddlepaddle/PaddleClas
%cd ~/PaddleClas/
# 切换到develop版本,这个版本才支持visualdl
!git checkout develop
!python3 tools/train.py -c ~/work/luomu/ResNet50_vd.yaml
3.采取预训练模型进行训练
#下载预训练模型
!mkdir pretrained
!cd pretrained && wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vd_pretrained.pdparams
事实上,我们可以利用这串代码,修改其中的模型名称来获取预训练模型
!cd pretrained && wget https://paddle-imagenet-models-name.bj.bcebos.com/dygraph/ResNet50_vd_pretrained.pdparams
下面这个网址为预训练模型的名称
https://gitee.com/paddlepaddle/PaddleClas#resnet%E5%8F%8A%E5%85%B6vd%E7%B3%BB%E5%88%97
下载预训练模型后,可以重新创建一个配置文件,加上参数 pretrained_model
pretrained_model: "./pretrained/ResNet50_vd_pretrained" #预训练模型路径
!python3 tools/train.py -c ~/work/luomu/ResNet50_vd_finetune.yaml
4.断点训练模型
在实际训练过程,经常发生gpu配额不足的情况,我们可以进行断点训练来应对
例如,在epoch10时发生了断点,我们可以通过以下代码进行恢复训练
python tools/train.py \
-c ./configs/quick_start/ResNet50_vd.yaml \
-o checkpoints="./output/ResNet50_vd/10/ppcls" \
-o last_epoch=10 \
-o use_gpu=True
可以 VisualDL可视化看下效果
三、选PaddleClas模型并训练
1.模型评估
在训练的过程中,PaddleClas就可以进行边训练边评估,并根据评估的精度值将最优模型参数存储在output/xxx/best_model目录中。 在训练结束后,可以再单独使用eval.py文件进行评估操作。
!python tools/eval.py \
-c ~/work/luomu/ResNet50_vd_finetune.yaml \
-o pretrained_model="./output/ResNet50_vd/best_model/ppcls"\
-o load_static_weights=False
2. 用预训练模型进行模型预测
模型训练完成之后,可以加载训练得到的预训练模型(就是存盘文件),进行模型预测。
!python tools/infer/infer.py \
-i ~/work/test \
--model ResNet50_vd \
--pretrained_model "output/ResNet50_vd/19/ppcls" \
--load_static_weights False \
--class_num=2
3. 转换模型
在训练的过程中,PaddleClas已经将模型存储起来。但是这时候存储的模型适合继续训练的时候调用,相当于打游戏的存盘文件。在真实应用中,一般会转换成专用的推理模型格式,这个格式在推理的时候速度会远远快于存盘的模型。
转换模型只需要用下面的命令就行了,注意不要忽略–class_dim=2参数,如果忽略,系统会按照默认1000分类来转换模型。
!python tools/export_model.py \
--model "ResNet50_vd" \
--pretrained_model=output/ResNet50_vd/best_model/ppcls \
--output_path=output/resnet50vdmodel \
--class_dim=2
4.使用inference模型进行模型推理
转换完成后,使用python predict.py进行模型推理。注意推理模型会有两个文件,后缀分别为pdmodel和pdiparams ,因为有pdmodel文件,所以在推理的时候就不需要像预测里面需要–model参数,而是需要告知模型文件–model_file。
!python tools/infer/predict.py \
--image_file ~/work/test \
--model_file "./output/resnet50vdmodel/inference.pdmodel" \
--params_file "./output/resnet50vdmodel/inference.pdiparams" \
--use_tensorrt=False
5.对单张图片就行推理操作
# 也可以使用-i 参数对单张图片就行推理操作
!python tools/infer/predict.py \
-i=../work/test/neg_1.png \
--model_file "./output/resnet50vdmodel/inference.pdmodel" \
--params_file "./output/resnet50vdmodel/inference.pdiparams" \
# --use_tensorrt=True
未完待续
内容总结
以上是互联网集市为您收集整理的paddleclas 入门全部内容,希望文章能够帮你解决paddleclas 入门所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。