如何根据图像分辨率计算特征数量?

机器算法验证 特征选择 图像处理
2022-02-01 20:18:33

刚刚介绍了 Andrew Ng 的神经网络非线性假设,我们有一个多项选择题,用于确定分辨率为 100x100 灰度强度的图像特征数量

答案是 5000 万美元,5 x 107

但是,之前是 50 x 50 像素的灰度图像。特征数量为 50x50 (2500)

为什么会是 5 x 107 而不是 10,000

然而,他确实说包括所有二次项 (xixj) 作为特征

假设您正在学习从 100×100 像素图像(灰度,而不是 RGB)中识别汽车。让特征是像素强度值。如果您训练逻辑回归,包括所有二次项 (xixj) 作为特征,您将拥有多少特征?

在前面关于 100x100 的幻灯片中,二次特征 (xi x xj) = 300 万个特征,但我仍然无法确定连接。

3个回答

也许一个更简单的案例会让事情变得更清楚。假设我们选择 1x2 像素样本而不是 100x100。

从图像中采样像素

+----+----+
| x1 | x2 |
+----+----+

想象一下,在绘制我们的训练集时,我们注意到它不能用线性模型轻易分离,因此我们选择添加多项式项以更好地拟合数据。

比方说,我们决定通过包含所有像素强度以及可以从它们形成的所有可能的倍数来构造我们的多项式。

由于我们的矩阵很小,让我们枚举它们:

x1, x2, x12, x22, x1×x2, x2×x1

解读上面的特征序列可以看出是有规律的。前两项,即第 1 组,是仅由其像素强度组成的特征。之后的以下两项,即第 2 组,是由其强度平方组成的特征。最后两项,第 3 组,是所有成对(两个)像素强度组合的乘积。

第 1 组:$x_1,\x_2$x1, x2

第 2 组:$x_1^2,\x_2^2$x12, x22

第 3 组:$x_1 \times x_2,\ x_2 \times x_1$x1×x2, x2×x1

但是等等,有一个问题。如果您查看序列中的第 3 组项($ x_1 \times x_2$ 和 $x_2 \times x_1$),您会注意到它们是相等的。记住我们的住房例子。想象一下,对于同一个房子有两个特征 x1 = 平方英尺和 x2 = 平方英尺......这没有任何意义!好的,所以我们需要摆脱重复的特征,让我们任意说 $x_2 \times x_1$。现在我们可以将第三组特征的列表重写为:x1×x2 and x2×x1) you'll notice that they are equal. Remember our housing example. Imagine having two features x1 = square footage, and x2 = square footage, for the same house... That doesn't make any sense! Ok, so we need to get rid of the duplicate feature, lets say arbitrarily x2×x1. Now we can rewrite the list of group three features as:

第 3 组:$x_1 \times x_2$x1×x2

我们计算所有三组中的特征并得到 5。

但这是一个玩具示例。让我们推导出一个计算特征数量的通用公式。让我们使用我们最初的特征组作为起点。

sizegroup1+sizegroup2+sizegroup3=m×n+m×n+m×n=3×m×n

啊! 但是我们必须去掉第 3 组中的重复产品。

因此,为了正确计算第 3 组的特征,我们需要一种方法来计算矩阵中所有唯一的成对产品。这可以通过二项式系数来完成,这是一种从大小为 n 的相等或更大的组中计算所有可能的大小为 k 的唯一子组的方法。因此,要正确计算第 3 组中的特征,请计算 $C(m \times n, 2)$。C(m×n,2).

所以我们的通用公式是:

m×n+m×n+C(m×n,2)=2m×n+C(m×n,2)

让我们用它来计算我们玩具示例中的特征数量:

2×1×2+C(1×2,2)=4+1=5

就是这样!

如果您使用所有线性和二次特征,则总数应该是:

100*100 + 100*100 + C(100*100,2) = 50015000
10000   + 10000   + 49995000     = 50015000
xi         xi^2       xixj

计算 Octave/Matlab 中的组合

octave:23> nchoosek(100*100,2)
ans =  49995000

( )/2 的想法也可能适用于获得二次特征。因此,如果 n = 2500,那么我们知道 x(i) = 2500 并将 x 代入公式中将得到 5000 万x2