摘要:近日,DeepLake 发布了其 v4.3.0 版本,这是一个具有里程碑意义的重要更新。该版本不仅在数据类型的支持上实现了重大突破——尤其是对视频数据的原生支持,还对索引系统、数据导入导出功能以及Python类型系统进行了全面增强。这些更新极大地扩展了Deep
近日,DeepLake 发布了其 v4.3.0 版本,这是一个具有里程碑意义的重要更新。该版本不仅在数据类型的支持上实现了重大突破——尤其是对视频数据的原生支持,还对索引系统、数据导入导出功能以及Python类型系统进行了全面增强。这些更新极大地扩展了DeepLake在多模态数据处理、大规模数据管理和开发体验方面的能力,为机器学习与数据科学工作流提供了更强大的基础设施。
DeepLake v4.3.0 对序列类型进行了彻底的重构,使其能够更好地支持视觉和结构化数据。序列类型常用于处理时间序列数据、视频帧序列、文本序列等具有顺序关系的数据。在新版本中,序列类型不仅提高了存储和读取效率,还增强了对嵌套结构和异构数据的支持。
这意味着用户现在可以更高效地存储和访问如视频帧、传感器读数序列、时间戳标记的文本数据等。例如,在处理视频数据时,每一帧可以作为一个序列元素存储,并附带相应的元数据(如时间戳、帧类型等),极大地方便了后续的帧级分析和处理。
本次更新最引人注目的功能之一是对视频数据的原生支持。DeepLake 现在可以直接存储和读取 MP4 和 MKV 格式的视频文件,并要求使用 H264 编解码器以确保广泛的兼容性和高效的压缩率。
关键特性包括:
• 高效随机访问:用户可以直接跳转到视频的任意帧,无需线性读取整个视频文件,这极大提升了视频数据处理的效率。
• 帧级元数据支持:每一帧都可以关联额外的标签、注释或其他结构化数据,非常适合计算机视觉和视频分析任务。
• 与现有生态无缝集成:视频数据可以直接用于训练深度学习模型,无需额外的格式转换步骤。
例如,用户可以通过以下方式快速访问视频的第100帧:
import deeplakeds = deeplake.load("hub://username/video_dataset")frame_100 = ds.videos[0][100].numpy # 获取第一个视频的第100帧新版本增加了对数值类型的索引支持,使得在TQL(Tensor Query Language)中执行数值比较查询(如大于、小于、介于等)时能够获得极快的响应速度。支持的操作包括:
• 等值查询(=, !=)
• 范围查询(BETWEEN, >, =,
• 集合查询(IN)
例如,以下TQL查询可以快速找到所有年龄在20到30岁之间的用户:
SELECT * WHERE age BETWEEN 20 AND 30这对于需要频繁执行数值过滤的场景(如数据分析、特征筛选等)来说,性能提升尤为明显。
DeepLake 对文本索引进行了显著优化,现在可以在不重新生成索引的情况下实现更快的文本搜索。这意味着用户在对大型文本数据集进行模糊匹配、关键字搜索或相似性查询时,能够享受到更低的延迟和更高的吞吐量。
例如,以下代码展示了如何快速搜索包含特定关键词的样本:
ds = deeplake.load("hub://username/text_dataset")view = ds.filter("text CONTAINS 'deep learning'")DeepLake v4.3.0 完全重写了 from_csv 函数,使其能够高效处理大型CSV文件(如GB甚至TB级别)。新实现支持:
• 流式读取:避免一次性加载整个文件到内存,显著降低内存占用。
• 并行处理:利用多核CPU加速数据导入过程。
• 智能类型推断:自动识别列类型,并支持用户自定义Schema。
示例用法:
ds = deeplake.from_csv( "path/to/large_file.csv", schema={ "id": "int64", "name": "str", "age": "int32" })相应地,新版本还引入了 to_csv 函数,使用户能够将DeepLake数据集或视图导出为CSV格式。该功能支持:
• 选择性导出:可以指定导出的列和行范围。
• 并行导出:加快大规模数据的导出速度。
• 格式自定义:支持自定义分隔符、编码格式等。
示例:
ds.to_csv( "output.csv", columns=["id", "name", "age"], range=(0, 1000))在定义数据集schema时,用户现在可以直接使用Python内置类型(如 int、str、float、bool 等)进行注解,使得代码更简洁易读。
例如:
schema = { "id": int, "name": str, "is_active": bool}对于复杂数据结构,用户现在可以直接使用Pydantic模型作为数据集的schema。这不仅提供了更强的类型检查能力,还能与现有的Pydantic生态无缝集成。
示例:
from pydantic import BaseModelclass User(BaseModel): id: int name: str age: intds = deeplake.empty("hub://username/user_dataset", schema=User)DeepLake v4.3.0 是一个功能丰富、性能卓越的版本,其在视频数据处理、索引系统、数据导入导出和类型系统方面的增强,使其在多模态机器学习数据管道的构建中更具竞争力。
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。
来源:小肖科技讲堂