PaddlePaddle:CNN对Cifar10图像分类(1)

文章目录

  • PaddlePaddle:CNN对Cifar10图像分类(1)
    • (一)PaddlePaddle简介
      • 1.PaddlePaddle
      • 2.Paddle套件
    • (二)卷积神经网络CNN
      • 1.卷积神经网络的层级结构
      • 2.典型的卷积神经网络
    • (三)Cifar10和Cifar100数据集
      • 1.cifar10数据集
      • 2.cifar100数据集
    • (四)数据集加载和预处理
      • 1.数据集加载
      • 2.数据加载器

(一)PaddlePaddle简介

1.PaddlePaddle

飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个开源开放、技术领先、功能完备的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。目前,飞桨已凝聚超265万开发者,服务企业10万家,基于飞桨开源深度学习平台产生了34万个模型
[1] 。飞桨助力开发者快速实现AI想法,快速上线AI业务。帮助越来越多的行业完成AI赋能,实现产业智能化升级。

2.Paddle套件


开发套件

1.ERNIE
飞桨语义理解套件,基于持续学习语义理解预训练框架,使用多任务学习增量式构建预训练任务,支持各类训练任务的Fine-tuning,保证极速推理的Fast-Inference API,兼具灵活部署的ERNIE Service和具备轻量方案的ERNIE Tiny系列工具集。
2.PaddleClas
飞桨图像分类套件,目的是为工业界和学术界提供便捷易用的图像分类任务预训练模型和工具集,打通模型开发、训练、压缩、部署全流程,辅助其它高层视觉任务组网并提升模型效果,助力开发者训练更好的图像分类模型和应用落地。
3.PaddleSeg
飞桨图像分割套件PaddleSeg覆盖了U-Net、DeepLabv3+、ICNet、PSPNet和HRNet等主流的分割模型。通过模块化的设计,以配置化方式驱动模型组合,帮助开发者更便捷地完成从训练到部署的全流程图像分割应用。
4.PaddleDetection
飞桨目标检测开发套件,旨在帮助开发者更快更好地完成检测模型的训练、精度速度优化到部署全流程。PaddleDetection以模块化的设计实现了多种主流目标检测算法,并且提供了丰富的数据增强、网络组件、损失函数等模块,集成了模型压缩和跨平台高性能部署能力。目前基于PaddleDetection已经完成落地的项目涉及工业质检、遥感图像检测、无人巡检等多个领域。
5.PaddleOCR
飞桨文字识别套件,旨在打造一套丰富、领先、实用的文字检测、识别模型/工具库,开源了超轻量级中文OCR模型和通用中文OCR模型,提供了数十种文本检测、识别模型训练方法,助力使用者训练出更好的模型,并应用落地。
6.ElasticCTR
飞桨弹性计算推荐套件,可以实现分布式训练CTR预估任务和基于PaddleServing的在线个性化推荐服务。PaddleServing服务化部署框架具有良好的易用性、灵活性和高性能,可以提供端到端的CTR训练和部署解决方案。ElasticCTR具备产业实践基础、弹性调度能力、高性能和工业级部署等特点。
7.PLSC
飞桨海量类别分类套件,为用户提供了大规模分类任务从训练到部署的全流程解决方案。提供简洁易用的高层API,通过数行代码即可实现千万类别分类神经网络的训练,并提供快速部署模型的能力。Parakeet 飞桨语音合成套件,提供了灵活、高效、先进的文本到语音合成工具,帮助开发者更便捷高效地完成语音合成模型的开发和应用。

工具套件

