深度学习基础与实践 课件 9.2-基于AlexNet的图像分类实战_第1页
深度学习基础与实践 课件 9.2-基于AlexNet的图像分类实战_第2页
深度学习基础与实践 课件 9.2-基于AlexNet的图像分类实战_第3页
深度学习基础与实践 课件 9.2-基于AlexNet的图像分类实战_第4页
深度学习基础与实践 课件 9.2-基于AlexNet的图像分类实战_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于AlexNet的图像分类实战序号超类类别1水生哺乳动物海狸,海豚,水獭,海豹,鲸鱼2鱼水族馆的鱼,比目鱼,射线,鲨鱼,鳟鱼3花卉兰花,罂粟花,玫瑰,向日葵,郁金香4食品容器瓶子,碗,罐子,杯子,盘子5水果和蔬菜苹果,蘑菇,橘子,梨,甜椒6家用电器时钟,电脑键盘,台灯,电话机,电视机7家用家具床,椅子,沙发,桌子,衣柜8昆虫蜜蜂,甲虫,蝴蝶,毛虫,蟑螂9大型食肉动物熊,豹,狮子,老虎,狼10大型人造户外用品桥,城堡,房子,路,摩天大楼11大自然的户外场景云,森林,山,平原,海12大杂食动物和食草动物骆驼,牛,黑猩猩,大象,袋鼠13中型哺乳动物狐狸,豪猪,负鼠,浣熊,臭鼬14非昆虫无脊椎动物螃蟹,龙虾,蜗牛,蜘蛛,蠕虫15人宝贝,男孩,女孩,男人,女人16爬行动物鳄鱼,恐龙,蜥蜴,蛇,乌龟17车辆1自行车,公共汽车,摩托车,皮卡车,火车18车辆2割草机,火箭,有轨电车,坦克,拖拉机19小型哺乳动物仓鼠,老鼠,兔子,母老虎,松鼠20树木枫树,橡树,棕榈,松树,柳树数据集介绍CIFAR-100

数据集介绍CIFAR100数据集和CIFAR10类似,它有100个类,每个类包含600个图像,600个图像中有500个训练图像和100个测试图像。100类实际是由20个大类(每个

类又包含5个子类)构成(5*20=100)。01图像分类图像分类概述

图像分类,是对输入图像按照内容、等级或性质分别归类。它是计算机视觉的核心任务之一,应用广泛。它本质上就是在分类对象的属性空间,找到可将事物分类的最佳视角,使得同类事物在属性空间内靠得很近,而不同类型离得很远。

图像分类的目标是将不同的图像划分到不同的类别,实现最小分类误差,最高精度。数据预处理数据预处理基于机器学习的图像分类过程02分类器设计与学习分类决策特征提取与表示特征提取与表示测试图像训练图像目标类别

特征提取:通常从图像中按照固定步长、尺度提取大量局部特征描述。常用的局部特征包括SIFT(Scale-Invariant

Feature

Transform,尺度不变特征转换)、HOG(Histogram

ofOriented

Gradient,方向梯度直方图)、LBP(Local

Bianray

Pattern,局部二值模式)等,一般也采用多种特征描述,防止丢失过多的有用信息。

特征编码

:底层特征中包含了大量冗余与噪声,为了提高特征表达的鲁棒性,需要使用一种特征变换算法对底层特征进行编码,称作特征编码。常用的特征编码方法包括向量量化编码、稀疏编码、局部线性约束编码、Fisher向量编码等。图像分类传统的图像分类方法通常完整建立图像分类模型一般包括特征提取,特征编码,空间约束,图像分类等几个阶段。02达。金字塔特征匹配是一种常用的特征汇聚方法,这种方法提出将图像均匀分块,在分块内做特征汇聚。

通过分类器分类

:经过前面步骤之后一张图像可以用一个固定维度的向量进行描述,接下来就是经过分类器对图像进行分类。通常使用的分类器包括SVM(Support

Vector

Machine,支持向量机)、随机森林等。而使用核方法的SVM是最为广泛的分类器,在传统图像分类任务上性能很好。图像分类传统的图像分类方法通常完整建立图像分类模型一般包括特征提取,特征编码,空间约束,图像分类等几个阶。

空间特征约束

:特征编码之后一般会经过空间特征约束,也称作特征汇聚。特征汇聚是指在一个空间范围内,对每一维特征取最大值或者平均值,可以获得一定特征不变性的特征表02段图像分类基于深度学习的图像分类方法

常用的标准网络模型:LeNet、AlexNet、Vgg系列、ResNet系列、DenseNet系列、GoogleNet、NasNet、Xception、SeNet(stateofart)……

轻量化网络模型:Mobilenetv1,v2、Shufflenet

v1,v2、Squeezenet……

目前轻量化模型在具体项目应用时用的比较广泛。

优点:参数模型小,方便部署,计算量小,速度快。

缺点:轻量化模型在精度上没有Resnet系列、Inception系列、Densenet系列、Senet的

