特征提取

特征提取（Feature extraction）在机器学习、模式识别和图像处理中有很多的应用。特征提取是从一个初始测量的资料集合中开始做，然后建构出富含资讯性而且不冗余的导出值，称为特征值（feature）。它可以帮助接续的学习过程和归纳的步骤，在某些情况下可以让人更容易对资料做出较好的诠释。特征提取是一个降低维度的步骤，初始的资料集合被降到更容易管理的族群（特征）以便于学习，同时保持描述原始资料集的精准性与完整性。

当一个算法的输入资料太过于庞大冗余以至于不便处理（如：一样的测量方法但是分别使用英尺和米表示，或是影像中像素的重复性），这些资料可以被转换成化简后的特征集合，也称作特征向量（feature vector），决定这些原始资料子集的步骤称为特征提取。成功的情形下，被选择的特征包含跟输入资料相关的资讯，因此这些被化简后的特征能够被用来做理想的任务，而不使用原始完整的初始资料来做这个任务。

## 概论

相较于原始庞大的资料集合需要很大量的资源来描述，特征提取可以减少需要描述这些资料的资源。当我们分析复杂资料时，其中一个主要的问题是源自于变数的数量过多。分析很多个变数一般来说需要很大量的内存以及计算能力，同时太多变数也可能造成分类问题的算法有过度拟合于训练资料的现象，因此对新的采样无法有效地归纳。特征提取是处理变数组合并维持资料充足的准确性时，常通称的术语。很多机器学习的实作者认为适当的特征提取是有效模型构建的关键。

可以利用已经建构好的应用相关的特征集合来改善结果，通常这样的特征集合是被专家所建构。其中一种此类处理被叫做特征工程师。除此之外，我们也可以使用一般的降维技术，如下:

- 独立成分分析
- 等距特征映射
- 核主成分分析
- 潜在语义学
- 偏最小二乘回归
- 主成分分析
- 多因子降维法
- 非线性降维
- 多线性主成分分析
- 半定式嵌入
- 自编码器

## 图像处理

特征提取其中一个非常重要的应用领域为图像处理，其中的算法可以被用来侦测跟分离数位影像跟影片串流中，想要提取的部分或形状(特征)，无论是哪种类型的图像，二值图像（binary image）、彩色图像（colored image）或灰度图像（gray image），图像处理都可以通过特征提取来进行，特征提取可以应用于多种用途，像是识别（identification）、分类（classification）、诊断（diagnosis）、聚类（clustering）、认识（recognition）、检测（detection）。而从初始的特征提取原理说起，当中最为重要的几个特征提取方法又可以分为四种：几何特征、统计特征、纹理特征和色彩特征。

### 色彩特征

色彩特征的定义：色彩特征可以被定义为能够根据图像自身的颜色特征来区分图像的尺度（scales）。

色矩 (英语：Color Moments)

在图像中，色彩矩被解释为概率分布（probability distribution）。色彩矩有三个主要部分：均值（Mean）、标准差（Standard Deviation）和偏度（Skewness）。

- 均值 (Mean)

平均值可以被定义为影像中的平均色彩值，由以下方程式定义。

$$M_j = \frac{1}{M} \sum_{i=1}^{m} P_{ji}$$

- 标准差（Standard Deviation）

标准差是分布变异的平方根，以下方程式解释了标准差的定义。

$$\sigma_j = \sqrt{\frac{1}{M} \sum_{i=1}^{M} (P_{ji} - M_j)^2}$$

- 偏差 （Skewness）

将偏差解释为分布不对称程度的量测。

$$S_1 = \sqrt[3]{\frac{1}{M} \sum_{i=1}^{M} (P_{ji} - M_j)^3}$$

- 偏度 （Color Moment Skewness）

偏度是描述数据分布不对称性的统计量，正偏表示右侧有长尾，负偏表示左侧有长尾，零值表示对称分布。

