目标检测-击穿黑夜的PE-YOLO

前言

当前的目标检测模型在许多基准数据集上取得了良好的结果,但在暗光条件下检测目标仍然是一个巨大的挑战。为了解决这个问题,作者提出了金字塔增强网络(PENet)并将其与YOLOv3结合,构建了一个名为PE-YOLO的暗光目标检测框架。
首先,PENet使用拉普拉斯金字塔将图像分解为4个具有不同分辨率的组件。具体来说,作者提出了一个细节处理模块(DPM)来增强图像的细节,其中包括上下文分支和边缘分支。此外,作者提出了一个低频增强滤波器(LEF)来捕获低频语义并防止高频噪声。

在这里插入图片描述

1、简介

近年来,卷积神经网络(CNN)的出现推动了目标检测领域的发展。大量的检测器被提出,针对基准数据集的性能也取得了令人满意的结果。然而,大多数现有的检测器都是在高质量图像和正常条件下进行研究的。而在实际环境中,往往存在许多恶劣的光照条件,如夜晚、暗光和曝光不足,导致图像质量下降,从而影响了检测器的性能。视觉感知模型使得自动系统能够理解环境并为后续任务(如轨迹规划)奠定基础,这需要一个稳健的目标检测或语义分割模型。
在这里插入图片描述
图1是一个暗光目标检测的示例。可以发现,如果能够适当地增强图像,并根据环境条件恢复原始模糊目标的更多潜在信息,那么目标检测模型就能够适应不同的暗光条件,这也是模型在实际应用中面临的重大挑战。

目前,已经提出了许多方法来解决暗场景中的鲁棒性问题。许多暗光增强模型被提出来恢复图像细节,减少恶劣光照条件的影响。然而,暗光增强模型的结构较为复杂,这不利于图像增强后检测器的实时性能。这些方法大多数不能与检测器进行端到端的训练,需要有配对的暗光图像和正常图像进行监督学习。

在暗光条件下的目标检测也可以看作是域自适应问题。一些研究者采用对抗学习将模型从正常光到暗光进行转换。但是他们关注的是数据分布的匹配,忽略了暗光图像中所包含的潜在信息。近几年,一些研究者提出了使用可微分图像处理(DIP)模块来增强图像,并以端到端的方式训练检测器。然而,DIP是传统的方法,如白平衡,对图像的增强效果有限。

为了解决以上问题,本文作者提出了一种金字塔增强网络(PENet),用于增强暗光图像并捕获有关目标的潜在信息。作者将PENet与YOLOv3结合,构建了一个名为PE-YOLO的端到端的暗目标检测框架。在PENet中,作者首先使用拉普拉斯金字塔将图像分解为多个不同分辨率的组成部分。在金字塔的每个尺度上,作者提出了细节处理模块(DPM)和低频增强滤波器(LEF)来增强这些组成部分。

DPM由上下文分支和边缘分支组成,上下文分支通过捕获远距离依赖关系全局增强组成部分,而边缘分支增强组成部分的纹理。LEF使用动态低通滤波器来获取低频语义信息,防止高频噪声以丰富特征信息。作者在模型训练过程中只使用正常的检测损失来简化训练过程,无需对图像进行清晰的标注。

作者在暗光目标检测数据集ExDark上验证了作者方法的有效性,结果显示与其他暗目标检测器和暗光增强模型相比,PE-YOLO取得了先进的结果,分别达到78.0%的mAP和53.6的FPS,适用于暗场景中的目标检测。

作者的贡献可以总结如下:

  • 作者构建了一个金字塔增强网络(PENet),用于增强不同的暗光图像。作者提出了详细处理模块(DPM)和低频增强滤波器(LEF)来增强图像组成部分。
  • 通过将PENet与YOLOv3结合,作者提出了一个端到端训练的暗目标检测框架PE-YOLO,以适应暗光条件。在训练过程中,作者只使用正常的检测损失。
  • 与其他暗目标检测器和暗光增强模型相比,作者的PE-YOLO在ExDark数据集上取得了先进的结果,实现了令人满意的准确性和速度。

2、相关方法

2.1 目标检测

目标检测模型可以分为3类:

  • 一阶段模型、
  • 两阶段模型
  • 基于Anchor-Free的模型。

