Tensorflow2.0之自定义数据集

Tensorflow2.0实战练习之猫狗数据集(包含自定义训练和迁移学习) 最近在学习使用Tenforflow2.0,写下这篇文章,用来帮助和我一样的初学者,文章中如果存在某些问题,还希望各位指出。 目录 数据集介绍 数据处理及增强 VGG模型介绍 模型搭建 训练及结果展示 自定义训练 迁移学习 一.数据集介绍 猫狗数据集是kaggle平台上比较著名的数据集,如果需要猫狗数据集,可以去kaggle上下载,也可以找我要,该数据集分为train和test两部分。在本次训练... 阅读详情

Tensorflow2.0之自定义数据集

Brief

在学习Deep Learning的过程中我们难免会因为需求而要使用自定义的DS,本文就简要的介绍如何自定义DS

PoKemon Dataset

这次我们使用的是PoKemon Dataset ,在自定义数据集之后会训练一下参数效果
在这里插入图片描述
数据集使用的是龙龙老师课上的数据集下面是百度网盘的链接:
▪
链接 : https://pan.baidu.com/s/1V_ZJ7ufjUUFZwD2NHSNMFw
▪
提取码: dsxl
在这里插入图片描述

Splitting

在这里插入图片描述

steps

Load data in csv

首先让我们来处理图片,下面是我们的数据集文件夹,每一个文件夹中对应了相应的PoKemo
在这里插入图片描述
现在我们想要把他们的数据集写在csv文件中,效果大约如下图:
在这里插入图片描述
先让我们捋一下思路,首先我们应该读取有pokemon图片的文件夹,然后获取标签,然后写入csv文件
我们用字典来保存我们的图片地址和标签

def load_pokemon(root, model='train'):
    """
    load pokemon dataset info
    :param root: the root path of dataset
    :param model: train val or test
    :return: image,labels,name2able
    """
    name2label = {}
    for name in sorted(os.listdir(os.path.join(root))):
        if not os.path.exists(os.path.join(root, name)):
            continue
        # code each category (use the length of the key)
        name2label[name] = len(name2label.keys())
        ...

ok 现在我们获得了有宝可梦和标签的字典,下面将他们写入到csv文件中

def load_csv(root, filename, name2label):
    # this will create a csv file when I first run it.
    if not os.path.exists(os.path.join(root, filename)):
        images = []
        for name in name2label.keys():
            # 'pokemon\\name\\00001.png
            images += glob.glob(os.path.join(root, name, '*.png'))
            images += glob.glob(os.path.join(root, name, '*.jpg'))
            images += glob.glob(os.path.join(root, name, '*.jpeg'))
        print(len(images), images)
        random.shuffle(images)
        with open(os.path.join(root, filename), mode='w', newline='') as f:
            writer = csv.writer(f)
            for img in images:
                name = img.split(os.sep)[-2]
                lable = name2label[name]
                writer.writerow([img, lable])
            print('written into csv file', filename)

这样我们就得到了有宝可梦图片地址和标签的地址
现在我们在load_csv 中读取csv文件

    images, labels = [], []
    # read from csv file
    with open(os.path.join(root, filename), 'r') as f:
        reader = csv.reader(f)
        for row in reader:
            img, label = row
            label = int(label)
            images.append(img)
            labels.append(label)
    assert len(images) == len(labels)
    return images, labels

之后我们在load_pokemon中调用load_csv函数

    images, labels = load_csv(root, 'image.csv', name2label)
    if model == 'train':  # 60%
        images = images[:int(0.6 * len(images))]
        labels = labels[:int(0.6 * len(labels))]
    elif model == 'val':  # 20%
        images = images[:int(0.2 * len(images))]
        labels = labels[:int(0.2 * len(labels))]
    else:  # 20%
        images = images[:int(0.2 * len(images))]
        labels = labels[:int(0.2 * len(labels))]
    return images, labels

Preprocess the data

