CIFAR10图像分类:准备数据集、构建两个以上DCNN分类模型并训练、输出模型结构、输出模型精度和损失可视化结果,用drop out、数据增强等技术提升模型性能并进行对比分析。展示测试图像及分类结果。
数据集
数据集介绍:
CIFAR-10是一个更接近普适物体的彩色图像数据集。CIFAR-10 是由Hinton 的学生Alex Krizhevsky 和Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含10 个类别的RGB 彩色图片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。
每个图片的尺寸为32 × 32的彩色图像,每个类别有6000个图像,数据集中一共有50000 张训练图片和10000 张测试图片。
准备数据集:
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.utils import to_categorical
def get_dataset():
# 下载并拆分数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
# 类别数量
num_classes = 10
# 将标签转换为独热编码
y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)
# 将像素值缩放到0-1之间
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
return x_train,y_train,x_test,y_test
数据增强
def build_augmentation_model():
data_augmentation = ImageDataGenerator(
rotation_range=15,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
vertical_flip=False )
模型构建
两个以上DCNN分类模型:LeNet;AlexNet;GoogLeNet;VGGNet(VGG16);ResNet;EfficientNet;
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
# 构建基础模型
def build_model():
model = Sequential