Faster RCNN 不再通过选择性搜索获得区域建议,而是通过区域提议网络(RPN)来实现。它使得候选区域提议、特征提取、分类和回归在同一个网络中端到端地进行训练。Cai等人提出了Cascade RCNN,它将多个检测头级联起来,当前级别将对前一级别的回归和分类结果进行改进。YOLOv3 提出了新的特征提取网络DarkNet-53。借鉴了特征金字塔网络(FPN)的思想,YOLOv3采用了多尺度特征融合。此外,最近出现了基于Anchor-Free的检测器,它们放弃了Anchor,并将其改变为基于关键点的检测。

2.2 暗光增强

暗光增强任务的目标是通过恢复图像细节和校正颜色失真来改善人类的视觉感知,并为目标检测等高级视觉任务提供高质量的图像。Zhang等人提出了Kind,它可以通过不同亮度级别的成对图像进行训练,而无需真实的GT。Guo等人提出了Zero DCE,它将暗光增强任务转化为图像特定曲线估计问题。Lv等人提出了多分支暗光增强网络MBLLEN,它在不同级别提取特征,并通过多分支融合生成输出图像。Cui等人提出了自适应照明Transformer(IAT),通过动态查询学习构建端到端的Transformer。暗光增强模型恢复图像细节后,会提高检测器的效果。然而,大多数暗光增强模型较为复杂,对检测器的实时性能有很大影响。

2.3 恶劣条件下的目标检测

在恶劣条件下的目标检测对于机器人的鲁棒感知至关重要,因此出现了一些针对恶劣条件的鲁棒目标检测模型。有些研究人员通过无监督领域自适应将检测器从源域迁移到目标域,以适应恶劣环境。刘等人提出了IA-YOLO,它通过自适应地增强每个图像来提高检测性能。他们使用了一个可微分图像处理(DIP)模块来适应恶劣天气,并使用一个小型卷积神经网络(CNN-PP)来调整DIP的参数。在IA-YOLO的基础上,Kalwar等人提出了GDIP-YOLO。GDIP提出了一个门控机制,允许多个DIP并行操作。Qin等人提出了检测驱动的增强网络(DENet),用于恶劣天气条件下的目标检测。Cui等人提出了用于暗光条件下的多任务自动编码转换(MAET),探索了光照转换背后的潜在空间。

3、本文方法

在这里插入图片描述
暗图像由于暗光干扰导致能见度较差,这影响了检测器的性能。为了解决这个问题,作者提出了金字塔增强网络(PENet)并联合YOLOv3构建了一个暗物体检测框架PE-YOLO。PE-YOLO框架的概览如图2所示。

3.1 PE-YOLO概述

PENet通过拉普拉斯金字塔将图像分解成不同分辨率的组件。在PENet中,作者通过提出的细节处理模块(DPM)和低频增强滤波器(LEF)来增强每个尺度的组件。

假设图像 I ∈ R h × w × 3 I\in R^{h\times w\times3} IRh×w×3作为输入,作者使用高斯金字塔获取不同分辨率的子图像。 G ( x ) = D o w n ( G a u s s i a n ( x ) ) G(x)=Down(Gaussian(x)) G(x)=Down(Gaussian(x))其中Down表示下采样,Gaussian表示高斯滤波器,高斯核的大小为5×5。在每个高斯金字塔操作后,图像的宽度和高度减半,这意味着分辨率是原始图像的1/4。显然,高斯金字塔的下采样操作是不可逆的。为了在上采样后恢复原始的高分辨率图像,需要恢复丢失的信息,这些丢失的信息构成了拉普拉斯金字塔的组件。拉普拉斯金字塔的定义如下: L i = G i − U p ( G i + 1 ) L_{i}=G_{i}-Up(G_{i+1}) Li=GiUp(Gi+1)其中 L i L_{i} Li,表示拉普拉斯金字塔的第i层, G i G_{i} Gi表示高斯金字塔的第i层,Up表示双线性上采样操作。在重建图像时,作者只需要执行公式(2)的逆操作,即可恢复高分辨率图像。
在这里插入图片描述
作者通过拉普拉斯金字塔获得了不同尺度的4个组件,如图3所示。作者发现拉普拉斯金字塔从底部到顶部更关注全局信息,而从顶部到底部更关注局部细节。它们都是在图像下采样过程中丢失的信息,也是作者PENet增强的目标。作者通过细节处理模块(DPM)和低频增强滤波器(LEF)来增强这些组件,DPM和LEF的操作是并行的。