现在我们得到的只是图片的地址,并不能直接用来训练,所以我们需要进行预处理

Read and Resize

首先我们先读取图片信息并进行裁剪
定义一个preprocess函数

def preprocess(x, y):
    """
    preprocess the data
    :param x: the path of the images
    :param y: labels
    """
    # data augmentation, 0~255
    x = tf.io.read_file(x)
    x = tf.image.decode_jpeg(x, channels=3)
    # resize the image,you can change the value in the another net
    x = tf.image.resize(x, [224, 224])
    # turn around images
    x = tf.image.random_crop(x, [224, 224, 3])
Data Augmentation
 # # x: [0,255]=> 0~1
    x = tf.cast(x, dtype=tf.float32) / 255
Normalize

这里的img_mean和img_std 都是imgNet 中几百万张数据集中得到的值,我们直接拿过来用就好

img_mean = tf.constant([0.485, 0.456, 0.406])
img_std = tf.constant([0.229, 0.224, 0.225])


def normalize(x, mean=img_mean, std=img_std):
    # x: [224, 224, 3]
    # mean: [224, 224, 3], std: [3]
    x = (x - mean) / std
    return x

好的现在我们可以在preprocess后面加上:

    # 0~1 => D(0,1)
    x = normalize(x)
    y = tf.convert_to_tensor(y)
    return x,y

现在我们就可以加载了

if __name__ == '__main__':
    image_train, lab_train = load_pokemon('pokemon', model='train')
    image_val, lab_val = load_pokemon('pokemon', model='val')
    image_test, lab_test = load_pokemon('pokemon', model='test')
    train_db = tf.data.Dataset.from_tensor_slices((image_train, lab_train))
    train_db = train_db.shuffle(1000).map(preprocess).batch(32)
    val_db = tf.data.Dataset.from_tensor_slices((image_val, lab_val))
    val_db = val_db.map(preprocess).batch(32)
    test_db = tf.data.Dataset.from_tensor_slices((image_test, lab_test))
    test_db = test_db.map(preprocess).batch(32)
    print(train_db)
    print(val_db)
    print(test_db)

完整的代码可以去我的github上下载:
https://github.com/Jupiter-king/tf2.0-Custom-data-set


参考书籍: TensorFlow 深度学习 — 龙龙老师

(keras--tensorflow2.0)制作个人的神经网络训练数据集案例 我们之前用到的用于训练网络的数据集大部份为常用的经典数据集,可以 通过 TensorFlow 几行代码即可完成数据集的下载、加载以及预处理工作,这无疑大大的提升了算 法的研究效率,对于刚入门的新手来说比较友好。然而在实际应用中,针对于不同的应用场景,算法的数据集也各不相同。因此我们就需要自定义数据集,来完场网络的训练。下面我们就要对水泥裂缝图片进行数据集的制作: 第一步、收集裂缝的图片 笔者收集... 阅读详情

相关推荐

告别MNIST:用TensorFlow 2.0和Keras实战自定义花卉图片分类(附完整数据集处理流程)

本文详细介绍了如何使用TensorFlow 2.0和Keras构建自定义花卉图片分类模型,从数据集处理到模型部署的全流程。通过实战案例,展示了CNN在图像分类中的应用,包括数据增强、迁移学习和模型优化等关键技术,帮助开发者提升深度学习项目的实战能力。

weixin_30216561的博客 447

python与深度学习(十五):CNN和宝可梦模型

python与深度学习

菜yuan~的博客 1649

〖TensorFlow2.0笔记21〗自定义数据集(宝可精灵数据集)实现图像分类+补充:tf.where!

宝可精灵数据集(自定义数据集) 文章目录一、数据集介绍1.1、数据描述1.2、实现步骤二、加载数据集三、数据集预处理四、模型的搭建五、训练工作 一、数据集介绍 1.1、数据描述 我们收集了宝可精灵(动漫)视频片段,从中收集了5种精灵,每个精灵有各种形态的图片。其中:皮卡丘234张图片,超梦239张,杰尼龟223张,小火龙238张,妙蛙种子234张。 数据集划分: 每一类别的所有图片,按照...

