mmsegmentation使用.csv文件读取数据

mmsegmentation教程1:自定义数据集、config文件修改、训练教程 mmseg使用教程 阅读详情

自定义数据读取方式

即将原本的mmcv.imfrombytes读取固定目录格式的图片直接改成mmcv.imread读取csv文件的格式

定义数据读取方式

在/mmsegmentation-master/mmseg/datasets路径下新建一个mydata.py文件

@DATASETS.register_module()
class MyDataset(Dataset):
    CLASSES = ('gt',)
    PALETTE = [[255, 255, 255],]

    def __init__(self,
                 pipeline,
                 test_mode=False,
                 csv_file = 'tmp.csv'):
        self.pipeline = Compose(pipeline)
        self.test_mode = test_mode
        self.csv_file = csv_file
        self.img_infos = self.load_img_annotations_fromcsv(csv_file=self.csv_file)

    def __len__(self):
        """Total number of samples of data."""
        return len(self.img_infos)


    def load_img_annotations_fromcsv(self, csv_file): # 通过csv文件读取img,depth,gt,seg_thresh路径
        frames = pd.read_csv(csv_file, sep=";", header=None)
        img_infos = []
        for idx in range(len(frames)):
            img_info = dict(filename=frames.iloc[idx, 0])
            img_info['ann'] = frames.iloc[idx, 1]
            img_infos.append(img_info) 
        return img_infos

    def get_ann_info(self, idx): # 获取gt路径
        return self.img_infos[idx]['ann']
    
    def __getitem__(self, idx):
        if self.test_mode:
            return self.prepare_test_img(idx)
        else:
            return self.prepare_train_img(idx)

    def prepare_train_img(self, idx):
        img_info = self.img_infos[idx]
        ann_info = self.get_ann_info(idx)
        results = dict(img_info=img_info, ann_info=ann_info)
        results['seg_fields'] = []
        return self.pipeline(results)
        
        
    def prepare_test_img(self, idx):
        img_info = self.img_infos[idx]
        ann_info = self.get_ann_info(idx)
        results = dict(img_info=img_info, ann_info=ann_info)
        results['seg_fields'] = []
        return self.pipeline(results)

    def get_gt_seg_map_by_idx(self, index):
        """Get one ground truth segmentation map for evaluation."""
        ann_info = self.get_ann_info(index)
        results = dict(ann_info=ann_info)
        results['gt_semantic_seg'] = mmcv.imread(results['ann_info'], -1)
        return results['gt_semantic_seg']

    def get_gt_seg_maps(self, efficient_test=None):
        """Get ground truth segmentation maps for evaluation."""
        for idx in range(len(self)):
            ann_info = self.get_ann_info(idx)
            results = dict(ann_info=ann_info)
            results['gt_semantic_seg'] = mmcv.imread(results['ann_info'], -1)
            yield results['gt_semantic_seg']

在/mmsegmentation-master/mmseg/datasets/pipelines/loading.py新增相应的函数

@PIPELINES.register_module()
class LoadImageFromCSV(object):
    """Load an image from csv file.

    Required keys are "img_prefix" and "img_info" (a dict that must contain the
    key "filename"). Added or updated keys are "filename", "img", "img_shape",
    "ori_shape" (same as `img_shape`), "pad_shape" (same as `img_shape`),
    "scale_factor" (1.0) and "img_norm_cfg" (means=0 and stds=1).

    Args:
        to_float32 (bool): Whether to convert the loaded image to a float32
            numpy array. If set to False, the loaded image is an uint8 array.
            Defaults to False.
    """

    def __init__(self,
                 to_float32=False,
                ):
        self.to_float32 = to_float32
        

    def __call__(self, results):
        """Call functions to load image and get image meta information."""

        img = mmcv.imread(results['img_info']['filename'])

        if self.to_float32:
            img = img.astype(np.float32)
     
        results['filename'] = results['img_info']['filename']
        results['ori_filename'] = results['img_info']['filename']
        results['img'] = img
        results['img_shape'] = img.shape
        results['ori_shape'] = img.shape
        # Set initial values for default meta_keys
        results['pad_shape'] = img.shape
        results['scale_factor'] = 1.0      
        
        num_channels = 1 if len(img.shape) < 3 else img.shape[2]
        results['img_norm_cfg'] = dict(
            mean=np.zeros(num_channels, dtype=np.float32),
            std=np.ones(num_channels, dtype=np.float32),
            to_rgb=False)
        return results


