猫狗图像识别(卷积神经网络算法,TensorFlow安装)

这篇具有很好参考价值的文章主要介绍了猫狗图像识别(卷积神经网络算法,TensorFlow安装)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、tensorflow库安装

(1)TensorFlow的历史版本与对应Python版本

(2)Python版本查询

(3)找到上面的版本框进行对应的TensorFlow下载

(4)安装成功

(5)TensorFlow成功验证

二、项目简介

(1)项目说明

(2)项目目的

三、实现过程

(1)库导入

(2)匹配图形

(3)定义图像以及测试集与验证集路径确认

(4)模型训练参数设置

(5)维度定义与图像生成器

(6)卷积神经网络各层次设置

(7)函数回调结果注入训练

(8)训练结果可视化


一、tensorflow库安装

(1)TensorFlow的历史版本与对应Python版本

TensorFlow的历史版本与Python对应版本
TensorFlow版本 Python 发布时间
tensorflow-2.4.0 3.6-3.8 2020年12月
tensorflow-2.3.0 3.5-3.8 2020年7月
tensorflow-2.2.0 3.5-3.8 2020年5月
tensorflow-2.1.0 3.5-3.7 2020年1月
tensorflow-2.0.0 3.5-3.7 2019年10月
tensorflow-1.15.0 3.5-3.7 2019年10月
tensorflow-1.14.0 3.5-3.7 2019年6月
tensorflow-1.13.0 3.5-3.7 2019年2月
tensorflow-1.12.0 3.5-3.6 2018年11月
tensorflow-1.11.0 3.5-3.6 2018年9月
tensorflow-1.10.0 3.5-3.6 2018年8月
tensorflow-1.9.0 3.5-3.6 2018年7月
tensorflow-1.8.0 3.5-3.6 2018年4月
tensorflow-1.7.0 3.5-3.6 2018年3月
tensorflow-1.6.0 3.5-3.6 2018年3月
tensorflow-1.5.0 3.5-3.6 2018年1月
tensorflow-1.4.0 3.5-3.6 2017年11月
tensorflow-1.3.0 3.5-3.6 2017年8月
tensorflow-1.2.0 3.5-3.6 2017年6月
tensorflow-1.1.0 3.5 2017年4月
tensorflow-1.0.0 3.5 2017年2月

(2)Python版本查询

在配置了python环境变量的情况下可以使用以下方法:

win+R或者在搜索框搜索cmd打开Windows的终端,在终端输入python --version

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

未配置python环境的情况下,使用anaconda prompt终端查询版本号以及后面的操作。

(3)找到上面的版本框进行对应的TensorFlow下载

当时安装时并没有想到版本问题会影响TensorFlow后续的使用,就随便选了一个版本,当然你想选择一样的版本也行,后续做法跟我的做法会是一样的。

这里我们从清华园下载TensorFlow的镜像文件,后面是版本号

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==1.14

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

注意:

①这里的命令运行时在Windows的终端下直接运行,前提是有Python环境

②若下载遇到非环境的报错,请复制Downloading后的网址,直接去网址上下载安装文件,然后切换到,下载路径,用pip insatll 下载的文件后缀为.whl文件

(4)安装成功

安装时出现如下情况就是安装成功

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

(5)TensorFlow成功验证

导入TensorFlow库做一个简单的计算

import tensorflow as tf
sess = tf.Session()
a = tf.constant(10)
b = tf.constant(12)
sess.run(a+b)

得到如下结果就证明安装成功

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

注:

在验证阶段可能会出现如下错误

第一个是jupyter的报错,第二个是anaconda的报错信息

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

这是因为有得机器protobuf版本等级与TensorFlow不相符,只需要根据后面的protobuf>=的版本号进行重装即可

命令如下:

pip install protobuf==3.19.0

二、项目简介

(1)项目说明

图像识别技术是人工智能计算机视觉的重要基础,使用机器学习/深度学习算法可以高效准确的识别出图片的主要特征,从而对不同图片内容的图片进行分类识别。

