
文章目录
关于 deeplake
database for ai. store vectors, images, texts, videos, etc. use with llms/langchain. store, query, version, & visualize any ai data. stream data in real-time to pytorch/tensorflow.
- 官网:https://www.deeplake.ai
- github : https://github.com/activeloopai/deeplake
- 中文说明 : https://github.com/activeloopai/deeplake/blob/main/readme.zh-cn.md (本文转载改编自此)
- 官方文档:https://docs.activeloop.ai/
- pypi : https://pypi.org/project/deeplake/
deep lake 是一种数据集格式,提供简单的 api 以用于创建、存储和协作处理任何规模的 ai 数据集。deep lake 的数据布局可在大规模训练模型的同时实现数据的快速转换和流式传输。
deep lake 包括以下功能:
- 与存储无关的 api
使用相同的 api 向/从 aws s3/s3 兼容存储、gcp、activeloop 云、本地存储以及内存中上传、下载和流式传输数据集。 - 压缩存储
以原生压缩方式存储图像、音频和视频,仅在需要时解压缩,例如在训练模型时。 - 惰性 numpy 类索引
将 s3 或 gcp 数据集视为系统内存中 numpy 数组的集合。对它们进行切片、索引或迭代。只会下载您要求的字节! - 数据集版本控制
提交、创建分支、切换分支 - 您在代码存储库中已经熟悉的概念现在也可以应用于您的数据集! - 与深度学习框架的集成
deep lake 带有 pytorch 和 tensorflow 的内置集成。用几行代码训练你的模型——我们甚至负责数据集洗牌。😃 - 分布式转换
使用多线程、多处理或我们的内置ray集成快速在您的数据集进行转换操作。 - 在几秒钟内可用100 多个最流行的图像、视频和音频数据集
deep lake 社区已经上传100 多个图像、视频和音频数据集等 例如 mnist, coco, imagenet, cifar, gtzan 等等. - activeloop平台提供即时可视化支持
deep lake 数据集在activeloop 平台 中通过边界框、掩码、注释等立即实现可视化(见下文).