作者将在下一节中介绍DPM和LEF。通过分解和重建拉普拉斯金字塔,PENet可以变得轻量且有效,这有助于提高PE-YOLO的性能。

3.2 细节信息增强

作者提出了一个细节处理模块(DPM)来增强拉普拉斯金字塔中的组件,它由上下文分支和边缘分支组成。
在这里插入图片描述
DPM的详细信息如图4所示。上下文分支通过捕捉远程依赖性来获取上下文信息,并全局增强组件。边缘分支使用两个不同方向的Sobel算子来计算图像梯度,获取边缘并增强组件的纹理。

3.2.1 上下文分支

作者使用残差块来在获取远程依赖性之前和之后处理特征,并且残差学习允许丰富的低频信息通过跳过连接进行传递。第一个残差块将特征的通道从3变为32,第二个残差块将特征的通道从32变为3。捕捉场景中的全局信息已被证明对于低级别的视觉任务(如暗光增强)是有益的。

上下文分支的结构如图4所示,其定义如下: C B ( x ) = x + γ ( F 1 ( x ^ ) ) CB(x)=x+\gamma(F_1(\hat{x})) CB(x)=x+γ(F1(x^))在上述公式中, x ^ \hat{x} x^表示上下文分支的输出, F F F是带有3×3卷积核的卷积层,γ是Leaky ReLU激活函数,σ是Softmax函数。

3.2.2 Edge branch

S o b e l Sobel Sobel算子是一种离散算子,它同时使用了高斯滤波和差分求导。它通过计算梯度近似来找到边缘。作者在水平和垂直方向上都使用 S o b e l Sobel Sobel算子来通过卷积滤波器重新提取边缘信息,并使用残差来增强信息的流动。该过程表示为: E B ( x ) = F 3 ( S o b e l h ( x ) + S o b e l w ( x ) ) + x EB(x)=F_3(Sobel_h(x)+Sobel_w(x))+x EB(x)=F3(Sobelh(x)+Sobelw(x))+x在上述公式中, S o b e l h ( x ) Sobel_h(x) Sobelh(x) S o b e l w ( x ) Sobel_w(x) Sobelw(x)分别代表垂直和水平方向上的 S o b e l Sobel Sobel操作。这两个操作分别应用于输入特征,以计算垂直和水平方向上的梯度近似,从而提取图像中的边缘信息。在DPM中,作者使用这两个Sobel操作来获取边缘信息,并将其与原始输入特征相加,以增强特征表示。

3.3 低频增强滤波器

在每个尺度的分量中,低频分量包含了图像中的大部分语义信息,它们是检测器预测的关键信息。为了丰富重建图像的语义信息,作者提出了低频增强滤波器(LEF)来捕捉组成部分中的低频信息。LEF的细节如图5所示。
在这里插入图片描述
假设组成部分 f ∈ R h × w × 3 f\in R^{h\times w\times3} fRh×w×3,作者首先通过一个卷积层将其转换为 f ∈ R h × w × 3 f\in R^{h\times w\times3} fRh×w×3。作者使用动态低通滤波器来捕捉低频信息,并且使用平均池化进行特征滤波,只允许低于截止频率的信息通过。

不同语义的低频阈值是不同的。考虑到Inception的多尺度结构,作者使用大小为 1 × 1 1×1 1×1 2 × 2 2×2 2×2 3 × 3 3×3 3×3 6 × 6 6×6 6×6的自适应平均池化,并在每个尺度末尾使用上采样来恢复特征的原始大小。不同卷积核大小的平均池化形成了低通滤波器。作者通过通道分离将f划分为4个部分,即 { f 1 , f 2 , f 3 , f 4 } \{f_{1},f_{2},f_{3},f_{4}\} {f1,f2,f3,f4}。每个部分使用不同大小的池化进行处理,具体描述如下: F i l t e r ( f i ) = U p ( β s ( f i ) ) Filter(f_i)=Up(\beta_s(f_i)) Filter(fi)=Up(βs(fi))其中 f i f_i fi f f f在通道上划分的部分, U p Up Up是双线性插值采样, β s \beta_s βs是不同大小 s × s s×s s×s的自适应平均池化。最后,在张量拼接每个 { f i , i = 1 , 2 , 3 , 4 } \{f_{i},i=1,2,3,4\} {fi,i=1,2,3,4}后,作者将它们恢复为 f ∈ R h × w × 3 f\in R^{h\times w\times3} fRh×w×3