在图像识别研究领域有一个经典的数据集:Cat_vs_Dogs(猫狗识别数据集),很多计算机视觉的算法研究使用这个数据集来验证其效果。附件中采集了1500张猫的照片和1500张狗的照片,分别放入下面的目录结构中:

cats_vs_dogs:

train:

cats: [cat.0.jpg, cat.1.jpg, cat.2.jpg ....]

dogs: [dog.0.jpg, dog.1.jpg, dog.2.jpg ...]

validation:

cats: [cat.2000.jpg, cat.2001.jpg, cat.2002.jpg ....]

dogs: [dog.2000.jpg, dog.2001.jpg, dog.2002.jpg ...]

注:其中train作为训练集,有猫狗各1000张照片;validation作为验证集,有猫狗各500张照片。图片示例如下:

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

(2)项目目的

项目目的主要是实现对于猫狗图形识别的模型建立,再通过验证集验证图形识别模型的准确性。本篇文章主要讲述项目模型建立过程,至于模型设计、参数调优以及模型结果分析会在后续的文章中给出。

三、实现过程

(1)库导入

from tensorflow.keras.preprocessing.image import ImageDataGenerator, load_img, img_to_array, array_to_img
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D
from tensorflow.keras.layers import Activation, Dropout, Flatten, Dense
from tensorflow.keras import backend as K
from tensorflow.keras.callbacks import TensorBoard
from tensorflow.keras.applications import VGG16,InceptionV3,ResNet50,MobileNet
import numpy as np
import matplotlib.pyplot as plt
import glob, os, random

os模块作用

可以处理文件和目录这些我们日常手动需要做的操作。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。

glob模块作用

主要用来查找符合特定规则的目录和文件,并将搜索的到的结果返回到一个列表中。

(2)匹配图形

path = 'data'
os.path.join(path, '*/*/*.*')
# 使用 glob 模块批量匹配图像, * 代表匹配所有东西
img_list = glob.glob(os.path.join(path, '*/*/*.*'))
print('>>>图像数量:', len(img_list))
print(img_list[:5])

for i, img_path in enumerate(img_list[:6]):
    img_plot = load_img(img_path)  # 加载图像
    arr = img_to_array(img_plot)  # 将图像转换成数组
    print(arr.shape)  # 图像形状
    plt.subplot(2, 3, i + 1)
    plt.imshow(img_plot)

os.path.join(path,name):连接目录与文件名或目录。

glob.glob():返回符合匹配条件的所有文件的路径。

注:此处需要,ipynb文件和data文件同在一个目录下,如下图所示

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

(3)定义图像以及测试集与验证集路径确认

# 统一定义图像像素的宽度和高度
img_width, img_height = 100, 100
# 定义训练集、验证集的图形路径(文件夹路径即可)
train_data_dir = 'data/train/'
validation_data_dir = 'data/validation/'

注:此处可以调试的有统一定义图像像素的宽度和高度,再不看后续分析文章的情况下可以自行进行数据的调试,此处不做过多解释。

(4)模型训练参数设置

# 模型训练的参数设置
nb_train_samples = 30
nb_validation_samples = 10
epochs = 20  # 迭代次数
batch_size = 32  # 每个批量观测数

注:模型训练参数的设置影响模型训练的结果,其中迭代次数与每个批量观测数影响着模型的结果,前两个参数是后面models.fit_generator()的参数,它一般是一个生成器函数,主要作用是利用生成器,分批次向模型送入数据的方式,可以有效节省单次内存的消耗。

(5)维度定义与图像生成器

# 图像输入维度设置
if K.image_data_format() == 'channels_first':
    input_shape = (3, img_width, img_height)
else:
    input_shape = (img_width, img_height, 3)

# 定义图像生成器
train_datagen = ImageDataGenerator(rescale=1. / 255,  # 重缩放因子
                                   shear_range=0.2,  # 剪切强度(以弧度逆时针方向剪切角度)
                                   zoom_range=0.2,  # 随机缩放范围
                                   horizontal_flip=True,  # 随机水平翻转
                                   rotation_range=360  # 360度范围内随机旋转
                                   )

