mmlab添加albumentations数据增强模块

系列文章目录

mmlab图像增强



前言

`提示:这里可以添加本文要记录的大概内容:

albumentation是深度学习经典的数据增强模块,本文介绍在mmlab采用albumentation自定义数据增强类

一、mmlab中自定义的数据变换类

该类型需要@TRANSFORMS.register_module()相应的进行修饰,并在跟数据变换的根目录中导入,才能在管道中使用。

二、使用步骤

1.参考代码

官方参考示例:

import random
import mmcv
from mmcv.transforms import BaseTransform, TRANSFORMS
#自定义类需要继承原有的BaseTransform类
@TRANSFORMS.register_module()
class MyFlip(BaseTransform):
    def __init__(self, direction: str):
        super().__init__()
        self.direction = direction
    def transform(self, results: dict) -> dict:
        img = results['img']
        results['img'] = mmcv.imflip(img, direction=self.direction)
        return results

2.使用

代码如下:

import numpy as np

transform = MyFlip(direction='horizontal')
data_dict = {'img': np.random.rand(224, 224, 3)}
data_dict = transform(data_dict)
processed_img = data_dict['img']

三、使用albumentation实现自定义类

1.定义数据变换类

import albumentations as A

@TRANSFORMS.register_module()
class Random_aug(BaseTransform):
    def __init__(self, prob: float):
        super().__init__()
        # self.p = prob
        self.transf = A.Compose([
            # A.GaussNoise(var_limit=(40.0, 50.0),p=1),
            A.RandomBrightness(limit=-0.5,p=prob),
            # A.Downscale (scale_min=0.55, scale_max=0.9,p=1),
            # A.Equalize(p=0.2),
        ])
    def transform(self, results: dict) -> dict:
        img = results['img']
        #需要向image传递数据参数来实现,不然可能会报错
        # self.transf(image = img.astype(np.uint8))
        results['img'] = self.transf(image = img.astype(np.uint8))['image']
        return results

2.使用

import numpy as np

transform1 = Random_aug(prob=0.5)
data_dict = {'img': np.random.rand(224, 224,3)}
data_dict = transform1(results = data_dict)
print(data_dict)
processed_img = data_dict['img']

总结

mmengine参考链接

<think>好的,我现在需要帮助用户解决关于OpenMMLab中数据存储路径的问题。首先,我得回忆一下OpenMMLab各个框架的数据配置方式。通常,像MMDetection、MMSegmentation这些框架的数据路径都是在配置文件中设置的。用户可能已经按照教程下载了数据集,但不知道具体放在哪里或者如何修改路径。 我记得在OpenMMLab的文档中,数据路径通常通过配置文件中的`data_root`变量来指定。比如,在MMSegmentation的配置文件中,可能会有类似`data_root = 'data/cityscapes/'`这样的设置。所以需要告诉用户检查配置文件中的`data_root`参数。 另外,用户可能没有正确修改配置文件,导致默认路径下找不到数据。这时候需要指导用户如何修改配置文件中的路径,并确保数据目录结构正确。比如,数据集应该放在`data/`目录下,并按照特定的子目录结构组织,比如`annotations`和`images`。 还有,用户可能使用了MIM工具安装的库,但数据路径和代码路径是分开的。需要提醒用户数据存储的位置不依赖于库的安装路径,而是由配置文件决定。同时,可能需要让用户注意环境变量或者符号链接的使用,但这种情况可能较少见。 最后,用户可能需要具体的示例来说明如何修改配置文件。比如,提供一个修改`data_root`的示例,并说明目录结构。此外,常见问题比如路径错误导致的运行时异常,也需要提醒用户检查路径是否正确,是否有权限问题。 总结一下,回答应该分步骤说明如何查找和修改配置文件中的数据路径,强调`data_root`的作用,并给出示例和验证方法。同时,附上相关问题帮助用户进一步了解配置文件和数据集处理。</think>在OpenMMLab框架中,数据存储路径通过配置文件定义,具体位置根据项目类型(如MMDetection/MMSegmentation)有所不同。以下是定位和修改数据路径的方法: ### 一、配置文件中的路径定义 1. **核心参数**:在`configs/_base_/datasets`目录下的配置文件中,通过`data_root`参数指定数据集根目录 ```python data_root = 'data/cityscapes/' # MMsegmentation示例路径 ``` 2. **路径组合规则**: ```python img_dir = osp.join(data_root, 'leftImg8bit/train') # 图像路径 ann_dir = osp.join(data_root, 'gtFine/train') # 标注路径 ``` ### 二、自定义数据路径步骤 1. **修改配置文件**(以MMDetection为例): ```python data = dict( train=dict( data_root='your_custom_path/data/', # ← 修改此处 img_prefix='images/train', ann_file='annotations/train.json'), ) ``` 2. **目录结构要求**: ``` your_custom_path/ └── data/ ├── annotations/ │ └── train.json └── images/ └── train/ ├── 0001.jpg └── 0002.jpg ``` ### 三、验证路径配置 通过运行训练命令时添加`--cfg-options`参数实时检查: ```bash mim train mmdet ./configs/faster_rcnn.py --cfg-options data.train.data_root='new_path' ``` ### 四、框架默认路径约定 | 框架名称 | 默认数据路径 | 配置文件示例位置 | |----------------|-------------------|--------------------------------| | MMDetection | `data/coco/` | `configs/_base_/datasets/coco_detection.py` | | MMSegmentation | `data/cityscapes` | `configs/_base_/datasets/cityscapes.py` | | MMClassification | `data/imagenet` | `configs/_base_/datasets/imagenet_bs64.py` | **注意**:若使用符号链接,可通过`ln -s /actual/path data`创建虚拟数据目录[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云朵不吃雨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值