@PIPELINES.register_module()
class LoadAnnotationsFromCSV(object):
    """Load annotations for semantic segmentation."""

    def __call__(self, results):
        """Call function to load multiple types annotations."""

        gt_semantic_seg = mmcv.imread(results['ann_info'], -1)
        results['gt_semantic_seg'] = gt_semantic_seg
        results['seg_fields'].append('gt_semantic_seg')
        return results
在init文件中增加MyDataset

同时在/mmsegmentation-master/mmseg/datasets中的____init____.py添加刚刚新建的数据集

...
from .mydata import MyDataset 

__all__ = [
    ..., 'MyDataset ',
]
在config文件中修改数据读取路径
dict(type='LoadImageFromCSV'), 
dict(type='LoadAnnotationsFromCSV'),

至此大功告成!!!

【mmdetection系列】mmdetection之dataset讲解 为什么要讲这部分呢,主要是因为我自己在这个部分也躺了很多坑。才发现这里面的工作都是需要我们自己取配置,编写相应的代码的。 阅读详情

相关推荐

7-1 链式基数排序 (20 分)

7-1 链式基数排序 (20 分) 实现链式基数排序,待排序关键字n满足1≤n≤1000,最大关键字数位≤5。 输入样例: 第一行输入待排序个数n(1≤n≤1000),再输入n个数(n的数位≤5)。 10 278 109 63 930 589 184 505 269 8 83 输出样例: 输出每趟分配-收集后链表中的关键字,趟数为序列中最大值的数位(如样例中930的数位为3),每行结尾有空格。 930 63 83 184 505 278 8 109 589 269 505 8 109 930 63 26

OwemShu的博客 4236

调试mmcls

调试mmcls主要是让自己记住要改的几步,不然总是容易忘。 1.数据输入有两种,一种可以带ann_file形式,一种是不带,通常不带的,就直接取train文件下的几类做训练的,如果是带,形式上是一行图片名称,后面跟类别, 135efbeaeb592d3b51edca5dff099de6 1 这种形式是不可取的,要完整的文件名,否则要去修改一下,要记住mm系列中数据集和数据前处理是分离的,数据集是用来__getitem__和测评数据的,前处理是处理成模型想要的输入格式。格式不对,属于读取数据在load

liguandong 890

稳定性性能系列之十五——系统稳定性监控体系建设:从指标到预警的完整方案

深入探讨Android系统稳定性监控体系的设计与实现,涵盖指标体系设计、数据采集方案、异常检测算法、预警响应机制,并提供完整的监控平台搭建实践。

Cheson的专栏 1357

(七)深度学习实战 | MMDetection笔记(4)

深度学习实战 | MMDetection笔记(4)

Skies_的博客 3023

AutoDock Vina实战:从零开始完成分子对接(附7VU6案例详解)

本文提供了一份详细的AutoDock Vina分子对接实战指南,以SARS-CoV-2 3CL蛋白酶(PDB ID: 7VU6)为例,从零开始手把手教学。内容涵盖软件安装、环境配置、受体与配体文件准备、对接参数设置,以及结果分析与可视化解读,旨在帮助计算生物学与药物发现领域的新手快速掌握这一核心技能。

ooo22的博客 534

AI 代码赋能短视频带货:服装及多赛道批量内容生产全流程实操

本文聚焦 AI 技术在短视频带货领域的落地应用,以服装赛道为核心,延伸至花卉绿植、图书、茶具等热门领域,系统拆解 AI 工具在选品、素材处理、视频制作(含动态效果、场景搭建)、运营优化等环节的实操方法。针对从业者普遍面临的 “内容生产低效”“无专业技术难出优质视频”“流量运营踩坑” 等痛点,提供从基础工具使用到高阶视频制作的全流程技术方案,助力相关从业者借助 AI 实现批量、高效的短视频内容产出。