# 使用图像生成器,从train_data_dir目录中读取图片,生成训练集(X_train图片数据, y_train图片所在的目录名称)
train_generator = train_datagen.flow_from_directory(train_data_dir,  # 训练数据的文件夹路径
                                                    target_size=(img_width, img_height),  # 统一像素大小
                                                    batch_size=batch_size,  # 每一批次的观测数
                                                    class_mode='categorical'  # 指定分类模式,指定二分类
                                                    )


test_datagen = ImageDataGenerator(rescale=1. / 255,
                                  shear_range=0.2,  # 剪切强度(以弧度逆时针方向剪切角度)
                                  zoom_range=0.2,  # 随机缩放范围
                                  horizontal_flip=True)  # 随机水平翻转

validation_generator = test_datagen.flow_from_directory(validation_data_dir,  # 验证集文件夹路径
                                                        target_size=(img_width, img_height),
                                                        batch_size=batch_size,
                                                        class_mode='categorical'  # 二分类
                                                        )

注:图像维度设置中k.image_data_format(),返回图像维度顺序(“channels_first”或“channels_last”),彩色图像的性质一般包括:width、height、channels。

(6)卷积神经网络各层次设置

model = Sequential()

# -----------------------------------------------------
# 输入层:第一层
# 添加第一个卷积层/最大池化层(必选)
model.add(Conv2D(filters=32,  # 32 个过滤器
                 kernel_size=(3, 3),  # 卷积核大小 3 x 3
                 input_shape=input_shape,  # 图像输入维度
                 activation='relu'))  # 'relu' 激活函数
model.add(MaxPooling2D(pool_size=(2, 2)))  # 池化核大小 2 x 2

# ----------------------------------------------------
# 隐藏层:介于第一层和最后一层之间
# 添加第二个卷积层/最大池化层(可选)
model.add(Conv2D(filters=32, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# 添加第三个卷积层/最大池化层(可选)
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# 添加第三个卷积层/最大池化层(可选)
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))

# 由于卷积层是 2D 空间,训练时需要将数据展平为 1D 空间
model.add(Flatten())  # 添加展平层(必选)
model.add(Dense(units=64, activation='relu'))  # 添加全连接层(必选) 64 个神经元
model.add(Dropout(0.5))  # 添加丢弃层,防止过拟合

# ---------------------------------------------------
# 输出层:最后一层,神经元控制输出的维度,并指定分类激活函数
model.add(Dense(units=2, activation='sigmoid'))  # 指定分类激活函数

model.summary()

model.compile(loss='binary_crossentropy',  # 指定损失函数类型
              optimizer='rmsprop',  # 优化器
              metrics=['accuracy'])  # 评价指标

完成后运行会出现如下的过程图:

 猫狗图像识别(卷积神经网络算法,TensorFlow安装)

(7)函数回调结果注入训练

# tensorboard回调函数
logs = os.path.join("logs")
if not os.path.exists(logs):
    os.mkdir(logs)
train_callbacks = [
    TensorBoard(
        log_dir=r'./logs',
        histogram_freq=1,
    )
]

tensorboard_dir = os.path.join(r'.\logs\plugins\profile')
history = model.fit_generator(train_generator,
                              steps_per_epoch=nb_train_samples,
                              epochs=epochs,
                              validation_data=validation_generator,
                              validation_steps=nb_validation_samples,
                              callbacks=train_callbacks
                              )

models.fit_generator()的参数,它一般是一个生成器函数,主要作用是利用生成器,分批次向模型送入数据的方式,可以有效节省单次内存的消耗。

注:其中logs\plugins\profile这个文件内容需要自己手动建立,本实验代码没有写代码创建模块,当创建logs后需要自己在logs文件夹下创建plugins文件夹,在文件夹plugins下创建profile文件夹。否则会报以下错误:

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

运行后会出现如下过程图

猫狗图像识别(卷积神经网络算法,TensorFlow安装)

(8)训练结果可视化

#现在将训练后的结果可视化。
acc = history.history['acc']
val_acc = history.history['val_acc']

loss = history.history['loss']
val_loss = history.history['val_loss']

epochs_range = range(epochs)