accuracy高。02图像分类基于深度学习的图像分类方法LeNet是卷积神经网络的祖师爷LeCun在1998年提出,用于解决手写数字识别的视觉任务。自那时起,CNN的最基本的架构就定下来了:卷积层、池化层、全连接层。如今各大深度学习框架中所使用的LeNet都是改进过的LeNet-5(-5表示具有5个层),和原始的LeNet有些许不同,比如把激活函数改为了现在很常用的ReLu。但是这个模型在后来的一段时间并未能火起来,主要原因是费机器(计算跟不上)图片来源:《Gradient-based

learning

applied

to

document

recognition》02图像分类基于深度学习的图像分类方法AlexNet在2012年ImageNet竞赛中以超过第二名10.9个百分点的绝对优势一举夺冠,从此深度学习和卷积神经网络名声鹊起,深度学习的研究如雨后春笋般出现,AlexNet的出现可谓是卷积神经网络的王者归来。AlexNet为8层深度网络,其中5层卷积层和3层全连接层,不计LRN层和池化层。图片来源:《ImageNetClassificationwithDeepConvolutional

Neural

Networks》02基于AlexNet网络实现图像分类实践AlexNet网络代码介绍AlexNet网络共包含五个卷积层提取特征,并使用ReLU作为激活函数,避免梯度弥散,使用重叠的最大池化以得到更加丰富的特征。AlexNet((features):Sequential((0):Conv2d(3,96,kernel_size=(11,11),stride=(4,4),padding=(2,2))(1):ReLU(inplace)(2):MaxPool2d(kernel_size=3,stride=2,padding=0,dilation=1,ceil_mode=False)(3):Conv2d(96,256,kernel_size=(5,5),stride=(1,1),padding=(2,2))(4):ReLU(inplace)(5):MaxPool2d(kernel_size=3,stride=2,padding=0,dilation=1,ceil_mode=False)(6):Conv2d(256,384,kernel_size=(3,3),stride=(1,1),padding=(1,1))(7):ReLU(inplace)(8):Conv2d(384,384,kernel_size=(3,3),stride=(1,1),padding=(1,1))(9):ReLU(inplace)(10):Conv2d(384,256,kernel_size=(3,3),stride=(1,1),padding=(1,1))(11):ReLU(inplace)(12):MaxPool2d(kernel_size=3,stride=2,padding=0,dilation=1,ceil_mode=False))03……)(1):

ReLU(inplace)(2):

MaxPool2d(kernel_size=3,

stride=2,

padding=0,

dilation=1,

ceil_mode=False)……)