$$s_j = \sqrt[3]{\frac{1}{N} \sum_{i=1}^{N} (p_{ij} - \mu_j)^3}$$

色彩直方图

颜色是最常见且广泛使用的特征，因为相较于其他特性，它更直观且包含更多重要的信息。从图像中提取颜色特征非常容易，而且颜色直方图将颜色分布以一组方框呈现。

平均RGB值使用此功能的目的是在使用各种功能时进行影像过滤。第二个原因选择这个特征是因为使用少量资料来表示向量参数。

### 纹理特征

纹理是自然界中随处可见的许多类型影像的最重要特征例如医学影像和感测器影像等。纹理定义为表面人类视觉系统对自然物体的表现。很容易被大家肉眼辨识，但很难确定矩阵中的纹理，但它发生在分析的矩阵区域中透过定量和定性分析进行，其主要有两种方法。

灰阶共生矩阵 (Gray Level Co-occurrence Matrices (GLCM))

用于测量影像上给定偏移处出现的灰阶值的直方图。用于提取纹理来自破碎的组织图像。这些是 GLCM 熵、对比、相关性、能量和均匀性所特有的五种不同的纹理特征。

- 熵（Entropy）

利用随机性的统计测量来区分输入影像的纹理。

$$\text{Entropy} = -\sum\sum{q(i,j)\log{q(i,j)}}$$

其中 $q$ 是GLCM中灰阶共生矩阵的数量。

- 对比

计算整个影像的像素和相邻像素之间的密度对比。

$$\text{Contrast} = \sum {(i, j)^2 q(i, j)}$$

其中，$q(i,j)$ 为位置 $(i,j)$ 的像素。

- 相关性

这个尺度的作用是衡量指定像素对中指定的几率。

$\text{Correlation} = \sum_{i=0}^{M-1} \sum_{j=0}^{M-1} \frac{(i - n_i)(j - n_j) q(i, j)}{\sigma_i \sigma_j}$

- 能量

是 GLCM 中元素的平方和。

$$\text{Energy} = \sum\sum {q(i,j)^2}$$

- 均匀性

它用于测量 GLCM 中元素分布到 GLCM 对角线的近似程度，如下公式所定义。

$$\text{Homogeneity} = \sum_{i,j} \frac{q(j,i)}{1+\left| {j-i} \right|}$$

Tamura

- 粗糙度（英语：Coarseness）

粗糙度主要是与灰度空间变化的距离相联系，这隐含地与构成纹理的原始元素的大小相关联。它直接与尺度和重复的平均值以及最大主要纹理特征相关。图像在不同的尺度上包含迭代的纹理图案，粗糙度试图找到组织存在的最大尺寸，即使在较小的组织情况下，如下方程所示。

$$R_M(x,y) = \sum_{i=x-2^{M-1}-1}^{x+2^{M-1}} \sum_{y-2^{M-1}-1}^{y+2^{M-1}} \frac{F(i,j)}{2^{2M}}$$

其中，$2^{M*}2^M$大小为邻域的平均值。

方程式如下表示计算对应于非重叠邻域的一对平均值之间的差异。

$$S_{M,h}(x,y) = \left|R_M(x+2^{M-1},y)-R_M(x-2^{M-1},y) \right|$$

- 对比

灰阶变化程度的测量分配是其分布为黑色或白色。确定对比度，使用四阶灰度和二阶的中心矩。

$\text{Contrast} = \frac{\sigma} {\alpha_4}$, where $\alpha_4 = \frac{N_4}{\sigma^4}$

where $N_4$ is the fourth moment about the mean and 2 is the variance. $m = 1/4$ to give the closest

value according to Tamura.

- 方向性（英语：Directionality）

方向性（Directionality）是衡量图像中局部边缘相对于方向角分布频率的方法。它是一个区域的全局属性。这一特征不能区分趋势或模式，但通过方向性来测量图像的整体方向性程度。在Tamura特征中，方向性是最重要的特征之一，它通过矩阵来区分图像之间区域一致性的差异。

