PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换

Posted datayx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换相关的知识,希望对你有一定的参考价值。



人工智能大数据与深度学习  公众号:datayx



图像分类是计算机视觉的重要领域,它的目标是将图像分类到预定义的标签。近期,许多研究者提出很多不同种类的神经网络,并且极大的提升了分类算法的性能。本文将介绍在数据量很少的情况下,如何使用PaddlePaddle进行迁移学习图像分类。


为什么用PaddlePaddle ?因为百度的AI Studio开发平台可以用免费GPU ~ AI Studio上只能用PaddlePaddle。


明天将介绍keras版~


关键词:迁移学习,免费GPU,图像分类



步骤一  收集数据:


为什么很多教程一开头都介绍手写数字识别?就因为数据已经整理好了。其中的数据处理过程并不讲。

但对于很多人来说,直接将数据整理成模型输入的格式就是一个难点,单单讲手写数字识别并不实用,而且已经写烂大街了,看这样都例子反而让人产生更多都疑惑。

如果小白们在某本新书或者课程上还拿手写数字识别当案例,建议就不要看了~


回到本教程,我们把收集到的图片数据集按分类文件夹放好,比如我们要做的是花朵图片分类,我们新建一个data文件夹,里面存放5类花朵数据,文件夹名字就是类别名字,如下图


PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle


步骤二 : 数据、代码上传AI Studio 平台


AI Studio 地址


https://aistudio.baidu.com/aistudio/projectoverview/public/1


创建一个新项目,项目信息根据自己需求去填,添加数据集的时候要把data文件夹压缩了再上传。


PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle_02


代码部分


本教程使用的是百度PaddleCV的预训练模型,总共好几十种,默认是ResNet50


详细文档地址 

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification?fr=gzh#%E6%95%B0%E6%8D%AE%E5%87%86%E5%A4%87


PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_上传_03

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle_04

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle_05

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_上传_06

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle_07

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle_08

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_上传_09

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_上传_10


我们将该项目代码下载下来,并上传至AI Studio

这份代码,我们主要看 

train.py


它的参数很多,我们可以使用默认的,需要修改的参数,在下一步会讲到。

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_上传_11

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_数据_12


步骤三: 编辑代码、训练模型


新建项目之后,进入项目就是打开了notebook界面


PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_paddle_13


按流程来,我们先将上传的数据集和代码解压。使用下面代码


import zipfile

#路径要填好

#要解压的文件路径

azip = zipfile.ZipFile(/home/aistudio/data/data13196/data.zip) 

#解压后存放的路径

azip.extractall(/home/aistudio/data/data13196/)



接着我们预处理数据,将数据编辑成模型输入的格式,代码如下

https://aistudio.baidu.com/aistudio/projectdetail/56889


只需要根据各自实际情况,修改设置我们数据的位置即可

all_file_dir = /home/aistudio/data/data13196/data


PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_数据_14


train.txt:训练集合的标签文件,每一行采用"空格"分隔图像路径与图像的标签,例如:

train/n02483708/n02483708_2436.jpeg 1

val.txt:训练集合的标签文件,每一行采用"空格"分隔图像路径与图像的标签,例如:

val/ILSVRC2012_val_00000001.jpeg 2



接下来可以开始训练了,使用代码:


!python work/image_classification/train.py

--data_dir=data/data13196/preteatment

--class_dim=5


这里我只修改了两个参数 --data_dir 上面预处理后的数据路径,--class_dim  要分类的类别数。


work/image_classification/train.py

这个是我们上传代码后,train.py的完整路径(根据自己实际情况修改)


如果要使用其他预训练模型,要从

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification?fr=gzh#%E6%95%B0%E6%8D%AE%E5%87%86%E5%A4%87

下载预训练模型,并上传。


然后添加相应的参数:

--model=model_name #模型名字
--pretrained_model=$path_to_pretrain_model #预训练模型路径


模型名字可以在这里查看

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification/scripts/train



经过以上步骤,就可以训练出一个高准确率(最高可达99%以上)的图像分类模型。模型评估,预测代码在项目中也已经提供,详细请看

https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/image_classification








不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换_数据_15

长按图片,识别二维码,点关注




以上是关于PaddlePaddle迁移学习做图像分类,数十种高精度模型任意切换的主要内容,如果未能解决你的问题,请参考以下文章

数十种TensorFlow实现案例汇集

资源 | 数十种TensorFlow实现案例汇集:代码+笔记

用PaddlePaddle实现图像分类-SE_ResNeXt初体验

图像识别基于Matlab的迁移学习的图像分类案例

lsof的数十种高频用法

航拍+AI︱paddlepaddle图像分割实现天空风格迁移(换天漂浮城堡宇宙飞船)