安装 deep lake
deep lake 是用 100% python 编写的,可以使用 pip 快速安装。
pip3 install deeplake
默认情况下,deep lake 不安装音频、视频、google 和其他功能的依赖项。
其他安装选项
| install command | description | dependencies installed |
|---|---|---|
pip install"deeplake[av]" | audio and video support via pyav | av |
pip install"deeplake[visualizer]" | visualize deep lake datasets within notebooks. this is required for dataset.visualize to work. | ipython, flask |
pip install"deeplake[gcp]" | gcs support | google-cloud-storage, google-auth, google-auth-oauthlib |
pip install"deeplake[azure]" | azure blob storage support | azure-storage-blob, azure-cli, azure-identity |
pip install"deeplake[medical]" | dicom and nifti data support | pydicom, nibabel |
pip install"deeplake[gdrive]" | google drive support | google-api-python-client, oauth2client, google-auth, google-auth-oauthlib |
pip install"deeplake[point_cloud]" | support for lidar point cloud data | laspy |
pip install"deeplake[all]" | installs all of the above |
🧠 在 hub 数据集上训练 pytorch 模型
1、加载 cifar 10,这是 deep lake 中现成的数据集之一:
import deeplake
import torch
from torchvision import transforms, models
ds = deeplake.load('hub://activeloop/cifar10-train')
2、检查数据集中的张量:
ds.tensors.keys() # dict_keys(['images', 'labels'])
ds.labels[0].numpy() # array([6], dtype=uint32)
3、在 cifar 10 数据集上训练 pytorch 模型,无需下载
首先,为图像定义一个转换并使用 deep lake 的内置 pytorch 单行数据加载器将数据连接到计算:
tform = transforms.compose([
transforms.totensor(),
transforms.normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]),
])
deeplake_loader = ds.pytorch(num_workers=0, batch_size=4, transform={
'images': tform, 'labels': none}, shuffle=true)
4、接下来,定义模型、损失和优化器:
net = models.resnet18(pretrained=false)
net.fc = torch.nn.linear(net.fc.in_features, len(ds.labels.info.class_names))
criterion = torch.nn.crossentropyloss()
optimizer = torch.optim.sgd(net.parameters(), lr=0.001, momentum=0.9)
5、最后,2 个 epoch 的训练循环:
for epoch in range(2):
running_loss = 0.0
for i, data in enumerate(deeplake_loader):
images, labels = data['images'], data['labels']
# zero the parameter gradients
optimizer.zero_grad()
# forward + backward + optimize
outputs = net(images)
loss = criterion(outputs, labels.reshape(-1))
loss.backward()
optimizer.step()
# print statistics
running_loss += loss.item()
if i % 100 == 99: # print every 100 mini-batches
print('[%d, %5d] loss: %.3f' %
(epoch + 1, i + 1, running_loss / 100))
running_loss = 0.0
🏗️ 如何创建一个 deep lake 数据集
可以在不同地址(存储提供商)创建 deep lake 数据集。这就是他们每个路径:
| 存储提供商 | 示例路径 |
|---|---|
| activeloop 云 | hub://user_name/dataset_name |
| aws s3 / s3 兼容 | s3://bucket_name/dataset_name |
| gcp | gcp://bucket_name/dataset_name |
| 本地存储 | path to local directory |
| 内存 | mem://dataset_name |
让我们在 activeloop 云中创建一个数据集。
activeloop 云为每位用户提供高达 300 gb 的免费存储空间(更多信息请点击此处)。
如果您还没有账号,请从终端使用activeloop register 创建一个新帐户。
系统将要求您输入用户名、电子邮件 id 和密码。您在此处输入的用户名将用于数据集路径。
$ activeloop register
enter your details. your password must be at least 6 characters long.
username:
email:
password:
在 activeloop cloud 中初始化一个空数据集:
import deeplake
ds = deeplake.empty("hub://<username>/test-dataset")
接下来,创建一个张量来保存我们刚刚初始化的数据集中的图像:
images = ds.create_tensor("images", htype="image", sample_compression="jpg")
假设您有一个图像文件路径列表,让我们将它们上传到数据集:
image_paths = ...
with ds:
for image_path in image_paths:
image = deeplake.read(image_path)
ds.images.append(image)
或者,您也可以上传 numpy 数组。
由于 images 张量是使用 sample_compression="jpg" 创建的,数组将使用 jpeg 压缩进行压缩。
import numpy as np
with ds:
for _ in range(1000): # 1000 random images
random_image = np.random.randint(0, 256, (100, 100, 3)) # 100x100 image with 3 channels
ds.images.append(random_image)
🚀 如何加载 deep lake 数据集
您可以使用一行代码加载刚刚创建的数据集:
import deeplake
ds = deeplake.load("hub://<username>/test-dataset")
您还可以访问 deep lake 格式的 100 多个图像、视频和音频数据集,而不仅仅是您创建的那些。
以下是加载 objectron bikes 数据集的方法:
import deeplake
ds = deeplake.load('hub://activeloop/objectron_bike_train')
要以 numpy 格式获取 objectron bikes 数据集中的第一张图像:
image_arr = ds.image[0].numpy()
👩💻 与熟悉工具的比较
activeloop deep lake vs dvc
deep lake 和 dvc 为数据提供类似于 git 的数据集版本控制,但它们存储数据的方法有很大不同。deep lake 将数据转换并存储为分块压缩数组,从而可以快速流式传输到 ml 模型,而 dvc 在存储在效率较低的传统文件结构中的数据之上运行。当数据集由许多文件(即许多图像)组成时,与 dvc 的传统文件结构相比,deep lake 格式使数据集版本控制更加容易。另一个区别是 dvc 主要使用命令行界面,而 deep lake 是 python 包。最后,deep lake 提供了一个 api,可以轻松地将数据集连接到 ml 框架和其他常见的 ml 工具,并通过activeloop 的可视化工具实现即时数据集可视化.
activeloop deep lake vs tensorflow 数据集 (tfds)
deep lake 和 tfds 将流行的数据集无缝连接到 ml 框架。deep lake 数据集与 pytorch 和 tensorflow 兼容,而 tfds 仅与 tensorflow 兼容。deep lake 和 tfds 之间的一个关键区别在于,deep lake 数据集是为从云端流式传输而设计的,而 tfds 必须在使用前在本地下载。因此使用 deep lake 可以直接从 tensorflow 数据集导入数据集,并将它们流式传输到 pytorch 或 tensorflow。除了提供对流行的公开数据集的访问之外,deep lake 还提供强大的工具来创建自定义数据集,将它们存储在各种云存储提供商上,并通过简单的 api 与他人协作。tfds 主要专注于让公众轻松访问常用数据集,而自定义数据集的管理不是主要关注点。一个详细的对比介绍可以在这里看到.
activeloop deep lake vs huggingface
deep lake 和 huggingface 都提供对流行数据集的访问,但 deep lake 主要专注于计算机视觉,而 huggingface 专注于自然语言处理。huggingface 变换和其他 nlp 计算工具与 deep lake 提供的功能不同。
activeloop deep lake vs webdatasets
deep lake 和 webdatasets 都提供跨网络的快速数据流。它们具有几乎相同的传输速度,因为底层网络请求和数据结构非常相似。但是,deep lake 提供了卓越的随机访问和改组,其简单的 api 是在 python 中而不是命令行中,并且 deep lake 可以对数据集进行简单的索引和修改,而无需重新创建它。
发表评论