Python基于Oxford-IIIT Pet Dataset实现宠物识别系统

         先看效果:

       Oxford-IIIT Pet Dataset是一个不错的数据集,牛津官方整理出来的一个关于各种猫和狗的数据集,可以很方便被我们用来做图像识别或者是图像分割类型的任务,这里我们主要是做图像识别的应用。

        官方介绍如下所示:

        除了这些以外,官方还对数据集下各个类别中的数据量进行了统计,如下所示:

          从数据统计结果上来看,狗的图像数据量是猫的两倍以上。

         这里我们要做的是图像识别的任务,由于原始数据集是混在一起的,这里我首先将其拆分开来,归类到不同的目录中,核心代码实现如下所示:

#!usr/bin/env python
# encoding:utf-8
from __future__ import division"""
功能: 数据处理模块
"""import os
import shutildef splitImg2Category(dataDir="images/",resDir="dataset/"):'''归类图像到不同目录中'''for one_pic in os.listdir(dataDir):one_path=dataDir+one_piconeDir=resDir+one_pic.split('_')[0].strip()+"/"if not os.path.exists(oneDir):os.makedirs(oneDir)shutil.copy(one_path,oneDir+one_pic)

        归类处理之后得到如下目录:

        随机看几个目录:

【Abyssinian】

 【Egyptian】

 【miniature】

 【shiba】

       接下来对总的数据集进行随机划分,得到训练集-测试集,核心代码实现如下:


def random2Dataset(dataDir='data/original/',ratio=0.3):'''对原始数据集进行划分,得到:训练集和测试集'''label_list=os.listdir(dataDir)for one_label in label_list:oneDir=dataDir+one_label+'/'pic_list=os.listdir(oneDir)testNum=int(len(pic_list)*ratio)oneTrainDir='data/train/'+one_label+'/'oneTestDir='data/test/'+one_label+'/'if not os.path.exists(oneTrainDir):os.makedirs(oneTrainDir)if not os.path.exists(oneTestDir):os.makedirs(oneTestDir)#创建测试集for i in range(testNum):one_path=oneDir+random.choice(os.listdir(oneDir))name=str(len(os.listdir(oneTestDir))+1)new_path=oneTestDir+one_label+'_'+name+'.jpg'shutil.move(one_path,new_path)#创建训练集for one_pic in os.listdir(oneDir):one_path=oneDir+one_picname=str(len(os.listdir(oneTrainDir))+1)new_path=oneTrainDir+one_label+'_'+name+'.jpg'shutil.move(one_path,new_path)

       接下来搭建CNN模型:

def buildModel(h=16, w=10, way=1):"""构建模型"""model = Sequential()input_shape = (h, w, way)model.add(Conv2D(64, (3, 3), input_shape=input_shape))model.add(Activation("relu"))model.add(Dropout(0.3))model.add(Conv2D(64, (3, 3)))model.add(Activation("relu"))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(Flatten())model.add(Dense(1024))model.add(Activation("relu"))model.add(Dropout(0.3))model.add(Dense(35))model.add(Activation("sigmoid"))lrate = 0.01decay = lrate / 100sgd = SGD(lr=lrate, momentum=0.9, decay=decay, nesterov=False)model.compile(loss="categorical_crossentropy", optimizer=sgd, metrics=["accuracy"])print(model.summary())return model

        之后就可以训练模型了,核心代码实现如下:

