tensorflow识别猫与狗

猫狗图像识别(卷积神经网络算法,TensorFlow安装) 一、tensorflow库安装(1)TensorFlow的历史版本与对应Python版本(2)Python版本查询win+R或者在搜索框搜索cmd打开Windows的终端,在终端输入python --version(3)找到上面的版本框进行对应的TensorFlow下载当时安装时并没有想到版本问题会影响TensorFlow后续的使用,就随便选了一个版本,当然你想选择一样的版本也行,后续做法跟我的做法会是一样的。这里我们从清华园下载TensorFlow的镜像文件,后面是版本号pip install -i ht 阅读详情

问题

现在有很多的图片,里面分别有猫与狗,识别这些图片,区分猫与狗

设计解决这个问题的思路

1、下载与放置训练图片

2、现在对应的依赖,tensorflow、numpy等等

3、解析文件名,识别dog还是cat

4、建模

5、对模型进行训练

6、用测试模型进行验证

7、输出结果

8、优化模型 to step4

[1]图片地址

Dogs vs. Cats | Kaggle 现在数据,现在速度比较慢,可以使用网盘。

网盘地址(提取码:lhrr)

【2】处理训练集的数据结构

import os

filenames = os.listdir('./dogs-vs-cats/train’)

# 动物类型

categories = []

for filename in filenames:

    category = filename.split('.')[0]

    categories.append(category)


import pandas as pd

# 结构化数据

df = pd.DataFrame({

    'filename':filenames,

    'category':categories
})

#展示对应的数据

import random

from keras.preprocessing import image

import matplotlib.pyplot as plt

## 看看结构化之后的结果

print(df.head())

print(df.tail())

print(df['category'].value_counts())

df['category'].value_counts().plot(kind = 'bar')

plt.show()

# 展示个图片看看

sample = random.choice(filenames)
image = image.load_img('./dogs-vs-cats/train/' + sample)
plt.imshow(image)
plt.show()

【3】出来训练集与验证集

# 切割训练集合

train_df, validate_df = train_test_split(df, test_size = 0.20, random_state = 42)

train_df = train_df.reset_index(drop=True)
validate_df = validate_df.reset_index(drop=True)

print(train_df.head())
print(validate_df.head())

total_train = train_df.shape[0]
total_validate = validate_df.shape[0]

print("Total number of example in training dataset : {0}".format(total_train))
print("Total number of example in validation dataset : {0}".format(total_validate))

【4】创建模型

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, BatchNormalization, Flatten,Dropout
from tensorflow.keras import optimizers


## 创建第一个模型
class Model:

def __init__(self, IMG_WIDTH, IMG_HEIGHT, IMG_CHANNELS):
    self.IMG_WIDTH = IMG_WIDTH
    self.IMG_HEIGHT = IMG_HEIGHT
    self.IMG_CHANNELS = IMG_CHANNELS

def create_model(self):
    model = Sequential()
    #第一层
    #图像空间的2维卷积 32个卷积输出滤波器,卷积窗口的高度和宽度(3,3),输入像素150*150
    model.add(Conv2D(32, (3,3), activation = 'relu', kernel_initializer='he_uniform',
    padding='same',input_shape = (150, 150, 3)))

    #卷积窗口的高度和宽度降低为(2,2)
    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(Conv2D(128, (3,3), activation = 'relu'))
    model.add(MaxPooling2D((2,2)))

    #Flatten层用来将输入“压平”,即把多维的输入一维化
    model.add(Flatten())
    #全链接层,输出空间的维数
    model.add(Dense(512, activation = 'relu'))
    model.add(Dense(1, activation = 'sigmoid'))
    
    from keras import optimizers
    # 设置损失算法与优化
    model.compile(loss = 'binary_crossentropy', optimizer = optimizers.RMSprop(lr = 1e-4), metrics =['acc'])
    return model

【5】训练模型

# 初始化模型
IMG_WIDTH = 150
IMG_HEIGHT = 150
IMG_CHANNELS = 3

model = Model(IMG_WIDTH, IMG_HEIGHT, IMG_CHANNELS)
model_1 = model.create_model()
model_1.summary()


from keras.preprocessing.image import ImageDataGenerator

#原来是255的像素做 0与1的处理
train_imgdatagen = ImageDataGenerator(rescale = 1./255)
valid_imgdatagen = ImageDataGenerator(rescale = 1./255)


train_generator_m1 = train_imgdatagen.flow_from_dataframe(
                        train_df,
                        directory="./dogs-vs-cats/train",
                        x_col='filename',
                        y_col='category',
                        target_size = (150, 150), # resize image to 150x150
                        batch_size = 64,
                        class_mode = 'binary'
                    )

validation_generator_m1 = valid_imgdatagen.flow_from_dataframe(
                            validate_df,
                            directory="./dogs-vs-cats/train",
                            x_col='filename',
                            y_col='category',
                            target_size = (150, 150), # resize image to 150x150
                            batch_size = 64,
                            class_mode = 'binary'
                    )


import numpy as np

# model 1 开始训练
history_1 = model_1.fit(
        train_generator_m1,
        epochs = 30,
        steps_per_epoch = 100,
        validation_data = validation_generator_m1,
        validation_steps = 50
)



#保存模型
model_1.save('model_1.h5')

【6】打印训练结果

print(np.mean(history_1.history['acc']))
print(np.mean(history_1.history['val_acc']))

【7】形成图像结果

plt.plot(history_1.history['acc'], color = 'black')
plt.plot(history_1.history['val_acc'], color = 'blue')
plt.title('Training and validation accuracy of model 1')
plt.xlabel('Epochs')
plt.ylabel('Accuracy’)4
plt.show()


plt.plot(history_1.history['loss'], color = 'black')
plt.plot(history_1.history['val_loss'], color = 'blue')
plt.title('Training and validation loss of model 1')
plt.xlabel('Epochs')
plt.ylabel('Accuracy')
plt.show()

【8】写个测试类

from numpy.core.fromnumeric import ptp
import pandas as pd
import os
import matplotlib.pyplot as plt

from keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import load_model

model = load_model('model_1.h5')

test_filenames = os.listdir('./dogs-vs-cats/test3')

test_df = pd.DataFrame(
         {
             'id' : test_filenames
         } 
         )

print(test_df)
test_gen = ImageDataGenerator(rescale = 1./255)

test_generator = test_gen.flow_from_dataframe(    
                    test_df,
                    "./dogs-vs-cats/test3", 
                    x_col='id',
                    y_col=None,
                    target_size = (128, 128), # resize image to 150x150
                    batch_size = 20,
                    class_mode = None,
                    shuffle=False,
                    validate_filenames=False
                  )

predictions = model.predict(test_generator)
print(predictions)
pred = [1 if p > 0.5 else 0 for p in predictions]

test_df['category'] = pred

test_df['category'].value_counts().plot.bar()
plt.show()

得出的结果

模型上还是有所偏差,后续可以优化模型提升正确率

深度学习-使用tensorflow实现猫狗识别 最近一直在撸猫,为了猫主子的事情忧三愁四,皱纹多了不少,头发也掉了好几根,神态也多了几分忧郁,唯一不变的还是那份闲鱼的懒散和浪荡的心。 要说到深度学习图像分类的经典案例之一,那就是猫狗大战了。猫和狗在外观上的差别还是挺明显的,无论是体型、四肢、脸庞和毛发等等, 都是能通过肉眼很容易区分的。 那么如何让机器来识别猫和狗呢?这就需要使用卷积神经网络来实现了。 网上已经有不少人写过这案例了,我也来尝试下... 阅读详情

相关推荐

【Tensorflow实战】一步步创建AlexNet模型识别猫和狗

实际项目见:https://github.com/HiAliens/Cat-and-dog 一、概述 一步步从数据处理和读入开始,到模型创建、训练、测试。 二、所含文件 文件注释里有详细的介绍,详细见上面gitghu地址 三、代码 preprocessing.py #!/usr/bin/env python # -*- coding:utf-8 -*- # author:Dr.Shang ...

weixin_38715680的博客 1134

用tensorflow实现猫和狗图片的识别

为了进一步降低过拟合,你还需要向模型中添加一个 Dropout 层,添加到密集连接分类器之前。# 数据预处理:使用 ImageDataGenerator 从目录中读取图像。#生成随机变换后的图像批量。#将其转换为形状 (150, 150, 3) 的 Numpy 数组。# 将所有图像的大小调整为 150×150。#将其形状改变为 (1, 150, 150, 3)train_dir = '训练目录'# 将图像复制到训练、验证和测试的目录。#显示几个随机增强后的训练图像。# 保存较小数据集的目录。

m0_70506179的博客 615

识猫辨狗!用TensorFlow和Keras构建卷积神经网络

全文共9940字,预计学习时长20分钟或更长不同神经网络结构各有所长。本文主要介绍如何在Python中使用TensorFlow和Keras构建卷积神经网络。卷积神经网络...

读芯术的博客 1042

深度学习Week14——利用TensorFlow实现猫狗识别

🍨 本文为🔗365天深度学习训练营中的学习记录博客K同学啊 | 接辅导、项目定制本篇内容分为两个部分,前面部分是学习K同学给的算法知识点以及复现,后半部分是自己的拓展与未解决的问题。

Ying_xiaotao的博客 1341

数据挖掘实战-基于tensorflow深度学习的猫狗分类识别

本实验的目的是基于深度学习方法进行猫狗分类,通过设计和训练深度神经网络模型,实现对输入图像进行准确的猫狗分类。

m0_64336780的博客 2万+

饥荒联机版Mod开发——modmain环境与API深度解析

本文深入解析饥荒联机版Mod开发中的modmain.lua环境与核心API,详细讲解环境表构建原理、API注册与调用时机,并提供高级开发技巧与最佳实践。通过源码分析和实际案例,帮助开发者掌握Mod开发核心技术,解决常见问题,提升开发效率与代码质量。

weixin_30312563的博客 432

TensorFlow2学习十二、使用预训练CNN进行迁移学习识别猫和狗

一、说明 本文学习资源来自tensorflow官网,测试环境使用tensor conlab。 1. 本文内容 学习怎么使用预训练cnn进行猫、狗分类。 预训练模型是一个使用大量数据训练好并保存好的网络模型,典型的是大量图像数据的分类工作。我们可以使用本文中的预训练模型,也可以针对一个任务使用迁移学习客制化模型。 当一个模型是基于足够大的、足够有代表性的数据集训练出来的,那么它可以有效的工作在机器视...

猿来这样-谢厂节的博客 2716

2d游戏地图编辑器_[U3D]基于MarchingCubes实现的War3Editor 地表/悬崖编辑器

花了几天时间研究清楚Marching cubes后,发现这个方法是一个非常适用于地图编辑,网格编辑,procedural 生成的工具。最大的优点有着较好的边缘,表面处理。然后我用U3D写了一个悬崖/地表的编辑器。其中使用到了Marching Cubes的2.5D,2D两种降维的方法。talk is cheap,让我看效果!DemoEditor展示https://www.zhihu.com/vide...

weixin_42504649的博客 1178

用Python做有趣的AI项目1:用 TensorFlow 实现图像分类(识别猫、狗、汽车等)

通过构建卷积神经网络(CNN),让模型学会识别图片中是什么物体。我们将使用 CIFAR-10 数据集,它包含 10 类:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。推荐使用 Jupyter Notebook,方便边学边运行,也可以用 VS Code、PyCharm 等编辑器。这些库的作用:tensorflow:用于构建和训练神经网络。matplotlib:用于可视化图片和训练过程。numpy:用于处理数组和数据操作。

roc_ever的博客 1261

unity中VideoPlayer播放视频,使用Shader除去黑底且无黑边

1. 创建一个Shader 和 一个 材质球;Shader中复制如下代码:(此Shader代码为“ChromaKeyKit”插件中的ChromaKey_Alpa_Genera代码,但因只需要除去视频黑底而挂一个插件有点不合适) // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' Shader "ChromaKeyKit/ChromaKey/ChromaKey_Alpha_General"

weixin_42065078的博客 1745

赴美参加学术会议办理流程

有幸能在研究生阶段获得学校资助出国参加学术会议,首先要感谢学校的支持,以及学院和实验室的各位老师~ 接下来说下参会整个准备过程: 本人在接到论文录用通知后,就开始办理相关手续。因为会议地点是美国夏威夷,而且录用通知时间与会议召开时间只隔两个月左右,所以接下来两个月时间要办好学校出国申请手续,赴美签证,因为专业原因,据说签证不好办,所以时间比较紧。学校出国申请和签证相关材料是并行进行的,赴美花费...

xingxin_xu的博客 3194

如何使用CNN进行物体识别和分类_TensorFlow2学习十二、使用预训练CNN进行迁移学习识别猫和狗...

一、说明本文学习资源来自tensorflow官网,测试环境使用tensor conlab。1. 本文内容学习怎么使用预训练cnn进行迁移学习从而把猫、狗分类。预训练模型是一个使用大量数据训练好并保存好的网络模型,典型的是大量图像数据的分类工作。我们可以使用本文中的预训练模型,也可以针对一个任务使用迁移学习客制化模型。当一个模型是基于足够大的、足够有代表性的数据集训练出来的,那么它可以有效的工作在机...

weixin_39715460的博客 336

基于555定时器的D类功放设计:从PWM原理到无反馈电路实践

D类功放(数字功放)是一种高效率的音频放大技术,其核心原理是脉冲宽度调制(PWM)。它将输入的模拟音频信号转换为一系列高速开关的脉冲,通过控制功率开关管(如MOSFET)的通断,再经低通滤波器还原放大后的音频。相比传统AB类功放,其转换效率通常超过90%,显著降低了热能损耗。这项技术在追求高能效和小型化的现代音频设备中价值凸显,广泛应用于有源音箱、汽车音响和便携式设备。本文聚焦于一种独特的实现方案:以经典的555定时器芯片为核心,构建一个无整体负反馈的D类功放。通过剖析其PWM调制器、FET电压-电流转换级

weixin_30162121的博客 221

TensorFlow by Google CNN识别猫和狗 Machine Learning Foundations: Ep #6 - Convolutional cats and dogs

https://www.kaggle.com/c/dogs-vs-cats/data https://bit.ly/tfw-lab6 1. 使用更大的数据集进行训练 - 猫和狗 在上一个实验中,您使用马匹-人类数据集训练了一个分类器。您看到,尽管获得了很好的训练结果,但是当您尝试对真实图像进行分类时,还是会出现很多错误,主要是由于过度拟合——网络在处理之前看到的数据时表现很好,但在处理之前看到的数据时表现不佳’不! 在本实验中,您将查看一个真实的、非常大的数据集,并了解这对避免过度拟合的影响。 imp..

AI架构师易筋 874

23数字图像置乱技术(matlab程序)

所谓“置乱”,就是将图像的信息次序打乱,a像素移动到b像素位置上,b像素移动到c像素位置上,……,使其变换成杂乱无章难以辨认的图片。数字图像置乱技术属于加密技术,是指发送发借助数学或者其他领域的技术,对一幅有意义的数字图像做变换,使之变成一幅杂乱无章的图像用于传输。在图像传输过程中,它通过对图像像素矩阵的重排,破坏了图像矩阵的相关性,使非法截获者无法从杂乱无章的图像中获得原图像信息,以此实现信息的加密。接收方经去乱解密可恢复原图像。

m0_57943157的博客 1204

docker 安装oracle

本文介绍了使用Docker部署Oracle数据库的实践指南。主要内容包括:常用Oracle镜像的阿里云和华为云拉取地址,11g/12c/19c等不同版本的启动命令示例,以及连接数据库的基本信息。实战部分详细演示了Oracle 11g的安装过程,包括镜像拉取、容器启动、密码修改和数据库连接步骤,并通过Sql Developer和命令行两种方式创建用户。最后提到数据持久化的重要性,建议将数据库文件挂载到宿主机目录以防止容器删除导致数据丢失。文章提供了完整的操作命令和截图说明,适合需要快速部署Oracle测试环境

weixin_39766667的博客 372

一个简单的TensorFlow.js的猫狗识别样例

一个简单的TensorFlow.js的猫狗识别样例 后台代码忽略,只要能够成功传送两个模型文件即可。 代码的猫狗识别模型是一个简单的CNN模型(有残差模块)。 <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <title>TensorflowJS<...

PythonX10的博客 1706

自抗扰控制(ADRC)理论与工程实践:8.2 模糊ADRC、神经网络ADRC等智能融合变体

智能融合ADRC变体概述 自抗扰控制(ADRC)与智能控制方法(如模糊逻辑、神经网络)的融合,旨在突破传统ADRC在非线性、时变系统中的应用局限。智能融合ADRC主要通过以下方式实现性能提升: 模糊ADRC 参数自整定:利用模糊推理在线调节ADRC带宽参数,实现自适应控制。 非线性反馈:用模糊控制器替代线性PD,灵活设计非线性控制策略。 优势:融入专家经验,无需精确模型;局限:依赖规则库设计,稳定性分析困难。 神经网络ADRC 增强ESO:用神经网络学习扰动动态,提高估计精度。

技术工作者 225

python使用卷积神经网络(CNN,VGGNET)识别猫狗

python使用卷积神经网络(CNN,VGGNET)识别猫狗 VGGNet是一个著名的卷积神经网络模型,是牛晶大学和Google公司研究人员共同研发

showswoller的博客 1933

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Tensorflow keras动物分类[keras学习笔记]

学习笔记 猫,狗, 象,牛,猪五分类问题 样本 库 网络 模型 编译 训练 结果 样本 猫(cat, 200) 大象(elefante, 215) 狗(dog, 205) 牛(mucca, 210) 猪(pig, 147) 总共977张,5类图片 数据集下载 链接:https://pan.baidu.com/s/1N2fHG0r3YkiQvQ7VOUF7Hw 提取码:8ulu 复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V5的分享 库(推荐使用anacond

hjskj的博客 1736

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【动物识别系统】Python+卷积神经网络算法+人工智能项目+深度学习+计算机课设项目

动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。在本项目中,旨在通过人工智能技术实现常见动物的自动识别。

2401_87935081的博客 1936

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

TensorFlow 卷积神经网络之使用训练好的模型识别猫狗图片

此系列的上一篇是 训练猫狗图片识别模型TensorFlow 卷积神经网络之猫狗识别,这片文章是介绍,训练后的模型应该如何使用。 本文逻辑:  1. 我从网上下载了十几张猫和狗的图片,用于检验我们训练好的模型。  2. 处理我们下载的图片  3. 加载模型  4. 将图片输入模型进行检验 代码如下: #coding=utf-8 import tensorflow as tf from ...

kwame211的博客 1975

keras图像识别

终于抓住11月的尾部,赶在12月到来之前进行更新了,2018准备要跟我们说拜拜了,小伙伴们你们今年的目标实现了吗?,好了扯远了,今天趁着有时间更新一下博客,记录一下使用keras + tensorflow + cpu 如何进行图像识别 以下的教程是基于Linux系统来实现的,有windows的同学可能需要改改,但是不建议使用windows来跑 还有由于识别的图像比较多内存小于等于4G的同学要跑的话...

lucky404的博客 1万+

Tensorflow制作并用CNN训练自己的数据集

本人初学Tensorflow,在学习完用MNIST数据集训练简单的MLP、自编码器、CNN后,想着自己能不能做一个数据集,并用卷积神经网络训练,所以在网上查了一下资料,发现可以使用标准的TFrecords格式。但是,遇到了问题,制作好的TFrecords的数据集,运行的时候报错,网上没有找到相关的方法。后来我自己找了个方法解决了。如果有人有更好的方法,可以交流一下。1. 准备数据我准备的是猫和狗两...

Nick Blog 1万+

Tensorflow制作自己数据集并用CNN训练自己的数据集

学习完用MNIST数据集训练简单的MLP、自编码器、CNN后,我想着自己能不能做一个数据集,并用卷积神经网络训练,所以在网上查了一下资料,发现可以使用标准的TFrecords格式,参考见最后面的链接。但是,我也遇到了问题,制作好的TFrecords的数据集,运行的时候报错,网上没有找到相关的方法。后来我自己找了个方法解决了。 1. 准备数据 我准备的是猫和狗两个类别的图片,分别存放在D盘data/train文件夹下,如下图: 测试数据放在D盘data/test文件夹下,如下图: 2. 制

Vertira的博客 1716

介绍和预处理 - 使用卷积神经网络识别狗和猫 p. 1

这段文字描述的是一个关于机器学习教程的预告,并介绍了即将进行的“猫狗大战”图像分类任务的准备工作。 教程概述: 该教程是机器学习系列教程的最后一部分,将深入探讨实际应用。 任务目标是识别图像中是猫还是狗。 强调这是一个简单的分类任务,图像中不会同时出现猫和狗。 准备工作: 首先需要注册 Kaggle 账号并下载数据集,大小约为 7-8 GB。 数据集包含 25,000 张训练图像和 12,5...

sentdex的博客 217
上一篇: macOS下tensorflow安装
下一篇: tensorflow识别水果
sinom21
博客等级 码龄19年 22粉丝 33原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sinom21

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值