用合成数据训练语义分割模型【裂缝检测】

2023-11-22 11:04

本文主要是介绍用合成数据训练语义分割模型【裂缝检测】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近,我们推出了合成裂缝分割数据集,在本文中,我们将深入探讨应用于合成数据生成过程的改进和启发式方法。 阅读完这篇文章后,你将了解我们如何设法创建一个数据集,该数据集可以像使用真实数据一样高效地训练模型。

 在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

1、数据集创建过程的快速回顾

让我们回顾一下我们在本文中详细讨论的合成数据集创建过程的总体思路。

我们首先收集现实世界的纹理,例如沥青、墙壁和混凝土。 想象一下你在这些纹理上绘制裂缝,就像在绘画程序中使用画笔一样。 然而,这仅仅是开始。 我们将更进一步,使用一些合成和后处理技术将这些绘制的裂缝转换为真实的裂缝。 在以下部分中,我们将更深入地探讨合成和后期处理的世界。

2、以数据为中心 vs. 以模型为中心

在机器学习和人工智能领域,增强模型性能主要有两种理念:以数据为中心和以模型为中心的方法。 以模型为中心的方法主要集中于改进模型的架构、大小和训练技术。 相反,以数据为中心的理念强调提高训练数据的质量、多样性和相关性。 基本信念是,即使模型的架构保持不变,卓越的数据也会带来卓越的模型。 在此背景下,我们坚持以数据为中心的方法。 在整个实验过程中,我们保持相同的模型架构、模型大小和超参数。 你可以在本文的结论部分找到有关架构和培训的详细信息。

让我们探索所有用于创建合成数据的逐步增强和启发式方法,这些数据能够训练与真实数据训练的模型相当的模型。

3、合成数据生成器

生成器是我们合成数据创建过程的核心。 生成器的设计应能够模拟实际裂缝的复杂且多样的结构。 这种初步的表示作为进一步处理和细化的基础,使合成图像更接近现实。

我们发现3种不同类型的算法的组合可以很好地充当生成器:

生成器

通过合并这些图案并按顺序分层,我们可以为预期裂缝生成复杂多样的结构。 生成器的输出由白色背景上的 1 像素轮廓组成,作为后续处理的蓝图。 对于随机游走,我们采用了逐渐改变的厚度来增强数据的多样性。

可以点击这里阅读有关每种算法的更多信息。

4、膨胀和腐蚀

首先,我们需要增加线条的粗细。 在 python 中,我们使用 cv2.dilate 来实现此目的。 需要调整一些参数,例如迭代次数、内核和 kernel_size。 我们将它们保持在某个随机范围内以增加多样性。 内核也可能是随机的。

腐蚀

我们想以某种方式破坏线路,可以使用 ImgAug 中的 iaa.ElasticTransformation

弹性变换

我们还应用 iaa.PiecewiseAffine 来进一步扭曲图像:

逐点仿射变换

第一次训练:此时,生成的图像可能看起来相当令人信服,但在训练一个好的模型时,我们通常需要更高水平的真实感,尤其是在细节方面。 我们尝试过在此类图像上训练模型,但它立即过度拟合,导致在真实图像上表现不佳。

5、边缘平滑

经过仔细检查,很明显我们的裂缝呈现出切入背景的锋利边缘线。 这种细节级别对于训练模型来说可能显得人为,可能导致过度拟合,即模型在合成数据上表现完美,但在真实数据上表现不佳。 值得注意的是,这种细节水平虽然对人眼来说并不明显,但可能会给模型的泛化带来挑战。 为了缓解这个问题,我们以一定的概率应用 iaa.GaussianBlur 和 iaa.MotionBlur 的组合,为裂缝引入模糊效果:

没有边缘平滑(左),有边缘平滑(右)

通过这个小技巧,我们成功地训练了一个没有过拟合的模型,但是真实图像上的 IoU 仍然远未达到令人满意的值:

6、轮廓纹理

目前,我们的线条采用鲜明、无瑕疵的黑色,与现实中的外观相去甚远。 我们的目标是为这些线条注入更丰富、更难以预测的质感。 这是我们发现的一个巧妙的技巧:我们偶尔会在生成器的裂缝上方添加一些模糊的噪点(即 1 像素线),而不是扩大线条。 这种噪声与 iaa.ElasticTransformation 的组合溶解了裂缝的像素,将它们展开,并且裂缝在不使用膨胀的情况下变得更厚。

轮廓纹理

7、上色

继续增强线条纹理,我们将为它们注入随机的深色阴影,并撒上一点杂色。 这个调整确保我们的裂缝不仅仅是平坦的。 这种变化肉眼几乎察觉不到,但对于模型来说可能很重要。 以下是一些值得注意的例子:

