在onehot pixelwise实验室中优化生成空类

2024-09-27 09:31:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为图像分割模型准备数据。我有5类每像素,不累计覆盖整个图像,所以我想创建一个'空'类作为第6类。现在,我有一个热编码的ndarray和一个解决方案,可以进行一系列Python调用,我希望优化这些调用。 我现在的草图代码:

arrs.shape
(25, 25, 5)

null_class = np.zeros(arrs.shape[:-1])
for i in range(arrs.shape[0]):
    for j in range(arrs.shape[1]):
        if not np.any(arrs[i][j] == 1):
            null_class[i][j] = 1

理想情况下,我会找到一些行和更有效的方法来计算空示例-我的实际训练数据来自20K x 20K图像,我希望一次计算和存储所有这些数据。有什么建议吗?你知道吗


Tags: 数据in模型图像编码fornprange
1条回答
网友
1楼 · 发布于 2024-09-27 09:31:32

我相信你可以用^{}^{}的组合来做到这一点。使用all检查最后一个维度上的所有零将得到一个布尔数组,即True,其中null_class应该是1。为了便于显示,我将使用(2,2,5)数组。你知道吗

arr = np.random.randint(0, 2, size=(2,2,5))
null_class = np.zeros(arr.shape[:-1])
arr[0, 0] = [0, 0, 0, 0, 0]
arr
array([[[0, 0, 0, 0, 0],
        [1, 1, 1, 1, 1]],

       [[0, 0, 1, 0, 0],
        [0, 1, 1, 1, 0]]])
np.all(arr[:, :] == 0, axis=2)
array([[ True, False],
       [False, False]], dtype=bool)
np.where(np.all(arr[:, :] == 0, axis=2))
(array([0]), array([0]))
null_class[np.where(np.all(arr[:, :] == 0, axis=2)] = 1
null_class
array([[ 1.,  0.],
       [ 0.,  0.]])

相关问题 更多 >

    热门问题