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

需要下载: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、增加图片数量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26873.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Pytorch实现猫狗分类

文章目录 一、环境配置二、数据集的准备三、猫狗分类的实例四、实现分类预测测试五、参考资料 一、环境配置 安装Anaconda 具体安装过程,请自行百度配置Pytorchpip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch pip install -i https://pypi.tuna.t…

猫狗训练单张图片的测试

猫狗训练的训练模型的建立,模型在整个预测集上的预测效果的测试的程序代码网上或一些书籍上都可查阅,但是对单张或某些图片的分类测试程序不多,这里通过参考博客:https://blog.csdn.net/baidu_35113561/article/details/79371716 …

宠物鼻纹识别及面部识别进一步在城市养犬登记场景落地

最近安阳狗咬人事件造成了极其恶劣的社会影响,大型禁养犬类伤人成为城市治安管理不容忽视的隐患,正威胁人们的生命安全,养犬热潮也给城市管理带来了不小的挑战,粗放式的养犬管理不再适应时代的需求,城市养犬管理改革已…

借助互联网,“宝贝它”欲打造线上宠物交易与服务平台

作为人类忠实的朋友,宠物一直伴随着很多家庭的成长。而随着人们生活节奏的不断加快,电子商务正成为越来越多传统垂直领域的解决方案,宠物交易与服务同样也不例外。上海创业公司宝贝它希望借助互联网,打造线上宠物交易及服务平台。…

小动物领养网站/宠物救助网站

摘 要 本论文对小动物领养网站的开发过程进行了较为详细的论述,采用B/S架构、ssm 框架和 java 开发的 Web 框架,eclipse开发工具。 小动物领养网站,主要的模块包括管理员;首页、个人中心、用户管理、动物展示管理、动物分类管理…

语音合成工具Coqui TTS安装及体验

先介绍两种免费的语音合成工具 balabolka 官网 http://balabolka.site/balabolka.htm 是一种基于微软Speech API (SAPI)的免费语音合成工具,只是简单的发音合成,效果比较生硬 Coqui TTS 官网 https://coqui.ai/ 是基于深度学习的语音合成软件&#x…

音视频进阶教程|如何实现游戏中的实时语音

1 游戏实时语音功能简介 1.1 游戏实时语音概念解释 范围:收听者接收音频的范围。方位:指收听者在游戏世界坐标中的位置和朝向,详情可参考 5.5 初始化设置 中的“步骤 1”。收听者:房间内接收音频的用户发声者:房间内…

通过实时语音驱动人像模拟真人说话

元宇宙的火热让人们对未来虚拟世界的形态充满了幻想,此前我们为大家揭秘了声网自研的 3D 空间音频技术如何在虚拟世界中完美模拟现实听觉体验,增加玩家沉浸感。今天我们暂时离开元宇宙,回到现实世界,来聊聊声网自研的 Agora Lipsy…

聊天语音APP开发|聊天语音软件开发-实时音视频技术

聊天语音软件的开发应该是一个以视频和语音直播为核心的社交系统。对于用户来说,更好的视频和语音直播功能可以增强用户的接受感,让用户持续使用。为了方便视频和语音直播的采用体验,减少直播的延时,聊天语音软件的开发将采用实时…

拿到offer提出离职,公司拖30天才放人,但下家公司等不了30天,怎么办?

拿到offer想跳槽,向公司提出了离职,但公司要拖30天才放人,新公司又等不了30天,offer可能就没有了,这就是一位网友面临的两难局面,这种情况有没有什么解决的好办法呢? 有人安慰楼主,下…

怎么说离职原因新的公司比较能接受?

怎么说离职原因新的公司比较能接受? 我来提供一些格式化的应对方法; 1.实际原因:原单位工资太少。离职原因:我认为我自己已经具备了一定的积累,希望可以迈向一个新的台阶。 2.实际原因:跟同事出不来。离…

我提了离职,公司给我涨薪了,还能待下去吗?

金三银四到了,相信不少同学又开始在物色新的公司。 不少同学反映,在提出离职后,公司给自己加了薪,虽然不多。 那“在职员工,提出辞职被挽留,应该留下吗?” 为什么想要离职? 这个问…

是的,我离职了

终于可以敞开说这件事情了,年后的这一个月,我彻底停更了,并不是偷懒了,而是我要找工作。大家也都知道18年的寒冬,很多大厂开始裁员,所以我要更加认真的学习,毕竟跟大厂出来的相比,自…

办理离职手续流程的详细流程(离职交接的标准流程)

1、正式员工办理离职手续流程 若员工自离,需提前一个月向部门领导提出辞职申请(即时聊天工具或邮件)和《解除劳动合同申请》。 1)面谈:一般领导都会先谈话,确定你离职的时间及安排交接人员进行工作交接。 2…

程序员新公司入职被拒 只因离职证明多了一句话!

程序猿(微信号:imkuqin) 猿妹 整编 新闻报道来自:成都商报 近日,成都一名程序员被新应聘的公司通知入职,然而因为原公司给他出具的一份离职证明上,记载了一句“该员工在项目未完成情况下因个人原…

提交辞职申请时,领导极力挽留,还答应加薪,要不要留下来?

提交辞职申请时,领导极力挽留,还答应加薪,要不要留下来?张工是一名程序员,最近他向领导提交了辞职申请表后,却被领导极力挽留,领导不仅打感情牌,还打加薪牌。就是希望张工能够留下来…

医学影像处理与识别,应用AI模型,探索疾病辅助诊断!

关注公众号,发现CV技术之美 今天(2023.1.9) arXiv.CV 上有7篇医学影像处理与识别相关论文。不过粗略看来,医学影像类的论文,很多都是直接使用已有模型(甚至都不是最先进的模型),加以…

【react从入门到精通】初识React

文章目录 人工智能福利文章前言React技能树什么是 React?安装和配置 React创建 React 组件渲染 React 组件使用 JSX传递属性(Props)处理组件状态(State)处理用户输入(事件处理)组合和嵌套组件写…

JWT续期问题,ChatGPT解决方案

JWT(JSON Web Token)通常是在用户登录后签发的,用于验证用户身份和授权。JWT 的有效期限(或称“过期时间”)通常是一段时间(例如1小时),过期后用户需要重新登录以获取新的JWT。然而&…

可用数据存量不足,还能怎样向AI模型注入人类智能?

作者 | 王昊 出品 | IDEA研究院 在深度学习发展的第三波浪潮中, ChatGPT引发了人们对人工智能前所未有的关注。它的出现意味着基于指令学习和人类反馈的AI技术成为人工智能领域的关键。然而,当前所展示的能力还远不是AI的最终形态,无论是产业…