弱监督语义分割伪标签可视化(把单通道灰度图转为voc格式语义分割标签的彩色形式)

news2024/9/21 14:28:40

一、目的

以图片2007_001960为例,voc数据集中的原图和对应的语义分割标签分别如下:

图1                                                                        图2

图像级标签WSSS任务第一阶段最后生成的pseudo mask如下:

图3

我们的目的是把最后一张图生成彩色模式(第二张图那样),方便比较分割结果。

二、方法1(从voc标签中读取颜色类别信息)

参考文章PASCAL VOC数据集-分割标签索引颜色对照及程序中的代码。在voc数据集语义分割标签中随意找一张标签,读取图片的调色板信息,然后对我们的pseudo mask进行着色。

##测试voc的调色盘

from PIL import Image
import numpy as np
import imageio

#读取调色板信息
label_path = '/data6/VOCdevkit/VOC2012/SegmentationClass/2007_000033.png'
label_img = Image.open(label_path)
color_map = label_img.getpalette()
color_map_arr = np.array(color_map)
color_palette = np.reshape(color_map_arr,(256,1,3)).astype(np.uint8)

#读取pseudo mask,然后着色
gray_label=np.asarray(imageio.imread('./sem_seg/2007_001960.png'))
gray_label = Image.fromarray(gray_label,mode='L')
gray_label.putpalette(color_palette)
gray_label.save('new_img.png')

结果:

 

三、方法2(直接给类别编码颜色)

直接把voc的类别与颜色编码信息嵌入到代码中:

(图源上述参考文章)

import numpy as np
import cv2
from PIL import Image
from matplotlib import pyplot as plt

# 获取VOC语义分割标签的类别颜色编码
def get_voc_color_encoding():
    color_encoding = {
        0: (0, 0, 0),
        1: (128, 0, 0),
        2: (0, 128, 0),
        3: (128, 128, 0),
        4: (0, 0, 128),
        5: (128, 0, 128),
        6: (0, 128, 128),
        7: (128, 128, 128),
        8: (64, 0, 0),
        9: (192, 0, 0),
        10: (64, 128, 0),
        11: (192, 128, 0),
        12: (64, 0, 128),
        13: (192, 0, 128),
        14: (64, 128, 128),
        15: (192, 128, 128),
        16: (0, 64, 0),
        17: (128, 64, 0),
        18: (0, 192, 0),
        19: (128, 192, 0),
        20: (0, 64, 128)
    }
    
    return color_encoding

# 将灰度标签转换为VOC语义分割标签的形式
def convert_gray_to_voc_label(gray_label):
    voc_color_encoding = get_voc_color_encoding()
    height, width = gray_label.shape[:2]
    voc_label = np.zeros((height, width, 3), dtype=np.uint8)

    # 使用灰度标签作为索引获取对应的颜色编码,并赋值给voc_label
    for label in range(len(voc_color_encoding)):
        indices = np.where(gray_label == label)
        voc_label[indices] = voc_color_encoding[label]

    return voc_label

# 读取灰度标签图像
gray_label = np.asarray(Image.open('./sem_seg/2007_001960.png'))

# 将灰度标签转换为VOC语义分割标签的形式
voc_label = convert_gray_to_voc_label(gray_label)

# 保存VOC语义分割标签图像
plt.imsave('voc_label_1.png', voc_label)

 结果:

 中间有一个小插曲,使用这个方法(最开始我是用opencv读取的图片),生成了这样的图片:

后来发现是opencv默认 读取和显示图片是bgr而非rgb,所以才出现颜色不一样的问题。具体可以参考文章基础知识(一) 图片格式RGB 与 BGR—— python、opencv、PIL、plt

四、其他说明

数据集标注的语音分割标签中前景的边界会有米色的边界。而我们生成的没有,是因为:在弱监督语义分割任务中,第一阶段是生成pseudo mask(伪掩膜),生成的掩膜每个像素位置的值都是类别。

对于voc中的标签和自己着色的标签,可能由于米色边界影响视觉看着不太一样,用着色器确认了一下,是一样的:

PS. 其中一些原理没有说明,后面有时间补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/821574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【100天精通python】Day22:字符串常用操作大全

目录 专栏导读 一、 字符串常用操作 1 拼接字符串 2 计算字符串长度 3 截取字符串 4 分割合并字符串 5 检索字符串 6 字母的大小写转换 7 去除字符串的空格和特殊字符 8 格式化字符串 二 、字符串编码转换 2.1 使用encode()方法编码 2.2 使用decoder()方法编码 专栏…

深度学习笔记-暂退法(Drop out)

背景 在机器学习的模型中,如果模型的参数太多,而训练样本又太少,训练出来的模型很容易产生过拟合的现象。在训练神经网络的时候经常会遇到过拟合的问题,过拟合具体表现在:模型在训练数据上损失函数较小,预…

Grandle安装配置(8.2.1)-windows环境

一、官网地址 https://gradle.org/releases/ 下载链接: https://downloads.gradle.org/distributions/gradle-8.2.1-bin.zip 下载后解压到指定文件夹,实例安装目录为: D:\ProgramFiles\gradle-8.2.1 二、配置环境变量 示例中配置的目录为&#xff1a…

二十一章:PUZZLE-CAM:通过匹配局部和全局特征来改进定位

0.摘要 弱监督语义分割(WSSS)被引入来缩小从像素级监督到图像级监督的语义分割性能差距。大多数先进的方法是基于类激活图(CAM)来生成伪标签以训练分割网络。WSSS的主要局限性在于从使用图像分类器的CAM生成伪标签的过程主要集中在…