1.PaddleHub
飞桨预训练模型应用工具,覆盖文本、图像、视频三大领域超过130个高质量预训练模型。开发者可以轻松结合实际业务场景,选用高质量预训练模型并配合Fine-tuneAPI快速完成模型验证与应用部署工作。适用于个人开发者学习、企业POC快速验证、参加AI竞赛以及教学科研等多种业务场景。 PARL飞桨深度强化学习框架,在NeurIPS2019和NeurIPS2018挑战赛中夺冠。具有高灵活性、可扩展性和高性能的特点,覆盖TD3、PPO、IMPALA、A2C、GA3C等10+主流强化学习算法以及EvolutionAlgorithm进化学习算法,支持大规模并行训练和线上快速部署。
2.AutoDL
飞桨自动化深度学习工具,旨在自动网络结构设计,开源的AutoDL设计的图像分类网络在CIFAR10数据集正确率达到98%,效果优于目前已公开的10类人类专家设计的网络,居于业内领先位置。(数据来源:内部测试10种网络分别为:vgg_15_BN_64、vgg_16、resnet_32、resnet_56、resnet_110、resnet_v2_bottleneck_164、wide_resnet、densenet_BC_100_12、resnet_29_8x64d、shake_shake_64d_cutout,实际结果可能受测试环境影响而在一定范围内变化,仅供参考)
3. VisualDL
飞桨可视化分析工具,以丰富的图表呈现训练参数变化趋势、模型结构、数据样本、高维数据分布等。帮助用户清晰直观地理解深度学习模型训练过程及模型结构,进而实现高效的模型调优。
4. PALM
飞桨多任务学习框架,一个灵活、通用且易于使用的NLP大规模预训练和多任务学习框架,旨在快速开发高性能NLP模型的上层框架。使用PALM可以非常轻松灵活的探索具有多种任务辅助训练的“高鲁棒性”阅读理解模型,基于PALM训练的模型D-Net在EMNLP2019国际阅读理解评测中夺得冠军。
5.PGL
飞桨图学习框架,业界首个提出通用消息并行传递机制,支持百亿规模巨图的工业级图学习框架。原生支持异构图,支持分布式图存储及分布式学习算法,覆盖20+图学习模型,包括自研深度语义图模型ERNIESage等。历经大量真实工业应用验证,能够灵活、高效地搭建前沿的大规模图学习算法。
6. PaddleFL
飞桨联邦学习框架,研究人员可以很轻松地用PaddleFL复制和比较不同的联邦学习算法,便捷地实现大规模分布式集群部署,并且提供丰富的横向和纵向联邦学习策略及其在计算机视觉、自然语言处理、推荐算法等领域的应用。此外,依靠着PaddlePaddle的大规模分布式训练和Kubernetes对训练任务的弹性调度能力,PaddleFL可以基于全栈开源软件轻松部署。
7.Paddle Quantum
飞桨量子机器学习框架,提供量子优化、量子化学等前沿应用工具集,常用量子电路模型,以及丰富的量子机器学习案例,帮助开发者便捷地搭建量子神经网络。
8.PaddleCloud
飞桨云上任务提交工具,能够帮助您一键发起深度学习任务,为您提供快速打通云上计算资源通道,支持您快速发起单机/分布式飞桨核心框架训练任务,致力于推动AI应用更广泛地落地。
9.PaddleX
飞桨全流程开发工具,集成了飞桨视觉套件、模型压缩工具PaddleSlim、可视化分析工具VisualDL、轻量化推理引擎PaddleLite等核心模块的能力,并提供简明易懂的Python API,方便用户根据实际生产需求进行直接调用或二次开发。PaddleX具备全流程打通、融合产业实践、易用易集成三大特点,为开发者提供飞桨全流程开发的最佳实践。

(二)卷积神经网络CNN

1.卷积神经网络的层级结构


主要有以下层次:

(1) 数据输入层/ Input layer

主要有三种常见的数据处理方式:

(2) 卷积计算层/ CONV layer

CNN相关概念:

卷积和计算:

卷积神经网络重要机制:

(3) 激励层 / Activation layer

几种重要的激活函数:
(4) 池化层 / Pooling layer

(5) 全连接层 / FC layer

(6) Batch Normalization层(可能有)

