数据集003:猫类识别-12种猫分类数据集 (含数据集下载链接)

数据集简介:

训练集共有2160张猫的图片, 分为12类. train_list.txt是其标注文件

测试集共有240张猫的图片. 不含标注信息.

训练集图像(部分)

验证集图像(部分)

标签

部分代码:

# 定义训练数据集
class TrainData(Dataset):def __init__(self):super().__init__()self.color_jitter = T.ColorJitter(brightness=0.05, contrast=0.05, saturation=0.05, hue=0.05)self.normalize = T.Normalize(mean=0, std=1)self.random_crop = T.RandomCrop(224, pad_if_needed=True)def __getitem__(self, index):# 读取图片image_path = train_paths[index]image = np.array(Image.open(image_path))    # H, W, Ctry:image = image.transpose([2, 0, 1])[:3]  # C, H, Wexcept:image = np.array([image, image, image]) # C, H, W# 图像增广features = self.color_jitter(image.transpose([1, 2, 0]))features = self.random_crop(features)features = self.normalize(features.transpose([2, 0, 1])).astype(np.float32)# 读取标签labels = train_labels[index]return features, labelsdef __len__(self):return len(train_paths)# 定义验证数据集
class ValidData(Dataset):def __init__(self):super().__init__()self.normalize = T.Normalize(mean=0, std=1)def __getitem__(self, index):# 读取图片image_path = valid_paths[index]image = np.array(Image.open(image_path))    # H, W, Ctry:image = image.transpose([2, 0, 1])[:3]  # C, H, Wexcept:image = np.array([image, image, image]) # C, H, W# 图像变换features = cv2.resize(image.transpose([1, 2, 0]), (256, 256)).transpose([2, 0, 1]).astype(np.float32)features = self.normalize(features)# 读取标签labels = valid_labels[index]return features, labelsdef __len__(self):return len(valid_paths)
# 调用resnet50模型
paddle.vision.set_image_backend('cv2')
model = paddle.vision.models.resnet50(pretrained=True, num_classes=12)# 定义数据迭代器
train_dataloader = DataLoader(train_data, batch_size=256, shuffle=True, drop_last=False)# 定义优化器
opt = paddle.optimizer.Adam(learning_rate=1e-4, parameters=model.parameters(), weight_decay=paddle.regularizer.L2Decay(1e-4))# 定义损失函数
loss_fn = paddle.nn.CrossEntropyLoss()# 设置gpu环境
paddle.set_device('gpu:0')# 整体训练流程
for epoch_id in range(15):model.train()for batch_id, data in enumerate(train_dataloader()):# 读取数据features, labels = datafeatures = paddle.to_tensor(features)labels = paddle.to_tensor(labels)# 前向传播predicts = model(features)# 损失计算loss = loss_fn(predicts, labels)# 反向传播avg_loss = paddle.mean(loss)avg_loss.backward()# 更新opt.step()# 清零梯度opt.clear_grad()# 打印损失if batch_id % 2 == 0:print('epoch_id:{}, batch_id:{}, loss:{}'.format(epoch_id, batch_id, avg_loss.numpy()))model.eval()print('开始评估')i = 0acc = 0for image, label in valid_data:image = paddle.to_tensor([image])pre = list(np.array(model(image)[0]))max_item = max(pre)pre = pre.index(max_item)i += 1if pre == label:acc += 1if i % 10 == 0:print('精度:', acc / i)paddle.save(model.state_dict(), 'acc{}.model'.format(acc / i))
# 进行预测和提交
# 首先拿到预测文件的路径列表def listdir(path, list_name):for file in os.listdir(path):file_path = os.path.join(path, file)if os.path.isdir(file_path):listdir(file_path, list_name)else:list_name.append(file_path)
test_path = []
listdir('cat_12_test', test_path)# 加载训练好的模型
pre_model = paddle.vision.models.resnet50(pretrained=True, num_classes=12)
pre_model.set_state_dict(paddle.load('acc0.9285714285714286.model'))
pre_model.eval()pre_classes = []
normalize = T.Normalize(mean=0, std=1)
# 生成预测结果
for path in test_path:image_path = pathimage = np.array(Image.open(image_path))    # H, W, Ctry:image = image.transpose([2, 0, 1])[:3]  # C, H, Wexcept:image = np.array([image, image, image]) # C, H, W# 图像变换features = cv2.resize(image.transpose([1, 2, 0]), (256, 256)).transpose([2, 0, 1]).astype(np.float32)features = normalize(features)features = paddle.to_tensor([features])pre = list(np.array(pre_model(features)[0]))# print(pre)max_item = max(pre)pre = pre.index(max_item)print("图片:", path, "预测结果:", pre)pre_classes.append(pre)print(pre_classes)