【测试设计】基于正交法的测试用例设计工具--PICT

目录 前言 下载安装 用例生成 使用示例 具体操作: 资料获取方法 前言 我们都知道成对组合覆盖是一种非常有效的测试用例设计方法,但是实际工作过程中当成对组合量太大,我们往往很难做到有效的用例覆盖。 PICT是微软公司出品的一款成对…

spark-sql数据重复之File Output Committer问题

前言 我们先来回顾下之前介绍过的三种Committer:FileOutputCommitter V1、FileOutputCommitter V2、S3A Committer,其基本代表了整体的演进趋势。 核心代码讲解详细参照:Spark CommitCoordinator 保证数据一致性 OutputCommitter commitTask…

集群部署dolphinscheduler踩坑

本文主要总结一下最新版dolphinscheduler3.1.5的安装过程中遇到的坑。 dolphinscheduler启动报错 Exception in thread "Master-Server" org.springframework.beans.factory.BeanCreationException: Error creating bean with name masterServer: Invocation of in…

先进先出法与加权平均法的比较

加权平均法 加权平均的成本核算方法在计算销货成本和期末库存价值时使用每个库存物料的平均成本。企业将使用以下公式计算每个库存单位(在特定会计期间内)的平均成本: 平均库存成本 (所有采购商品的总成本)/&#xff…

Matlab Optimization Toolbox中的遗传算法工具包(GA)

matlab optimization 中使用了GA求解器 默认的是小于等于 找到GA 工具包 找到 APP选择 Optimization Tool 选择Solver ga - Genetic Algorithm 应用GA solver 定义适应度函数(Fitness function)与问题约束(Constraints) example one 优化函数 sin(x) 2 * cos(x)极其重要的…

【原创】IPTVC2实现方案(文末有demo)

前言: 名词解释: IPTVC2, 全称: 央视国际节目定价发布接口规范,标准版本当前最新为2.7.12 附赠资源链接,侵删:规范 规范中提供的样例,实现基于axis1.4(2006的时代宠物) 基于axis1版本的实现参考: Spring boot 集成Axis1.4 ,使用wsdd文件发…

C语言每日一题:12《数据结构》相交链表。

题目: 题目链接 思路一: 1.如果最后一个节点相同说明一定有交点。 2.使用两个循环获取一下长度,同时可以获取到尾节点。 3。注意初始化lenA和lenB为1,判断下一个节点是空是可以保留尾节点的。长度会少一个,尾节点没有…

【C++修炼之路】多态

👑作者主页:安 度 因 🏠学习社区:StackFrame 📖专栏链接:C修炼之路 文章目录 一、概念二、定义和实现1、虚函数2、虚函数的重写3、多态的构成条件4、重写的例外5、C11 override 和 final6、不能被继承的类7…

RxJava异步编程初探

RxJava 其实就是提供一套异步编程的 API,这套 API 是基于观察者模式的,而且是链式调用的,所以使用 RxJava 编写的代码的逻辑会非常简洁。 RxJava 有以下三个基本的元素: 被观察者(Observable)观察者&…

prometheus+grafana进行服务器资源监控

在性能测试中,服务器资源是值得关注一项内容,目前,市面上已经有很多的服务器资 源监控方法和各种不同的监控工具,方便在各个项目中使用。 但是,在性能测试中,究竟哪些指标值得被关注呢? 监控有…

SqlSugar、Freesql、Dos.ORM、EF、四种ORM框架的对比

SqlSugar、Freesql、Dos.ORM、EF、四种ORM框架的对比 一、默认情况下,导航属性是延迟查询; 答:ORM(Object-relational mapping)即对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。也就是说,ORM是通过使用描述对象和数据库之间映射的元数据…

线程状态

从卖包子的案例学习进程间的通信 public class Test {public static void main(String[] args) {Object objnew Object();Thread th1new Thread(){Overridepublic void run() {synchronized (obj){System.out.println("来三个包子!");try {obj.wait(); /…

IDEA删除本地git仓库、创建本地git仓库、关联其他仓库并上传

IDEA删除本地git仓库、创建本地git仓库、关联其他仓库并上传 删除本地Git仓库 创建本地Git仓库 关联其他仓库并上传 要在IntelliJ IDEA中删除本地Git仓库并创建新的本地Git仓库,以及关联其他仓库并上传,请按照以下步骤进行操作: 删除本地G…

【笔记】数据结构与算法 python-03-列表查找

列表查找 在一个数据结构中,通过一定的方法找出与给定关键字相同的数据元素的过程。 列表查找(线性表查找):从列表(一种线性数据结构,元素按照一定的顺序存储,每个元素都有一个唯一的位置索引…

网络出口技术中的单一出口网络结构,你会用吗?

我们在设计一个园区网络的时候,园区网络的出口需要和运营商的网络进行对接,从而提供internet服务。 在和运营商网络对接的时候,一般采用如下3终方式: 单一出口网络结构 1、网络拓扑 终端用户接入到交换机,交换机直…

干货 ,ChatGPT 4.0插件Review Reader,秒杀一切选品神器

Hi! 大家好,我是专注于AI项目实战的赤辰,今天继续跟大家介绍另外一款GPT4.0插件Review Reader(评论阅读器)。 做电商领域的小伙伴们,都知道选品分析至关重要,可以说选品决定成败,它直接关系到产…