合成数据,也称为人工生成的数据,为数据科学应用中经常遇到的问题(例如数据隐私和小数据量)提供了解决方案。我们列出了不同行业和部门/业务单位中合成数据的功能和最常见的用例。
合成数据支持哪些与行业无关的用例/功能?
与第三方共享数据
- 许多行业的创新依赖于与金融科技公司或医疗技术公司等第三方组织的合作。合成数据使企业能够评估第三方供应商并与他们共享私人数据,而不会产生安全或合规风险。
内部数据共享
- 数据隐私法规不仅限制了组织之间的数据共享,还阻止了组织内的数据流动。获取数据访问权限可能需要数周时间,这可能会阻碍协作。组织可以通过利用合成数据来增强团队之间的协作,从而加速创新。
云迁移
- 云服务为许多行业提供了一系列创新产品。但是,将私有数据迁移到云基础架构涉及安全性和合规性风险。在某些情况下,将敏感数据的合成版本移动到云可以使组织能够利用云服务的优势。这并非适用于所有用例。例如
- 对于销售人员来说,在他们的CRM中使用合成数据是没有用的,他们应该看到正确的客户信息,而不是修改后的信息。
- 在云机器学习管道中,可以使用合成数据代替真实数据
数据保留
- 法规还限制了企业可以存储个人数据的时间。对于长期分析来说,这是一个问题,例如检测几年内数据的季节性。合成数据提供了一种在不损害长期分析功能的情况下遵守数据保留法规的方法。
不同行业和部门的合成数据用例是什么?
金融服务
- 欺诈识别是任何金融服务的重要组成部分,但欺诈交易很少见。借助合成欺诈数据,可以测试和评估新的欺诈检测方法的有效性。
- 客户分析:合成客户交易数据可用于对客户数据进行分析,以了解客户行为。这与“内部数据共享”的用例类似,但它更广泛地适用于大多数客户数据是私有的金融业。
制造业
- 质量保证:正如列夫·托尔斯泰在《安娜·卡列尼娜》的开头所说:“所有幸福的家庭都是相似的;每个不幸福的家庭都以自己的方式不幸福。很难测试一个系统来查看它是否识别异常,因为有无限多的异常。合成数据可以更有效地测试质量控制系统,提高其性能。
医疗
- 医疗保健分析:合成数据使医疗保健数据专业人员能够允许在内部和外部使用记录数据,同时仍保持患者的机密性。这类似于“内部数据共享”的用例,但它更广泛地适用于大多数客户数据都是私有的医疗保健。
- 临床试验:当尚无真实数据时,合成数据可以用作未来研究和测试的基线。
汽车和机器人
自主事物 (AuT):开发机器人、无人机和自动驾驶汽车模拟等自主事物的研究开创了合成数据的使用。这是因为机器人系统的实际测试既昂贵又缓慢。合成数据使公司能够在数千次模拟中测试其机器人解决方案,从而改进其机器人并补充昂贵的实际测试。
- 自动驾驶汽车
- 自主机器人
安全
合成数据可用于保护组织的线上和线下资产。常用的方法有两种:
- 视频监控的训练数据:为了利用图像识别,组织需要创建和训练神经网络模型,但这有两个限制:获取大量数据和手动标记对象。与获取和注释训练数据相比,合成数据可以帮助以更低的成本训练模型。
- 深度伪造:深度伪造可用于测试人脸识别系统。
社交媒体
社交网络正在使用合成数据来改进其各种产品:
- 测试内容过滤系统:社交网络正在与假新闻、网络骚扰和外国政府的政治宣传作斗争。使用合成数据进行测试可确保内容过滤器具有灵活性,并且可以应对新型攻击。
不同部门或职能的合成数据用例是什么?
敏捷开发和 DevOps
人力资源
- 公司的员工数据集包含敏感信息,通常受到数据隐私法规的保护。内部数据团队和外部各方可能无法访问这些数据集,但他们可以利用合成员工数据进行分析。它可以帮助公司优化人力资源流程。
营销
- 合成数据允许营销部门运行详细的个人层面模拟,以改善他们的营销支出。由于 GDPR,未经用户同意,不允许进行此类模拟。然而,遵循真实数据属性的合成数据可以可靠地用于仿真。
机器学习
- 大多数 ML 模型需要大量数据才能获得更高的准确性。合成数据可用于增加 ML 模型的训练数据大小。
- 预测欺诈或制造缺陷等罕见事件是很困难的,因为小数据量会导致机器学习模型不准确。生成此类事件的合成实例可提高模型准确性。
- 合成数据生成会创建标记的数据实例,随时可用于训练。这减少了耗时的数据标记工作的必要性。
合成数据工具
与合成数据相关的工具通常是为了满足以下需求之一而开发的:
- 用于软件开发和类似目的的测试数据
- 机器学习模型的训练数据
UnrealSynth 虚幻合成数据生成器 利用虚幻引擎的实时渲染能力搭建逼真的三维场景,为 YOLO 等 AI 模型的训练提供自动生成的图像和标注数据。UnrealSynth 生成的合成数据可用于深度学习模型的训练和验证,可以极大地提高各种行业细分场景中目标识别任务的实施效率,例如:安全帽检测、交通标志检测、施工机械检测、车辆检测、行人检测、船舶检测等。
UnrealSynth 生成合成数据的步骤:
1、将 GLB 文件添加到场景后,接下来就可以配置 UnrealSynth 合成数据生成参数,参数配置说明如下:
- 模型类别: 生成合成数据 synth.yaml 文件中记录物体的类型
- 环境变更 : 变更场景背景
- 截图数量 : 生成合成数据集 image 目录下的图像数量,在 train 和 val 目录下各自生成总数一半数量的图片
- 物体个数 : 设置场景中的物体个数,目前最多支持 5 个,并且是随机的选取模型的类别
- 随机旋转 : 场景中的物体随机旋转角度
- 随机高度 : 场景中的物体随机移动的高度
- 截图分辨率: 生成的 images 图像数据集中的图像分辨率
- 缩放 : 物体缩放调整大小
2、点击【确定】后会在本地目录中...\UnrealSynth\Windows\UnrealSynth\Content\UserData 自动生成两个文件夹以及一个 yaml 文件:images、labels、test.yaml 文件。
UnrealSynth\Windows\UnrealSynth\Content\UserData
|- images
|-train
|- 0.png
|- 1.png
|- 2.png
|- ...
|-val
|- 0.png
|- 1.png
|- 2.png
|- ...
|- labels
|-train
|- 0.txt
|- 1.txt
|- 2.txt
|- ...
|-val
|- 0.txt
|- 1.txt
|- 2.txt
|- ...
|- synth.yaml
3、模型训练:数据集生成后有三个办法可以进行模型训练:使用 python 脚本、使用命令行、使用在线服务。
第一种是使用 python 脚本,需首先安装 ultralytics 包,训练代码如下所示:
from ultralytics import YOLO
# Load a model
model = YOLO('yolov8n.yaml') # build a new model from YAML
model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training)
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Train the model
results = model.train(data='synth.yaml', epochs=100, imgsz=640)
第二种是使用命令行,需安装 YOLO 命令行工具,训练代码如下:
# Build a new model from YAML and start training from scratch
yolo detect train data=coco128.yaml model=yolov8n.yaml epochs=100 imgsz=640
# Start training from a pretrained *.pt model
yolo detect train data=coco128.yaml model=yolov8n.pt epochs=100 imgsz=640
# Build a new model from YAML, transfer pretrained weights to it and start training
yolo detect train data=coco128.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640
第三种是使用ultralytics hub 或者其他在线训练工具。