PlumeDEBuG:基于数据驱动的建模技术,用于合成气泡羽流图像的生成
《Water Resources Research》:PlumeDEBuG: Data-Informed Modeling for Synthetic Bubble Plume Image Generation
【字体:
大
中
小
】
时间:2026年05月18日
来源:Water Resources Research 5
编辑推荐:
摘要
气泡羽流在自然和人工水系统中扮演着重要角色。光学成像技术被广泛用于研究气泡尺寸分布、流动路径以及羽流的增长过程。机器学习(ML)为分析气泡羽流的光学图像提供了新的机会。然而,其应用受到缺乏能够真实反映羽流条件的大型、带标签的图像数据集的限制。在这里,我们介绍了PlumeD
摘要
气泡羽流在自然和人工水系统中扮演着重要角色。光学成像技术被广泛用于研究气泡尺寸分布、流动路径以及羽流的增长过程。机器学习(ML)为分析气泡羽流的光学图像提供了新的机会。然而,其应用受到缺乏能够真实反映羽流条件的大型、带标签的图像数据集的限制。在这里,我们介绍了PlumeDEBuG,这是一种合成图像生成器,旨在利用实验室实验获得的图像来再现气泡羽流的关键物理特性,包括气泡尺寸分布和空间组织结构。我们首先构建了一个包含超过86,000个直径在1-15毫米之间的独立气泡的实验数据库,并为每个气泡分配了相应的几何标签。PlumeDEBuG允许用户通过指定气泡尺寸分布(均匀分布、高斯分布、对数正态分布、双峰分布或韦伯分布)以及以高斯或随机空间模式排列气泡来生成合成羽流图像,从而模拟实际的空隙分数剖面。通过与实验室羽流图像的对比验证,确认了生成的数据集能够准确再现羽流的统计特性。最后,我们在PlumeDEBuG图像上训练了深度学习(DL)模型(YOLOv8和SAM),并展示了这些模型相比预训练模型具有更高的检测精度。在本研究中使用的所有图像中,YOLOv8在IoU=0.5时的平均精度为0.99(mAP@50),而在IoU阈值从0.50到0.95范围内的平均精度为0.91(mAP@50–95);基于SAM分割技术的平均检测率为82.6%。根据我们的评估,我们发现气泡的表观空隙分数对DL模型检测气泡的性能有显著影响。
**通俗语言总结**
气泡羽流在水资源管理中有着广泛的应用,例如防止结冰、为湖泊和水库充氧、控制沉积物输送,甚至用于驱赶入侵鱼类。它们也在实验室中被研究,以更好地理解石油和天然气泄漏等过程。在本文中,我们介绍了PlumeDEBuG这一新工具,它可以生成真实的气泡羽流合成图像,用于训练机器学习模型。PlumeDEBuG基于一个大型气泡图像实验数据库构建,能够捕捉到气泡尺寸分布和空间聚集等关键羽流特征。我们证明了使用PlumeDEBuG生成的图像可以提高深度学习方法检测气泡的准确性。
**1 引言**
气泡羽流在水生系统中作为重要的水资源管理工具被广泛应用,包括防止结冰(Carey, 1983; Z. Liu等人, 2025)、湖泊和水库的充氧(Schladow, 1992; Wang等人, 2023; Wüest等人, 1992)、控制沉积物输送和侧向密度流(Bacot等人, 2022)以及驱赶水生生物(Fritts等人, 2023; Zielinski & Sorensen, 2016)等工程应用。气泡羽流和气泡流也在实验室和现场尺度上被频繁研究,以增进我们对石油泄漏、天然碳氢化合物渗漏以及水下气体泄漏和爆炸等现象的理解(Dissanayake等人, 2018; Wang & Socolofsky, 2015b; Wang等人, 2016, 2019; Wu等人, 2023)。为了理解气泡羽流中的流动特性,包括气泡的卷入过程和整体行为(Li等人, 2020)、湍流结构及湍流输送(Wu & Wang, 2023; Wu等人, 2021),以及实际应用中的效果(Prasad等人, 2022),通常会使用光学成像技术来提取定量信息,如气泡尺寸分布(Wang等人, 2018)、上升速度(Wang & Socolofsky, 2015a, 2015b)、空隙分数和羽流增长(Li等人, 2020)、流动路径的弯曲特性(Rensen & Roig, 2001; Simiano等人, 2006)以及其他羽流属性。分析这些图像需要可靠的图像处理算法来逐帧识别和量化气泡。阴影图成像是一种最常用的方法,因为气泡在图像中由于气液界面的存在而呈现为暗色,从而提供了清晰可辨的图案以便处理和分析。传统的图像处理方法在处理大量气泡的羽流时面临挑战,因为密集的气泡流会导致二维(2D)投影中的区域重叠,使得单个气泡的身份难以区分。此外,湍流会改变气泡-水界面,导致气泡形状不规则,进一步影响气泡边界的准确分割。为了重建重叠的气泡以进行定量分析,已经开发了许多先进的图像处理和模式识别技术(例如,Br?der & Sommerfeld, 2007; de Langlard等人, 2018; Fu & Liu, 2016; Lau等人, 2013; Zhang等人, 2012)。在过去十年中,机器学习(ML)方法的发展,特别是卷积神经网络(CNN)和深度神经网络,推动了基于AI的图像处理方法的发展,用于分析含气泡的流动。值得注意的模型包括Mask R-CNN及其与其他图像处理技术的结合(Dunlap等人, 2024; Kim & Park, 2021)、U-Net及其变体(Chen等人, 2022; Hessenkemper等人, 2022)以及其他基于CNN的方法(Haas等人, 2020; Hessenkemper等人, 2022; Qu & Wang, 2025; Wen等人, 2025)。这些基于AI的模型在经过适当训练和应用后,显示出在准确性和效率上超越传统图像处理方法的潜力。为了有效训练ML模型,需要大量的带标签的气泡图像。这些标签可以是用于气泡识别的边界框,或者是用于提取直径和其他定量描述符的像素级分割掩码。许多研究依赖于手动标注实验图像来生成训练数据集(例如,Chen等人, 2022; Dunlap等人, 2024; Kim & Park, 2021)。虽然手动标注可以确保高质量的真实参考,但它耗时且劳动强度高,尤其是在气泡密集且重叠严重的情况下。此外,由于人类标注者在追踪不规则或部分遮挡的气泡边界时可能存在差异,因此难以保持标注的一致性。为了克服手动标注在模型训练中的局限性,研究人员开发了能够高效生成带标签气泡图像的合成图像生成器。例如,Fu和Liu(2019)分析了流经矩形通道中的气泡阴影图像,设计了一种名为BubGAN的合成图像生成器。BubGAN生成了具有可控特性的真实气泡图像,为训练提供了完全标记的数据集。随后,BubGAN生成的图像与实验数据集结合使用,用于训练和验证多个ML模型(Cai等人, 2025; Hessenkemper等人, 2022; Kim & Park, 2021)。采用类似策略,Homan和Deen(2024)通过随机将气泡放置在画布上来提取了近10,000个单独的气泡图像,并重建了合成气泡流场景。通过控制画布大小和气泡中心之间的最小距离,作者能够系统地生成具有不同重叠程度的图像。尽管现有的合成气泡图像生成器在气泡流研究中已被证明很有用,但它们在应用于气泡羽流研究时存在重要局限性。目前可用的数据集没有一个明确针对羽流动态特性进行定制。例如,从点源生成的气泡羽流通常是轴对称的,并且沿轴向显示出类似高斯的空隙分数分布(Wang等人, 2019)。它们还表现出由注入条件和羽流流体动力学决定的特征性气泡尺寸分布(Wang等人, 2018; Wu等人, 2023)。气泡核心的水平宽度也可能随着垂直上升而增加,这种现象通常被称为由于卷入过程导致的羽流增长(Wang等人, 2019)。现有的气泡图像生成器无法直接控制气泡尺寸分布或施加特定的空隙分数剖面,这使得构建能够再现羽流条件的训练数据集变得具有挑战性。此外,在天然气羽流中,气泡通常具有高度的可变形性,特别是在各向异性湍流和非均匀流动结构存在的情况下(Wu & Wang, 2023)。依赖于简化或孤立气泡形状的合成数据集无法捕捉到这种变异性,从而限制了它们对羽流环境的代表性。这些局限性表明需要新的方法将气泡羽流的物理真实性纳入数据集生成中。为了解决这些问题,我们提出了Plume-Data Empowered Bubble-image Generator(PlumeDEBuG),这是一种针对气泡羽流定制的物理信息合成图像生成器。PlumeDEBuG通过强制执行用户指定的气泡尺寸分布、气泡核心的垂直增长和气泡的空间聚集,并将气泡混合到具有预设重叠阈值的背景中,来合成类似羽流的图像。第2节描述了实验设置和气泡图像数据集的构建过程。PlumeDEBuG的算法细节在第3节提供。第4节给出了性能、评估和验证结果。最后,第5节总结了我们的结论。
**2 实验和数据集准备**
**2.1 实验设计和设置**
为了构建一个反映自然水系统中常见的气泡尺寸范围(包括气泡、气泡流和气泡羽流)的气泡图像数据库,我们关注直径在1到15毫米之间的球形气泡。大多数气泡的直径在1-10毫米范围内(见后文图3b),这代表了现场条件下最常观察到的尺寸范围。1毫米的最小直径代表了典型相机和镜头能够可靠检测到的气泡的下限。我们注意到10毫米大约是Rayleigh稳定性准则预测的最大稳定气泡直径的四分之一(Clift等人, 1978)。此外,在静止水中,理论上的最大稳定气泡直径可能更大,例如空气气泡大约为50毫米(Grace等人, 1978),而在爆炸和喷嘴附近条件下可能会出现更大的气泡(例如,Beelen & Krug, 2024; Wu等人, 2023),尽管在自然气泡羽流或人工羽流系统中很少观察到如此大的气泡,尽管在野外有记录(Gros等人, 2019)。我们注意到,与小气泡相比,这些大气泡在自然渗漏和沸腾过程中起着主导作用(DelSontro等人, 2015; Jun等人, 2025)。这些大气泡可以在未来的数据库更新中包含进来。气泡图像测量实验是在密苏里大学环境流体动力学实验室(MU-EFDL)的水池中进行的。水池尺寸为1米×1米×2米,注满水至0.6米深。使用高速相机(Phantom VEO 640)以0.1443毫米/像素的像素到物理分辨率捕捉气泡羽流或气泡流的图像。使用无闪烁的LED灯和天然白色的亚克力板提供均匀的背景光。气泡从四个不同的释放头产生,这些释放头被改装在固定在水池底部的空气管上。空气管连接到设施的空气压缩机,气流由质量流量控制器(Sierra SmartTrak 100)调节。实验设置的示意图如图1所示。
(a)实验设置示意图。(b)实验中使用的四种不同的气泡生成头。为了确保数据库中的气泡与自然和人工气泡羽流中观察到的气泡相当,我们使用了四种不同的气泡生成头进行气泡图像测量:3D打印机喷嘴、空气-石头扩散器、修剪成不同喷嘴尺寸的塑料尖刺和塑料空气管。3D打印机喷嘴的内径为0.2毫米,在0.2和0.4升每分钟的流量下产生最小尺寸为1.4-3.6毫米的气泡。空气-石头扩散器常用于实验室羽流研究(例如,Li等人, 2020; Seol等人, 2007; Wu & Wang, 2023),在0.4和0.45升每分钟的流量下产生1.1-5.4毫米的气泡。修剪成不同喷嘴直径的塑料尖刺产生连续上升的单个气泡,直径范围为4.1-7.8毫米。塑料空气管用于产生较大的气泡,但由于源头处的气泡破裂过程,偶尔也会产生非常小的气泡。因此,空气管在0.5升每分钟的流量下产生1.8-14.8毫米的气泡。实验参数总结在表1中。共进行了9种情况,包括23组实验数据,以生成气泡的源图像。这些测量有效地捕捉到了目标的气泡尺寸范围1-15毫米,其中大多数气泡的直径在1-10毫米之间。不同情况下测量到的气泡数量存在相当大的变化。为了在1-10毫米的直径范围内获得更均匀的分布,对原始数据集进行了相应的修剪(见第2.2节)。表1。气泡释放机制的实验参数及在不同流速下产生的气泡直径范围
实验ID 气泡释放头 流速(LPM) 直径范围(mm)
020 喷嘴 0.20 1.4 – 2.7
040 喷嘴 0.40 1.4 – 3.6
041 气石 0.40 1.1 – 5.1
044 气石 0.45 1.4 – 5.4
101 塑料刺 0.20 4.2 – 7.8
401 塑料刺 0.25 4.5 – 7.0
406 塑料刺 0.30 4.3 – 7.5
420 塑料刺 0.30 4.1 – 6.5
600 管道 0.50 1.8 – 14.8
2.2 孤立气泡图像数据库的构建
为了有效地构建气泡图像数据库,我们采用了广泛使用的图像处理工作流程来进行气泡检测和分割,方法类似于Wang和Socolofsky(2015a)以及Zhou和Niu(2020)的研究。图像处理是使用MATLAB图像处理工具箱开发的自定义脚本完成的。工作流程的示例如图2所示。首先应用高斯滤波器来平滑灰度图像并抑制噪声,然后通过结合水平和垂直梯度来计算强度梯度,以增强具有强烈强度变化的区域。随后使用Canny边缘检测算法提取初始气泡边界。为了细化这些边缘,应用了形态学操作:使用半径为1像素的圆盘形结构元素对边缘区域进行膨胀以关闭小间隙,并填充内部孔洞以生成 solid 气泡掩模。为了在膨胀过程中保持边缘连通性而不人为增加气泡大小,接着应用了二值腐蚀,使用相同的半径为1像素的圆盘形结构元素,以确保捕获到每个气泡的准确形状和大小。
2.3 数据库的评估
在本节中,我们使用各种方法评估气泡形状及其对应的等效球形直径。进行这种评估的原因是湍流气泡羽流中气泡大小和形状的关系非常复杂,湍流引起的变形、振荡和破裂会显著改变气泡的几何形状。通常,气体-液体系统中气泡的形状受雷诺数、E?tv?s数和Morton数的控制(Clift等人,1978年)。对于流体属性固定的系统(例如,表面张力和粘度),如淡水中的气泡,气泡形状基本上是大小的函数。小气泡主要受表面张力的影响,几乎保持球形。随着气泡直径的增加,惯性和重力作用变得更加显著,导致气泡呈现椭圆形,并在上升过程中不断摆动和重新定向。当气泡进一步增大时,它们会转变为球帽形状,这种形状可能变得非常不稳定(Legendre和Zenit,2025年)。本研究中分析的气泡数据库的雷诺数-E?tv?s(Re-Eo)关系如图4所示。用于定义雷诺数的气泡上升速度是根据等效球形直径来确定的(Grace等人,1978年;Wang等人,2018年)。对于这里研究的自由上升的水中气泡,气泡主要是椭圆形的,并表现出摆动运动,而较小的气泡则倾向于保持球形。
3. PlumeDEBuG(Plume-Data Empowered Bubble-Image Generator)
3.1 图像生成流程
PlumeDEBuG(Plume-Data Empowered Bubble-Image Generator)旨在从我们的孤立气泡数据库生成带有高质量标签的合成图像。该生成器旨在再现气泡羽流的关键物理特性,包括气泡大小分布、羽流增长、空隙分数和单帧内的空间聚类。将这些羽流参数映射到图像合成过程的核心算法在算法1中进行了概述。要使用PlumeDEBuG,用户需要指定所需的合成图像数量和每张图像中的气泡数量。用户还通过提供五种预定义分布之一的形状参数来定义目标气泡大小分布:高斯分布、Weibull分布、对数正态分布、双峰分布或均匀分布(第3.2节)。一旦从气泡数据库中采样到所需数量的气泡,我们就应用一组放置控制参数,让用户指定气泡在每张图像中的位置(第3.3节)。例如,气泡可以均匀分布在帧中以模拟混合良好的反应器,或者以气泡核心宽度线性增加的方式排列,以代表气泡羽流的剪切夹带区。PlumeDEBuG还支持在2D图像中定义用户定义的重叠容忍度,同时确保较大的气泡不会完全遮挡较小的气泡。通过使用四叉树空间索引实现重叠控制,以便高效地进行邻域查询。对于每个气泡,算法会测试从均匀分布或截断的高斯分布中抽取的最多50个候选位置。放置过程持续进行,直到达到每张图像的最大气泡数量限制或没有剩余的有效位置;如果给定气泡的所有50次尝试都失败,则跳过该气泡,算法继续处理下一个气泡。因此,最终放置的气泡数量可能低于请求的数量。为了帮助用户选择合适的目标气泡密度,我们包含了一个参数检查,用于标记用户输入是否在当前实现支持的推荐范围内。在所有气泡被放置到图像中之后,我们应用渲染操作将各个气泡融合到画布上,以产生更自然的外观(第3.4节)。一旦整个图像生成完成,我们使用Kolmogorov–Smirnov(K–S)测试来量化成功生成的图像中的气泡大小分布与用户定义的目标之间的吻合度。最后,PlumeDEBuG为每个合成图像生成一个图像质量报告,包括最终的气泡数量和实现的空隙比例。K–S测试统计量和相应的p值也会被报告出来,用于整个生成的图像集。这些诊断结果验证了合成图像是否再现了所需的统计特性和用户指定的羽流物理特性。主要的可控参数总结在表2中。
表2. PlumeDEBuG配置参数
主要图像控制参数:
- 合成图像的数量:10(整数)
- 每张图像的最大气泡数量:200(整数)
- 空间放置:
- 重叠阈值a:0.4(浮点数)
- 高斯比例因子b:4.0(浮点数)
- ROI左边界(基于比例):0.30(浮点数)
- ROI右边界(基于比例):0.70(浮点数)
- 羽流生长:
- 羽流生长率:0.10(浮点数)
- ROI底部宽度(基于比例):0.20(浮点数)
- 饰边效果d:3(整数)
- 侵蚀核大小(像素):3(整数)
- 侵蚀迭代次数:1(整数)
- 高斯核大小(像素):7(整数)
- 高斯模糊sigma:1.0(浮点数)
a. 重叠阈值是在方程9中定义的最大允许的重叠比例。
b. 高斯比例因子是在方程13中定义的。
c. 羽流生长的参数是在方程11中定义的。
d. 侵蚀和高斯核是在方程14和16中定义的。
算法1. PlumeDEBuG合成图像生成:
1: 输入:配置参数,气泡数据库
2: 输出:带有注释的合成气泡图像
3: config.LoadConfiguration()
4: bubbleData LoadBubblesFromDB(config.databasePath)
5: stratifiedData StratifyBubbles(bubbleData, binSize = 0.1 mm)
6: targetPDF ComputeTargetDistribution(config.distributionType)
7: targetWeights targetPDF(binCenters)
8: 对于config.numImages中的每个图像执行以下操作:
9: canvas InitializeCanvas()
10: quadtree InitializeQuadtree(canvas)
11: placedBubbles []
12: while placedBubbles的长度 < config.maxBubbles执行以下操作:
13: bubble SelectBubble(stratifiedData, targetWeights, config_selectionMethod)
14: position GeneratePosition(config.placementMode)
15: candidates quadtree.Query(bubble.bbox)
16: if CheckOverlap(bubble, candidates, config.overlapThreshold) = false then
17: PlaceBubble(canvas, bubble, position)
18: quadtree.Insert(bubble.bbox)
19: placedBubbles.append(bubble)
20: end if
21: end while
22: ApplyFeathering(canvas)
23: SaveImage(canvas)
24: SaveAnnotations(placedBubbles)
25: end for
26: EvaluateResults(KS-test)
3.2 气泡大小分布
这里给出了五种预定义的气泡大小分布的方程:
(4)
(5)
(6)
(7)
(8)
其中μ和σ分别代表高斯分布的均值和标准差;α和β是Weibull分布的形状参数和尺度参数;λ和对数均值和対数标准差分别代表对数正态分布;μ1, μ2, μ3, μ4, μ5是双峰分布的参数(两个高斯分布与混合权重);对于均匀分布,d是指定的中心直径,而w定义了围绕这个中心值的对称范围。根据规定的大小分布,算法使用0.1毫米的区间构建一个离散化的直径直方图,并评估相应的目标概率密度函数(PDF)。我们提供了两种来自气泡数据库的采样策略:(a) 基于离散化直径直方图的直接采样方法(默认方法),以及(b) 加权采样方法(替代方法),该方法从我们整个气泡数据库的每个区间迭代地分配权重因子,以接近规定的气泡大小分布。直接采样方法很简单:PlumeDEBuG从每个数据库区间随机选择所需数量的气泡,以匹配目标直方图中相应的区间。这种方法与指定分布的吻合度几乎完美(通常通过K–S测试达到99%)。然而,如果目标分布包含数据库区间之外的气泡大小,则可能会失败。例如,如果所需的直方图包含20毫米的气泡,由于当前数据库中没有该大小的气泡,采样将不成功。使用这种方法的有效气泡大小范围是1-15毫米。迭代加权采样方法旨在缓解上述采样失败的问题。它不是强制每个区间都完全匹配,而是从数据库的原始大小分布开始,迭代调整一组区间权重,以将有效采样分布推向用户指定的目标。在我们的测试中,这种方法与所需分布的吻合度很好(通常通过K–S测试达到90%-95%)。一旦获得最终的离散化分布,就使用与直接采样方法相同的基于区间的选择程序从数据库中随机抽取气泡。这种策略也能自然适应用户提供的气泡数据库,特别是当某些大小区间分布稀疏时。
3.3 气泡在画布上的放置
3.3.1 重叠检测和控制
PlumeDEBuG允许气泡重叠,同时防止完全遮挡(即一个大气泡完全覆盖其后面的小气泡)。为了强制执行这一约束,我们使用了一种重叠检测方案,确保每个放置的气泡都足够可见。对于每个候选放置,算法查询四叉树(第3.3.2节)以检索附近的气泡,然后计算候选气泡与每个相邻气泡之间的 pairwise 交叠面积。对于每个相邻气泡,定义了重叠比率:
(9)
其中A是候选气泡与现有(相邻)气泡的边界框之间的交叠面积,B是相邻气泡的边界框面积。这个比率估计了新气泡会遮挡的现有气泡的比例。如果任何相邻气泡会被遮挡超过用户指定的阈值,则拒绝该候选放置:
(10)
其中θ是重叠阈值参数(默认值:0.4)。例如,设置θ为0.4意味着任何现有气泡最多只能被新放置的气泡遮挡40%。这个单向标准确保了之前放置的气泡仍然可见,因此可以被检测到,这对于训练对象检测和分割模型至关重要。我们注意到,这个标准仍然允许一个小气泡完全覆盖一个大气泡。因为小气泡在前景中,所以它仍然可见,因此可以被检测到。
3.3.2 四叉树空间索引
如果每个新气泡的放置都要与画布上所有的现有气泡进行比较(假设共有N个气泡),那么算法将对每个放置进行N次重叠检查。对于总共N个气泡,这将导致N^2次 pairwise 检查。为了加速气泡放置过程中的重叠检测,我们使用四叉树空间索引方法进行高效的空间查询,这样每个候选放置只针对附近的气泡进行测试,而不是画布上的所有气泡。画布由一个四叉树表示,该四叉树按位置组织气泡。我们从一个覆盖整个图像的根节点开始。随着气泡的添加,任何包含超过规定数量气泡(默认值:4个)的区域被分成四个相等的子区域(NW、NE、SW、SE)。每个放置的气泡根据其边界框进行存储:如果边界框完全位于一个子区域内,则气泡存储在该子区域内;如果它跨越多个子区域,则存储在父区域内。在评估候选放置时,我们使用候选气泡的边界框来识别它占据的画布区域。然后我们只检查这些区域内的气泡,以及存储在更高层次上的任何较大的“边界”气泡,因为它们跨越了区域边界。这避免了针对画布上的每个气泡进行测试,将重叠检查的成本从O(N^2)降低到大约O(N)。
3.3.3 关心区域(ROI)和羽流生长
PlumeDEBuG允许用户指定一个放置气泡的ROI。ROI可以定义为固定宽度或垂直扩展的宽度,以模拟由于湍流卷吸而产生的羽流生长。对于固定宽度的ROI,用户指定左边界和右边界作为总图像宽度的比例(默认值:α=0.3,β=0.7)。为了考虑羽流生长,我们允许ROI宽度随垂直位置增加。具体来说,高度h处的ROI宽度由以下公式给出:
(11)
其中W(h)是图像底部的ROI宽度(基于画布宽度的一部分定义,默认值:0.2),γ是羽流扩散率(默认值:0.1,例如,Boufadel等人,2020年),z是从图像底部向上测量的垂直坐标。这个公式定义了一个随着高度线性扩展的梯形ROI,并且关于图像中心线对称。
3.3.4 空间聚类控制
PlumeDEBuG还允许用户使用两种放置模式来控制ROI内的气泡聚类:均匀(随机)和高斯。在均匀放置模式下,气泡中心在ROI内均匀放置。每个要放置的气泡的位置是从均匀分布中抽样的:
(12)
在高斯放置模式下,气泡位置是从以羽流中心线为中心的水平方向上的截断高斯分布中抽样的,这使气泡相对于边缘集中在中心附近:
(13)
其中x是中心线位置,σ是按局部ROI宽度缩放的标准差。这里,κ是用户定义的高斯比例因子(默认值:4;推荐值:4-6)。分布被截断到区间[α, β],其中α和β表示高度h处的ROI边界。
3.3.5 放置算法
PlumeDEBuG放置算法按顺序进行,一次放置一个气泡,直到达到目标的最大气泡数量或找不到额外的有效位置。对于每个气泡,程序如下:
- 从用户指定的直径直方图中根据其出现概率选择一个目标气泡直径,并从分层数据库中随机选择一个相应的气泡实例。
- 根据选定的空间聚类模式在ROI内生成一个候选位置。
- 查询四叉树以检索候选气泡边界框区域内的附近气泡。
- 计算所有相邻气泡的重叠比率。如果所有重叠比率都满足要求,则接受该气泡,将其放置在画布上,并插入四叉树中。如果放置被拒绝,则重复步骤2-5,最多尝试50次。如果50次尝试都失败,则跳过该气泡,算法继续处理下一个气泡。这种方法能够在满足用户对气泡大小分布、ROI、聚类模式和允许的重叠约束的同时,实现高效的气泡放置。然而,我们注意到,当用户在小的ROI内请求大量气泡时,放置可能不完整,导致在重叠约束下有效位置不足。即使不是所有请求的气泡都能放置,采样和放置过程也是基于概率加权的:在目标大小分布中出现概率较高的气泡会被优先采样(因此尝试)。因此,成功放置的气泡尽可能与所需分布保持一致。此外,PlumeDEBuG还会进行预生成参数检查,并生成一个生成后的质量报告,总结最终的气泡数量、实现的空隙比例和K-S测试统计量。
3.4 气泡渲染方法
需要一个气泡渲染算法来确保合成气泡与真实羽流图像中观察到的气泡相似。如果合成气泡直接使用二值掩码插入背景中,得到的边界可能会显示出不切实际的尖锐强度不连续性。然而,在实验光学图像中,由于折射、散射、部分透明度和成像系统的模糊,气泡边缘通常显示出逐渐的强度过渡。这些物理效应创造了平滑的边界区域,而不是突然的像素级变化。为了再现这种行为并避免引入可能偏置机器学习模型训练的人为边缘伪影,应用了过滤和掩蔽程序将合成气泡融合到背景中。渲染工作流程包括三个主要步骤:(a) 掩码生成和侵蚀,(b) 高斯羽边效果,以及(c) 软融合。为了再现实验光学图像中气泡边界处观察到的逐渐强度过渡,应用了侵蚀和然后使用高斯核进行平滑的过程。侵蚀后的掩码是基于原始二值掩码使用形态学侵蚀确定的,侵蚀使用的结构元素大小为像素:
(14)
其中d(以像素为单位)是表2中列出的羽边侵蚀核大小。在像素位置x处的平滑掩码M(x)是侵蚀掩码中相邻像素的加权和:
(15)
这里,(x, y)是当前输出像素的坐标,δ是从高斯核窗口内的中心像素开始的整数偏移量。参数κ表示核大小(表2中列出),核半径是r。术语“”表示偏移量的标准化高斯权重,其定义如下:
(16)其中归一化常数“”确保核权重之和为1:
(17)
该核函数是非负的,并且关于其中心对称。高斯权重的标准差“”是一个可控制参数,具体数值列在表2中。为了将气泡融入背景中,使用平滑掩模“”在背景图像和气泡图像之间进行柔和混合。位置“”处的最终像素值计算如下:
(18)其中“”和“”分别是背景和气泡在该位置的像素强度,“”是来自方程15的高斯羽状掩模。
4 性能与讨论
4.1 样本图像与评估
图8a展示了包含200个气泡的图像生成概念。气泡大小来自对数正态概率密度函数(PDF),气泡位置使用默认的高斯放置模式在感兴趣区域(ROI)内采样,该区域随高度线性扩展(生长率“”),从底部的20%的画布宽度增加到顶部的26%。相应的示例图像显示在图8b中,其中气泡渲染在真实图像背景上。
(a)包含200个气泡的合成图像示意图,气泡大小来自对数正态分布(均值直径“”= 3.54毫米,标准差“”= 1.61毫米),气泡中心使用默认的高斯放置模式在羽流生长ROI内采样(生长率“”= 0.1,底部ROI宽度“”= ,画布宽度“”= 1,001像素,画布高度“”= 601像素)。
(b)使用相同配置生成的PlumeDEBuG输出图像,渲染在真实图像背景上。
为了展示参数变化对图像生成的影响,我们在图9中提供了两组示例。在每个框架中,我们将最大气泡数量固定为100个,使用韦伯尔(Weibull)气泡大小分布,并使用高斯或随机放置模式进行排列。我们将重叠阈值从0变化到1,从不允许重叠到可能完全遮挡的最大重叠。
使用韦伯尔气泡大小分布生成的PlumeDEBuG样本图像,每张图像包含100个气泡,采用高斯或随机放置模式排列。重叠阈值变化范围为0到1。画布尺寸为800像素×753像素,相当于115.4毫米×108.6毫米。
为了定量评估模型性能并描述合成图像的统计特性,我们为四种预设的气泡大小分布(即高斯、对数正态、双峰和均匀)生成了10张图像。每张图像包含200个气泡,总共2,000个气泡。我们为每种情况提供了一张示例图像(图10)。对于每种分布,我们从合成图像中提取了气泡直径,并将提取的离散直径直方图(蓝色条形)与预设的输入概率密度函数(红色曲线)进行了比较。结果表明,当从数据库中采样气泡时,生成器能够很好地匹配目标气泡大小分布。
4.2 模型效率与可扩展性
PlumeDEBuG旨在同时具备高效性和可扩展性。我们使用四叉树空间索引来将重叠测试限制在附近的气泡上,这大大减少了成对检查的数量,并允许随着每张图像中气泡数量的增加而进行扩展。采样也保持轻量级:通过将气泡数据库分层到直径区间中,默认的直接直方图采样器可以从适当的区间中抽取气泡实例,而无需反复搜索整个数据库。当用户提供自己的气泡数据库并且某些尺寸范围分布稀疏时,可选的迭代重新加权方案可以调整每个区间的采样概率,以更好地逼近目标分布,即使在数据库覆盖范围有限的情况下也能提高可用性。PlumeDEBuG利用Python的ThreadPoolExecutor进行并行计算,通过将任务分配到多个线程上来提高数据加载效率。这种方法减少了从SQLite数据库加载和处理气泡数据所需的时间。在24线程的i7-12800H笔记本电脑上,对于当前的86,203个气泡数据集,初始加载时间约为20分钟,而一旦缓存被填充,后续加载时间降至仅20秒。图像生成过程通过NumPy和OpenCV中的向量化操作进行了优化,实现了快速图像处理,计算开销最小。PlumeDEBuG在Python 3.8中实现并进行了测试。在24线程的i7-12800H笔记本电脑上,生成一个包含150个气泡、遵循高斯大小分布的图像在1,088×1,920大小的画布上大约需要1.4秒。此外,标准化的数据格式还允许用户通过添加额外的标记气泡图像来扩展数据库,使该框架适用于广泛的应用场景。例如,添加更大的球形气泡将允许分析水下气体喷发释放点的气泡破裂情况(Wu等人,2023年)。
4.3 与实验数据的比较
为了进一步展示PlumeDEBuG生成类似实验图像的能力,我们使用了两个实验中的气泡羽流图像,并将它们作为合成图像进行比较(图11)。第一张实验图像显示了使用空气石以0.4 LPM的流速生成的气泡羽流。气泡大小范围从0.4毫米到4.6毫米,图像中总共识别出275个气泡(图11a-1)。通过图像处理,我们将这些275个气泡的直方图拟合为韦伯尔分布,并对水平方向上的累积气泡位置应用了高斯拟合。然后使用这些拟合参数生成了相应的合成图像,如图11a-2所示。
PlumeDEBuG生成的实验和合成气泡羽流图像的比较。(a-1)实验图像:空气石生成器,流速=0.4 LPM,气泡大小范围=0.4–4.6毫米,气泡数量=275。(a-2)使用韦伯尔气泡大小分布(,(无量纲),毫米)和高斯气泡放置生成的相应合成图像。(b-1)实验图像:0.2毫米喷嘴,流速=0.26 LPM,气泡大小范围=0.8–5.8毫米,气泡数量=398。(b-2)使用高斯气泡大小分布(,毫米,毫米)和高斯气泡放置生成的相应合成图像(生长率,高斯比例因子,ROI底部宽度)。所有PlumeDEBuG图像都使用了0.4的重叠阈值。第二张实验图像是使用0.2毫米喷嘴和0.26 LPM的流速获得的。测量得到的气泡直径范围从0.8毫米到5.8毫米,图像中总共识别出398个气泡(图11b-1)。气泡直径直方图使用对数正态分布进行拟合,而水平方向上的累积气泡位置使用高斯函数进行拟合。使用这些拟合参数,我们生成了图11b-2中显示的相应合成图像。实验图像对与合成图像对之间的视觉比较显示出高度相似性。合成气泡与实验背景很好地融合在一起,保留了空间分布和整体羽流结构。由于合成气泡是从真实气泡羽流图像数据库中提取的,它们保持了真实的物理外观,同时准确再现了测量羽流的统计特性。
4.4 机器学习实现与评估:PlumeDEBuG与BubGAN的比较
为了进一步评估PlumeDEBuG在机器学习应用中的实用性,我们构建了一个包含5,000张合成图像的训练数据集。数据集包括四种气泡大小分布:高斯(1,000张图像)、均匀(1,000张图像)、韦伯尔(1,500张图像)和对数正态(1,500张图像)。每张图像包含100到350个气泡,气泡放置方式要么使用高斯放置模式(2,500张图像),要么使用随机放置模式(2,500张图像)。气泡大小范围为1–8毫米,将用于训练机器学习模型。作为对比,我们参考了之前的工作BubGAN(Fu & Liu,2019年),并使用这种方法生成了额外的5,000张图像。生成参数包括参考气泡大小3.5毫米,均匀气泡大小分布,气泡直径范围从1.5毫米到6.5毫米。图12显示了两个数据集中的代表性样本图像,其中气泡大小均匀分布,范围从2毫米到4毫米。对于PlumeDEBuG,提供了两个示例:一个使用高斯放置模式(图12a),另一个使用随机放置模式(图12b),突出了整个画布上气泡聚集的差异。高斯放置模式在中心产生更高的气泡密度,更接近羽流行为。PlumeDEBuG和BubGAN之间最显著的区别在于气泡外观:在BubGAN图像中,即使对于相对较大的直径,气泡也倾向于呈现更均匀的球形。然而,在自然系统中,较大的气泡通常是椭圆形的,羽流内的湍流通常会导致显著变形,从而产生不规则的气泡几何形状。这些特征在BubGAN生成的合成图像中并未捕捉到。
用于训练机器学习模型的合成气泡流数据集样本图像。(a)PlumeDEBuG图像,包含450个气泡,高斯放置,气泡直径分布均匀,范围为2–4毫米。(b)PlumeDEBuG图像,包含450个气泡,均匀放置,气泡直径分布均匀,范围也为2–4毫米。所有PlumeDEBuG图像都使用了0.4的重叠阈值。(c)BubGAN图像,包含450个气泡,气泡直径分布均匀,范围同样为2–4毫米。使用这两个合成数据集,我们分别训练了两个YOLOv8模型用于实验图像中的气泡识别:一个基于PlumeDEBuG数据集,另一个基于BubGAN数据集。每个模型在相同的训练条件下训练了300个周期,以确保公平比较,每个周期对应于完整遍历整个训练数据集一次。训练后的模型随后在独立的实验气泡羽流数据集上进行了评估。这些图像是使用流速为0.45 LPM的空气石生成的,没有包含在合成图像数据库中。测量得到的气泡直径范围从1.6毫米到5.4毫米,落在用于模型训练的两个合成数据集所代表的尺寸范围内。为了建立真实参考,所有图像中的气泡都由一位经验丰富的研究生手动标注,这里称为人类水平性能。在图13中,我们比较了在PlumeDEBuG和BubGAN数据集上训练的YOLOv8模型的检测性能,当应用于之前未见过的实验气泡图像时。对于图13a和13b中分别为125个和127个人类标记的气泡的真实值,PlumeDEBuG训练的模型分别检测到了128个和136个气泡,而BubGAN训练的模型分别检测到了111个和115个气泡。两个模型的表现都很好,但PlumeDEBuG训练的模型在处理重叠气泡的情况下表现略佳,提供了更准确的气泡边界框(见图13中的插图示例)。
两个实验气泡羽流图像比较了人类标记(HLP)真实值(绿色掩模)与在BubGAN数据上训练的YOLOv8模型(蓝色边界框)和在PlumeDEBuG数据上训练的YOLOv8模型(红色边界框)的预测。进一步使用平均精度(mAP)这一标准指标评估了性能,该指标比较了检测到的边界框与真实值框。当预测框和真实框的重叠超过选定的阈值时,检测被认为是正确的,该阈值通过交并比(IoU)来衡量。在IoU阈值为0.50(mAP@50)时,即50%的重叠足够时,PlumeDEBuG训练的模型获得了0.99的分数,表明它几乎总是正确地定位了图像中的气泡。在更严格的阈值范围内,平均值从0.50到0.95(mAP@50–95),这也测试了边界框与真实气泡形状的对齐程度,PlumeDEBuG训练的模型获得了0.91的分数。相比之下,BubGAN训练的模型分别获得了0.87和0.73的分数。这些结果展示了PlumeDEBuG在生成高质量训练数据方面的有效性,并突出了其在不同实验室和现场条件下提高气泡检测效率的潜力。我们还评估了一个广泛使用的分割模型——Segment Anything Model(SAM,Meta AI)(Kirillov等人,2023年)在检测和分割气泡方面的性能。首先,我们测试了预训练的SAM模型(检查点:sam_vit_b_0_01ec64),发现它在我们的实验图像上的表现较差,遗漏了超过95%的气泡。由于SAM基于Vision Transformer架构,并且可以适应新的领域,我们通过在使用PlumeDEBuG和BubGAN生成的合成数据集上对SAM进行微调来应用迁移学习。在微调过程中,我们使用了AdamW优化器,学习率为0.01,并通过余弦衰减(即余弦退火学习率调度)逐渐减小训练过程中的步长。为了解决类别不平衡问题(即气泡像素只占每张图像的一小部分),我们使用了一种结合了焦点损失(focal loss)和Dice损失(Dice loss)的损失函数:焦点损失强调难以分割的气泡像素,而Dice损失则衡量预测掩码与真实掩码之间的重叠程度(Jadon,2020年)。训练样本来自合成图像中所有标注的气泡。对于每个气泡,其二值掩码被恢复到全图像分辨率,真实掩码的大小也被调整以匹配SAM的输出尺寸。数据集被分为90%的训练部分和10%的验证部分,模型训练了20个周期,批量大小为2。微调后的SAM模型结果如图14所示。当成功检测到气泡时,两种模型都能生成准确的气泡掩码,但每种模型都遗漏了大量实例。这些遗漏的气泡大小各不相同,表明模型对特定大小的气泡没有偏见。与BubGAN训练的模型(图14b)相比,PlumeDEBuG训练的SAM(图14a)在所有三张测试图像中检测到了更多的气泡(分别为109个、102个和97个,而BubGAN分别为63个、70个和55个)。相对于真实数量(分别为125个、127个和121个),PlumeDEBuG训练的SAM分别恢复了87.2%、80.3%和80.2%的气泡,而BubGAN训练的SAM分别恢复了50.4%、55.1%和45.5%。平均而言,这提高了32.2%(从50.4%提高到82.6%)。尽管通过PlumeDEBuG微调取得了显著提升,但仍存在17.4%的遗漏率,这可能是由于模型在没有外部引导的情况下难以分辨阴影区域内的低对比度气泡边界。为了解决这个问题,可以使用YOLO模型获得的边界框作为提示来指导SAM的分割。然而,这种方法留待未来的研究。我们还通过统计标记为气泡的像素总数来比较分割覆盖率。PlumeDEBuG训练的SAM生成的总分割气泡面积(分别为41,979像素、41,245像素和33,613像素)大于BubGAN训练的SAM(分别为26,894像素、30,857像素和22,376像素),总体分割气泡面积增加了45.8%。
4.5 空洞比例和重叠阈值对YOLO性能的影响
为了进一步评估气泡重叠对检测性能的影响,我们使用PlumeDEBuG图像进行了两项额外的YOLO测试(图15)。(a) 在第一项测试中,生成了5,000张具有不同重叠阈值(分别为[具体值未提供]和1)的图像,同时保持相似的空洞比例。(b) 在第二项测试中,生成了5,000张每张图像中气泡数量不同的图像(分别为150-1,600个),同时保持空洞比例不变([具体值未提供] = 0.5)。对于这两组数据,合成图像是在[具体像素大小未提供]的画布上使用高斯放置方法生成的。气泡大小分布遵循高斯分布,标准差分别为[具体值未提供]毫米。对于第一组数据,每张图像中的气泡数量固定为300个,导致所有情况下的明显空洞比例(定义为2D图像中气泡占据的区域)约为17%。第二组数据产生了更广泛的明显空洞比例范围,从9%到62%。进一步增加气泡数量到1,600个以上并没有在同一画布上导致更多的实际气泡数量。因此,这代表了在[具体条件未提供]下的最大可实现明显空洞比例。图15展示了不同重叠阈值和不同明显空洞比例下的YOLO测试样本图像。(a) 重叠阈值分别为0、0.25、0.5、0.75和1,所有情况下的明显空洞比例约为17%。(b) 明显空洞比例分别为9%、20%、36%、51%和62%,所有情况下的空洞比例[具体值未提供] = 0.5。所有模型都从YOLOv8预训练的权重开始,并在禁用所有数据增强的情况下训练了100个周期。训练使用了随机梯度下降(SGD)算法,初始学习率为[具体值未提供],最终学习率比为0.01,动量为0.937,权重衰减为[具体值未提供],并采用了提前停止策略(耐心值=30个周期)。输入图像大小为[具体像素大小未提供],批量大小为4,最大检测数量为500个,IoU阈值为0.45。每组数据被分为90%的训练部分和10%的测试部分。第一项测试的结果(图16a)显示,在所有[具体值未提供]下,检测性能始终保持较高水平(mAP@50、mAP@50–95),表明相邻气泡之间的允许重叠程度对检测精度的影响很小。更重要的是,明显空洞比例对模型性能的影响要大得多(图16b)。当明显空洞比例小于0.2时,检测性能几乎完美(mAP@50、mAP@50–95)。然而,当明显空洞比例超过0.35时,两个指标都急剧下降:mAP@50从99%下降到66%,mAP@50–95从93%下降到65%,在明显空洞比例为0.62时。mAP值的下降与气泡检测遗漏率的增加有关(从1%增加到66%)。气泡检测能力的下降表明,在重叠严重的密集图像中检测单个气泡的难度增加。测试结果表明,明显空洞比例是控制PlumeDEBuG生成训练数据中检测难度的主要因素。重叠权重[具体值未提供]起着次要作用:在固定明显空洞比例的情况下,[具体值未提供]的变化范围从0到1导致mAP@50的变化不到3%。
5 结论
在这项研究中,我们介绍了PlumeDEBuG,这是一个专门设计用于复制自然和工程水生系统中气泡羽流的合成图像生成器。与之前的合成气泡生成器不同,PlumeDEBuG将与羽流相关的物理特性整合到了图像生成过程中,包括气泡大小分布、空洞比例轮廓和空间聚类。基于一个包含超过86,000个独立气泡的实验数据库,该数据库确保合成图像保留了真实的气泡几何形状和变形特征,同时允许用户控制代表羽流动态的统计分布和空间排列。此外,底层数据库可以扩展以包含更多的气泡图像,从而将PlumeDEBuG的适用范围扩展到更广泛的工程和自然系统。我们证明了PlumeDEBuG能够生成具有可定制气泡大小分布、重叠阈值和放置模式的羽流样图像。通过与实验室实验的验证,确认生成的图像能够精确再现观察到的羽流统计特征,包括高斯状的空洞比例轮廓和特征大小分布。重要的是,PlumeDEBuG提供了诸如气泡数量、等效直径和空洞比例等元数据,为图像数据与物理参数之间提供了直接联系。这些特性和完全可用的标记数据集使得该工具特别适合用于机器学习(ML)应用。我们证明了使用PlumeDEBuG生成的数据集可以提高深度学习模型(例如YOLO和SAM)在实验图像中检测气泡的性能。在不同明显空洞比例和重叠阈值下的额外评估表明,空洞比例对检测性能有显著影响,而重叠阈值的影响较小。这些ML模型的实现和系统评估展示了PlumeDEBuG在增强基于ML的气泡图像分析的鲁棒性和准确性方面的潜力。
致谢
作者衷心感谢国家科学基金会(资助编号2121664和2439303)和海军研究办公室(奖项编号N000142312576)的财政支持。
利益冲突
作者声明与本研究无关的任何利益冲突。
数据可用性声明
PlumeDEBuG标记的数据集可通过Zenodo仓库获取:https://doi.org/10.5281/zenodo.18793954(Ying & Wang, 2026)。PlumeDEBuG(测试版)可在GitHub仓库中获取:https://github.com/mu-bwang/PlumeDeBUG。