m0_67958922的博客 3081

mmsegmentation训练子集的数据

参考的是这篇博文,mmsegmentation训练自己的任务 - 知乎 1、安装mmcv,参考GitHub - open-mmlab/mmcv: OpenMMLab Computer Vision Foundation pip install mmcv-full=={mmcv_version} -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html 2、下载mmsegmentation,地

fanre的专栏 823

RK3588-NANOPC-T6移植ubuntu+xenomai内核

更具网址下载相应的内核。导入到开发板并执行内核。

qq_42007446的博客 572

MMCV核心组件知识整理

MMCV核心组件知识整理

Thinkobj的博客 2359

Arduino创意作品实战案例:手把手教你做温控风扇

通过这个实用的arduino创意作品,轻松实现温度感应与风扇自动控制,结合传感器与编程逻辑,打造智能散热系统,是入门者理想的arduino创意作品实践项目。

weixin_42311427的博客 608

黑猫带你学eMMC协议第29篇:eMMC设备锁详解(CMD42)

通过cmd42命令,可以给emmc设置密码,并且锁定emmc。这时候就不能对emmc的user分区进行读写数据访问了。设备锁在V4.3版本后的emmc里面,就只能保护user area分区,因此,被锁定的emmc,依旧可以正常访问BOOT\RPMB\GPP分区。emmc内部有128 bit PWD寄存器,用来存放密码,以及有8bit PWD_LEN寄存器,用来密码长度。这两个寄存器非易失性,掉电也不会丢失。

黑猫奥利奥的博客 3235

mmsegment数据集说明(六)

目录 1、数据集加载 2、加载图片及标记 3、定义自己的数据集 4、数据集操作 4.1、重复数据集 4.2、连接数据集 https://mmsegmentation.readthedocs.io/en/latest/tutorials/customize_datasets.html 1、数据集加载 依据tools/train.py中调用方式,提取单独的数据集加载逻辑。 from mmcv.utils import Config from mmseg.datasets import...

alex1801 2606

YOLOv13结合Sobel边缘检测算子,实现EIEM(Edge Information Enhancement Module,边缘信息增强模块),强化空间特征提取

EIEM模块通过巧妙地结合Sobel边缘检测算子和现代卷积网络架构,实现了显式边缘信息增强的创新设计。这种方法不仅提高了网络对边缘特征的敏感性,还保持了良好的计算效率和模块化特性。 从技术实现角度看,EIEM展示了如何将经典计算机视觉算法无缝集成到深度学习框架中,为构建更强大、更可解释的视觉模型提供了新的思路。随着对边缘信息重要性认识的不断深入,以及对网络可解释性需求的增长,EIEM这样的显式特征增强模块将在未来的计算机视觉研究中发挥越来越重要的作用。

FJN110的博客 905

[记录]-imfrombytes

我有一张三通道的灰度图,使用1读出来是(400,100,3)的,但是使用2读出来的是(400,400)的。

weixin_42343912的博客 438

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

深入理解MMCV项目中的图像与视频数据处理

MMCV作为计算机视觉领域的重要工具库,提供了丰富的图像和视频处理功能。本文将详细介绍MMCV中的数据预处理模块,帮助开发者高效处理视觉数据。 ## 图像处理基础 ### 图像读写与显示 MMCV提供了简洁的API来处理图像文件: ```python import mmcv # 读取图像文件 img = mmcv.imread('test.jpg') # 默认BGR格式 gray_im...

gitblog_00920的博客 488

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

mmcv基础教程(一)

mmcv包含有mmcv与mmcv-lite两种,前者包含mmcv的所有功能,而后者则缺乏基于cuda的操作。对于你现有的cuda与torch版本若没有对应的mmcv已编译好的whl文件,则需要从github等网址下载源码在自己的环境下,本地编译安装。返回None,参数只有backend:类型为str,确认图像编码的后端,有cv2,pillow等。返回类型是ndarray类型的灰度图,它的参数就是ndarray类型的数据。它的作用就是随机遮挡,输出是遮挡后的图,类型是ndarray。

