当前位置: 首页 > article >正文

Paper -- 洪水深度估计 -- 基于计算机视觉, 根据被淹车辆图像进行洪水深度估计

在这里插入图片描述


基本信息

论文题目: Computer Vision–Based Estimation of Flood Depth in Flooded-Vehicle Images
中文题目: 基于计算机视觉在洪水-车辆图像上进行洪水深度估计
作者及单位: Somin Park, Francis Baek, Jiu Sohn, Hyoungkwan Kim (延世大学, 汉城(首尔), 韩国)
提交日期: 2020年4月13日
审批日期: 2020年10月12日
在线发表日期: 2020年12月29日
期刊: Journal of Computing in Civil Engineering 中国科学院SCI分区 2区


摘要

本文提出了一种基于图像处理的洪水深度估计方法,使用淹水车辆的地面视角图像。方法包括以下三个主要步骤:

  • 车辆对象分割:利用Mask R-CNN对淹水图像中的车辆进行检测。
  • 跨领域图像检索:基于VGGNet的特征图,采用余弦距离筛选与淹水车辆最相似的3D渲染车辆图像。
  • 水深估算:通过对比淹水车辆与3D渲染图像,计算水深。研究验证了该方法在 500张淹水图像 上的有效性,误差约为轮胎高度的9.40%

背景

  • 城市地区因其高人口密度和不透水表面比例增加,更容易受到洪水影响
  • 车辆相关事故在洪水灾害中占很大比例,如美国1959至2005年洪灾死亡人数中有63%与车辆相关。
  • 当前洪水警报系统主要依赖传感器或人工操作,无法覆盖所有道路
  • 社交媒体图像提供了即时、广泛的洪水信息,但其 非结构化数据需要手动分析, 效率低下
  • 本文提出利用深度学习技术自动从图像中估算水深,为洪水管理提供新方法。

方法

  • 步骤1:分割与过滤
    使用Mask R-CNN对车辆进行分割,并 过滤遮挡、边缘或形状异常 的车辆图像。

  • 步骤2:图像检索
    使用VGGNet3D渲染图像中匹配最相似的车辆图像

  • 步骤3:水深估算
    通过 对比淹水车辆与3D模型的高度差,计算洪水深度。


数据集

  • 洪水图像988张地面视角的淹水车辆图像,分为训练集(488张)验证集(500张)
  • 3D渲染图像44张由3D模型生成的车辆图像,用于图像匹配

方法框架

在这里插入图片描述
这是该文章的框架图(Framework),展示了作者提出的洪水深度估算方法的整体工作流程
分为三个主要模块:分割(Segmentation)图像检索(Image retrieval)深度估算(Depth estimation)

粉色车辆: 表示输入的 实际淹水车辆图像
右侧黄色车辆表示: 用于匹配的3D渲染车辆图像
蓝色虚线: 高度差(Flood depth)是最终估算的洪水深度结果

  • 输入:地面视角的淹水车辆图像(Photograph)被输入系统,作为整个方法的起点
  • 处理流程
    • 通过Mask R-CNN模型对车辆对象进行检测和分割,生成 候选车辆(Candidate cars)
    • 使用VGGNet从预先构建的3D车辆图像数据库中检索与候选车辆最匹配的图像。
    • 通过对分割图像和检索图像的比较,计算车辆被水淹没的高度,从而估算洪水深度(Flood depth)。
  • 输出:最终估算出的洪水深度值

车辆边界框位置及其在图像中的坐标关系 - 用于过滤数据

在这里插入图片描述
该图展示了车辆对象在图像中的空间分布相关参数,用于帮助过滤掉不符合条件或不完整的车辆对象,从而提升后续深度估算的精度和可靠性

  • 输入图像:包含车辆的淹水图像,用黑色背景矩形表示整个输入图像
    – 图像的宽度 I W I_W IW, 高度 I H I_H IH
  • 边界框:用黄色矩形标注车辆对象在图像中的位置及尺寸信息,边界框的四个顶点分别用坐标表示
    – ( x u , y u x _u, y_u xu,yu)为左上角,( x b , y b x_b, y_b xb,yb)为右下角
    边界框的宽度和高度可以通过 x b − x u x_b -x_u xbxu y b − y u y_b-y_u ybyu 计算
  • 车辆分割区域:用红色矩形标注分割出的车辆实际部分
    宽度和高度分别为 A W A_W AW A H A_H AH
  • 其他标注: l , r , u , d l,r,u,d l,r,u,d分别表示边界框距离图像左、右、上、下边界的距离

如何通过实际淹水车辆图像与3D渲染图像的对比,估算洪水深度

