文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一种管理深度学习数据集的新方法

2024-12-02 03:11

关注

Activeloop的Hub是一个开源Python软件包,可将数据排列在类似Numpy的数组中。它与Tensorflow和PyTorch等深度学习框架无缝集成,可加快GPU处理和训练。我们可以使用Hub API来更新数据、可视化数据以及创建机器学习管道。

Hub让我们可以存储图像、音频、视频和时间序列数据,又能做到访问起来很快。数据可以存储在GCS/S3存储桶、本地存储或Activeloop云上。数据可直接用于训练Pytorch模型,这样您无需构建数据管道。Hub还提供数据版本控制、数据集搜索查询和分布式工作负载。

我在使用Hub后觉得很棒,能够在几分钟内创建数据并将数据推送到云端。本文介绍如何使用Hub来创建和管理数据集。

Activeloop存储

Activeloop为开源数据集和私有数据集提供免费存储。您还可以通过推荐介绍获得多达 200 GB的免费存储空间。Activeloop的Hub与Database for AI对接,让我们可以使用标签可视化数据集,复杂的搜索查询让我们可以高效地分析数据。该平台还含有100多个图像分割、分类和对象检测方面的数据集。

要创建帐户,您可以使用Activeloop网站来注册,或者输入“!activeloop register”。该命令将要求您添加用户名、密码和电子邮件。成功创建帐户后,我们将使用“!activeloop login” 来登录。现在,我们可以直接从本地机器创建和管理云数据集。

如果您使用Jupyter Notebook,请使用“!”,否则直接在CLI中添加没有!的命令。

!activeloop register
!activeloop login -u -p

初始化Hub数据集

在本教程中,我们将使用采用(CC BY 4.0)的Kaggle数据集Multi-class Weather。该数据集含有四个基于天气分类的文件夹;Sunrise、Shunshine、Rain和Cloudy。

首先,我们需要安装hub和kaggle软件包。kaggle软件包将允许我们直接下载数据集并解压缩。

!pip install hub kaggle
!kaggle datasets download -d pratik2901/multiclass-weather-dataset
!unzip multiclass-weather-dataset

下一步,我们将在Activeloop云上创建HUB数据集。数据集函数还可以创建新数据集或访问旧数据集。您还可以提供AWS存储桶地址,以便在亚马逊服务器上创建数据集。想在Activeloop上创建数据集,我们需要传递含有用户名和数据集名称的URL。

“hub://<username>/<datasetname>
import hub
ds = hub.dataset('hub://kingabzpro/muticlass-weather-dataset')

数据预处理

在将数据处理成hub格式之前,我们需要准备数据。下面的代码将提取文件夹名称并将其存储在“class_names”变量中。在第二部分,我们将创建数据集文件夹中可用的文件列表。

from PIL import Image
import numpy as np
import os

dataset_folder = '/work/multiclass-weather-dataset/Multi-class Weather Dataset'

class_names = os.listdir(dataset_folder)

files_list = []
for dirpath, dirnames, filenames in os.walk(dataset_folder):
for filename in filenames:
files_list.append(os.path.join(dirpath, filename))

file_to_hub函数接受三个参数:文件名、数据集和类名。它从每个图像中提取标签,并将它们转换成整数。它还将图像文件转换成类似Numpy的数组,并将它们附加到tensor。就这个项目而言,我们只需要两个tensor,一个用于标签,一个用于图像数据。

@hub.compute
def file_to_hub(file_name, sample_out, class_names):
## First two arguments are always default arguments containing:
# 1st argument is an element of the input iterable (list, dataset, array,...)
# 2nd argument is a dataset sample
# Other arguments are optional

# Find the label number corresponding to the file
label_text = os.path.basename(os.path.dirname(file_name))
label_num = class_names.index(label_text)

# Append the label and image to the output sample
sample_out.labels.append(np.uint32(label_num))
sample_out.images.append(hub.read(file_name))
return sample_out

不妨创建一个带有“png”压缩的图像tensor和一个简单的标签tensor。确保tensor的名称应与我们在file_to_hub函数中提到的名称相似。想了解有关tensor的更多信息,请参阅《API摘要 - Hub 2.0》:https://docs.activeloop.ai/api-basics#creating-tensors-and-adding-data。

最后,我们将通过提供files_lists、hub数据集实例“ds”和class_names来运行file_to_hub函数。由于需要转换数据并推送到云端,这需要几分钟。

with ds:
ds.create_tensor('images', htype = 'image', sample_compression = 'png')
ds.create_tensor('labels', htype = 'class_label', class_names = class_names)

file_to_hub(class_names=class_names).eval(files_list, ds, num_workers = 2)

数据可视化

现在该数据集在multiclass-weather-dataset上公开可用。我们可以使用标签探索数据集或添加描述,以便其他人可以了解有关许可证信息和数据分布的更多信息。Activeloop不断添加新功能,以改善查看体验。

我们还可以使用Python API来访问数据集。我们将使用PIL的Image函数将数组转换成图像,并将其显示在Jupyter笔记本中。

Image.fromarray(ds["images"][0].numpy())

为了访问标签,我们将使用含有分类信息的class_names,并使用“标签”tensor来显示标签。

class_names = ds["labels"].info.class_names
class_names[ds["labels"][0].numpy()[0]]
>>> 'Cloudy'

提交

我们还可以创建不同的分支,并管理不同的版本,比如Git和DVC。在本节中,我们将更新class_names信息,并使用该信息创建提交。

ds.labels.info.update(class_names = class_names)

ds.commit("Class names added")
>>> '455ec7d2b49a36c14f3d80d0879369c4d0a70143'

正如我们所看到的,日志显示我们已成功地将更改提交到主分支。想了解有关版本控制的更多信息,请参阅《数据集版本控制 - Hub 2.0》:https://docs.activeloop.ai/getting-started/step-8-dataset-version-control。

log = ds.log()
---------------
Hub Version Log
---------------

Current Branch: main

Commit : 455ec7d2b49a36c14f3d80d0879369c4d0a70143 (main)
Author : kingabzpro
Time : 2022-01-31 08:32:08
Message: Class names added

您还可以使用Hub UI查看所有分支和提交。

原文A New Way of Managing Deep Learning Datasets,作者:Abid Ali Awan


来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