需要下载:pip install tflearn
一些理论知识在前一篇文章中:可以一起阅读学习
https://blog.csdn.net/m0_64596200/article/details/126918240?spm=1001.2014.3001.5501
已经处理好的.npy文件:
https://download.csdn.net/download/m0_64596200/86720092
本模型爬取猫和狗的图片各一万多张


1、进行数据预处理
图片灰度处理
(代码中有注释,帮助理解)

这里的:
IMAGE_SIZE=50

def label_img(img_name):# 图片分类label_name = img_name.split(".")[0]if label_name == "cat":return [1, 0]elif label_name == "dog":return [0, 1]else:return []
"""
图片处理:变单通道(灰度处理)
"""
def create_train_data(dir_path):training_data = []# 进度条for img_path in tqdm(os.listdir(dir_path)):label = label_img(img_path)if len(label) != 0:# 路径拼接img_path = os.path.join(dir_path, img_path)# 变单通道img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)if img is not None:# 重置大小img = cv2.resize(img, (IMAGE_SIZE, IMAGE_SIZE))training_data.append([np.array(img), np.array(label)])# 打乱顺序shuffle(training_data)# 存储处理后的数据,之后模型训练可以直接使用.npynp.save('train_data.npy', training_data)print(training_data)create_train_data("./train")


这里结束后将最后一句
create_train_data(“./train”)
注释掉

进行网络搭建

IMAGE_SIZE = 50
# 搭建网络
# 输入层
input = input_data(shape=[None, IMAGE_SIZE, IMAGE_SIZE, 1], name="input")
# 输入数据
# 第一层神经网络
# 参数:输入,输出维度,卷积核大小,激活函数
conv1 = conv_2d(input, 32, 5, activation="relu")
# 池化
conv1 = max_pool_2d(conv1, 2)# 第二层 输出也可以是32
conv2 = conv_2d(conv1, 64, 5, activation="relu")
conv2 = max_pool_2d(conv2, 2)
# 第三层
conv3 = conv_2d(conv2, 128, 5, activation="relu")
conv3 = max_pool_2d(conv3, 2)
# 第四层
conv4 = conv_2d(conv3, 256, 5, activation="relu")
conv4 = max_pool_2d(conv4, 2)# 拍平 全连层1
fully1 = fully_connected(conv4, 1024, activation="relu")
# 太多层的话会导致全连节点过多,导致太依赖,结果过拟合
# 防过拟合:丢弃部分神经元
fully1 = dropout(fully1, 0.5)
# 全连2:产生分类器
fully2 = fully_connected(fully1, 2, activation="softmax")
# 损失函数和优化器
model_net = regression(fully2, optimizer="adam", learning_rate=0.0001, loss="categorical_crossentropy",name='model_net')
# 模型的创建
model = tflearn.DNN(model_net, tensorboard_dir='log')
# 模型训练
# 加载数据 前面处理好的数据
train_data = np.load('train_data.npy', allow_pickle=True)
# 数据分割留30条训练后30测试
train = train_data[:-30]
test = train_data[-30:]
# i[0]是feature i[1]是label进行配对
X = np.array([i[0] for i in train]).reshape((-1, IMAGE_SIZE, IMAGE_SIZE, 1))
Y = [i[1] for i in train]
# 训练集
test_x = np.array([i[0] for i in test]).reshape((-1, IMAGE_SIZE, IMAGE_SIZE, 1))
test_y = [i[1] for i in test]
# 模型训练 n_epoch将数据使用几遍
model.fit({'input': X}, {'model_net': Y}, n_epoch=3, validation_set=({'input': test_x}, {'model_net': test_y}), snapshot_step=10, show_metric=True, run_id="model_classs")
# 保存模型
model.save("model/catVSdog.model")

这里卷积和池化用了四层,层数并非越多越好,以及 n_epoch。

结果:

1:第几步
2:总损失率
3:所用时间
4:优化器
5:训练第几轮
6:损失率
7:成功率
8:该轮迭代到的数据

模型使用:
上面内容是在同一个py文件中
以下的是在新的py文件
搭建网络过程需要与创建是一致

IMAGE_SIZE = 50input = input_data(shape=[None, IMAGE_SIZE, IMAGE_SIZE, 1], name="input")
# 输入数据
# 第一层神经网络
# 参数:输入,输出维度,卷积核大小,激活函数
conv1 = conv_2d(input, 32, 5, activation="relu")
# 池化
conv1 = max_pool_2d(conv1, 2)
# 第二层 输出也可以是32
conv2 = conv_2d(conv1, 64, 5, activation="relu")
conv2 = max_pool_2d(conv2, 2)
# 第三层
conv3 = conv_2d(conv2, 128, 5, activation="relu")
conv3 = max_pool_2d(conv3, 2)
# 第四层
conv4 = conv_2d(conv3, 256, 5, activation="relu")
conv4 = max_pool_2d(conv4, 2)
# 拍平 全连层1
fully1 = fully_connected(conv4, 1024, activation="relu")
# 太多层的话会导致全连节点过多,导致太依赖,结果过拟合
# 防过拟合:丢弃部分神经元
fully1 = dropout(fully1, 0.5)
# 全连2:产生分类器
fully2 = fully_connected(fully1, 2, activation="softmax")
# 损失函数和优化器
model_net = regression(fully2, optimizer="adam", learning_rate=0.0001, loss="categorical_crossentropy",name='model_net')
# 模型的创建
model = tflearn.DNN(model_net, tensorboard_dir='log')
# 加载模型
model.load("./model/catVSdog.model")# 将检测的图片变成np array
def classify(img_path):# 灰度读取img = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)if img is not None:img = cv2.resize(img,(IMAGE_SIZE,IMAGE_SIZE))data = img.reshape(-1,IMAGE_SIZE,IMAGE_SIZE,1)return datapredict = model.predict(classify('123.bmp'))[0]
print(predict)
max_index = np.argmax(predict)
if max_index ==0:print("猫")
elif max_index ==1:print("狗")