在这里插入图片描述
( a ) 淹水车辆图像:显示一辆被洪水部分淹没的车辆,图片蓝色虚线中标注了车辆被淹没的部分。
( b ) 3D渲染图像:基于3D建模生成的车辆图像,目的是与实际车辆的朝向和形状匹配
( c ) 合成图像:结合(a)和(b),通过调整两者的比例对齐宽度,估算车辆的淹水高度,并以此推断洪水深度。蓝色虚线框表示洪水淹没的部分

  • 输入处理
    – 从洪水图像中分割出淹水车辆(如图(a))。
    – 从3D渲染数据库中检索与车辆形状和朝向最接近的图像(如图(b))。
  • 图像对齐
    – 调整两张图像的宽度相同,以确保两者比例一致。
    对比两张图像的高度差异,淹水车辆图像的高度较小部分被认为是被洪水淹没的区域。
  • 深度估算
    – 通过对比两张图像在蓝色虚线标记部分的高度差,推算出洪水深度

实际车辆图像与3D模型车辆图像-两者在形状和视角上的一致性

在这里插入图片描述
该图展示了 即使车辆形状不同,通过对齐朝向和尺寸,3D模型仍能用于替代实际车辆进行洪水深度的估算, 为洪水深度的估算提供了关键支持

  • (a) 与 ( c)
    – (a) 是一辆实际拍摄的淹水车辆图像,正面朝向摄像机。
    – (c ) 是通过3D渲染生成的,与 (a) 在视角和朝向上匹配,但车辆形状不同
  • (b) 与 (d)
    – (b) 是另一辆实际拍摄的淹水车辆图像,车辆背面朝向摄像机。
    – (d) 是通过3D渲染生成的,与 (b) 在视角和朝向上匹配,但车辆形状不同

在DFSS(动态特征空间选择)方法中使用的特征图提取过程

在这里插入图片描述
上图中展示输入图像, VGGnet的池化层3和池化层4的特征可视化结果

  • VGGNet 等模型的标准输入宽度要求为224x224
    – 因此输入的车辆分割图的的宽度缩放至224像素, 高度等比例缩放, 这时的分割图尺度的高度记为 n n n
    – 接下来如果缩放图的高度不满224的地方在下方用空白填充

在这里插入图片描述
输入图像:淹水车辆的分割图像,分辨率为 224 × 224 224\times 224 224×224 像素, 其中 n n n 是车辆的高度加上顶部的空间高度。
特征提取:图像经过VGGNet模型的卷积(Conv)池化(Pool)层处理,生成两个特征图:
(a)第3个池化层(Pooling layer 3)的输出,分辨率为 28×28×256
(b)第4个池化层(Pooling layer 4)的输出,分辨率为 14×14×512
用途:这些特征图用于图像检索和相似性计算,帮助匹配3D渲染车辆图像与实际车辆图像。
池化层输出的特征图高度
– 第 3 层池化 (Pooling layer 3):只取特征图上方高度为 int(n/8)的部分用于特征相似性计算 ( 因为空白信息属于无用信息)。
– 第 4 层池化 (Pooling layer 4):只取特征图上方高度变为 int(n/16)的部分用于特征相似性计算


对分割图和3D渲染图的特征进行余弦相似性计算

公式:
Similarity = A ⋅ B ∥ A ∥ ∥ B ∥ \text{Similarity}=\frac{\mathbf{A}\cdot\mathbf{B}}{\|\mathbf{A}\|\|\mathbf{B}\|} Similarity=A∥∥BAB

  • A \mathbf{A} A : 被淹车辆分割图的特征向量
  • B \mathbf{B} B : 3D渲染车辆图像的特征向量

通过计算两者的余弦值,判断它们在特征空间中的相似性

操作
将特征图展平成一维向量,计算余弦相似性。相似性值范围为 [−1,1],值越接近1表示两张图像越相似
– 对所有3D渲染图像计算相似性得分
– 根据相似性得分排序,选择最相似的几张3D渲染图像进行进一步处理
– 通过这一步筛选,确定与被淹车辆分割图最匹配的3D渲染图像


处理洪水极为严重的情况

在这里插入图片描述
问题:
– 当洪水严重时,仅能看到被淹车辆的顶部,导致车辆的整体轮廓信息缺失。
– 如果直接使用分割图的宽度和高度估算洪水深度,可能会因为车辆实际宽度的不确定性引入较大的误差

解决方法:

  • 以分割图高度为基准
    • 使用被淹车辆的分割图高度(即车辆被淹部分的实际高度)作为一个固定参数
    • 通过对分割图的高度与3D渲染图像的高度进行对齐,找到3D模型中与之高度相同的部分。
  • 在3D渲染图中确定宽度 w l o n g w_{long} wlong
    • 在3D渲染车辆图中,找到与被淹车辆分割图相同高度的部分,提取该高度对应的水平宽度 w l o n g w_{long} wlong
    • w l o n g w_{long} wlong 是由3D渲染车辆模型的几何信息确定的,代表车辆在该高度的真实宽度。
  • 分割图宽度缩放
    • 将被淹车辆分割图的宽度缩放到与3D渲染图 w l o n g w_{long} wlong 一致。
    • 这样可以消除视角、洪水遮挡等因素导致的车辆宽度比例失真,确保两者在尺寸上的一致性

