Python小技巧 - 颜色和类之间的映射

本文介绍了一种将黑白标签图高效转换为彩色图的方法,利用矩阵操作替代循环,显著提升了处理速度,适用于语义分割任务。

在做语义分割的时候,我们往往会遇到彩色的 ground truth 和 label map 之间的相互映射。这个时候最常用的方法就是用循环来做,这样是最简单的实现方法,但是效率低,循环过大会直接导致电脑卡死,而且代码还不美观;知道用矩阵来操作的话效率会高很多,但苦于不会实现。经过一番参考学习之后提供给大家一个简单高效的实现方法。

import numpy as np

def label_mapping(gts):

    colorize = np.zeros([4,3],'uint8')
    colorize[0,:] = [ 30, 100,  30]
    colorize[1,:] = [200, 200, 200]
    colorize[2,:] = [  0, 255,   0]
    colorize[3,:] = [  0,   0, 255]

    ims = colorize[gts,:].reshape([gts.shape[0],gts.shape[1],3])
    return ims

对于一个有4个类的图像来说,输入 gts 为一张只含有 label 的图像, 输出 ims 为映射后的彩色图像,非常简洁美观,而且效率也高。

做了一个测试,500x500 的 label map,对于用 for 循环来实现映射的方法,10张图像的每张平均预测时间为 0.412 秒,相同条件下用上述方法时间为 0.003 秒。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值