4、实验

4.1 实验结果

为了验证PE-YOLO的有效性,作者在ExDark数据集上进行了许多实验。首先,作者将PE-YOLO与其他暗光增强模型进行比较。由于暗光增强模型缺乏检测能力,作者将使用与PE-YOLO相同的检测器对所有增强后的图像进行实验。

作者将mAP的IoU阈值设置为0.5,并且性能比较结果如表1所示。作者发现直接在YOLOv3之前使用暗光增强模型并没有显著提高检测性能。作者的PE-YOLO在mAP上比MBLLEN和Zero-DCE分别高出1.2%和1.1%,取得了最佳结果。
在这里插入图片描述

作者将不同暗光增强模型的检测结果进行了可视化,如图6所示。作者发现虽然MBLLEN和Zero DCE可以显著提高图像的亮度,但它们也会放大图像中的噪声。PE-YOLO主要捕捉暗光图像中目标的潜在信息,同时抑制高频组件中的噪声,因此PE-YOLO具有更好的检测性能。
在这里插入图片描述

作者将PE-YOLO与其他暗光检测器进行了性能比较,如表2所示。此外,作者还可视化了暗光检测器和PE-YOLO的检测结果,如图7所示,清楚地展示了PE-YOLO在目标检测方面更准确。与使用LOL数据集进行预训练的DENet和IAT-YOLO相比,PE-YOLO在mAP上高出0.7%和0.2%,而且作者的PE-YOLO在FPS上几乎是最高的。以上数据表明,PE-YOLO更适用于在暗光条件下检测物体。
在这里插入图片描述
在这里插入图片描述

4.2 消融实验

在这里插入图片描述
为了分析PE-YOLO中每个组件的有效性,作者进行了消融研究,结果如表3所示。在采用上下文分支后,PE-YOLO的mAP从76.4%增加到77.0%,表明捕捉远程依赖关系对于增强有效。在采用边缘分支后,mAP从77.0%增加到77.6%,表明边缘分支可以增强组件的纹理,并增强增强图像的细节。在采用LEF后,mAP从77.6%增加到78.0%,表明捕捉低频分量有助于获得图像中的潜在信息。

最后,作者的模型在mAP上从76.4%提高到78.0%,仅降低了0.4个FPS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/49189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux中的ldd命令使用方法总结

ldd(List Dynamic Dependencies)命令是Linux系统中的一个工具 它用于打印出一个可执行文件所依赖的共享库文件(动态链接库) 当你运行ldd命令,并跟上一个可执行文件作为参数,它会列出该可执行文件所需要的…

【Spring】Spring 总览

一、简单介绍一下 Spring Spring是一个全面的、企业应用开发的一站式解决方案,贯穿表现层、业务层、持久层,可以轻松和其他框架整合,具有轻量级、控制反转、面向切面、容器等特征。 轻量级 : 空间开销和时间开销都很轻量 控制反…

栈和队列第二弹,完结篇

