数据集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…

在leaflet上创建图标

参考之前博客进行创建leaflet地图 添加图标 customIcon L.icon({iconUrl: helicopter0.png,//图片路径放在public中iconSize: [35, 35],iconAnchor: [15, 15],tooltipAnchor: [20, 0],}); let marker L.marker([obj.lat, obj.lon], { icon: customIcon, rotationAngle: 偏转…

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

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

MySQL + MyBatis-Plus 分页数据重复问题

参考文章&#xff1a;java - MySQL MyBatis-Plus 分页数据重复问题 - 个人文章 - SegmentFault 思否

基础使用-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;并且能分…

安装electron报镜像源错误

报错信息如下&#xff1a; F:\xxxxxx>npm i npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion1, but package-lock.json was generated for lockfileVersion2. Ill try to do my best with it!> vue-demi0.14.6 postinstall F…

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盘…

electron-vite-vue配置

1.安装vite pnpm create vite 2.安装electron 用npm下载不过来QAQ 下载失败的话就重新下一遍 cnpm i -D electron 3.安装concurrently 用来执行多个程序 pnpm i concurrently 4.配置package.json {"name": "demo","private": true,"…

Java学习51-常用类 集合类Collection Arrays数组类

Arrays数组类 & 集合类Collection 内存层面需要针对多个数据进行存储&#xff0c;此时可以考虑的容器有&#xff1a;数组&#xff0c;集合类 数组Arrays介绍&#xff1a; 数组存储多个数据方面的特点&#xff1a; 数组一旦初始化&#xff0c;其长度是确定的。 数组中的多…