猫狗识别简介(附带源码)

目录

项目背景与目的

数据来源

1. 准备工作:环境设置与数据加载

 2.数据加载

3.数据预处理

3.1 图片处理

3.2 生成器

4.模型构建

5.模型编译与训练

训练过程:

6.模型评估

7. 预测与模型保存

训练模型总结

8.构建基于PyQt5与TensorFlow的猫狗图像分类应用实现

1. 环境准备与库导入

2. 模型加载

3. 图像处理与分类逻辑

4. 用户界面设计

5. 程序入口点

猫狗图像分类应用实现总结


项目背景与目的

在本文中,我们将通过一个实战项目介绍如何使用TensorFlow和Keras构建一个简单的卷积神经网络(CNN),以实现对猫和狗图像的分类任务。这个过程不仅涵盖了数据预处理、模型构建、训练与评估,还包括了模型的保存与预测,旨在为初学者提供一个完整的机器学习项目实践指南。

数据来源

本项目使用的数据集来源于CSDN博主分享的已经分类好的猫狗图片,分为训练集和测试集。

1. 准备工作:环境设置

首先,确保安装了TensorFlow库(没下载在cmd运行下面的pip)。

pip install tensorflow==2.13.0

 2.数据加载

 接下来,导入必要的库和模块,我们定义了图像的大小为150x150像素,以及每次训练的批量大小为64张图片。训练和测试数据分别存储在指定的目录下。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout
from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 参数设置
image_size = (150, 150)
batch_size = 64
train_dir = r"输入你的训练集的路径"
test_dir = r"输入你的测试集的路径"

3.数据预处理

3.1 图片处理

使用ImageDataGenerator进行预处理,包括图像的缩放至150x150像素、归一化(像素值除以255使其位于0-1之间)、以及对训练集进行数据增强(如剪切、缩放、水平翻转等),以增加模型的泛化能力。测试集仅进行归一化处理,保持数据的真实性。

# 创建数据增强器,用于在训练过程中随机变换图像,提升模型泛化能力
# 数据增强器,用于提升模型的泛化能力
train_datagen = ImageDataGenerator(
    rescale=1./255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True
)

# 测试数据集只进行图像大小调整
test_datagen = ImageDataGenerator(rescale=1./255)

3.2 生成器

根据目录生成训练和测试数据的生成器

train_generator = train_datagen.flow_from_directory(
    train_dir,
    target_size=image_size,
    batch_size=batch_size,
    class_mode='binary'
)

test_generator = test_datagen.flow_from_directory(
    test_dir,
    target_size=image_size,
    batch_size=batch_size,
    class_mode='binary'
)

4.模型构建

构建一个基本的CNN模型,包括卷积层、池化层、全连接层以及Dropout层,以防止过拟合。

model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(150, 150, 3)),
    MaxPooling2D(2, 2),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Conv2D(128, (3, 3), activation='relu'),
    MaxPooling2D(2, 2),
    Flatten(),
    Dense(512, activation='relu'),
    Dropout(0.5),
    Dense(1, activation='sigmoid')
])

5.模型编译与训练

编译模型后,使用训练数据进行训练,并在每个epoch后使用测试数据进行验证。

model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

history = model.fit(
    train_generator,
    steps_per_epoch=len(train_generator),
    epochs=25,
    validation_data=test_generator,
    validation_steps=len(test_generator)
)
  1. 训练过程</

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值