基于AlexNet网络实现图像分类实践第一个卷积层输入通道为3,输出通道为96,卷积核大小为11×11,步长为4,填充为2,与第一节所讲网络结构对应。后面紧跟ReLU激活函数确保梯度收敛,再使用一个3×3的池化提取特征,同时减少参数的计算。AlexNet((features):Sequential((0):

Conv2d(3,

96,

kernel_size=(11,

11),

stride=(4,

4),

padding=(2,

2))https://www.cnblogs.com/wanghui-garcia/p/10775367.html

03图片来源:……)基于AlexNet网络实现图像分类实践第二个卷积层输入通道是上一层的输出,输出通道是192,卷积核大小为5×5,步长为1,填充为2,后依旧接了激活函数和最大池化层,可与上一节的网络结构对应查看。AlexNet((features):Sequential((0):Conv2d(3,96,kernel_size=(11,11),stride=(4,4),padding=(2,2))(1):ReLU(inplace)(2):MaxPool2d(kernel_size=3,stride=2,padding=0,dilation=1,ceil_mode=False)(3):

Conv2d(96,

256,

kernel_size=(5,

5),

stride=(1,

1),

padding=(2,

2))(4):

ReLU(inplace)(5):

MaxPool2d(kernel_size=3,

stride=2,

padding=0,

dilation=1,

ceil_mode=False)……)03……)基于AlexNet网络实现图像分类实践第三、四、五个卷积层的卷积核大小为3×3,步长为1,填充为1,仅添加激活函数没有做最大池化,在最后使用一个最大池化提取特征。AlexNet((features):Sequential((0):Conv2d(3,96,kernel_size=(11,11),stride=(4,4),padding=(2,(1):ReLU(inplace)(2):MaxPool2d(kernel_size=3,stride=2,padding=0,dilation=1,ceil_mode=False)(3):Conv2d(96,256,kernel_size=(5,5),stride=(1,1),padding=(2,2))(4):ReLU(inplace)(5):MaxPool2d(kernel_size=3,stride=2,padding=0,dilation=1,ceil_mode=False)(6):

Conv2d(256,

384,

kernel_size=(3,

3),

stride=(1,

1),

padding=(1,

1))(7):

ReLU(inplace)(8):

Conv2d(384,

384,

kernel_size=(3,

3),

stride=(1,

1),

padding=(1,

1))(9):

ReLU(inplace)(10):

Conv2d(384,

256,

kernel_size=(3,

3),

stride=(1,

1),

padding=(1,

1))(11):

ReLU(inplace)(12):

MaxPool2d(kernel_size=3,

stride=2,

padding=0,

dilation=1,

ceil_mode=False))03……)2))基于AlexNet网络实现图像分类实践添加一个自适应平均池化操作,对于任意大小的输入,输出的特征数目不会变化。分类使用了三个全连接层对其进行操作,得到最后1000个分类,全连接可以保持输入输出不变。AlexNet(……(avgpool):

AdaptiveAvgPool2d(output_size=(6,

6))(classifier):Sequential((0):Dropout(p=0.5)(1):Linear

(in_features=9216,out_features=4096,bias=True)(2):ReLU(inplace)(3):Dropout(p=0.5)(4):Linear

(in_features=4096,out_features=4096,bias=True)(5):ReLU(inplace)(6):Linear

(in_features=4096,out_features=1000,bias=True)))03基于AlexNet网络实现图像分类实践三个连接层中使用ReLU激活函数保证梯度收敛,然后使用Dropout避免过拟合。AlexNet(……(avgpool):AdaptiveAvgPool2d(output_size=(6,6))(classifier):Sequential((0):

Dropout(p=0.5)(1):Linear(in_features=9216,out_features=4096,bias=True)(2):

ReLU(inplace)(3):

Dropout(p=0.5)(4):Linear(in_features=4096,out_features=4096,bias=True)(5):

ReLU(inplace)(6):Linear(in_features=4096,out_features=1000,bias=True)))03基于AlexNet网络实现图像分类实践当前在PyTorch中也有内置AlexNet网络模型,使用命令torchvision.models.alexnet()即可获得该网络结构。03基于AlexNet

网络实现图像分类实践AlexNet网络结构定义使用PyTorch定义AlexNet网络结构实现CIFAR-100的网络结构及其参数设置如图所示。注意:AlexNet网络原设定用于在ImageNet数据集中进行训练,ImageNet数据集有1000种类别,

但是,此处数据集为CIFAR-100,

只有100个类别,需要对应修改网络最后输出的参数类

别num_classes(即100)。03基于AlexNet

网络实现图像分类实践AlexNet网络训练

训练和测试数据集转换对训练集的数据和测试集的数据进行分辨率重置、图像翻转等操作,然后将其转换为tensor。transform_train=transforms.Compose([transforms.Resize(224),#重置图像分辨率transforms.RandomHorizontalFlip(),#依据概率p对PIL图片进行水平翻转,默认0.5transforms.ToTensor

(),#将PILImage或者ndarray转换为tensortransforms.Normalize((0.4914,0.4822,0.4465),(0.2023,0.1994,0.2010)),])transform_test=transforms.Compose([transforms.Resize(224),#重置图像分辨率transforms.ToTensor

(),#将PILImage或者ndarray转换为tensortransforms.Normalize((0.4914,0.4822,0.4465),(0.2023,0.1994,0.2010)),])03#对数据按通道进行标准化,即先减均值,再除以标准差])transform_test=transforms.Compose([transforms.Resize(224),transforms.ToTensor(),transforms.Normalize((0.4914,0.4822,0.4465),(0.2023,0.1994,0.2010)),#对数据按通道进行标准化,即先减均值,再除以标准差])基于AlexNet

网络实现图像分类实践AlexNet网络训练

数据标准化transform_train=transforms.Compose([transforms.Resize(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize((0.4914,0.4822,0.4465),(0.2023,0.1994,0.2010)),03基于AlexNet

网络实现图像分类实践AlexNet网络训练

导入数据集使用内置的函数导入数据集#说明数据集的路径、文件目录等train_dataset=datasets.CIFAR100(root='./data’,train=True,transform=transform_train,download=False)#root设置根路径,设置要进行训练,设置数据变换类型,是否下载数据test_dataset=datasets.CIFAR100(root='./data’,train=False,transform=transform_test)#root设置根路径,设置不需要训练,设置数据变换类型#批量读取训练测试数据train_loader=DataLoader(train_dataset,batch_size=batch_size,shuffle=True)test_loader=DataLoader(test_dataset,batch_size=batch_size,shuffle=False)shuffle=True:参数设置为True即打乱数据集的顺序。03基于AlexNet

网络实现图像分类实践AlexNet网络训练

导入模型、定义交叉熵和优化函数#判断是否存在cuda,存在就使用gpu加速训练,没有就使用cpu进行计算。device=torch.device("cuda"iftorch.cuda.is_available()else"cpu")model.to(device)#从AlexNet中导入alexnet网络模型。model=AlexNet.from_name('alexnet’)#设置损失函数为交叉熵。criterion=nn.CrossEntropyLoss()#定义优化函数--Adam(AdaptiveMomentEstimation)本质上是带有动量项的RMSprop。optimizer=torch.optim.Adam(model.parameters(),lr=0.001)03基于AlexNet

网络实现图像分类实践AlexNet网络训练循环迭代数据,使用for循环迭代train_loader,将各属性赋值给i,image,labels,通过网络计算损失值。for

epoch

in

range(epoches):fori,(images,labels)inenumerate(train_loader):images=images.to(device)labels=labels.to(device)output=model(images)#通过model预测image

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论