mmdetection读取多波段遥感影像

Colab-mmlab炼金术

第二章多波段遥感影像读取设置


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

`

截止今日(2023年7月)mmdetection中包含有支持tif多波段遥感影像读取接口,逼者在初次mmlab处理多波段遥感影像目标检测时对mmlab系列的架构不太了解走了很多弯路,特此记录。


一、mmlab架构的层次

mmlab是基于pytorch、cv2、pillow、coco等现有的python包进行整合的,便于使用者对已有的经典模型进行复现,由于该架构采用注册、继承的方式对相关python包和函数进行调用,因此不利于初学者进行代码的调试。这里应该还是仔细阅读官方给出的事例代码以及帮助文档进行学习。

以mmdetection为例,mmdetection是在mmcv和mmengine的基础上进行开发的,所以相关的数据读取、数据集加载以及深度学习模型构建函数主要是依赖于mmcv和mmengine

二、更改数据读取设置

1.数据读取

数据加载:

train_pipeline = [
    dict(type='LoadImageFromFile',imdecode_backend = "tifffile"),
    dict(type='mmdet.LoadAnnotations', with_bbox=True, with_mask=True),
    dict(type='mmdet.Resize', scale=image_size),
    ]
*相关加载模块是在sitepackage\mmcv\transforms\loading 下设置的是数据加载模块
*该模块调用了mmcv\image\io下的imfrombytes()函数
我们只需要将imfrombytes(img_bytes, flag=self.color_type, backend="tifffile"),参数进行修改即可,或修改loading类:
def __init__(self,
                 to_float32: bool = False,
                 color_type: str = 'color',
                 imdecode_backend: str = 'tifffile',
                 file_client_args: Optional[dict] = None,
                 ignore_empty: bool = False,
                 *,
                 backend_args: Optional[dict] = None) -> None:

当指定tiffile读取图像时,函数式不接收“color_type”参数的

2.数据类型

遥感影像多为uint16类型,直接进行处理会在mmcv\transforms\formatting出报错,我们不能直接使用数据类型转换的函数,这会导致数值的损失,需要先对数据进行缩放,再进行数值变换.


此外在进行数据处理时往往要采用coco格式数据进行训练,在使用自己的数据时一定一定要注意anno中的area一定要计算,否则默认的coco接口会根据目标轮廓的area、以及box的W、H判定是否需要忽略这些目标。
链接: 二进制图像标注转JSON

2.注意事项

多波段影像进行图像归一化时uint16和uint8计算出来的方差和均值差距很大,要注意处理数据的类型,避免因为数据源的问题导致梯度消失或梯度爆炸

总结

在探索一些新内容时,总会被某些小问题卡住,这可能是探索的必经之路吧,不过也不要不敢去问,毕竟周围就有一些乐于探索的朋友,在交流之中就会有些新的启发,有机会还是要向周围的前辈多多请教。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云朵不吃雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值