1.像超分——Real-ESRGAN快速上手
2.模糊测试工具 AFL的模糊码模原理与实践
3.如何写出模糊查询的代码
像超分——Real-ESRGAN快速上手
每个自媒体从业者可能都遇到过素材模糊的问题。如何进行高清修复?这便是图源计算机视觉领域图像超分研究的问题。
在专业课上,糊图我尝试复现了图像超分领域的像处两个经典算法SRCNN和FSRCNN,但效果并不理想。理软具体内容可参考我之前的模糊码模图灵源码中心博文:zstar.blog.csdn.net/art...
最近,我在ICCV上看到了Real-ESRGAN这篇关于图像超分的图源论文。
论文标题:Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data
论文链接:arxiv.org/abs/....
该论文由腾讯ARC实验室研究,糊图作者开源了算法代码。像处仓库地址:github.com/xinntao/Real...
论文中的理软一张效果对比图显示,Real-ESRGAN的模糊码模效果相当惊艳。
首先,图源图像超分不是糊图我的主要研究方向,以下以一个“外行人”的像处视角简单理解Real-ESRGAN算法原理。
Real-ESRGAN是理软对ESRGAN算法的改进,发展脉络为:SRCNN->SRGAN->ESRGAN->Real-ESRGAN。
Real-ESRGAN采用GAN架构,先将高清作为数据集,通过涂污、题库系统+源码下采样、添加噪声、JPEG压缩生成低分辨率模糊,再输入生成器生成1倍、2倍和4倍高清放大的,最后与真实高清混合,输入判别器进行判别。
相较于ESRGAN,Real-ESRGAN主要有三点创新:
论文最后提到该算法有以下三点局限:
更多详细的模型构建、算法处理细节请阅读原论文。
作者为了方便使用,直接打包了一个exe程序,无需配置环境即可直接使用。
作者提供了五种模型,使用时只需在命令行中选择相应命令输入。
作者还提供了Linux和Mac脚本,如有需要可去仓库中下载。
若要在Real-ESRGAN上进行研究,kppw3.2+源码需clone源代码并安装pytorch环境,以及basicsr、facexlib、gfpgan三个库。
安装好后,需将训练好的模型权重放到指定位置。
以下为两个主函数示例:
以下为使用anime模型修复动漫图像和真人照片的实践效果。
修复后的动漫图像头发棱角清晰可见,真人照片修复效果显著,但脸部修复不够清晰。
总体来看,Real-ESRGAN在二次元修复方面表现较好,三次元照片修复效果一般。
模糊测试工具 AFL的原理与实践
在软件开发领域,确保质量和安全是关键。模糊测试作为高效自动化测试策略,专门用于检测程序中的错误和安全漏洞。本文旨在详细介绍AFL(American Fuzzy Lop)的机构流入指标源码基本原理和实践方法。
模糊测试原理介绍
AFL是一种通过输入异常或随机数据来自动化发现程序错误的测试方法。它利用遗传算法不断生成测试用例,并通过动态插桩技术监控程序行为,尤其关注代码覆盖情况。当新输入引发新代码路径时,该输入会被保存以进一步测试。这一循环不断优化测试用例,探索更多程序状态。
AFL流程图展示了从准备测试用例到监控程序行为的核心步骤,突出其动态性和迭代性。
AFL采用fork运行模式,这使得程序崩溃时,测试进程不会终止,相较于LibFuzzer更具有优势。然而,频繁的fork操作也意味着效率不如LibFuzzer。
AFL安装与运行
AFL主要针对UNIX-like系统,尤其在Linux上表现最佳。多商铺app源码Windows用户可通过winafl进行模糊测试,支持多种CPU架构,其中对x和x架构支持最好。若需ARM架构支持,则需使用QEMU模式。
安装步骤包括源码编译,使用afl-fuzz命令启动测试,命令格式如下:
命令中的/path/to/program替换为目标程序路径,[options]为程序运行选项或参数。若测试程序需从文件读取输入,可使用@@占位符。AFL将根据测试需求替换此占位符。
AFL使用示例
下面是一个简单示例,演示如何使用AFL进行模糊测试。目标程序实现四则运算,使用不安全的gets函数可能导致缓冲区溢出。
首先,对源码进行AFL编译,添加代码覆盖插桩。接着,准备初始语料库作为测试起点,无论输入是文件还是stdin,AFL都需要初始数据。在运行AFL前设置系统核心转储文件命名规则,便于检测程序崩溃情况。运行测试时,根据程序输入来源选择是否使用@@占位符。
运行后,AFL界面显示测试结果,包括找到的崩溃和覆盖率信息。结果通过pythia工具分析。输出目录结构清晰,便于后续分析。
AFL的QEMU模式
对于已编译的二进制文件,AFL可通过QEMU模式进行模糊测试,无需源码。QEMU模式使用用户模式仿真运行二进制文件,支持对闭源应用的模糊测试。
QEMU模式安装与使用步骤包括编译QEMU支持和执行AFL-fuzz命令时添加-Q参数。
AFL++升级版
AFL++作为AFL的增强版,改进了调度策略和变异算法,新增CMPLOG和持久化等特性,提高代码覆盖率和测试效率。
CMPLOG功能记录比较操作参数,帮助理解输入逻辑,提高路径覆盖。持久化模式允许程序在单个进程周期内多次执行测试用例,减少启动成本,加快测试速度。
总结
AFL是一款功能强大的模糊测试工具,适用于多种架构和系统环境。尽管存在覆盖率瓶颈,但结合其他技术如符号执行,可有效突破限制,提升测试能力。
如何写出模糊查询的代码
源代码(也称源程序),是指一系列人类可读的计算机语言指令。
代码
源代码是相对目标代码和可执行代码而言的。 源代码就是用汇编语言和高级语言写出来的地代码。目标代码是指源代码经过编译程序产生的能被cpu直接识别二进制代码。可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
作用
源代码主要功用有如下2种作用:
生成目标代码,即计算机可以识别的代码。
对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。
需要指出的是,源代码的修改不能改变已经生成的目标代码。如果需要目标代码做出相应的修改,必须重新编译。
代码组合
源代码作为软件的特殊部分,可能被包含在一个或多个文件中。一个程序不必用同一种格式的源代码书写。例如,一个程序如果有C语言库的支持,那么就可以用C语言;而另一部分为了达到比较高的运行效率,则可以用汇编语言编写。
较为复杂的软件,一 般需要数十种甚至上百种的源代码的参与。为了降低种复杂度,必须引入一种可以描述各个源代码之间联系,并且如 何正确编译的系统。在这样的背景下,修订控制系统(RCS)诞生了,并成为研发者对代码修订的必备工具之一。
还有另外一种组合:源代码的编写和编译分 别在 不同的平台上实现,专业术语叫做软件移植。
2024-12-24 11:12
2024-12-24 11:11
2024-12-24 11:10
2024-12-24 10:09
2024-12-24 09:52
2024-12-24 09:42
2024-12-24 09:34
2024-12-24 09:16