首页电脑使用paddleocr训练自己的数据 paddleocr提高识别精度

paddleocr训练自己的数据 paddleocr提高识别精度

圆圆2025-07-24 18:02:03次浏览条评论

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

paddlers:使用超分模块提高真实的低分辨率无人机影像的分割精度 - 乐哥常识网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(rquot;work/example/Seg/UDD6_result/added_prediction/000161.JPGquot;)plt.figure(figsize=(18,12))#设置窗口大小 plt.imshow(output), plt.axis('off')登录后复制        /home/aistudio登录后复制登录后复制       (lt;matplotlib.image.AxesImage位于0x7f1e4d90f390gt;,(-0.5, 4095.5, 2159.5,-0.5))登录后复制                lt;图形尺寸 1296x864 with 1 Axesgt;登录后复制                训练的结果很不错,所使用的UDD6数据是来自北京、葫芦岛、沧州、郑州四个城市,使用大疆精灵面积四架无人机在60m-100m高度采集之间。但是,在实际的生产过程中,城市、飞行的高度、图像的质量会发生变化,飞行高度升高可以在同一时间获取更大的数据,但分辨率会降低,对低质量的数据,直接使用前期训练的数据预测效果不理想,再数据敏锐、训练模型将是一个不小的工作量,解决的方法除了提升模型的泛化能力,也可以考虑使用图像超分对低质量的无人机图像重建,然后再进行预测本项目使用图像PaddleRS提供的无人机遥感超分模块,对真实的低质量无人机影像数据进行超分,然后再使用前段时间用UDD6训练的Segformer模型预测,与直接使用低分辨率模型对比。没有得益于对低质量数据进行核心无法计算指标。

但人眼判别,超分之后的预测结果更好,左边是人工标注的标签,中间是低分辨率的预测结果,右边是超分辨率重建后的结果In [12]img = Image.open(rquot;work/example/Seg/gt_result/data_05_2_14.pngquot;)lq = Image.open(rquot;work/example/Seg/lq_result/added_prediction/data_05_2_14.pngquot;)sr = Image.open(rquot;work/example/Seg/sr_result/added_prediction/data_05_2_14.pngquot;)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()登录复制        lt;图尺寸 1296x864 with 3 axesgt;登录后复制 登录后复制                二、数据介绍与展示使用的数据是使用大疆精灵四无人机在上海,飞行高度为300m采集的,采集的天气时候也一般,可以看后续的例子发现质量不高。

由于只是超分重建后进行预测的效果,所以只是简单标注了其中5张照片,毕竟标注数据确实是一件很费力的事!如果能用公开数据集训练的模型来预测自己的数据,这多是一件美事!部分标注数据展示如下In [15]add_lb = Image.open(rquot;work/example/Seg/gt_result/data_05_2_19.pngquot;)lb = Image.open(rquot;work/example/Seg/gt_label/data_05_2_19.pngquot;)img = Image.open(rquot;work/ValData/DJI300/data_05_2_19.pngquot;)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()登录后复制        lt;图形尺寸 1296x864,3 轴;登录后登录复制后复制               三、无人机遥感图像超分因为PaddleRS提供了预训练的超分模型,所以这一步主要分为以下两个步骤:准备PaddleRS并设置好环境调用PaddleRS中的超分预测接口,对低分辨率无人机影像进行超分重建In [3]# 从github上投影仓库!git clone https://github.com/PaddleCV-SIG/PaddleRS.git登录后复制       正克隆到 'PaddleRS'...remote: 枚举对象: 2325, did.remote: 计数对象: 100 (2325/2325), did.remote: 压缩对象: 100 (1086/1086), did.remote: 总计 2325 (delta 1233), 重用 2245 (delta 1182), 打包重用 0接收对象中: 100 (2325/2325), 3.22 MiB | 2.49 MiB/s,完成.处理增量中:100 (1233/1233),完成.检查连接...完成。

