用Python做了一个猫狗识别系统~

本文介绍了一种使用Python3.6.5和TensorFlow2.4.1构建的猫狗识别系统,详细讲解了从数据预处理到模型训练、评估的全过程,包括设置GPU、构建VG-16网络、训练模型并展示训练过程中的损失和准确率。作者还分享了如何保存和加载模型。
摘要由CSDN通过智能技术生成

导语

哈喽吖铁汁萌~今天来教大家写个猫狗识别系统

 

 

 

                                           小猫小狗真的太可爱了🙈🙈

想领取更多完整源码跟Python学习资料的可点击这行

这篇文章中我放弃了以往的model.fit()训练方法,改用model.train_on_batch方法。两种方法的比较:

  • model.fit():用起来十分简单,对新手非常友好

  • model.train_on_batch():封装程度更低,可以玩更多花样。

此外我也引入了进度条的显示方式,更加方便我们及时查看模型训练过程中的情况,可以及时打印各项指标。

🚀 我的环境:

  • 语言环境:Python3.6.5

  • 编译器:jupyter notebook

  • 深度学习环境:TensorFlow2.4.1

  • 显卡(GPU):NVIDIA GeForce RTX 3080

🚀 来自专栏:《深度学习100例》

文章目录

    一、前期工作

        1. 设置GPU

        2. 导入数据

        3. 查看数据

    二、数据预处理

        1. 加载数据

        2. 再次检查数据

        3. 配置数据集

        4. 可视化数据

    三、构建VG-16网络

    四、编译

    五、训练模型

    六、模型评估

    七、保存and加载模型

    八、预测

一、前期工作

1. 设置GPU

如果使用的是CPU可以注释掉这部分的代码。

import tensorflow as tf

gpus = tf.config.list_physical_devices("GPU")

if gpus:
    tf.config.experimental.set_memory_growth(gpus[0], True)  #设置GPU显存用量按需使用
    tf.config.set_visible_devices([gpus[0]],"GPU")

# 打印显卡信息,确认GPU可用
print(gpus)
PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

2. 导入数据

import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

import os,PIL

# 设置随机种子尽可能使结果可以重现
import numpy as np
np.random.seed(1)

# 设置随机种子尽可能使结果可以重现
import tensorflow as tf
tf.random.set_seed(1)

#隐藏警告
import warnings
warnings.filterwarnings('ignore')

import pathlib
data_dir = "./data/train"
# data_dir = "D:/jupyter notebook/DL-100-days/datasets/017_Eye_dataset"

data_dir = pathlib.Path(data_dir)

3. 查看数据

image_count = len(list(data_dir.glob('*/*')))

print("图片总数为:",image_count)
图片总数为:3400

二、数据预处理

1. 加载数据

使用image_dataset_from_directory方法将磁盘中的数据加载到tf.data.Dataset

batch_size = 8
img_height = 224
img_width = 224

TensorFlow版本是2.2.0的同学可能会遇到module 'tensorflow.keras.preprocessing' has no attribute 'image_dataset_from_directory'的报错,升级一下TensorFlow就OK了

"""
关于image_dataset_from_directory()的详细介绍可以参考文章:https://mtyjkh.blog.csdn.net/article/details/117018789
"""
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    data_dir,
    validation_split=0.2,
    subset="training",
    seed=12,
    image_size=(img_height, img_width),
    batch_size=batch_size)

Found 3400 files belonging to 2 classes.
Using 2720 files for training.

"""
关于image_dataset_from_directory()的详细介绍可以参考文章:https://mtyjkh.blog.csdn.net/article/detail
当然可以!使用Python进行猫狗识别系统开发是非常常见的。下面是一个简单的示例代码,可以帮助您开始: 1. 首先,需要安装必要的Python库,如numpy、pandas、matplotlib、keras等。您可以使用pip命令来安装这些库,例如: ``` pip install numpy pip install pandas pip install matplotlib pip install keras ``` 2. 准备数据集。您可以在Kaggle等网站上找到猫狗图像数据集。将数据集分成训练集和测试集,通常使用80%的图像作为训练集,20%的图像作为测试集。 3. 加载数据集。使用Python库中的PIL(Python Imaging Library)读取图像,并将其转换为numpy数组。可以使用以下代码: ```python from PIL import Image import numpy as np img = Image.open('cat.jpg') img.load() data = np.asarray(img, dtype="int32") ``` 4. 构建模型。使用Keras构建深度神经网络模型,可以使用卷积神经网络(CNN)或其他类型的模型。下面是一个简单的CNN模型示例: ```python from keras.models import Sequential from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense model = Sequential() model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(64, 64, 3))) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D((2, 2))) model.add(Conv2D(128, (3, 3), activation='relu')) model.add(MaxPooling2D((2, 2))) model.add(Flatten()) model.add(Dense(64, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) ``` 5. 训练模型。使用准备好的数据集训练模型。可以使用以下代码: ```python model.fit(train_data, train_labels, epochs=10, batch_size=32, validation_data=(test_data, test_labels)) ``` 6. 测试模型。使用测试集测试模型的准确性。可以使用以下代码: ```python test_loss, test_acc = model.evaluate(test_data, test_labels) print('Test accuracy:', test_acc) ``` 这只是一个简单的示例,您可以根据自己的需求进行调整和扩展。
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值