【问题标题】:Numpy Array python dimension uniformNumpy Array python 维度统一
【发布时间】:2015-08-04 08:33:14
【问题描述】:

我有一个二维数组,一维有 15 个元素,第二维有可变长度

例如

>>print abc.size()
15
>>print abc[0].size()
5873
>>print abc[1].size()
9825

如何使用 numpy 或skikit 稀疏数组使数组维度统一。数据是图像的特征。

【问题讨论】:

  • 什么是abcnumpy 数组没有 size 方法。它有一个size 属性。但是如果它是一个数组,你应该给我们shapedtype,而不是size

标签: python arrays numpy scikit-learn


【解决方案1】:

假设您想将所有数组向左对齐,并用零填充右侧,那么您可以先找到最大长度

max_len = max([abc[i].size() for for i in range(abc.size())])

然后使用zeros填充:

import numpy as np

for i in range(abc.size()):
    abc[i] = np.append(abc[i], np.zeros(max_len - abc[i].size())

【讨论】:

    【解决方案2】:

    这里有两种可能的情况:

    1. abc一个图像列表,对于每个图像abc[i] 是图像i 的一组特征。

    2. abc一个图像,每个abc[i] 是图像的i-th hog 特征

    对于第一种情况,图像大小或 hog 参数(邻居的大小)因图像而异,因此您需要调整参数以便正确计算所有图像的 hog 特征(如果您想要固定大小的描述符)。

    对于第二种情况,您的 hog 计算不正确(不应该发生同一图像的 hog 描述符的大小不同的情况)。

    因此,在任何情况下,您的数组都无法使用resizing。你需要修正你的猪计算。


    编辑:与您的问题相关,您有一个不同尺寸图像的数据集。这是使用 hog 描述符进行图像分类的两种可能的常用方法。但首先,快速总结一下 HOG:

    • HOG 在M x N 窗口中分割图像,每个窗口大小为m x n,并在该窗口中使用固定的W 箱数(方向数)计算直方图方向梯度。因此,您最终将获得M x N x W 功能。特征通常在大小为K x WK = M x N 的二维向量中展平。

    现在,分类有两种常用方法:

    1. 将图像的所有特征合二为一,即对K 特征执行平均(或加权平均或范数),最终得到每个图像大小为W 的向量(方向的数量)。

    2. 为了保留(或多或少)特征的空间关系,另一种更常见的方法是连接所有特征,以便最终得到大小为 ZZ = K x W 的扁平一维向量/

    根据您的数据,我认为您正在尝试执行第二步。您面临的问题是图像具有不同的大小,因此,对于固定的窗口大小m x n,特征数量因一张图像而异。

    您可以解决这个问题的方法是,通过固定您想要的特征数量 M x N,对于给定的图像,计算 m = height / Mn = width / N 并使用该自定义 m x n 窗口大小计算 HOG 描述符(每个图像都不同)。这样,您最终将得到一个 K = M x N 向量,每个图像具有相同的 K(但窗口大小不同)。

    使用固定的K 并因此固定Z,您将能够执行分类。

    我不知道您使用哪个库来计算 HOG,但 m x n 窗口大小参数应该很容易为每个图像手动设置。

    希望对你有帮助!

    【讨论】:

    • 告诉我更多关于第一种情况的信息,如何为所有图像或任何其他图像特征生成相同数量的 hog 特征,从而产生相同数量。你对图像分类有什么建议>
    • @Aunn Raza 你在找什么样的分类?为图像分配一个类别(此图像是海洋、天空或自然图像或合成图像或 wathever..)或为图像的每个像素/区域/超像素分配一个类别(图像的此区域是草,这个区域是砖块......)
    • 第一个,实际上是 caltech101 数据集上的对象识别。
    • 谢谢你!帮了很多忙,我分别使用 scikit 的 skimage 和 sklearn 进行特征提取和分类
    • @Aunn Raza 很高兴它有帮助:D 使用 scikit 的猪的 pixels per cellcells per block 参数,您可以轻松 i> 为每张图片设置相同的M x N
    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2017-06-10
    • 2016-02-21
    • 1970-01-01
    • 2015-01-13
    • 2021-07-03
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多