使用的图片:

运行结果:

更改准确率的方法:
1、适当增加层数
2、适当增加数据使用次数
3、增加图片数量

python:tflearn训练的猫狗识别模型及其使用相关推荐

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

    导语 哈喽吖铁汁萌~今天来教大家写个猫狗识别系统 小猫小狗真的太可爱了

  2. Tensorflow猫狗识别模型在Android上的部署

    自iphone X以来,各品牌的手机旗舰机型都开始支持Face ID.与之前的指纹识别相比,人脸识别还是更方便一些.近期在国内大火的抖音,也与人脸识别技术密不可分.各手机厂家还纷纷推出人工智能芯片,希 ...

  3. 利用yolov实现目标检测——利用yolov5训练自己的猫狗识别模型

    作者有话说:我是个小白,这个是我的学习记录,以便以后回过头来看的时候能看懂;-),希望也可以帮助到大家

  4. 第十二章 卷积神经网络实战--猫狗识别

    1.介绍 我们已经学习了如何用传统的神经网络进行机器学习,在本章我们学习一下如何使用简单的神经网络进行图像分类.数据集用的是Kaggle的猫狗数据集.这里只有前100张,如果需要更多的可以去Kaggl ...

  5. 简单的识别猫狗的模型

    从Google下载猫狗训练集与验证集的zip压缩包,提取到项目目录下.这个文件夹里面包含训练(train)和验证(validation)数据集的子目录,而且每个子目录都包含猫和狗的子目录. 可以直接在 ...

  6. 基于卷积神经网络(CNN)的猫狗识别

    目录 引言 1.什么是卷积神经网络? 1.1什么是神经网络? 1.2什么是卷积? 2.准备工作 2.1一些知识: 2.2keras 2.3Conv2D 2.4 MaxPooling2D 3.基于卷积神 ...

  7. 【深度学习】猫狗识别TensorFlow2实验报告

    实验二:猫狗识别 一.实验目的 利用深度学习实现猫狗动物识别,采用Kaggle提供的公开数据集,训练深度学习模型,对测试集猫狗中的图片准确分类.通过该实验掌握深度学习中基本的CV处理过程. 二.实验原 ...

  8. 【卷积神经网络】CNN详解以及猫狗识别实例

    文章目录 一.卷积神经网络(CNN)介绍 1.1 整体结构 1.2 说明 1.3 特点 1.4 应用领域 二.配置实验环境 三.猫狗识别实例 3.1 准备数据集 3.2 图片分类 3.3 网络模型搭建 ...

  9. 华为云深度学习kaggle猫狗识别

    使用华为云深度学习服务完成kaggle猫狗识别竞赛 参考: kaggle猫狗竞赛kernel第一名的代码 Tensorflow官网代码 华为云DLS服务github代码 1. 环境配置与数据集处理 首 ...

最新文章

  1. WordPress开发之WP Custom Register Login插件试用
  2. Delphi XE2 之 FireMonkey 入门(17) - 特效
  3. 第六天2017/04/11(1:结构体链表基础和相关经典操作)
  4. 山东理工大学第十二届ACM程序设计竞赛 - Cut the tree(树上启发式合并+线段树)
  5. 解决redis启动时的警告
  6. python人脸识别环境搭建_怎样用3分钟搭建 Python 人脸识别系统
  7. Android Studio之导入别人的module后config.gradle配置文件没有生效
  8. LeetCode 501二叉搜索树中的众数-简单
  9. Google LOGO现代舞舞蹈动画
  10. 对php的感受100字_这首由半个古风圈歌手演唱的王者荣耀100英雄群像歌,燃炸了...
  11. Mimikatz 非官方指南和命令参考_Part1
  12. cms运行php,迅睿CMS 主程序运行之后
  13. vivoy67Android7升级包,vivoy67刷机包
  14. 【软件使用】Macbook M1 QuickTime录屏讲解(只录电脑或者同时录电脑和麦克风人声)
  15. 投影幕布尺寸计算器_投影幕布:投影幕布的尺寸计算
  16. python中数组常用的统计方法
  17. 面试了一个 37 岁程序员,让我有所触动,35岁以上的程序员该何去何从?
  18. Mac电脑鼠标滚轮方向相反的解决办法
  19. mac使用mysql出现的错误 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  20. 如何分发大文件、大文件传输解决方案

热门文章

  1. spring security4 cas4 整合 j_spring_cas_security_check 404
  2. vbs教程《模拟按键》
  3. 使用matlab对记录数据进行傅里叶分析
  4. 华为Weautomate ai初级教程1
  5. SK6812驱动入门
  6. mysql 中文乱码问题解决(复制粘贴就可以解决)
  7. 汽车零部件物料配送防错漏视觉检测工作站
  8. mapmimax的学习
  9. 还在手动测试?那是那还不知道Python自动化测试的强大之处
  10. hexo博客的搭建与部署