AI新视界 1万+

如何在tensorflow2.0制作自己的数据集

如何在tensorflow2.0制作自己的数据集 运行环境 Windows10 PyCharm 2019.2.3 需要用到的库 opencv4.1.2_python3.7 图片获取 首先我们需要获取到自己需要的图片,图片格式大小必须统一,获取方式不限,我们这里利用opencv进行人脸照片的捕获,size为64*64,另外没有安装opencv_python库的可以点击这里,选择相应的版本进行下载...

sq_damowang的博客 1万+

【14】自定义宝可梦数据集

一般的深度学习训练模型的搭建框架过程为,导入数据-建立模型-训练与测试/迁移学习,在这篇笔记中,我主要记录了自定义一个自己的数据集过程与迁移学习的方法。对于其中涉及的到的训练过程与测试过程在其他的笔记中已有提到。 对于之前用到的MNIST数据集与Cifar10数据集的导入,其实我们都只是利用了pytorch提供的函数,分别是torchvision.datasets.MNIST与torchvision.datasets.CIFAR10两个函数帮助我们实现了样本数据的导入。但是,当我们需要训练我们自己的数据集时

Clichong 1066

哨兵一号burst数据的下载和处理

在Sentinel - 1数据处理领域,其基本流程起始于从(ASF)下载原始压缩文件。这些文件规模颇为可观,常规大小约4GB,而部分数据的原文件甚至已攀升至7GB,对存储空间提出了严苛要求。从影像构成来看,每景Sentinel - 1影像由三个干涉宽幅(IW)模式子带组成,每个IW一般包含9个脉冲串(burst)。然而,在实际研究中,我们所关注的研究区域往往仅占据其中寥寥几个burst。

kangkangluoluo的博客 1965

TensorFlow2.0制作自己的数据集。

第一步: 准备好需要训练的图片,这个自行准备,并将图片分类好,并且给每一类图片所在的文件夹命名。如图,我这里共分5类,分别为00000,00001,00002,00003,00004。 第二步 获取图片和标签并存放到对应列表中。 1.导入需要的包 import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'...

weixin_42081390的博客 1万+

【AAAI2025】【小目标检测】FBRT-YOLO:更快速、更优的实时航拍图像检测方法

FBRT-YOLO是一种新型实时航拍图像检测方法,针对小目标检测的精度与效率平衡问题提出创新解决方案。该方法通过两个轻量级模块显著提升性能:特征互补映射模块(FCM)将浅层空间位置信息深度整合至网络深层,缓解信息失衡;多核感知单元(MKP)采用多尺度卷积增强多目标感知能力。实验表明,在VisDrone、UAVDT和AI-TOD数据集上,FBRT-YOLO在检测精度和速度方面均优于现有实时检测器,特别适用于资源受限的飞行设备。该模型通过精简网络结构,在保持高性能的同时降低了计算负担,为航拍实时检测提供了高效解

weixin_44184852的博客 2907

Tensorflow2.0学习(八) — tf.dataset自定义图像数据集

这一节我们参照官方教程提供的代码,研究如何制作自己的数据集并送入深度学习模型中训练。我们可以看到,前几节的内容很多是基于现成的数据集,直接导入使用即可。但在实际应用中,这显然是不可行的。对于Tensorflow2.0,主要有两种自定义制作我们自己数据集的方式:一种是直接由tensorflow自身提供的函数来进行制作,而另一种则是调用tensorflow的高级API Keras的函数来制作,这两种...

Yohann的博客 9072

不止于HTTPS请求:用VS2022编译的libcurl玩转文件上传和代理设置

本文详细介绍了如何使用VS2022编译的libcurl库实现文件上传和高级代理配置。通过实战代码示例,展示了多部分表单上传、二进制数据上传以及各种代理设置技巧,帮助C++开发者提升网络编程能力。