数据集链接:猫类识别-12种猫分类数据集(2400张)

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

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

相关文章

eNSP华为模拟器-DHCP配置

拓扑图 要求 PC1通过DHCP获取192.168.1.1地址PC2和PC3通过DHCP接口地址池方式获取IP地址配置静态路由使其ping通 配置 配置主机名及接口IP地址 # AR1 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sys AR1 [AR1]int g0/0/0 [AR1-Gigabit…

去重复记录和排序——kettle开发09

一、去除重复记录 去除重复记录&#xff0c;就是将数据流中的数据进行字段比较&#xff0c;从而去掉重复值的过程。去除重复记录的前提是需要将数据流中的数据进行排序&#xff0c;然后再进行去重操作。 去除重复记录的逻辑是&#xff0c;如下图&#xff0c;我们将需要比较的…

基础使用-SQL-图形化界面工具DataGrip

一、连接mysql &#xff08;1&#xff09;选择加号&#xff0c;再选择添加一个数据源&#xff08;Data Source&#xff09;&#xff0c;然后选择MySQL &#xff08;2&#xff09;接下来就需要去配置MySQL的连接信息&#xff0c;并且去下载它的驱动&#xff0c;安装驱动时可能要…

微信公众号怎么做留言板功能

在繁忙的都市生活中&#xff0c;你是否常常感到孤单、渴望有一个可以倾诉心声的地方&#xff1f;今天&#xff0c;我要为大家介绍一个特别的角落——我们公众号的留言板功能。它不仅是一个留言板&#xff0c;更是一个情感交流的平台&#xff0c;一个可以让我们彼此心灵相通的桥…

百度发布代码辅助工具,超强

不会用AI的程序员&#xff0c;会跟不会用智能手机的人一样 百度这个代码助手助手感觉还是不错的 https://comate.baidu.com/?inviteCodeijmce7dj 目前看下来这个代码助手是比较强的&#xff0c;比阿里的那个灵码好用&#xff0c;他可以引用到当前的文件&#xff0c;并且能分…

idea改了代码,但是需要紧急切换分支,需要把改动的保存到本地

但是如果有冲突&#xff0c;你没有合并&#xff0c;那也会丢哦&#xff01; 改完那个分支&#xff0c;回到这个分支然后弹出来再。

Delphi 程序例子(DPI变化自动感知及显示器相关功能演示)

目录 一、前言 二、Delphi 演示程序&#xff08;D12版本&#xff0c;用D11也都可以&#xff09; 1. 演示程序功能&#xff1a; 2. 程序界面&#xff1a; 3. 程序源代码下载&#xff08;有偿&#xff09;&#xff1a; 一、前言 系列文章&#xff1a; 彻底搞懂 Windows 显示…

YOLOv5 | 卷积模块 | 提高网络的灵活性和表征能力的动态卷积【附代码+小白可上手】

&#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 轻量级卷积神经网络由于其低计算预算限制了CNNs的深度&#xff08;卷积层数&#xff09;和宽度&#xff08;通道数&#xff09;&#xff0c;…

三分钟一条AI小和尚视频 ,日引300+创业粉。单日变现四位数 全套工具

经过六个月的不懈努力和无数次的尝试错误&#xff0c;我终于找到了一个高效引流和积累粉丝的新策略&#xff0c;并愿意与大家无私分享。这一次&#xff0c;我将详尽地介绍这个方法&#xff0c;建议朋友们多次观看以彻底掌握其精髓。 简而言之&#xff0c;该策略主要依托于AI绘…