#数据加载
X_train, X_test, y_train, y_test = load()
X_train = X_train.astype("float32")
X_test = X_test.astype("float32")
#数据归一化
X_train /= 255
X_test /= 255
# 模型
model = buildModel(h=h, w=w, way=way)
# 拟合训练
checkpoint = ModelCheckpoint(filepath=saveDir + "best.h5",monitor="val_loss",verbose=1,mode="auto",save_best_only="True",period=1,
)
history = model.fit(X_train,y_train,validation_data=(X_test, y_test),callbacks=[checkpoint],epochs=nepochs,batch_size=32,
)
print(history.history.keys())
#可视化
plt.clf()
plt.plot(history.history["acc"])
plt.plot(history.history["val_acc"])
plt.title("model accuracy")
plt.ylabel("accuracy")
plt.xlabel("epochs")
plt.legend(["train", "test"], loc="upper left")
plt.savefig(saveDir + "train_validation_acc.png")
plt.clf()
plt.plot(history.history["loss"])
plt.plot(history.history["val_loss"])
plt.title("model loss")
plt.ylabel("loss")
plt.xlabel("epochs")
plt.legend(["train", "test"], loc="upper left")
plt.savefig(saveDir + "train_validation_loss.png")
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1] * 100))
model_json = model.to_json()
with open(saveDir + "structure.json", "w") as f:f.write(model_json)
model.save_weights(saveDir + "weights.h5")
model.save(saveDir + "model.h5")
print("=====================Finish=========================")
# 持久化
lossdata, vallossdata = history.history["loss"], history.history["val_loss"]
accdata, valaccdata = history.history["acc"], history.history["val_acc"]
history = {}
history["loss"], history["val_loss"] = lossdata, vallossdata
history["acc"], history["val_acc"] = accdata, valaccdata
with open(saveDir + "history.json", "w") as f:f.write(json.dumps(history))

        训练完成结果如下所示:

        准确率曲线如下:

        损失值曲线如下所示:

         同样,这里开发对应的界面,方便使用,效果图如下:

 

 

 

 

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

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

相关文章

Python用户管理系统,宠物管理系统