plt.figure(figsize=(20, 10))
plt.subplot(1, 2, 1)
plt.plot(epochs_range, acc, label='Training Accuracy')
plt.plot(epochs_range, val_acc, label='Validation Accuracy')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')

plt.subplot(1, 2, 2)
plt.plot(epochs_range, loss, label='Training Loss')
plt.plot(epochs_range, val_loss, label='Validation Loss')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')
plt.show()

可视化训练后的结果图:

猫狗图像识别(卷积神经网络算法,TensorFlow安装)文章来源地址https://www.toymoban.com/news/detail-478833.html

到了这里,关于猫狗图像识别(卷积神经网络算法,TensorFlow安装)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 竞赛选题 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

    🔥 优质竞赛项目系列,今天要分享的是 深度学习卷积神经网络垃圾分类系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 近年来,随着我国经济的快速发展,国家各项建设都蒸蒸日上,成绩显著。

    2024年02月07日
    浏览(52)
  • 项目实战解析:基于深度学习搭建卷积神经网络模型算法,实现图像识别分类

    随着人工智能的不断发展,深度学习这门技术也越来越重要,很多人都开启了学习机器学习,本文将通过项目开发实例,带领大家从零开始设计实现一款基于深度学习的图像识别算法。 学习本章内容, 你需要掌握以下基础知识: Python 基础语法 计算机视觉库(OpenCV) 深度学习

    2024年02月03日
    浏览(66)
  • 计算机竞赛 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

    🔥 优质竞赛项目系列,今天要分享的是 深度学习卷积神经网络垃圾分类系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 近年来,随着我国经济的快速发展,国家各项建设都蒸蒸日上,成绩显著。

    2024年02月07日
    浏览(59)
  • 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序 计算机竞赛

    🔥 优质竞赛项目系列,今天要分享的是 深度学习卷积神经网络垃圾分类系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 近年来,随着我国经济的快速发展,国家各项建设都蒸蒸日上,成绩显著。

    2024年02月04日
    浏览(57)
  • 卷积神经网络实现图像识别

    目的: 实现昆虫的图像分类,同时该模型也可以用于其他图像的分类识别,只需传入相应的训练集进行训练,保存为另一个模型即可,进行调用使用。 配置环境: pycharm(python3.7),导入pytotch库 知识预备: 需要了解卷积神经网络的基本原理与结构,熟悉pytorch的使用,csdn有

    2023年04月09日
    浏览(35)
  • 卷积神经网络 —— 图像识别与深度学习

    视频教程学习链接: https://www.icourse163.org/learn/XUST-1206363802?tid=1467124640#/learn/content?type=detailid=1248319353cid=1275090253 原始数据的形式是多种多样的,除了数字之外,还可能是文字、图像、视频、音频等,下面,就以图像识别为例,来了解深度学习在计算机视觉领域中的应用。 图像

    2024年02月05日
    浏览(45)
  • 卷积神经网络在图像识别中的应用

    卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习算法,广泛应用于图像识别、语音识别、自然语言处理等领域。卷积神经网络在图像识别中的应用得到了广泛的关注和研究。本文将介绍卷积神经网络在图像识别中的应用。 卷积神经网络是一种由多个卷积层和池化

    2024年02月16日
    浏览(40)
  • 竞赛选题 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别

    🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习动物识别 - 卷积神经网络 机器视觉 图像识别 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:4分 🧿 更多资料, 项目分享:

    2024年02月08日
    浏览(45)
  • 卷积神经网络|猫狗分类系列--导入kaggle猫狗数据集

    解决任何真实问题的重要一步是获取数据,Kaggle提供了大量不同数据科学问题的竞赛。 我们将从 https://www.kaggle.com/competitions/dogs-vs-cats/data 下载猫狗数据集,并对其进行一定的操作,以正确的导入到我们的计算机,为接下来的模型训练做准备。 数据集(带有标号的)包含250

    2024年01月23日
    浏览(52)
  • 计算机竞赛 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

    🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的动物识别算法研究与实现 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/postgraduate 目前,由于计算机能力和相关理论的发展获得了重大突破,基于深度学

    2024年02月09日
    浏览(86)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包