💛1.队列的基本底层实现 public class MyQueue {int array[];int usedsize0;public MyQueue(){this.arraynew int [5];} 💙2.判断是否满,满了需要扩容 Arrays.copyOf(数组,数组的长度);我常常会忘记哈…

Java版本企业工程项目管理系统平台源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…

Safari 查看 http 请求

文章目录 1、开启 Safari 开发菜单2、显示 JavaScript 控制台 1、开启 Safari 开发菜单 Safari 设置中,打开开发菜单选项 *** 选择完成后,Safari 的目录栏就会出现一个 开发 功能。 2、显示 JavaScript 控制台 开启页面后,在开发中选中 显…

掌握Python的X篇_10+11_if分支语句、else语句、elif语句

文章目录 1. if关键字及语法2. 语句块的概念3. else语句4. elif语句 1. if关键字及语法 基本语法如下: if 条件表达式:条件为True时,要执行的语句举例: number int(input("Input an number")) if number > 5 :print("这…

F12 浏览器调试模式页面刷新 network 日志刷新消失的解决办法

每次请求刷新后都把之前的请求记录刷新掉了,把preserve log勾选上后,所有的请求都会保留,再也不怕抓不到记录了。

SpringBoot项目部署在Windows与Centos上

文章目录 Windows部署一、github上下载文件winsw二、文件目录三、编辑xml文件四、安装服务五、启动服务六、把jar包放到项目外面七、添加限制内存 Linux部署一、准备二、服务三、操作 Windows部署 windows部署服务借鉴于此篇博文 一、github上下载文件winsw 点击链接下载下图…

windows切换php版本以及composer

前提 安装php8.2 安装Php7.4 下载 nts是非线程安全的,这里选择线程安全的,选择64位 解压缩 修改系统环境变量 修改为php-7的 cmd中输入php -v查看 找到composer存放路径C:\ProgramData\ComposerSetup\bin 将三个文件复制到php目录下 重启电脑…

【云原生】Docker容器命令监控+Prometheus监控平台

目录 1.常用命令监控 docker ps docker top docker stats 2.weave scope 1.下载 2.安装 3.访问查询即可 3.Prometheus监控平台 1.部署数据收集器cadvisor 2.部署Prometheus 3.部署可视化平台Gragana 4.进入后台控制台 1.常用命令监控 docker ps [rootlocalhost ~…

GitHub Copilot:让开发编程变得像说话一样简单

引用: 人类天生就梦想、创造、创新。但今天,我们花太多时间被繁重的工作所消耗,花在消耗我们时间、创造力和精力的任务上。为了重新连接我们工作的灵魂,我们不仅需要一种更好的方式来做同样的事情,更需要一种全新的工…

Linux下CMake开发

CMake编译和运行C文件 编写CMakeLists.txt # 声明要求的 cmake 最低版本 cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程 project( pro )# 设置编译模式 set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库 #指定OpenCV版本,代码如下 #find…

笔记20230727

1. http2.0,概念就不说了,查看是否使用:network调试,查看请求的header-view source,可以查看http版本;后端,如nginx,配置,http2表示开启。后端开启、浏览器支持&#xff…

PHP8的注释-PHP8知识详解

欢迎你来到PHP服务网,学习《PHP8知识详解》系列教程,本文学习的是《PHP8的注释》。 什么是注释? 注释是在程序代码中添加的文本,用于解释和说明代码的功能、逻辑或其他相关信息。注释通常不会被编译器或解释器处理,而…

《TCP IP网络编程》第十一章

第 11 章 进程间通信 11.1 进程间通信的基本概念 通过管道实现进程间通信: 进程间通信,意味着两个不同的进程中可以交换数据。下图是基于管道(PIPE)的进程间通信的模型: 可以看出,为了完成进程间通信&…

Redis 笔记,基本数据类型、持久化、主从、集群等等问题

标题 😀😀😀创作不易,各位看官点赞收藏. 文章目录 标题Redis 基础笔记1、安装及环境搭建2、Redis 数据类型2.1、String2.2、List2.3、Hash2.4、Set2.5、Zset2.6、BitMap2.7、HyperLogLog2.8、Geospatial2.9、Stream 3、Redis 持久…

C++之普通函数指针/类成员函数指针/lambda回调函数总结(一百六十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Go 语言入门指南:基础语法和常用特性解析

文章目录 Hello,World变量、指针及赋值变量和常量指针赋值 选择和循环选择循环 基本数据类型整型整型的取值范围 运算符二元运算符一元运算符 浮点型复数和布尔类型 字符串runeUnicode和UTF-8按字节访问按字符rune访问特点 数组数组的定义1. 使用默认初始值2. 定义并初始化3. 省…

13.4.2 【Linux】sudo

相对于 su 需要了解新切换的使用者密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可。sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够…

Verilog语法学习——LV1_四选一多路器

LV1_四选一多路器 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换:…