Data Lake
探索数据湖如何成为 AI 和 ML 的基石。学习利用原始数据训练 Ultralytics YOLO26 并简化计算机视觉工作流程。
数据湖是一个集中式存储库,可以容纳大量原始格式的原始数据,直到需要时再进行处理。与要求数据在进入前必须结构化的传统存储系统不同,数据湖“按原样”接受数据,包括结构化数据(行和列)、半结构化数据(CSV、日志、XML、JSON)、非结构化数据(电子邮件、文档、PDF)以及二进制数据(图像、音频、视频)。这种架构上的灵活性使数据湖成为现代 Big Data 策略的基石,特别是对于利用 Artificial Intelligence (AI) 和 Machine Learning (ML) 的组织而言。通过将数据捕获与数据使用解耦,组织可以相对低成本地存储大量信息,并在以后确定具体的分析问题。
数据湖在 AI 和机器学习中的作用#
在 AI 开发的背景下,数据湖的核心价值在于其支持 Deep Learning (DL) 工作流的能力。先进的神经网络需要多样化且庞大的 training data 才能实现高准确率。数据湖充当了暂存区,原始资产(例如用于 Computer Vision (CV) 的数百万高分辨率图像或用于 Speech Recognition 的数千小时音频)在被处理之前都驻留在这里。
数据科学家在数据湖中使用“读时架构”(schema-on-read)方法。这意味着结构仅在为处理而读取数据时应用,而不是在写入存储时应用。这带来了巨大的灵活性;同一个原始数据集可以通过多种方式进行处理,用于不同的 predictive modeling 任务,而无需修改原始源。此外,强大的数据湖通常与 cloud computing 服务(如 Amazon S3 或 Azure Blob Storage)集成,从而实现训练 YOLO26 等重量级模型所需的可扩展并行处理。
数据湖 vs. 数据仓库#
虽然经常被混淆,但数据湖与数据仓库截然不同。data warehouse 以结构化表格形式存储数据,并针对快速 SQL 查询和商业智能报告进行了优化。它使用“写时架构”(schema-on-write),这意味着数据在进入系统之前必须通过 ETL (Extract, Transform, Load) 过程进行清理和转换。
相反,数据湖针对存储容量和多样性进行了优化。它支持 unsupervised learning 和探索性分析,此时目标可能尚未定义。例如,数据仓库可能会告诉你上个月卖出了多少产品,而数据湖则保存着原始的 customer sentiment 日志和图像数据,这有助于 AI 模型理解它们 为什么 能卖出去。
实际应用#
数据湖在推动自动化边界的各个行业中发挥着重要作用:
- Autonomous Vehicles: 开发自动驾驶技术需要处理PB级的传感器数据。Autonomous vehicles 会持续生成 LiDAR 点云、雷达信号和高清视频流。数据湖存储这些原始遥测数据,使工程师能够重放真实世界的场景,从而训练 Object Detection 模型在各种天气条件下识别行人和障碍物。
- Healthcare Diagnostics: 在现代 medical image analysis 中,医院将患者病史、基因组数据和影像文件(MRI、CT扫描)整合到一个安全的数据湖中。研究人员随后可以访问这些匿名化的非结构化数据来训练用于 tumor detection 或疾病预测的模型,通常利用 segmentation 技术来隔离医学影像中的感兴趣区域。
结合 Ultralytics 使用数据湖#
在使用 Ultralytics Platform 时,用户经常从组织的数据湖中提取原始数据子集,以创建用于训练的标注数据集。一旦检索并标记了原始图像,它们就可以用于训练最先进的模型。
以下示例演示了开发者如何加载本地数据集(模拟从数据湖获取数据)来训练用于检测任务的 YOLO26 模型。
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model using a dataset configuration file
# In a production pipeline, this data might be streamed or downloaded
# from a cloud-based data lake prior to this step.
results = model.train(data="coco8.yaml", epochs=5, imgsz=640)
# Run inference on a new image to verify performance
predictions = model("https://ultralytics.com/images/bus.jpg")