weixin_28595749的博客 206

DVWA靶场实战:从搭建到渗透测试的完整指南

本文详细介绍了DVWA靶场的搭建与渗透测试全流程,涵盖LAMP环境搭建、Docker部署及集成环境安装三种方式。通过SQL注入、文件上传漏洞等实战案例,帮助读者掌握Web安全测试技巧,并提供防御方案与进阶调优建议,是网络安全学习的实用指南。

weixin_28312391的博客 490

Tensorflow2.0学习(九) — 通过keras自定义图像数据集

上一节讲解了如何用tensorflow自带的函数自定义我们的数据集,那么这一节我将通过调用tensorflow2.0的高级API keras来分享另一种自定义数据集的方式,并且这种方式会更加易懂方便一些。 这一节我们准备处理的数据集为猫狗分类数据集,主要完成的是一个二分类任务。 一.自定义数据集的读取 1.导入相关的库。 from __future__ import absolute_i...

Yohann的博客 2726

利用Spm12进行fMRI数据分析:从预处理到结果解读的完整指南

本文提供了利用SPM12进行fMRI数据分析的完整流程指南,涵盖从数据预处理、统计建模到结果解读的全过程。详细介绍了在MATLAB环境下使用SPM12图形界面完成头动矫正、空间标准化等关键步骤的操作方法与避坑技巧,帮助神经科学研究者和心理学研究者高效处理功能磁共振成像数据并产出可靠结果。

weixin_29079671的博客 452

Tensorflow2.0 tf.data.Dataset.from_tensor_slices 自定义图像数据集 (一)

