首页 > 分享 > 利用VGG16做花数据集的识别

利用VGG16做花数据集的识别

前言

刚完成机器视觉的作业(利用预训练好的模型,对花的数据集进行识别),所以就记录一下。本次实验中,我使用的是keras的vgg16模型,然后再添加了三层全连接层对花进行识别,50个epoch后在验证集中的准确率为87.63,不算很好,但有由于确实太耗费时间了,就不太想去重新调参然后训练了,就只能勉强接受了。
我的实验数据是直接在kaggle上下的,链接:Flowers Recognition

VGG16

VGG是Oxford的Visual Geometry Group的组提出的。该网络是在ILSVRC 2014上的相关工作,主要工作是证明了增加网络的深度能够在一定程度上影响网络最终的性能。VGG16共包含16个卷积层(Convolutional Layer),3个全连接层(Fully connected Layer),以及5个池化层(Pool layer),其中,卷积层和全连接层具有权重系数,因此也被称为权重层,总数目为13+3=16,这即是VGG16中16的来源。
VGG16的突出特点是:
1.卷积层均采用相同的卷积核参数。卷积层均表示为conv3-XXX,其中conv3说明该卷积层采用的卷积核的尺寸(kernel size)是3,即宽(width)和高(height)均为3,3*3是很小的卷积核尺寸,结合其它参数(步幅stride=1,填充方式padding=same),这样就能够使得每一个卷积层(张量)与前一层(张量)保持相同的宽和高。XXX代表卷积层的通道数。
2.池化层均采用相同的池化核参数。池化层的参数均为2×。
3.模型是由若干卷积层和池化层堆叠(stack)的方式构成,比较容易形成较深的网络结构(在2014年,16层已经被认为很深了)。
VGG16网络结构:
在这里插入图片描述

实验源码及结果展示

源码

其实也很简单,就是直接在keras上调取VGG16模型就行了,不过模型比较大,可能需要下载一会。

import os import cv2 import random from tensorflow.python.keras.applications import VGG16, VGG19 from tensorflow.python.keras import Sequential from tensorflow.python.keras import layers from tensorflow.python.keras.optimizers import SGD from tensorflow.python.keras.models import Model import matplotlib.pyplot as plt import numpy as np def get_data(): data = [] labels = [] types = os.listdir('./flowers') for name in types: flowers = os.listdir('./flowers' + '/' + name) for flower in flowers: img = cv2.imread('./flowers' + '/' + name + '/' + flower) img

12345678910111213141516171819

相关知识

flower花朵识别数据集
卷积神经网络训练花卉识别分类器
农作物病虫害识别技术的发展综述
Keras复现VGG16及实现花卉分类
基于轻量化VGG的植物病虫害识别
六项作物病虫害识别监测农研最新进展
【农业科普】六项作物病虫害识别监测农研进展
基于深度学习和迁移学习的识花实践
探索花朵的秘密世界:高品质五分类花卉识别数据集
植物病害识别数据集

网址: 利用VGG16做花数据集的识别 https://m.huajiangbk.com/newsview304811.html

所属分类:花卉
上一篇: 养花风水有讲究,5种花别随便送人
下一篇: win 10 系统下利用tens