2.1.1 传统图像分类算法
传统图像分类算法首先检测图像中的关键点,如果计算时考虑所有像素点,不仅会大大增加运算量,还会减弱特征的可区分性,使其趋向于所有像素信息的平均。关键点检测算法通过特定准则选择具有明确定义和局部纹理特征比较明显的像素点、边缘、焦点、区块等,通常具有一定的不变性,常用的关键点检测算子包括Harris角点检测子、高斯-拉普拉斯算子(Laplacian of Gaussian,LoG)、高斯差分算子(Difference of Gaussian,DoG)等。
随着图像分类技术的发展,研究者发现基于密集采样获取的特征更为有效,即从图像中按固定的步长、尺度选取大量关键点进行局部特征提取。密集采样能更好地保存图像信息,此外,固定步长的密集采样方式能稳定得到关键点。相反,上述检测方法有时得到的关键点数量过少,无法进行后续计算。研究者也证明了密集采样关键点的方法要好于只用关键点检测的方法。
得到关键点之后,需要对每个关键点设计局部图像特征描述子,局部图像特征描述的核心问题是鲁棒性和可区分性。即使是同一个物体,由于光照、角度、尺寸等变化,其在像素矩阵中也会有很大变化,构建描述子时,希望同一个或同一类物体在相同部位的特征尽量接近。可区分性则是用来区分物体不同位置的,这有助于全局特征和分类器的学习。常用的局部特征包括尺度不变特征转换(Scale Invariant Feature Transform,SIFT)、方向梯度直方图(Histogram of Oriented Gradient,HoG)、局部二值模式(Local Binary Pattern,LBP)等,如图2-1所示。
图2-1 局部特征提取示例
密集提取的底层特征中包含大量的冗余信息与噪声,为提高特征表达的鲁棒性,需要使用一种特征变换算法对底层特征进行编码,从而获得更具可区分性、更加鲁棒的特征表达。这一步对物体识别的性能具有至关重要的作用,因而大量的研究工作都集中在特征编码方法的设计上,重要的特征编码算法包括向量量化编码、稀疏编码、局部线性约束编码、显著性编码等。
很多编码都可以用词袋模型描述,如图2-2所示。词袋模型构建一个较小的特征集合(即视觉词袋),从图像关键点处提取的描述子,用词袋中词(向量)的组合来表示,组合系数称为编码。例如,向量量化编码在最近的视觉单词上响应为1,编码为独热(One-Hot)向量。稀疏编码是对编码进行稀疏约束,即编码系数中只有少量值是非零的。研究者发现,稀疏编码能大大提高特征的可区分性,在深度学习之前,稀疏编码在图像分类领域取得了很好的效果。
图2-2 视觉词袋模型示例
对局部特征进行转换编码,进一步增加了特征的可区分性。在进行分类任务之前,还需要将局部特征汇聚为全局特征。这一步获得的图像表征具有一定的特征不变性。更重要的是,全局特征在同一空间表示尺寸各异的图像,从而避免用(局部)特征集表征图像,这样既节省了图像特征的存储空间和计算量,也使得分类器的结构更简洁。
特征汇聚的常用方式是取特征编码集在每一维中的最大值或平均值,实验结果表明,最大值在大部分情况下要优于平均值,因此更为普及。此外,图像具有很强的空间结构约束,金字塔空间匹配先将图像均匀分块,每块图像中的局部特征单独进行特征汇聚,然后将各块汇聚得到的特征进行拼接,最终得到全局图像的表达,如图2-3所示。
图2-3 金字塔空间汇聚示意
传统图像分类算法在处理图像分类任务时,首先用特征提取的方法将所有图像都映射为高维向量,然后用分类器进行图像特征到图像类标签的映射。常用的分类器有支持向量机、k-近邻、贝叶斯推理等,其中基于最大化边界的支持向量机在分类任务上有很好的性能。