用户管理系统 surface """ #三引号是Python的注释符号,但也可以作为字符串输出 **************************************** 用户管理系统 **************************************** 1、注册新用户 2、用户登录 3、用户注销 4、用户信息显示 5、退…

基于涂鸦智能的宠物喂食器

基于涂鸦智能的宠物喂食器 一、开发计划二、涂鸦三明治开发套件涂鸦三明治 Wi-Fi MCU 通信板喇叭涂鸦三明治H桥直流电机驱动功能板涂鸦三明治直流供电电源板MCU主控板 三、产品开发1、产品创建进入涂鸦IoT平台创建产品选择对应的功能点和设备面板下载SDK 2、MCU SDK移植对串口寄…

宠物领养平台的分析与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 文末获取源码 项目编号:BS-PT-052 运行环…

智能宠物项圈app开发解决方案

智能宠物项圈app开发解决方案,今天主要介绍的就是智能宠物项圈app开发方案中的功能。它的功能主要有多重定位,实时定位、出入范围提醒,踪迹随时可寻、远程呼唤、电子围栏、活动监测等,接下来我就来全面的介绍一下。 智能宠物项圈a…

宠物店会员管理系统| 宠物店小程序

国内养宠家庭非常多,推动着国内宠物市场发展,而围绕宠物的细分行业,如宠物食品、宠物用品/医疗/美容/婚介/殡葬等,2019年我国宠物市场规模达2024亿元,预计2023年,市场规模将突破4000亿元左右。 未来的宠物市…

智能宠物饲养系统设计

word完整版可点击如下下载>>>>>>>> 智能宠物饲养系统设计.rar-其它文档类资源-CSDN下载1、资源内容:毕业设计lun-wenword版10000字;开题报告,任务书2、学习目标:快速更多下载资源、学习资料请访问CSDN下…

宠物服务App功能简介

随着时代的变革与发展人们的生活变得越来越好,也变的越来越多样化。物质生活的满足后,人们开始找寻其他的一些兴趣爱好,让自己的生活变的更加多彩,有人种花、有人养鸟、有人养猫、有人养狗等等。不管是养什么都是需要细心照顾才能…

线上宠物领养系统

实现功能 客户端:客户可以查询数据库的宠物信息并根据查询的宠物信息选择自己喜欢的宠物进行领养。 服务器:服务器实现了对管理员相关信息的保存,管理员必须输入正确的用户名和密码才能对数据库信息进行增删改查等操作。服务器也可以直接对数…

软件官网页面模板

此项目由Htmlcss结构搭建而成 里面自适应移动端而做出调整 上代码: 使用了该模板的请将出处表明 项目结构 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" conte…

(学习笔记)使用CHATGPT写的前端页面模板

一、学生管理系统的登录页面 写一个好看的学生管理系统的登录页面&#xff0c;学生使用用户名和密码进行登录 <!DOCTYPE html> <html> <head><title>Student Management System - Login</title><style>body {font-family: Arial, sans-s…

如何将ChatGPT用到Facebook的文案生产中?

ChatGPT 是一款由 OpenAI 所开发的大型语言模型&#xff0c;它可以生成高质量、自然流畅的文本&#xff0c;具有很强的语言理解和生成能力。这使得它成为了一个非常有用的工具&#xff0c;可以应用于许多领域中&#xff0c;包括文案生产。 Facebook 是全球最大的社交媒体平台之…

转载。1AGI 14个关键问题

信息爆炸的 10 篇 AGI 访谈&#xff0c;我们从中整理了 14 个关键问题 原创 Founder Park Founder Park 2023-04-16 19:00 发表于北京 自从 GPT-4 发布以来&#xff0c;媒体高度关注 OpenAI 和其内外部相关人士&#xff0c;重要角色的视频、播客和文章访谈频频出现。为了节省…

下一个“AI王炸”,别只盯着OpenAI,DeepMind也在憋大招

过去几个月&#xff0c;OpenAI风头无两&#xff0c;各大科技公司争先恐后地跟进大语言模型&#xff08;LLM&#xff09;这一技术路线。 对比之下&#xff0c;OpenAI的老对手DeepMind&#xff0c;显得有些低调和沉默。微软靠OpenAI打了一场胜仗&#xff0c;而谷歌推出的Bard翻了…

2023年最好用的办公AI工具,让你工作效率提升10倍!

2023年是AI工具大爆发的一年&#xff0c;在效率办公领域&#xff0c;同样涌现出了很多优秀的AI办公工具&#xff0c;小编亲测了几款&#xff0c;都是宝藏好用的App&#xff0c;以下排名不分先后&#xff0c;一起来看看吧&#xff01; AI办公工具哪个好 GitMindNotion AI酷表C…

[论文速览] Sparks of Artificial General Intelligence: Early experiments with GPT-4

Sparks of Artificial General Intelligence: Early experiments with GPT-4 2023.3.22 微软官方发布了目前人类史上最强AI模型 GPT-4 的综合能力评估论文&#xff0c;总所周知&#xff0c;2023年是通用人工智能&#xff08;Artificial General Intelligence&#xff0c;AGI&a…

Python3常用其他API速查手册(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 最近更新时间&#xff1a;2023.7.18 最早更新时间&#xff1a;2022.6.27 运算符 - * /" / “就表示 浮点数除法&#xff0c;返回浮点结果;” // "表示整数除法。取余% 指数**等式&#xff1a; > < > <不等于&#xff…

比chatPDF更优秀的国内平替

chatPDF是个非常不错的点子。基于openai的embeddeding接口。但是它有两个缺点。 1、当然是需要魔法才能访问。 2、它和微调不同。所有问题都是基于现有文档。而且每次都是根据你的提问&#xff0c;在文档转化成的向量数据里寻找相关联的内容&#xff0c;一同发给 chatGPT&…

我的plus也GG了

用的好好的4.0&#xff0c;突然就被封了&#xff0c;好在是把钱也退给我了&#xff0c;真是好人啊 刚才找到个chatGPT的镜像&#xff0c; 有GPT4,还可以上传word和pdf的网站ppword.cn

ChatGPT小技巧:如何提升提问效率

别人使用ChatGPT一天内能完成100个网站设计&#xff0c;而你却无法完成一个简单的小程序。原因很可能是你并不清楚自己到底想要什么&#xff0c;导致ChatGPT在没有明确需求的情况下无法生成满意的作品。 不用担心&#xff0c;今天我要分享的这个提示将帮助你解决这个难题。 只需…

经典论文-MobileNetV2论文及实践

**### 2019-MobileNetV2 MobileNetV2: Inverted Residuals and Linear Bottlenecks MobileNetV2: 倒置残差和线性瓶颈 作者&#xff1a;Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, Liang-Chieh Chen单位&#xff1a;Google 论文地址&#xff1a; https…