2.典型的卷积神经网络

  • LeNet,这是最早用于数字识别的CNN
  • AlexNet,2012 ILSVRC比赛远超第2名的CNN,比LeNet更深,用多层小卷积层叠加替换单大卷积层。
  • ZF Net,2013 ILSVRC比赛冠军
  • GoogLeNet,2014 ILSVRC比赛冠军
  • VGGNet,2014 ILSVRC比赛中的模型,图像识别略差于GoogLeNet
  • GoogLeNet,但是在很多图像转化学习问题(比如objectdetection)上效果很好
  • ResNet,2015ILSVRC比赛冠军,结构修正(残差学习)以适应深层次CNN训练。
  • DenseNet,CVPR2017 best paper,把ResNet的add变成concat

(三)Cifar10和Cifar100数据集

1.cifar10数据集

CIFAR-10数据集由10个类的60000个32x32彩色图像组成,每个类有6000个图像有50000个训练图像和10000个测试图像。数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的恰好1000个随机选择的图像。训练批次以随机顺序包含剩余图像,但一些训练批次可能包含来自一个类别的图像比另一个更多。总体来说,五个训练集之和包含来自每个类的正好5000张图像。以下是数据集中的类,以及来自每个类的10个随机图像:
下载数据集:打开Cifar10官网,从Vision下载所需的部分,然后可以按照官网的教程学习后面的压缩过程。

2.cifar100数据集

这个数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像。,每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类)

超类 类别
水生哺乳动物 海狸,海豚,水獭,海豹,鲸鱼
水族馆的鱼,比目鱼,射线,鲨鱼,鳟鱼
花卉 兰花,罂粟花,玫瑰,向日葵,郁金香
食品容器 瓶子,碗,罐子,杯子,盘子
水果和蔬菜 苹果,蘑菇,橘子,梨,甜椒
家用电器 时钟,电脑键盘,台灯,电话机,电视机
家用家具 床,椅子,沙发,桌子,衣柜
昆虫 蜜蜂,甲虫,蝴蝶,毛虫,蟑螂
大型食肉动物 熊,豹,狮子,老虎,狼
大型人造户外用品 桥,城堡,房子,路,摩天大楼
大自然的户外场景 云,森林,山,平原,海
大杂食动物和食草动物 骆驼,牛,黑猩猩,大象,袋鼠
中型哺乳动物 狐狸,豪猪,负鼠,浣熊,臭鼬
非昆虫无脊椎动物 螃蟹,龙虾,蜗牛,蜘蛛,蠕虫
宝贝,男孩,女孩,男人,女人
爬行动物 鳄鱼,恐龙,蜥蜴,蛇,乌龟
小型哺乳动物 仓鼠,老鼠,兔子,母老虎,松鼠
树木 枫树,橡树,棕榈,松树,柳树
车辆1 自行车,公共汽车,摩托车,皮卡车,火车
车辆2 割草机,火箭,有轨电车,坦克,拖拉机
Superclass Classes
aquatic mammals beaver, dolphin, otter, seal, whale
flowers orchids, poppies, roses, sunflowers, tulips
food containers bottles, bowls, cans, cups, plates
fruit and vegetables apples, mushrooms, oranges, pears, sweet peppers
household electrical devices clock, computer keyboard, lamp, telephone, television
household furniture bed, chair, couch, table, wardrobe
insects bee, beetle, butterfly, caterpillar, cockroach
large carnivores bear, leopard, lion, tiger, wolf
large man-made outdoor things bridge, castle, house, road, skyscraper
large natural outdoor scenes cloud, forest, mountain, plain, sea
large omnivores and herbivores camel, cattle, chimpanzee, elephant, kangaroo
medium-sized mammals fox, porcupine, possum, raccoon, skunk
non-insect invertebrates crab, lobster, snail, spider, worm
people baby, boy, girl, man, woman
reptiles crocodile, dinosaur, lizard, snake, turtle
small mammals hamster, mouse, rabbit, shrew, squirrel
trees maple, oak, palm, pine, willow
vehicles 1 bicycle, bus, motorcycle, pickup truck, train
vehicles 2 lawn-mower, rocket, streetcar, tank, tractor