C语言文件编程

C语言文件编程 第一部分 基本概念 1、Linux文件类型 1.-普通文件&#xff1a;存在于外部存储器中&#xff0c;用于存储普通数据。 1.txt 1.c 1.mp3 1.mp4 2.d目录文件&#xff1a;用于存放目录项&#xff0c;是文件系统管理的重要文件类型。 文件夹 3.p管道文件&#x…

基于springboot+vue的“漫画之家”系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

全新交友盲盒+付费进群二合一源码 包含全套源码+教程

盲盒交友脱单系统源码&#xff0c;带教程&#xff0c;免授权这套源码已经替你们搭建测试过了 附带进群系统&#xff0c;定位是正常的 申明需要无限回调&#xff0c;没有回调的搭建出来不能用不要说源码不能用 全新系统方便大家使用&#xff0c;已经录制好详细的教程&#xf…

【Linux】-Spark分布式内存计算集群部署[20]

注意&#xff1a; 本节的操作&#xff0c;需要前置准备好Hadoop生态集群&#xff0c;请先部署好Hadoop环境 简介 Spark是一款分布式内存计算引擎&#xff0c;可以支持海量数据的分布式计算。 Spark在大数据体系是明星产品&#xff0c;作为最新一代的综合计算引擎&#xff0c…

闲话 .NET(6):.NET Core 各个版本的特性

前言 之前我们聊了一下 .NET Core 有哪些优势&#xff0c;.NET Core 发展非常迅速&#xff0c;不过短短几年&#xff0c;.NET Core 已经发布 .NET 8 了&#xff0c;基本上保持了一年一个版本的速度&#xff0c;每个版本都有自己的独有特性&#xff0c;下面我们来简单的盘点一下…

【一篇文章搞定电脑重装,简单易懂,速来学习!】

大家好&#xff01;今天给大家带来一篇非常实用的文章——电脑系统重装教程。不管你是电脑小白还是有一定基础的用户&#xff0c;这个教程都能满足你的需求。我们将从前期准备到具体的重装步骤&#xff0c;一步步教你如何重装电脑系统。 教程 介绍 [教程名称]&#xff1a;u盘…

AIGC行业的发展前景与市场需求

简介&#xff1a;探讨当前时机是否适合进入AIGC行业&#xff0c;考虑行业发展阶段和市场需求。 方向一&#xff1a;行业前景 AIGC&#xff08;人工智能生成内容&#xff09;行业是近年来随着人工智能技术的快速发展而兴起的一个新兴领域&#xff0c;它涉及到使用人工智能技术来…

可视化大屏开发,知道了这些经验以及解决方案,效率至少提升2倍!(完结篇)

大家好&#xff0c;我是日拱一卒的攻城师不浪&#xff0c;专注可视化、数字孪生、前端、nodejs、AI学习、GIS等学习沉淀&#xff0c;这是2024年输出的第16/100篇文章&#xff1b; 前言 之前写了两篇可视化大屏开发的经验总结&#xff0c;小伙伴们反应还不错。 最近&#xff0…

上海企业ESG标准实施启动仪式暨首届城市可持续发展北外滩论坛,莱巍爵CEO瞿伟锋再获殊荣,绽放异彩

2024年5月20日&#xff0c;上海企业ESG标准实施启动仪式暨首届城市可持续发展北外滩论坛在虹口区白玉兰广场成功举行&#xff0c;上海市工业经济联合会会长管维镛&#xff0c;上海市市场监督管理总局副局长王益洋&#xff0c;联合国工业发展组织投资与技术促进办公室主任赵晓蕾…

【Flutter】Dialog组件PageView组件

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月27日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…

Shiro+Jwt+Redis

如何整合ShiroJwtRedis&#xff0c;以及为什么要这么做 我个人认为 ①为什么用shiro&#xff1a;“ShiroJwtRedis”模式和“单纯的shiro”模式相比&#xff0c;主要用的是shiro里面的登录认证和权限控制功能 ②为什么用jwt&#xff1a;“ShiroJwt”模式和“ShiroCookie”模式相…