Pytorch 标准二级目录名为类别的图像存储格式数据,采用Pytorch自带API db = torchvision.datasets.ImageFolder(root='dir', transform=preprocess) Tensorflow 标准二级目录名为类别的图像存储格式数据,采用Pytorch自带API db = torchvision.datasets.ImageFolder(...

Forrest97的博客 3186

Android 16(API 36)状态栏颜色适配全攻略:从沉浸式到自定义背景

本文全面解析Android 16(API 36)强制沉浸式状态栏带来的适配挑战,提供了从FrameLayout包裹法到动态修改Window背景色的核心解决方案。针对传统状态栏颜色设置失效问题,详细阐述了如何利用WindowInsets API实现自定义背景,并涵盖全屏模式、Fragment切换及第三方ROM兼容性等实战场景,为开发者提供一站式适配指南。

weixin_29227425的博客 596

Stata: 空间面板数据模型及Stata实现

  作者:游万海 (福州大学) Stata 连享会: 知乎 | 简书 | 码云 | 优快云   来源:Golgher 和 Voss (2016)   1. 背景介绍 由于面板数据模型所具有的众多优点 (刻画个体异质性,减弱模型共线性和增加自由度等),其被广泛应用于实证计量中。在 「 Stata: 面板数据模型-一文读懂」 文中,我们已对面板数据模型进行了介绍。 然而,当研究样本涉及到多个...

Stata连享会 7万+

Tensorflow2.0 自定义图像数据集 读取加速 tf.data.Dataset.cache (二)

接上一篇Tensorflow2.0 tf.data.Dataset.from_tensor_slices 自定义图像数据集 (一要 这里写目录标题Tensorflow图像数据集加载图片路径和标签读取图像预处理创建Tensorflow Dataset对象方案一(不推荐)方案二(推荐)Dataset对象的预处理输入网络Pytorch参考 Tensorflow 图像数据集加载 从tf.keras...

Forrest97的博客 3719

Proxmox(pve)集群(4)存储(1)配置分布式存储ceph

它使用一种称为CRUSH(Controlled Replication Under Scalable Hashing)算法的数据分布算法来将数据均匀地分布在多个存储节点上,并确保数据的冗余和容错。它负责管理数据的分布、冗余和自动修复。PVE支持本地存储、LVM、NFS、iSCSI、CephFS、RBD、ZFS等存储方式,我这里使用两种存储方式,一种是通过ceph实现分布式存储,一种是通过truenas实现集中式存储。自我管理和自动恢复:Ceph具有自我管理的特性,可以动态地调整和优化存储集群的配置。

Monster✺◟(∗❛ัᴗ❛ั∗)◞✺的博客 2630

1. Keras/Tensorflow 2.0 自定义数据集 Dataset

在学习Tensorflow的过程中,发现大多数教程都是基于现有的数据集进行训练、优化。 例如:MNIST识别教程,一个 (x_train, y_train), (x_test, y_test) = mnist.load_data() 即可获得训练、测试数据集。 而在解决实际问题时,我们经常面对的是采集到的原始图片信息,这些图片保存在硬盘当中,当模型搭建好以后开始把数据从硬盘加载到内存,然...

Drknown的博客 4061

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TensorFlow 2.0深度学习算法实战 第15章 自定义数据集

在人工智能上花一年时间,这足以让人相信上帝的存在。−艾伦·佩利 深度学习已经被广泛地应用在医疗、生物、金融等各行各业中,并且被部署到网络端、移动端等各种平台上。前面我们在介绍算法时,使用的数据集大部份为常用的经典数据集,可以通过 TensorFlow 几行代码即可完成数据集的下载、加载以及预处理工作,大大地提升了算法的研究效率。在实际应用中,针对于不同的应用场景,算法的数据集也各不相同。那么针...

猫敷雪 3837

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

告别MNIST!用TensorFlow 2.0和自定义数据集(比如小野花)实战图像分类

本文详细介绍了如何使用TensorFlow 2.0构建自定义花卉分类器,从数据采集、预处理到模型训练与优化。通过实战案例,展示了如何利用CNN和迁移学习技术提升图像分类准确率,特别适合希望从MNIST过渡到真实世界应用的开发者。

weixin_30904593的博客 328

Tensorflow2.1.0 自定义数据集:精灵宝可梦数据集

1. 精灵宝可梦数据介绍 精灵数据放置在pokeman的根目录下,包含了5个子文件夹,每个文件夹存放了当前类别的精灵图片。 2. 代码 import tensorflow as tf import glob import os import random, csv def load_csv(root, filename, name2label): # 从csv文件返回i...

qq_40041064的博客 3002

Tensorflow2.0— tf.dataset自定义图像数据集

转载自:https://blog.csdn.net/qq_41973343/article/details/103213366

Jessica__Chan的博客 1487

AI实战 | Tensorflow自定义数据集和迁移学习(附代码下载)

自定义数据集 做深度学习项目时,我们一般都不用网上公开的数据集,而是用自己制作的数据集。那么,怎么用Tensorflow2.0来制作自己的数据集并把数据喂给神经网络呢?且看这篇文章慢慢道来。 Pokemon Datasets 这篇文章我们用的datasets是Pokemon datasets,也就是皮卡丘电影中的一些角色,如下图所示: 数据集 数据集下载 链接: https://pan.baidu.com/s/1V_ZJ7ufjUUFZwD2NHSNMFw 提取码:dsxl 数据集划分

Wenrui Xie的博客 2120

【tensorflow2.0】14.mnist数据集实现自定义评估函数

代码链接 #我不是代码的生产者,我只是代码的搬运工,给大家加一点注释~ from __future__ import absolute_import, division, print_function, unicode_literals import tensorflow as tf from tensorflow.keras.layers import Dense, Flatten, Conv2D from tensorflow.keras import Model import numpy as n

weixin_39122088的博客 345

TensorFlow2.0(10):加载自定义图片数据集到Dataset

html { font-family: sans-serif; -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% } body { margin: 0 } article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, na...

chb4715的博客 460
上一篇: 爬虫【5】爬虫猫眼电影100榜单并保存到csv
下一篇: 爬虫【6】链家二手房信息和图片并保存到本地
AndSonder
博客等级 码龄7年 364粉丝 154原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值