【论文阅读】Real-ESRGAN
学习资料
- 论文题目:Real-ESRGAN:使用纯合成数据训练真实世界的盲超分辨率(Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data)
- 论文地址:IEEE Xplore 全文 PDF:
- 代码:xinntao/Real-ESRGAN: Real-ESRGAN 旨在开发用于通用图像/视频恢复的实用算法。
1. WHY
为什么研究这个?现在的模型有什么局限?
方法中的图片的退化过程不足以模拟现实中的复杂退化情况。
1.1. 双三次下采样
GAN被用作损失监督→解决方案更接近自然流形
GAN被用作损失监督:在 SR 领域,GAN 用作损失监督时,通过定义 GAN 损失函数,生成器为最小化该损失,生成更逼真高分辨率图像,使判别器难区分。当生成图像能 “骗” 过判别器,就表明其在视觉特征上与真实图像相似,接近 “自然流形”,从而提升质量与逼真度。如 ESRGAN 等模型利用此方式,借 GAN 损失监督生成器训练,推动生成图像接近真实高分辨率图像,获得更好视觉效果,助于推动领域发展。
自然流形:生成的高分辨率图像在特征等方面更符合自然图像的分布特点。
超分辨率重构传统方法:假设图像是经过理想的双三次下采样得到LR图像。
盲超分辨率(属于超分辨率重构的一种特殊情况):现实中很多时候是不知道图像经历了何种退化过程,退化可能是由多种未知因素造成的,如相机的各种复杂成像问题(包括不同类型的模糊、噪声等)、多次图像编辑(可能包含不同程度的压缩、锐化等操作)以及在互联网传输过程中的变化等,所以有了盲超分辨率问题。
1.2. 显式建模
显式建模旨在明确地描述图像退化过程,通常包含退化预测和条件恢复两个主要部分。(既可以像部分研究中那样分开执行操作,也可以联合(迭代)进行。)
它试图通过预先定义好的规则和模型来表示图像从高分辨率到低分辨率的变化过程,例如明确规定模糊的类型(如高斯模糊、运动模糊等)、噪声的分布(如高斯噪声、椒盐噪声等)以及下采样的方式(如双三次下采样等)。
这类方法的一个显著问题是,它们高度依赖于预先设定的退化表示形式,往往只考虑相对简单的合成退化情况,与现实世界中复杂多样且未知的图像退化情况存在较大差距。
1.3. 隐式建模
隐式建模不直接对图像的退化过程进行明确的数学建模,而是尝试通过数据分布学习的方式来获取退化模型。它利用生成对抗网络(GAN)等技术,让模型从大量的数据中自动学习到图像在不同退化情况下的特征和变化规律,从而在没有明确规定退化过程的情况下,能够根据输入的低分辨率图像生成与之对应的高分辨率图像。
由于其能力主要取决于训练数据集的多样性和丰富程度,对于训练数据集中未包含的退化类型或程度(即分布外图像),模型的泛化能力较差,难以有效地处理这些未曾见过的复杂退化情况。
2. WHAT
2.1. 退化模型改进
改进经典退化模型(Classical Degradation Model)为高阶退化模型(High - order Degradation Model)。
经典退化模型
首先,我们要知道盲超分辨率就是把低分辨率图像变清晰。经典退化模型是用来制造低分辨率图像的方法。怎么做呢?
- 先让真实的高分辨率图像
变得模糊(通过和模糊核
做卷积)
- 然后把图像变小(执行尺度因子为
的下采样操作)
- 接着给图像添加噪声
- 最后,由于JPEG 压缩在现实世界图像中被广泛使用,对图片进行JPEG压缩
,其中
表示退化过程。
经典的退化模型在合成训练数据时,虽然能够处理一些简单的真实样本,但对于现实世界中复杂的退化情况,尤其是那些未知的噪声和复杂的伪影,其处理能力有限。这是因为经典模型仅包含固定数量和类型的基本退化操作,无法准确模拟真实图像经历的复杂退化过程,导致合成的低分辨率图像与实际的退化图像存在较大差异。
图3:使用经典降解模型的合成数据训练的模型能够解决一些真实样本(左)。然而,对于复杂的真实世界图像,它们会放大噪声或引入振铃伪影(右)。放大以获得最佳视图
高阶退化模型
高阶退化模型将经典的 “一阶” 退化模型扩展为 “高阶”。具体而言,n 阶退化模型通过 n 个重复的退化过程来建模。每个退化过程都采用经典的退化模型(即先卷积模糊、再调整大小、添加噪声、最后进行 JPEG 压缩),但每个过程中的超参数(如模糊核的参数、噪声强度等)是不同的。这样可以模拟出更复杂多样的退化情况。例如,一个二阶退化模型在处理图像时,会先进行一次经典退化过程,得到一个中间的低分辨率图像,然后再对这个中间图像进行一次不同参数设置的经典退化过程,最终得到的低分辨率图像更接近真实世界中经过多次复杂退化后的图像。
为了在模拟复杂退化的同时保持图像分辨率在合理范围,模型用随机调整大小操作替代了经典模型中的下采样操作。在实际应用中,经验上发现二阶退化过程在简单性和有效性之间取得了较好的平衡,能够解决大多数真实世界中的退化情况,所以论文中多采用二阶退化过程来进行实验和研究。不过需要注意的是,这种高阶退化模型虽然能够扩展可解决的退化边界,但仍然不能完全覆盖现实世界中的所有退化情况,只是相对于经典模型有了较大的改进。
图2:Real-ESRGAN采用的纯合成数据生成概述。它采用二阶退化过程来建模更实用的退化过程,其中每个退化过程采用经典的退化模型。详细列出了模糊、缩放、噪声和JPEG压缩的选择。我们还使用sinc滤波器合成常见的振铃和过冲失真。
高阶退化模型+sinc 滤波器
在现实中,很多常见的图像处理操作都可能使图片丢失了高频部分的信息,从而产生响铃伪影和过冲伪影。比如使用锐化算法过度增强图像边缘时,就容易产生过冲伪影,进而引发响铃伪影;JPEG 压缩过程中,由于对图像数据的处理方式,也可能导致这些伪影的出现。
响铃伪影在图像上的表现是在一些原本应该平滑过渡或者有清晰边缘的地方,出现了一圈一圈类似水波荡漾(像响铃产生的声波扩散形状)的纹路,就好像在图像边缘产生了多余的、不真实的纹理,使图像看起来模糊不清且不自然。
过冲伪影通常和响铃伪影一起出现,主要特征是在图像边缘处,颜色或亮度的变化比正常情况更加剧烈,出现突然的跳跃,让边缘看起来很生硬、不真实。
为了在模型训练中更好地应对这些伪影,文中采用了 来模拟它们。sinc 滤波器是一种特殊的滤波器,它能够模拟出信号高频截断的效果,从而产生类似于响铃和过冲伪影的现象。
其核函数的计算公式为
这里代表滤波器核的坐标位置;
是一个控制截止频率的参数;
是第一类一阶贝塞尔函数。通过调整截止频率
等参数,可以生成不同程度和样式的类似伪影效果。
在实际应用中,将 sinc 滤波器应用在两个关键的步骤:一是在图像进行模糊处理的时候这样可以让模糊效果更接近真实世界中可能出现伪影的模糊情况;二是在整个图像合成的最后一步,通过这种方式可以让合成的图像包含伪影特征,使训练数据更贴近真实的退化图像。
而且,最后一个 sinc 滤波器和 JPEG 压缩的顺序是随机交换的,这是因为在实际的图像退化过程中,可能先进行了一些操作产生了伪影然后进行 JPEG 压缩,也可能是先压缩后因为其他操作产生伪影,这样随机交换顺序可以更全面地覆盖各种可能的退化情况,让模型在训练过程中能够见识到更多不同类型的带有伪影的图像,从而提高模型对真实世界中存在响铃和过冲伪影图像的处理能力,使得最终恢复的图像在视觉效果上更加真实、自然,减少伪影带来的不良影响。
图 5:上方:存在振铃和过冲伪影的真实样本。下方:sinc 核(核大小为 21)的示例以及相应的滤波后图像。放大查看效果最佳。
2.2. 网络改进
生成器
在我们的方法中,采用了与 ESRGAN 相同的生成器结构。这个生成器是一个深度网络,其中包含多个残差密集块(RRDB)。这些 RRDB 在网络中起着关键作用,它们有助于更好地提取和融合图像特征。
为了能够处理不同的缩放因子,对原 ESRGAN 架构进行了扩展。具体而言,通过一种叫做像素逆混洗(pixel - shuffle)的操作来调整图像的空间大小和通道数量。这种操作可以在减少图像空间大小的同时增加通道大小,从而有效降低计算资源的消耗。这使得生成器在处理不同分辨率变化的盲超分辨率任务时更具灵活性和效率。
图4:Real-ESRGAN采用与ESRGAN相同的生成器网络。对于×2和×1的缩放因子,它首先采用像素反混洗操作来减少空间大小并将信息重新排列到通道维度。
判别器
U - Net 判别器:Real - ESRGAN 针对更复杂的退化情况改进了判别器。将原来的 VGG 风格判别器改为 U - Net 设计,并且在 U - Net 中加入了跳跃连接(skip - connections)。这种设计使得判别器能够为图像的每个像素输出一个表示其真实度的值。这与传统判别器相比有很大优势,因为它可以提供更详细、更局部化的反馈信息。例如,对于图像中的某个局部区域,如果它存在一些细微的伪影或者与真实高分辨率图像有差异,U - Net 判别器能够更精准地检测出来,从而更好地指导生成器的训练。
谱归一化(SN):同时,在判别器中采用了谱归一化技术。在生成对抗网络(GAN)的训练过程中,很容易出现训练不稳定的情况,进而导致生成的图像出现伪影等问题。谱归一化作为一种正则化方法,可以有效地稳定训练动态过程。它通过对判别器的权重矩阵进行归一化操作,限制了判别器的 Lipschitz 常数,使得训练过程更加平稳。这样可以在一定程度上缓解 GAN 训练过程中引入的伪影问题,实现局部细节增强与伪影抑制之间的平衡,提高生成图像的质量。
图6:带有谱归一化的U-Net判别器架构。
2.3. 训练策略改进
训练过程分为两个阶段。
首先,训练一个以峰值信噪比(PSNR)为导向的 Real - ESRNet 模型。在这个阶段,主要使用 L1 损失函数来衡量生成图像与真实高分辨率图像之间的差异。这种基于 L1 损失的训练方式可以使生成器初步学习到如何生成相对清晰、与目标图像在像素值上较为接近的高分辨率图像。
然后,利用训练好的 Real - ESRNet 模型来初始化生成器,开始训练 Real - ESRGAN。在这个阶段,训练过程结合了多种损失函数,包括 L1 损失、感知损失(perceptual loss)和 GAN 损失,权重分别为。通过综合使用这些损失函数,可以让生成器在多个维度上优化生成的图像。例如,L1 损失继续保证图像的像素级相似性,感知损失关注图像的语义特征相似性,使生成图像在高层次特征上更接近真实图像,而 GAN 损失则从对抗训练的角度,促使生成器生成的图像能够 “骗过” 判别器,即生成更逼真的高分辨率图像。
2.4. 实验
训练集:DIV2K、Flickr2K、OutdoorSceneTraining 数据集
测试集:Set5、Set14、BSD100、Urban100 数据集
训练参数:训练的高分辨率补丁大小设置为 ;
使用四个 NVIDIA V100 GPU,总批量大小为;
采用 Adam 优化器;
Real - ESRNet 从 ESR - 进行微调,GAN 用于更快的收敛;
Real - ESRNet 训练 次迭代,学习率为
Real - ESRGAN 训练 次迭代,学习率为
;
采用指数移动平均(EMA)以获得更稳定的训练和更好的性能。
降级细节:采用二阶降级模型,两种降级过程大多设置相同。使用高斯核、广义高斯核和平台型核,概率分别为 {0.7,0.15,0.15};模糊核大小随机选自 {7,9,...21};模糊标准差 σ 从 [0.2,3] 中抽样(第二降级过程为 [0.2,1.5]);形状参数从 [0.5,4] 和广义高斯及平台型核的 [1,2] 中抽样;还有概率为 0.1 的 sin 核;以 0.2 的概率跳过第二次模糊降级。使用高斯噪声和泊松噪声,概率为 {0.5,0.5};噪声 sigma 范围和泊松噪声尺度分别为 [1,30] 和 [0.05,3](第二降级过程为 [1,25] 和 [0.05,2.5]);灰噪声概率为 0.4。JPEG 压缩质量因子在 [30,95]。最终的 sinc 滤波器以 0.8 的概率应用。
评估指标:峰值信噪比(PSNR)、结构相似性(SSIM)、感知指数(LPIPS)
对比模型:Bicubic、SRCNN、VDSR、EDSR、RCAN
训练对配对池:为提高训练效率,在 PyTorch 中实现退化过程并使用 CUDA 加速实时合成训练对,但批处理限制了退化多样性,所以采用训练对池增加多样性,池大小设为 180,每次迭代从池中随机选样本形成训练批次。
训练过程中的锐化:在训练过程中锐化真实图像,将使用锐化真实图像训练的模型称为 Real - ESRGAN +,该方法能在提升视觉清晰度的同时避免引入明显伪影。
3. HOW
图 1:双三次上采样、ESRGAN [48]、RealSR [18] 和我们的 Real - ESRGAN 在现实生活图像上的结果比较。用纯合成数据训练的 Real - ESRGAN 模型能够在增强细节的同时去除常见真实世界图像中恼人的伪影。
3.1. 与先前工作比较
在多个真实世界图像的测试数据集上进行测试,与 ESRGAN、DAN、CDC、RealSR 和 BSRGAN 等先进方法比较,Real - ESRGAN 在去除伪影和恢复纹理细节方面表现更优。例如,在处理包含过度产生伪影(如字母周围白色边缘)的样本时,Real - ESRGAN 能通过模拟相关伪影有效去除;对于包含未知复杂降解的样本,Real - ESRGAN 也能更好地处理,并且能够恢复更真实的纹理,而其他方法存在无法去除退化或添加不自然纹理的问题。Real - ESRGAN +(使用锐化真实数据训练)进一步提高了视觉清晰度。
3.2. 消融研究
二阶退化模型:在 Real - ESRNet 上进行,用经典退化模型替换二阶退化模型。结果显示使用经典一阶退化模型训练的模型无法有效去除某些样本(如墙壁噪声、小麦田模糊)中的问题,而 Real - ESRNet 可以。
sinc 滤波器:训练过程中不使用 sinc 滤波器,恢复结果会放大输入图像中的振铃和过冲伪影(尤其在文本和线条周围),使用 sinc 滤波器训练的模型可去除这些伪影。
带有 SN 正则化的 U - Net 鉴别器:先采用 ESRGAN 设置(VGG 风格鉴别器及其损失权重),模型无法恢复细节纹理(如砖块、灌木)且在灌木树枝上产生伪影;使用 U - Net 设计改善了局部细节,但引入不自然纹理且增加训练不稳定性;SN 正则化可改善恢复纹理并稳定训练动态。
更复杂的模糊核:在模糊合成中去除广义高斯核和平坦形状的核,在一些真实样本上,模型去除模糊和恢复清晰边缘的能力下降,但在大多数样本中差异不显著,不过 Real - ESRGAN 仍采用这些更复杂的模糊核以获取稍好性能。
3.3. 模型局限性
尽管 Real - ESRGAN 在恢复真实世界图像方面表现较好,但仍存在局限性:
部分恢复图像(尤其是建筑和室内场景)因混叠问题出现扭曲线条;
GAN 训练在某些样本上引入不愉快伪影;
无法去除真实世界中分布外的复杂退化,甚至可能放大这些伪影,这些问题在实际应用中仍需解决。
相关文章:

【论文阅读】Real-ESRGAN
学习资料 论文题目:Real-ESRGAN:使用纯合成数据训练真实世界的盲超分辨率(Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data)论文地址:IEEE Xplore 全文 PDF:代码&#…...

安达发|零部件APS车间排程系统销售预测的优点
2024制造业面临着前所未有的挑战与机遇。为了保持竞争力,企业必须确保其生产系统能够高效、灵活地运作。在这方面,采用高级计划与排程系统,特别是零部件APS车间排程系统的预测方法,已成为提升生产效率和响应能力的关键策略。这种系…...
Android 同花顺面经
Android 同花顺面经 文章目录 Android 同花顺面经一面 一面 Android组件化搭建使用接口层路由有什么缺点? 如果更改接口的话,其他的依赖的moudle都得改 说说kotlin和java的区别? Java是支持面向对象的编程,Kotlin是支持面向对象支…...
搜维尔科技:Manus数据手套在水下捕捉精确的手指动作, 可以在有水的条件下使用
Manus数据手套在水下捕捉精确的手指动作, 可以在有水的条件下使用 搜维尔科技:Manus数据手套在水下捕捉精确的手指动作, 可以在有水的条件下使用...

网络:IP分片和组装
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言16位标识,3位标志,13位片偏移分片组装总结 前言 对于IP分片和组装的总结 当一个IP数据报的大小超过网络的MTU(最…...
Oracle dblink创建使用
1、首先要有创建Database Link 的权限。可通过语句查看当前用户是否有权限: SELECT * FROM USER_SYS_PRIVS;如果没有权限,使用系统管理员用户登陆后给当前用户授权: GRANT CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK TO user;…...

Classic GNNs are Strong Baselines: Reassessing GNNs for Node Classification
Classic GNNs are Strong Baselines: Reassessing GNNs for Node Classification Neurips 24 推荐指数: #paper/⭐⭐⭐# 摘要 我们的研究结果表明,由于GNN中的超参数设置次优,之前报道的GT的优越性可能被夸大了。值得注意的是ÿ…...

Android 字节飞书面经
Android 字节飞书面经 文章目录 Android 字节飞书面经一面二面 一面 1. 线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 2. 根本区别:进程是操作系统资源分配的基本单位,…...

选择好友窗口(三)
选择好友窗口(三) 前言 在前两集我们就完成了整个左半部分的内容了,那么我们这一集开始就要完成我们的选择好友窗口的右侧部分。 需求分析 我们要做出的效果如下图 可以看到我们整个布局是一个网格的布局,当然也可以做成一个垂…...

【含文档】基于ssm+jsp的音乐播放系统(含源码+数据库+lw)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了两个…...

【C语言】动态内存开辟
写在前面 C语言中有不少开辟空间的办法,但是在堆上开辟的方法也就只有动态内存开辟,其访问特性与数组相似,但最大区别是数组是开辟在栈上,而动态内存开辟是开辟在堆上的。这篇笔记就让不才娓娓道来。 PS:本篇没有目录实在抱歉CSD…...

Redis缓存在thinkPHP/fastAdmin框架中的应用
Redis缓存在thinkPHP/fastAdmin框架中的应用 引言 在现代Web开发中,性能优化是一个永恒的话题。随着用户数量的增加和业务逻辑的复杂化,如何提高应用的响应速度和处理能力成为了开发者们必须面对的挑战。缓存技术作为提升性能的有效手段之一࿰…...

Ceisum无人机巡检视频投放
公司投标内容有个视频投放的功能动画,原本想实现这么一个效果: 案例效果来自别人的展示作品,Leader一眼就相中了这个效果,可惜别人的终究是别人的,又不会白白给你,终究是要自己动手尝试。 动画方面的展示…...

分享几款开源好用的图片在线编辑,适合做快速应用嵌入
图片生成器是指一种工具或软件,用于自动生成图片或图像内容,通常依据用户设定的参数或模板进行操作。这种工具能够帮助用户快速创建视觉效果丰富的图像,而无需具备专业的设计技能。 在数字化时代,图片编辑已经成为日常工作和生活的…...

闪存学习_1:Flash-Aware Computing from Jihong Kim
闪存学习_1:Flash-Aware Computing from Jihong Kim 前言一、Storage Media:NAND Flash Memory1、概念2、编程和擦除操作3、读操作4、异地更新操作(Out-Place Update)5、数据可靠性6、闪存控制器(SSD主控)7…...

如何将本地项目上传至Gitee仓库(详细教程)
前提条件 1、本地电脑安装Git客户端 2、本地已有项目 3、Gitee注册好了账户 如果没有安装Gitee 可以区菜鸟查看一下安装教程 Git教程https://www.runoob.com/git/git-tutorial.html 操作示例 前提条件已经准备好的情况下登录gitee 码云 https://gitee.com 点解右侧加号 新…...

redis详细教程(3.hash和set类型)
hash Redis中的Hash是一种数据结构,用于存储键值对集合。在Redis中,Hash非常适合表示对象,其中对象的每个字段都对应一个键值对。以下是关于Redis中Hash的详细讲解: 特点: 1. 键值对集合:Hash是一个包含…...

性能测试详解
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点…...
修改ruoyi的logo和标题
1、修改网页标签上的图标和标题 静态修改 标签页上的 图标 直接替换public/favicon.ico文件为你自己的图标文件 如果你的图标文件名不是favicon.ico,你还需要在public/index.html中相应地修改这一行,将/favicon.ico替换为你的图标文件路径。 静态修改…...
vue系列==vue3新语法
vue系列vue3新语法 1、setup组合式API入口函数 2、利用ref函数定义响应式数据 3、利用reactive函数定义响应式数据 1、setup组合式API入口函数 1、Vue3为组合式API提供了一个setup函数,所有组合式API函数都是在此函数中调用的,它是组合式API的使用入口…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...