不同视角图像的宽高比r -- 用于过滤分割图

在这里插入图片描述
该图展示了用于3D渲染车辆图像生成的过程和示例图像, 具体包括:

  • (a) 车辆的3D模型视图
  • (b) 不同侧视角度的图像,
  • (c ) 不同正面和背面角度的图像
  • 以及车辆在这些视角下的宽高比 r r r (表示宽度与高度的比值)

3D渲染图的宽高比的意义
– 宽高比可以反映车辆在不同视角下的几何特征,例如侧视图(宽度更大)和正面视图(宽度较小)
– 通过对比宽高比,可以快速筛选出与被淹车辆视角相似的3D渲染图像


过滤掉没用的车辆

在这里插入图片描述
该图展示了洪水深度估算方法中,利用 Mask R-CNN 对车辆进行分割后,对目标车辆进行过滤的三个条件:

  • 遮挡检测(a)
    如果车辆被部分遮挡(如树木、其他车辆或建筑物挡住),则认为该对象不完整,直接过滤掉
  • 边缘位置检测(b)
    如果车辆位于图像边缘,分割的边界框没有完整覆盖整个车辆,则过滤掉。这避免了图像裁剪造成的 不完整数据
  • 宽高比过滤(c)
    计算分割对象的宽高比(width-to-height ratio),并与车辆的典型宽高比进行对比
    – 如果宽高比过大(可能是较长的物体,如 卡车)或过小(可能是较高的物体,如 树木),则认为不是目标车辆,过滤掉

判断干扰数据或无效数据

在这里插入图片描述

  • (a) 模糊和低质量图像:
    图中显示了分辨率非常低或受到严重模糊影响的对象。
    这些问题会导致 Mask R-CNN 的分割结果不准确,从而影响后续的洪水深度估算。
  • (b) 遮挡和不完整的对象:
    图示了一些被部分遮挡只有部分可见的车辆对象。
    遮挡可能由其他物体(如建筑、树木、车辆)引起,导致分割的车辆边界不完整
  • (c ) 异常宽高比的对象:
    显示了宽高比异常的车辆对象(例如,超长的车辆被异常拉伸的图像)。
    这些对象的几何比例与典型车辆不符,可能是由于图像拉伸或极端视角导致的

导致洪水估计误差的三种原因

在这里插入图片描述

  • (a) 分割不准确(Incorrect segmentation):
    图中显示了分割算法未能准确提取车辆轮廓的情况,部分轮廓(例如轮胎或底盘)被错误地分割,导致错误的洪水深度估算。
  • (b) 特征图简化(Simplified feature maps):
    使用深度学习模型时,特征图的空间分辨率较低(如图中所示, 此时后期比较的特征图只有4个像素高度),可能无法保留车辆的精细特征。
  • (c ) 车辆位置变化(Varied locations):
    不同车辆在图像中的位置变化(例如轮胎部分与背景重叠或被部分遮挡)可能导致深度估算的误差。

质疑

方法局限

  • 依赖单一的3D车辆模型,可能导致对非标准车辆(如卡车或SUV)估算误差较大。
  • 无法有效处理严重遮挡复杂环境下的车辆分割问题。
  • 单张图像 可能不足以完整描述洪水的动态特征,未来可利用视频帧改善估算精度。

数据集局限

  • 洪水图像来源单一,可能缺乏足够的多样性和复杂性,限制模型在实际场景中的表现

http://www.kler.cn/a/405698.html

相关文章:

  • 输出第二个整数
  • WordPress添加类似说说、微博的时间轴微语页面
  • 46并发编程(线程、进程)
  • JDK、MAVEN与IDEA的安装与配置
  • 影视后期学习Ⅰ~
  • Windows 10使用智能卡SmartCard返回scard_e_no_service错误
  • nginx 配置lua执行shell脚本
  • Linux ASLR
  • 【数据结构】—— 树
  • 从 HTML 到 CSS:开启网页样式之旅(开篇之一)——CSS 初体验与网页样式新征程
  • HTML 元素详解
  • 标贝科技:自动驾驶中的数据标注类别分享
  • 物联网研究实训室建设方案
  • Nuxt3:拉取项目模板失败问题解决方法
  • 【自动驾驶】数据集合集!
  • Spark SQL 之 QueryStage
  • C++基础:vector的底层实现
  • Linux 查看端口和进程的常用命令
  • 【优选算法】二分查找
  • 软件测试——自动化测试常见函数
  • 【shell编程】shell基础之for与while循环
  • ElementUI之给el-table实现搜索功能
  • 线性回归学习笔记
  • 【prism】遇到一个坑,分享!
  • Java编程,配置mongoUri连接mongodb时,需对特殊字符进行转义
  • 基于AOA算术优化的KNN数据聚类算法matlab仿真