登录后复制        In [ ]# 安装依赖,大约一分多钟cd PaddleRS/!pip install -r requests.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 = rquot;../work/ValData/DJI300quot; paddle.device.set_device(quot;gpu:0quot;) # 如果cpu环境,则为替换paddle.device.set_device(quot;cpuquot;)predictor = DRNPredictor(output) # 实例化filenames = [f for f in os.listdir(input_dir) 如果f.endswith('.png')]for filenames in filenames: imgPath = os.path.join(input_dir, filename) Predictor.run(imgPath) # 登录预测后复制      超分重构结果前后对比展示In [6] # 可视化import osimport matplotlib.pyplot as pltmatplotlib inlinelq_dir = rquot;../work/ValData/DJI300quot; #低分辨率图像文件夹 sr_dir = rquot;../work/example/DRNquot; #超分辨率图像文件夹 img_list = [f for f in os.listdir(lq_dir) if f.endswith('.png')]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('输入') plt.imshow(image), plt.axis('关闭') plt.subplot(1,2,2), plt.title('输出') plt.imshow(sr_img), plt.axis('关闭') pl

t.show()登录后复制        lt;图形尺寸 864x576 带 2 轴;登录后复制 登录后复制登录后复制                  lt;图形尺寸 864x576 带 2 轴;登录后复制 登录后复制 登录后复制                  lt;图形尺寸864x576 with 2 Axesgt;登录后复制登录后复制登录后复制               四、超分前后图像分割效果对比使用的模型为Segformer_b3,用UDD6数据集训练了40000次已经将性能最好的模型以及.yml文件放在work文件夹下运行以下命令可对指定的文件夹下的图像进行预测首先用该模型对低质量的无人机数据进行预测,然后再使用超分重建后的图像预测,最后对比一下预测的效果在[18]cd ..# clone PaddleSeg 的项目!git clone https://gitee.com/paddlepaddle/PaddleSeg登录后复制        /home/aistudio正克隆到 'PaddleSeg'...remote:枚举对象: 16439,done.remote:计数对象:100 (1402/1402),done.remote:压缩对象:100 (811/811),done.remote:总计 16439 (delta 710),重用 1165 (delta 573),pack-reused 15037 接收对象中:100 (16439/16439),341.09 MiB | 10.14 MiB/s,完成.处理增量中:100 (10574/10574),完成.检查连接...完成。

登录后复制        In [ ]# 安装依赖cd /home/aistudio/PaddleSeg!pip install -r requests.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 ../工作/示例/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 = rquot;work/example/Seg/gt_resultquot;#低分辨率图像文件夹lq_dir = rquot;work/example/Seg/lq_result/added_predictionquot;sr_dir = rquot;work/example/Seg/sr_result/added_predictionquot;# 超分辨率预测的结果图像所在文件夹 img_list = [f for f in os.listdir(img_dir) if f.endswith('.png') ]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, 文件名)) plt.figure(figsize=(12, 8)) plt.subplot(1,3,1), plt.title('GT') plt.imshow(img), plt.axis('off') plt.su

bplot(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登录后复制登录后复制         lt;图形尺寸 864x576 3 轴;登录后复制登录后复制登录后复制登录后复制登录后复制                lt;图形尺寸 864x576 3 轴;登录后复制登录后复制登录后复制登录后复制登录后               lt;图形尺寸864x576,带3 Axesgt;登录后复制登录后复制登录后复制登录后复制登录后复制                lt;图形尺寸 864x576,带 3 个轴;登录后复制登录后复制登录后复制登录后复制登录后复制                 lt;图形尺寸 864x576,带 3 个轴axesgt;登录后复制登录后复制登录后复制登录后复制登录后复制                

以上就是PaddleRS:使用超分模块提高真实分辨率的文章无人机图像的分割精度的详细内容,更多请关注乐哥常识网其他相关!

PaddleRS:使
php数据库语句 php文本数据库
相关内容
发表评论

游客 回复需填写必要信息