上色

在这一步训练模型进一步提升了性能:

8、调整参数随机化

在我们的实验中,不断出现一个问题:我们如何确定噪声水平、线条粗细或模糊强度等参数的最佳值? 我们彻底检查了在每个参数选定范围的最高和最低极端情况下生成的图像。 在审查这些边缘案例时,我们偶尔会允许结果显得有些不切实际,超出了现实的范围。 这种方法有助于开发更具弹性和更有效的模型。

9、为什么假图像有用?

在研究中,特别是在机器人学中,这种技术称为域随机化(domain randomization)。 从本质上讲,域随机化是通过使其训练环境多样化来使模型具有适应性,而不是完善该环境的真实性。 我们的想法不是试图使合成数据完全真实(这是非常具有挑战性的),而是将合成数据的各个方面随机化,尤其是那些很难自然化的数据。 通过将模型暴露在大量不同的场景中,即使它们单独存在并不总是“现实”,模型也能学会更好地概括。

为什么它有效?

让我们面对现实吧,我们的合成数据并不能完全体现我们所追求的真实性。 然而,通过在我们的合成数据集中注入更多的多样性,我们可以训练一个擅长处理许多不同情况的模型。 经过无数随机领域的训练后,现实世界变成了模型的另一种变体。 本质上,它是关于训练模型以期待意外情况!

10、通过风格迁移提高数据多样性

了解多样性在我们的数据集中发挥的关键作用,我们现在正在探索一种令人兴奋的方法:风格迁移。 风格转移是一种将一个图像的风格(称为“风格图像”)转移到另一个图像(称为“内容图像”)的技术。 目标是产生一个保留原始图像内容但具有风格图像艺术风格的新图像。 现在,如果我们将生成的裂纹图像之一并使用背景图片作为“样式图像”,则样式迁移的结果将如下所示:

选择特定的风格迁移模型不是我们主要关心的问题,因为我们的目标不是现实主义。 我们的目标只是在视觉上改变裂纹图像,同时保持相同的分割掩模(或地面实况)。 在我们的测试中,我们使用了 PaddlePaddle 中的任意风格迁移模型 。

我们再次训练模型,发现风格迁移显着提高了性能。

11、增强纹理的多样性

在这项研究开始时,我们的主要目标是分割道路裂缝。 这意味着我们的基础背景纹理主要由深色沥青组成。 为了增强模型的多功能性,我们引入了一系列新背景。 这些材料涵盖多种材料,包括混凝土、墙壁、瓷砖、砖块、大理石等。

这次扩张提出了新的挑战。 随着浅色背景的引入,我们最初设计的深色、轮廓分明的裂缝与它们形成鲜明对比,这一点变得很明显。 例如,白色或明亮表面上的裂缝不应该像深黑线一样突出——它们需要更无缝地融合。 这促使我们通过调整裂缝的自适应亮度来改进我们的方法,确保它们在每种背景下都显得自然。

左:没有自适应亮度,右:自适应亮度

通过这些修改,我们重新训练了模型并进一步提高了性能。

12、有效数据合成的关键考虑因素

总之,这里列出了需要你注意的数据合成的关键方面:

  • 真实性,尤其是细节方面:确保合成数据在模式、变化和复杂性方面与现实世界的数据非常相似。 合成算法在创建细节时通常很粗糙。 这会导致数据中出现一些问题,这些问题对于人眼来说可能并不明显,但对模型至关重要,从而导致过度拟合和泛化不良。
  • 多样性和变化:确保涵盖广泛的场景、条件和变化。 合成数据应包含尽可能多的潜在现实情况,以防止真实数据的过度拟合和不稳定的性能。
  • 不完美和随机化:故意引入噪声、异常、模糊和失真,在极端情况下甚至可能看起来有点不切实际。 合成算法无法表达现实世界的所有复杂性和真实性,它们只能创建现实世界的简化和理想化版本。 因此,引入随机性和不完美性将有助于训练一个强大的模型,该模型可以在部署到现实场景中时处理意外或异常情况。
  • 持续验证:定期根据真实数据验证合成数据。 这有助于揭示数据中可能妨碍模型良好泛化的问题。

13、结束语

经过一系列的实验,我们得到了一个值得注意的结果。 通过逐步完善我们的合成数据生成技术,我们有效地训练了一个模型,该模型的性能与专门针对真实世界数据训练的模型几乎相当。 在本博客系列的下一部分中,我们将介绍另一种使用合成数据进行训练的方法 - 该方法优于我们的参考模型。 这一部分将深入研究称为域适应的技术,进一步丰富我们的实验。


原文链接:用合成数据训练分割模型 - BimAnt

这篇关于用合成数据训练语义分割模型【裂缝检测】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/409687

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了