$$\text{Directionality} = 1-rm_{peaks}\sum_{p=1}^{m_{peaks}}\sum_{b \in w_{p}}(b-b_p)^2H_{directionality}(b)$$

其中：

$m_p$：峰值的数量

$b_p$：峰值的位置

$w_p$：分配给第P个峰值的角度范围

$r$：一个与角度的量化水平相关的归一化因子

$b$：量化的方向角

$\mathrm{H_{directionality}}$：量化方向值的直方图，由具有相应方向角的边缘像素数量构成

- 线条相似性（英语：Line-Likeness）

线状性（Line-likeness）仅指纹理基元的形状。线状纹理具有直线或波状的基元，其方向可能不固定。通常，线状纹理同时具有方向性。线状性（flin）可以按如下方式计算：

$$flin = \sum\sum{PDd(i,j)njmicos^{f()}[(i-j)2\pi n}]\sum\sum{PDd(i,j)njmi}$$

其中$PDd(i,j)$是距离 d 处的点的 n×n 局部方向共生矩阵。

- 规律性（英语：Regularity）

规律性（Regularity）衡量图像中模式的恒定性或可比较性，其定义如下公式所示：

$$\text{Y}_{\text{Regularity}} = 1 - R(C_{\text{CRS}} + C_{\text{con}} + C_{\text{dir}} + C_{\text{lin}})$$

其中:

$R$ 是一个归一化因子。

$C_{\text{CRS}}$ 是粗糙度指标，表示 $f_{\text{CRS}}$ 的标准差。

$C_{\text{con}}$ 是对比度指标，表示 $f_{\text{con}}$ 的标准差。

$C_\text{dir}$ 是方向性指标，表示 $f_\text{dir}$ 的标准差。

$C_\text{line}$ 是线状性指标，表示 $f_\text{line}$ 的标准差。

- 粗糙度（英语：Roughness）

规律性（Regularity）衡量图像中模式的恒定性或可比较性，其定义如下公式所示：

$$Roughness = Coarseness + contrast$$

常见的影像处理相关的特征处理如下:

### 低阶的特征

- 边缘检测
- 角检测
- 斑点检测
- 脊检测
- 尺度不变特征转换

### 曲率

- 边缘方向
- 改变强度
- 自相关

### 影像动作

- 移动侦测
- 微分方法
- 光流法

### 形状相关

- 二值化
- 连通分量标记
- 模板匹配
- 霍夫变换
- 广义霍夫变换

## 软件中的特征提取

很多资料分析的软件包提供特征提取以前资料降维。常见的数值编程环境有提供内建的指令来做一些较简单而常用的特称提取(例如:主成分分析)。更多特定的算法可以在公开的脚本或第三方提供的扩充包中取得。另外，也有软件包为了特定软件机器学习应用，特别为其设计特征提取。

## 深度学习的特征提取

以往主成分分析为特征提取极常使用的降维方法，近来利用深度学习神经网络的自编码器则相当常被使用。他可以跟深度学习中的各种技术(例如:深度神经网络，卷积神经网络)结合。其中，卷积神经网络能十分有效的撷取影像中的特征，因此对于影像的资料降维撷取特征的效果特别杰出。此外，卷积神经网络在大型数据库中影像辨识相关的议题上(例如:物件分类)取得相当杰出的成果。因此也有人使用在大型数据库上预先训练好的卷积神经网络来做特征提取。

### 现代特征提取技术

方法｜创新点｜适用领域

Vision Transformer｜基于注意力机制的图像分块处理｜CV/NLP

MoCo v3｜对比自监督学习｜跨模态任务

DINO｜自蒸馏特征提取｜Few-shot学习

基准测试*（ImageNet-1K）：

- - ViT-L/16 Top-1 Acc: 85.3%
- - ResNet-50 Top-1 Acc: 76.5%