VGG16模型训练+测试

这篇博客介绍了如何利用tf.keras.applications的VGG16模型进行图像分类。首先,强调了预定义模型的优势,然后详细阐述了数据预处理步骤,包括图像尺寸调整、数据打乱和标签的one-hot编码。接着,展示了模型构建过程,利用预训练的VGG16并进行微调。最后,讨论了训练过程和模型保存,强调了在训练过程中防止过拟合的重要性。
摘要由CSDN通过智能技术生成

tf.keras.applications 中有一些预定义好的经典卷积神经网络结构,如 VGG16 、 VGG19 、 ResNet 、 MobileNet、InceptionV3 等。我们可以直接调用这些经典的卷积神经网络结构(甚至载入预训练的参数),而无需手动定义网络结构。

导入需要的包

from keras.models import Model
from keras.layers import Dense, Flatten
from skimage import io, transform
import glob
import os
import numpy as np
from sklearn.model_selection import train_test_split
from keras.utils import np_utils
from keras.applications.vgg16 import VGG16
from keras.models import load_model

 

一个图像数据shape为[样本数N, 通道数C, 高度H, 宽度W],将其最后两个维度flatten,得到的是[N, C, H*W],标准的Batch Normalization就是在通道Channel这个维度上进行移动,对所有样本的所有值求均值和方差,有几个通道,得到的就是几个均值和方差。

path = r'./data/'  # 数据存放路径(分类成文件夹,每个文件夹下的图片为一类)

w = 150
h = 150
c = 3
number_classification = 5#分类数

 读取数据 ,Tensorflow定义的tensor的shape为[n,c,h,w],而我们直接读取文件格式是[n,h,w,c],需要进行转化
 

io.imread读出图片格式是uint8(unsigned int);value是numpy array;图像数据是以RGB的格式进行存储的,通道值默认范围0-255。

def read_img(path):
    '''
    采用skimage的transform函数转换
    改变图片尺寸resize函数
    函数格式为:
    skimage.transform.resize(image, output_shape)
    image: 需要改变尺寸的图片
    output_shape: 新的图片尺寸
    '''
    cate = [path + x for x in os.listdir(path) if os.path.isdir(path + x)]
    imgs = []
    labels = []
    for idx, folder in enumerate(cate):
        for im in glob.glob(folder + '/*.jpg'):
            print('reading the images:%s' % (im))
            img = io.imread(im)#RGB
            img = transform.resize(img, (w, h))#转化格式
            imgs.append(img)
            labels.append(idx)
    return np.asarray(imgs, np.float32), np.asarray(labels, np.int32)
data, label = read_img(path)

print("shape of data:", data.shape)
print("shape of label:&#
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值