butterflies_的博客 1100

mmaction2实验记录2——视频数据处理的方法

mmaction2中视频数据处理的方法

c_procomer的博客 1745

python之将byte转换为int类型函数 int.from_bytes 详解与原码反码补码的简单介绍

函数格式:int.from_bytes(bytes, byteorder, *, signed=False)简单demo:s1 = b'\xf1\xff' print(int.from_bytes(s1, byteorder='big', signed=False)) print(int.from_bytes(s1, byteorder='little', signed=True)) 输出:619...

aic1999的博客 4万+

调试mmsegmentation

mmsegmentation不支持windows上训练,我在windows调试总是会在loss这块报错。但是在linux上一调就通。

liguandong 1314

MMCV python库介绍

mmcv 是用于计算机视觉研究的基础 Python 库,支持 MMLAB 中的许多研究项目,例如 MMDetection <https://github.com/open-mmlab/mmdetection>和 MMAction <https://github.com/open-mmlab/mmaction> 该库主要分为两个部分,一部分是与深度学习框架无关的工具函数,比如...

NcepuKZH的博客 1万+

[pytorch] torch.nn.Conv3D 的使用介绍

[pytorch] torch.nn.Conv3D 的使用介绍torch.nn.Conv3D 参数输入参数输出参数网络参数使用示例 torch.nn.Conv3D 参数 3D卷积, 一般是在处理的视频的时候才会使用,目的是为了提取时序信息(temporal feature),输入的size是(N,Cin,D,H,W),输出size是(N,Cout,Dout,Hout,Wout) 输入参数 N: ...

weixin_43844219的博客 2万+

mmdetection中的dataset

TOV_mmdetection中的dataset1、train.py2、build_dataset ; mmdet/datasets/builder.py3、build_from_cfg ; mmcv/utils/registry.py4、CocoFmtDataset.init ; mmdet/datasets/cocofmt.pyCocoFmtDataset.init:CustomDataset.init:一、首先将相关参数保存到属性中,值得注意的是这里的self是CocoFmtDataset。二、调用g

qq_43403200的博客 5990

imread函数_mmcv中常用的一些功能及函数

mmcv 是一个基础库,主要分为两个部分,一部分是和 deep learning framework 无关的一些工具函数,比如 IO/Image/Video 相关的一些操作,另一部分是为 PyTorch 写的一套训练工具,可以大大减少用户需要写的代码量,同时让整个流程的定制变得容易。https://github.com/open-mmlab/mmcv​github.commmcv在安装过程中需要V...

weixin_39797393的博客 1940

日常学习 mmsegmentation处理数据集和图片格式

mmsegmentation 对数据集的读取与处理 对于自定义数据集需要在mmseg/datasets下建立自己的数据集文件,如 import os.path as osp from .builder import DATASETS from .custom import CustomDataset @DATASETS.register_module() # 注册 不要忘记在__init__.py作显示导入 class RoadDataset(CustomDataset): CLASSE.

xjw0645的博客 6094

Pillow 之frombytes从二进制中读取图片

frombytesfrombytes frombytes # 原方法 def frombytes(mode, size, data, decoder_name="raw", *args): pass # 示例代码 import requests from PIL import Image content = requests.get("http://my.cnki.net/Register/C...

wang785994599的博客 1万+

mmcv基本读取文件操作

mmcv的基本读取文件操作支持以下几种类型: json yaml yml pickle pkl 利用mmcv.load(‘abc.json’)将文件读入内存,按照key:value的方式组织 同时mmcv支持文本读取操作,包含两个函数 mmcv.list_from_file(‘a.txt’) mmcv.dict_from_file(‘b.txt’) import mmcv dict_data = mmcv.dict_from_file('abc.txt') print('dict_data = ', di

schmiloo的博客 3533
上一篇: mmsegmentation训练HRF数据集
下一篇: 【CVPR2022】论文阅读笔记Semi-Supervised Semantic Segmentation Using Unreliable Pseudo-Labels
Thinkobj
博客等级 码龄8年 10粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值