(四)数据集加载和预处理

1.数据集加载

import os
import gzip
from struct import unpack
import numpy as np# 从文件中加载 CIFAR-10 数据集
def cifar10(data_path='./data', data_split=None):if data_split is None:split = ['data_batch', 'test_batch']elif data_split == 'train':split = ['data_batch', ]elif data_split == 'test':split = ['test_batch', ]else:raise ValueError('data_split should be in (train, test)')print('loading CIFAR-10 dataset ......')data = []with tarfile.open(os.path.join(data_path, 'cifar-10-python.tar.gz'), mode='r') as f:for item in split:images, labels = [], []for file_name in f:if item in file_name.name:temp = pickle.load(f.extractfile(file_name.name), encoding='bytes')images.append(temp[b'data'])labels += temp[b'labels']images = np.concatenate(images, axis=0).reshape(-1, 3, 32, 32)labels = np.array(labels).reshape(-1, 1)assert images.shape[0] == labels.shape[0], \'length of images({}) should be the same as labels({})'.format(images.shape[0], labels.shape[0])data.append((images, labels))return tuple(data)

2.数据加载器

import random
import numpy as np# 数据加载器
def data_loader(data, batch_size=100, shuffle=False):images = (data[0].astype('float32') / 255.0 - 0.5) / 0.5 # 数据归一化: 0~255 -->> -1~1labels = data[1].astype('int64')assert images.shape[0] == labels.shape[0], \'length of images({}) should be the same as labels({})'.format(images.shape[0], labels.shape[0])data_ids = list(range(labels.shape[0]))def generator():if shuffle:random.shuffle(data_ids)batch_image, batch_label = [], []for i in data_ids:batch_image.append(images[i])batch_label.append(labels[i])# 返回批数据if len(batch_label) == batch_size:yield np.array(batch_image), np.array(batch_label)batch_image, batch_label = [], []if len(batch_label) > 0:yield np.array(batch_image), np.array(batch_label)return generatorif __name__ == '__main__':for data_name in ('mnist', 'cifar10'):train_data, test_data = eval(data_name)()print(data_name)print('train_data', train_data[0].shape, train_data[1].shape, train_data[0].dtype, train_data[1].dtype)print('test_data', test_data[0].shape, test_data[1].shape, test_data[0].dtype, test_data[1].dtype)train_loader = data_loader(train_data, batch_size=10, shuffle=True)batch_image, batch_label = next(train_loader())print('batch_image', batch_image.shape, batch_image.dtype, np.min(batch_image), np.max(batch_image))print('batch_label', batch_label.shape, batch_label.dtype, batch_label)print()

参考资料:
(一)PaddlePaddle官方教程文档
(二)Cifar数据集官网
(三)卷积神经网络层级结构

如果有兴趣请继续学习:PaddlePaddle:CNN对Cifar10图像分类(2),下面的内容将更加精彩!!!!

