PaddleRS:使用超分模块提高真实的低分辨率无人机影像的分割精度
本项目利用PaddleRS超分模块处理低分辨率无人机影像,再结合PaddleSeg训练的Segformer模型提升分割效果。先通过DRN模型超分重建低质影像,再与直接用低分辨率影像的分割结果对比。虽无标注数据计算指标,但人眼判别显示,超分后预测结果更优,尤其在细节呈现上更接近人工标注真值。

PaddleRS:使用超分模块提高真实的低分辨率无人机影像的分割精度
一、项目背景
前段时间写了个项目:PaddleSeg:使用Transfomer模型对航空遥感图像分割,项目利用PaddleSeg模块训练Transfomer类的语义分割模型,在UDD6数据集中mIOU达到74.50% ,原论文使用DeepLabV3+的mIOU为73.18%, 高1.32%,训练效果图如下,其中:车辆:红色;道路:浅蓝色;植被:深蓝色;建筑立面:亮绿色;建筑屋顶:紫色;其他:焦绿色In [10]%cd /home/aistudio/import matplotlib.pyplot as pltfrom PIL import Imageoutput = Image.open(r"work/example/Seg/UDD6_result/added_prediction/000161.JPG")plt.figure(figsize=(18,12))#设置窗口大小plt.imshow(output), plt.axis('off')登录后复制 /home/aistudio登录后复制登录后复制
(登录后复制, (-0.5, 4095.5, 2159.5, -0.5))
登录后复制 训练的结果很不错,所使用的UDD6数据是从北京、葫芦岛、沧州、郑州四个城市,使用大疆精灵四无人机在60m-100m高度之间采集。但是,在实际的生产过程中,城市、飞行的高度、图像的质量会发生变化采集飞行高度升高可以在相同时间内获取更大面积的数据,但分辨率会降低,对低质量的数据,直接使用先前训练的数据预测效果不理想,再标注数据、训练模型将是一个不小的工作量,解决的方法除了提升模型的泛化能力,也可以考虑使用图像超分对低质量的无人机图像重建,然后再进行预测本项目使用PaddleRS提供的无人机遥感图像超分模块,对真实的低质量无人机影像数据进行超分,然后再使用前段时间用UDD6训练的Segformer模型预测,与直接使用低分辨率模型对比。由于没有对低质量数据进行标注无法计算指标。但人眼判别,超分之后的预测结果更好,左边是人工标注的label,中间是低分辨率的预测结果,右边是超分辨率重建后的结果In [12]
img = Image.open(r"work/example/Seg/gt_result/data_05_2_14.webp")lq = Image.open(r"work/example/Seg/lq_result/added_prediction/data_05_2_14.webp")sr = Image.open(r"work/example/Seg/sr_result/added_prediction/data_05_2_14.webp")plt.figure(figsize=(18, 12))plt.subplot(1,3,1), plt.title('GT')plt.imshow(img), plt.axis('off')plt.subplot(1,3,2), plt.title('predict_LR')plt.imshow(lq), plt.axis('off')plt.subplot(1,3,3), plt.title('predict_SR')plt.imshow(sr), plt.axis('off')plt.show()登录后复制 登录后复制登录后复制
二、数据介绍与展示
使用的数据是使用大疆精灵四无人机在上海,飞行高度为300m采集的,采集的时候天气也一般,可以看后续的示例发现质量不高。由于只是展示超分重建后进行预测的效果,所以只是简单标注了其中5张照片,毕竟标注数据真的是一件很费力的事! 要是能用公开数据集训练的模型来预测自己的数据,这多是一件美事!部分标注数据展示如下In [15]add_lb = Image.open(r"work/example/Seg/gt_result/data_05_2_19.webp")lb = Image.open(r"work/example/Seg/gt_label/data_05_2_19.webp")img = Image.open(r"work/ValData/DJI300/data_05_2_19.webp")plt.figure(figsize=(18, 12))plt.subplot(1,3,1), plt.title('image')plt.imshow(img), plt.axis('off')plt.subplot(1,3,2), plt.title('label')plt.imshow(lb), plt.axis('off')plt.subplot(1,3,3), plt.title('add_label')plt.imshow(add_lb), plt.axis('off')plt.show()登录后复制 登录后复制登录后复制
三、无人机遥感图像超分
因为PaddleRS提供了预训练的超分模型,所以这步主要分为以下两个步骤:准备PaddleRS并设置好环境调用PaddleRS中的超分预测接口,对低分辨率无人机影像进行超分重建In [3]# 从github上克隆仓库!git clone https://github.com/PaddleCV-SIG/PaddleRS.git登录后复制
正克隆到 'PaddleRS'...remote: Enumerating objects: 2325, done.remote: Counting objects: 100% (2325/2325), done.remote: Compressing objects: 100% (1086/1086), done.remote: Total 2325 (delta 1233), reused 2245 (delta 1182), pack-reused 0接收对象中: 100% (2325/2325), 3.22 MiB | 2.49 MiB/s, 完成.处理 delta 中: 100% (1233/1233), 完成.检查连接... 完成。登录后复制 In [ ]
# 安装依赖,大概一分多钟%cd PaddleRS/!pip install -r requirements.txt登录后复制 In [ ]
# 进行图像超分处理,使用的模型为DRNimport osimport paddleimport numpy as npfrom PIL import Imagefrom paddlers.models.ppgan.apps.drn_predictor import DRNPredictor# 输出预测结果的文件夹output = r'../work/example' # 待输入的低分辨率影像位置input_dir = r"../work/ValData/DJI300" paddle.device.set_device("gpu:0") # 若是cpu环境,则替换为 paddle.device.set_device("cpu")predictor = DRNPredictor(output) # 实例化filenames = [f for f in os.listdir(input_dir) if f.endswith('.webp')]for filename in filenames: imgPath = os.path.join(input_dir, filename) predictor.run(imgPath) # 预测登录后复制 超分重建结果前后对比展示In [6] # 可视化import osimport matplotlib.pyplot as plt%matplotlib inlinelq_dir = r"../work/ValData/DJI300" #低分辨率影像文件夹sr_dir = r"../work/example/DRN" #超分辨率影像所在文件夹img_list = [f for f in os.listdir(lq_dir) if f.endswith('.webp')]show_num = 3 # 展示多少对影像for i in range(show_num): lq_box = (100, 100, 175, 175) sr_box = (400, 400, 700, 700) filename = img_list[i] image = Image.open(os.path.join(lq_dir, filename)).crop(lq_box) # 读取低分辨率影像 sr_img = Image.open(os.path.join(sr_dir, filename)).crop(sr_box) # 读取超分辨率影像 plt.figure(figsize=(12, 8)) plt.subplot(1,2,1), plt.title('Input') plt.imshow(image), plt.axis('off') plt.subplot(1,2,2), plt.title('Output') plt.imshow(sr_img), plt.axis('off') plt.show()登录后复制 登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制
四、超分前后图像分割效果对比
使用的模型为Segformer_b3,用UDD6数据集训练了40000次已经将性能最好的模型以及.yml文件放在work文件夹下运行以下命令可对指定的文件夹下的图像进行预测首先用该模型对低质量的无人机数据进行预测,然后再使用超分重建后的图像预测,最后对比一下预测的效果In [18]%cd ..# clone PaddleSeg的项目!git clone https://gitee.com/paddlepaddle/PaddleSeg登录后复制
/home/aistudio正克隆到 'PaddleSeg'...remote: Enumerating objects: 16439, done.remote: Counting objects: 100% (1402/1402), done.remote: Compressing objects: 100% (811/811), done.remote: Total 16439 (delta 710), reused 1165 (delta 573), pack-reused 15037接收对象中: 100% (16439/16439), 341.09 MiB | 10.14 MiB/s, 完成.处理 delta 中: 100% (10574/10574), 完成.检查连接... 完成。登录后复制 In [ ]
# 安装依赖%cd /home/aistudio/PaddleSeg!pip install -r requirements.txt登录后复制 In [ ]
# 对低分辨率的无人机影像进行预测!python predict.py \ --config ../work/segformer_b3_UDD.yml \ --model_path ../work/best_model/model.pdparams \ --image_path ../work/ValData/DJI300 \ --save_dir ../work/example/Seg/lq_result登录后复制 In [ ]
# 对使用DRN超分重建后的影像进行预测!python predict.py \ --config ../work/segformer_b3_UDD.yml \ --model_path ../work/best_model/model.pdparams \ --image_path ../work/example/DRN \ --save_dir ../work/example/Seg/sr_result登录后复制
展示预测结果
其中,颜色如下:由于只标注了五张图片,所以只展示五张图片的结果,剩下的预测结果均在 work/example/Seg/文件夹下,其中左边是真值,中间是低分辨率影像预测结果,右边是超分重建后预测结果In [17]# 展示部分预测的结果%cd /home/aistudio/import matplotlib.pyplot as pltfrom PIL import Imageimport osimg_dir = r"work/example/Seg/gt_result" #低分辨率影像文件夹lq_dir = r"work/example/Seg/lq_result/added_prediction"sr_dir = r"work/example/Seg/sr_result/added_prediction" # 超分辨率预测的结果影像所在文件夹img_list = [f for f in os.listdir(img_dir) if f.endswith('.webp') ]for filename in img_list: img = Image.open(os.path.join(img_dir, filename)) lq_pred = Image.open(os.path.join(lq_dir, filename)) sr_pred = Image.open(os.path.join(sr_dir, filename)) plt.figure(figsize=(12, 8)) plt.subplot(1,3,1), plt.title('GT') plt.imshow(img), plt.axis('off') plt.subplot(1,3,2), plt.title('LR_pred') plt.imshow(lq_pred), plt.axis('off') plt.subplot(1,3,3), plt.title('SR_pred') plt.imshow(sr_pred), plt.axis('off') plt.show()登录后复制 /home/aistudio登录后复制登录后复制
登录后复制登录后复制登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制登录后复制登录后复制
登录后复制登录后复制登录后复制登录后复制登录后复制
相关攻略
常见报错解析:“Access Not Configured”故障排除指南 许多开发者和团队成员在使用OpenClaw集成飞书时,都曾遭遇过一个典型的中断提示:“access not configured”(访问未配置)。该提示会明确显示您的飞书账户ID及一组唯一的配对验证码,并指出需要联系机器人所有
OpenClaw 常用指令大全与使用详解 openclaw status:此命令是查看OpenClaw系统整体健康状态的核心指令,执行后即获取服务运行状况的全面报告,是日常运维的首要诊断工具。 openclaw gateway restart:在修改网关配置后,必须运行此指令以重启网关服务,使配置文
如何通过 OpenClaw 实现 Chrome 浏览器自动化操控 在软件开发与自动化测试领域,持续学习是常态。本文旨在详细介绍如何利用 OpenClaw 连接并控制一个已开启的 Chrome 浏览器实例,实现点击、文本输入、文件上传、页面滚动、屏幕截图以及执行 JavaScript 等自动化操作。整
项目概述 你是否希望将强大的 AI 助手带入日常聊天?本教程将指导你完成搭建流程,让你能在 QQ 上直接调用 OpenClaw 智能助手,实现无门槛的 AI 对话体验。 架构说明 ┌─────────────┐ ┌──────────────┐ ┌─────────────┐ │ QQ 用户 │ ─
一 下载并安装Node js,全程保持默认设置 首先,请前往Node js官方网站的下载中心:https: nodejs org zh-cn download。根据您的操作系统(Windows Mac Linux)下载对应的安装程序。运行安装向导时,整个过程非常简单,您只需连续点击“下一步”按钮
热门专题
热门推荐
速览攻略:世界圣羽翼王核心打法与全面解析 本攻略将为你完整呈现《洛克王国》世界圣羽翼王的通关秘籍,深度剖析两种高效实战打法:追求极致速度的“燃薪虫四回合速通”与稳定输出的“酷拉无限连击流”。文章将进一步解析这位翼系精灵王的技能机制、属性克制关系及其在PVE与PVP中的实战定位,帮助你彻底掌握应对其隐
速览:工程系统核心机制解析 在《异种航员2》中,工程系统是整个抵抗力量赖以运转的“战略后勤中枢”。无论是研发新武器、生产重型装甲还是制造先进飞行器,所有实体装备的产出都依赖于此。简言之,该系统的核心运作围绕着两大关键:工程师人力的高效配置与全球稀缺资源的精细化调度。工程师的数量直接决定了每个项目的建
核心速览 在《洛克王国世界》中,治愈兔是一位兼具功能性任务角色与实战辅助能力的精灵。它的价值不仅在剧情推进中体现,更在于对战里出色的治疗与防护表现。本文将为你全面解析治愈兔的精准获取位置、种族属性特点以及实战技能搭配,助你顺利捕捉并最大化其在队伍中的作用。所有关键信息将通过清晰的图文内容详细展示,确
速览 在《红色沙漠》中,挑战传说之狼这一强大的任务BOSS,需要玩家进行充分的准备并遵循完整的任务流程。整个过程环环相扣,你必须首先参与塞莱斯特家族的势力任务,通过完成任务将家族声望提升至指定等级,才能解锁【传说之狼】的专属讨伐任务,最终直面这个传说中的强大生物。 红色沙漠传说之狼怎么打 归根结底,
【宝可梦Pokopia】舒适度全解析:快速提升环境等级的核心秘诀 你是否正在探索《宝可梦Pokopia》世界,并希望有效提升宝可梦栖息地的舒适度?舒适度不仅是衡量宝可梦快乐程度的晴雨表,更是解锁游戏核心内容、加速发展的关键驱动指标。本攻略将系统性地为你揭示提升舒适度的核心途径,涵盖从装饰栖息地、建造