PaddlePaddle:CNN对Cifar10图像分类(1)相关推荐

  1. 关于CIFAR-10图像分类总结

    关于CIFAR-10图像分类问题,网络上有很多资源,这里记录一些在我的学习过程中的资料,主要是关于深度卷积神经网络处理图像分类的,包括VGGNet,GoogLeNet以及ResNet,也记录了一些杂七 ...

  2. 【深度学习】Pytorch实现CIFAR10图像分类任务测试集准确率达95%

    文章目录 前言 CIFAR10简介 Backbone选择 训练+测试 训练环境及超参设置 完整代码 部分测试结果 完整工程文件 Reference 前言 分享一下本人去年入门深度学习时,在CIFAR1 ...

  3. cnn识别cifar10、cifar100(pytorch)

    下面的代码是cnn识别cifar10,如果是cifar100,将数据集的改成cifar100,然后模型的输出神经元10改为100即可. import torch,torchvision import ...

  4. 实验一:Cifar10图像分类竞赛 学习记录

    实验一:Cifar10图像分类竞赛 一.实验目的 利用pytorch框架解决图像分类问题 二.实验环境 竞赛平台,Pytorch库 三.实验内容 给定Cifar10数据集,对其进行分类训练,在竞赛平台 ...

  5. Pytorch实战:8层神经网络实现Cifar-10图像分类验证集准确率94.71%

    实验环境: Pytorch 1.7.0 torchvision 0.8.2 Python 3.8 CUDA10.2 + cuDNN v7.6.5 Win10 + Pycharm GTX1660, 6G ...

  6. keras实战项目:CIFAR-10 图像分类

    转自:https://yq.aliyun.com/articles/606966 我们可以简单的将深度神经网络的模块,分成以下的三个部分,即深度神经网络上游的基于生成器的 输入模块,深度神经网络本身, ...

  7. 基于 PyTorch 的 cifar-10 图像分类

    文章目录 前言 一.cifar-10 数据集介绍 二.环境配置 三.实验代码 1.简单网络的代码 2.VGG加深网络的代码 四.运行结果 五.遇到的问题 总结 前言 本文的主要内容是基于 PyTorc ...

  8. Pytorch CIFAR10图像分类 LeNet5篇

    Pytorch CIFAR10图像分类 LeNet5篇 文章目录 Pytorch CIFAR10图像分类 LeNet5篇 4.定义网络(LeNet5) 5. 定义损失函数和优化器 6. 训练 损失函数 ...

  9. Pytorch实战2:ResNet-18实现Cifar-10图像分类(测试集分类准确率95.170%)

    版权说明:此文章为本人原创内容,转载请注明出处,谢谢合作! Pytorch实战2:ResNet-18实现Cifar-10图像分类 实验环境: Pytorch 0.4.0 torchvision 0.2 ...

  10. PytorchKeras CIFAR10图像分类(详情介绍以及汇总所有博客)

    ✨Pytorch&Keras CIFAR10图像分类 文章目录 ✨Pytorch&Keras CIFAR10图像分类

最新文章

  1. android 锁屏
  2. python找数字_python:找到一个数字序列
  3. java白钱买白_java实现百钱买白鸡
  4. Fire Net HDU1045
  5. WebLogic调用WebService提示Failed to localize、Failed to create WsdlDefinitionFeature
  6. 计算机网络(十五)-数据链路层-CSMA/CA协议
  7. javascript入门_JavaScript入门手册(2020版)
  8. linux服务媒体,安装和使用Jellyfin配置Linux媒体服务器
  9. [Logstash]使用详解
  10. sqoop从hive导入数据到mysql时出现主键冲突
  11. Android Application的使用及其生命周期
  12. Hadoop入门(一)
  13. 嘿,OCR文字识别了解下!
  14. 关于无线充电的三大标准和四种实现方式的介绍
  15. yolov3的loss计算公式
  16. php程序员工具箱v0.6,php程序员工具箱官方版
  17. Pentaho Report Designer
  18. mysql oracle minus_Oracle minus使用
  19. MarkdownPad2 插入数学公式Mathjax
  20. isabelle官网

热门文章

  1. 干货 | 携程动态表单DynamicForm的设计与实现
  2. 通过企业微信服务端API接口进行群发应用消息
  3. python文本聚类分析作用_文本聚类应用意义
  4. 【Ubuntu16.04】下载、安装与启动神通数据库(保姆式教程)
  5. Linux系统软件看门狗
  6. 主成分分析在SPSS上的实现与结果分析——基于SPSS实验报告
  7. 0x02 如何安装【XPS 查看器】?超简单哦!
  8. Ubuntu16.04 安装搭建RED5流媒体服务器
  9. IDEA 打包忽略测试
  10. ENSP教程---OSPF单区域配置实验