zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【图像处理】用于图像分类的局部约束线性编码(Python代码实现)

Python编码图像处理代码 实现 图像 分类 用于
2023-09-14 09:05:25 时间

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥

📋📋📋本文目录如下:⛳️⛳️⛳️

目录

1 概述

2 数学模型 

3 实验结果

4 Python代码实现 

5 写在最后

1 概述

经过训练的分类模型可以准确识别出图像中的具体对象,找出“图像中有什么”,但针对诸如“图片描述了什么”的抽象概念标签的图像分类问题研究较少,研究难度也更大。抽象概念标签不属于图像中包含的任何一个具体的对象,而是由许多不同的概念混合在一起,所以直接学习这个抽象标签相当困难。为了解决这类抽象标签的图像分类问题,借助多示例学习方法思路,设计并实现了多示例两阶段模型。

他最近最先进的图像分类系统由两个主要部分组成:特征袋 (BoF) [19, 4] 和空间金字塔匹配 (SPM) [15]。 BoF 方法将图像表示为其局部特征的直方图。它对特征的空间转换特别健壮,并且在全图像分类任务中表现出不错的性能。然而,BoF 方法忽略了有关特征空间布局的信息,因此无法捕获形状或定位对象。尽管传统的 SPM 方法在图像分类方面效果很好,但人们凭经验发现,为了获得良好的性能,传统的 SPM 必须使用具有非线性 Mercer 核的分类器,例如卡方核。因此,非线性分类器必须提供额外的计算复杂度,在训练中承载 O(n3),在 SVM 中承载 O(n),其中 n 是支持向量的数量。这意味着 SPM 方法对于实际应用程序的可扩展性较差。

基于基于特征包(BoF)的传统 SPM 方法需要非线性分类器来实现良好的图像分类性能。本文提出了一种简单但有效的编码方案,称为局部约束线性编码 (LLC),以代替传统 SPM 中的 VQ 编码。 LLC利用局部性约束将每个描述符投影到其局部坐标系中,并通过最大池化整合投影坐标以生成最终表示。使用线性分类器,所提出的方法的性能明显优于传统的非线性 SPM,在多个基准测试中实现了最先进的性能。与稀疏编码策略 [22] 相比,LLC 使用的目标函数具有解析解。此外,本文提出了一种快速逼近LLC方法,首先执行K最近邻搜索,然后求解约束最小二乘拟合问题,计算复杂度为O(M + K2)。因此,即使有非常大的码本,我们的系统仍然可以每秒处理多个帧。这种效率显着增加了 LLC 在实际应用中的实用价值。

2 数学模型 

 \begin{aligned} \arg \min _{\mathbf{C}} & \sum_{i=1}^{N}\left\|\mathbf{x}_{i}-\mathbf{B} \mathbf{c}_{i}\right\|^{2} \\ \text { s.t. }\left\|\mathbf{c}_{i}\right\|_{\ell^{0}}=1,\left\|\mathbf{c}_{i}\right\|_{\ell^{1}}=1, \mathbf{c}_{i} \succeq 0, \forall i \end{aligned}

\arg \min _{\mathbf{C}} \sum_{i=1}^{N}\left\|\mathbf{x}_{i}-\mathbf{B} \mathbf{c}_{i}\right\|^{2}+\lambda\left\|\mathbf{c}_{i}\right\|_{\ell^{1}}

\begin{aligned} \arg \min _{\mathbf{C}, \mathbf{B}} & \sum_{i=1}^{N}\left\|\mathbf{x}_{i}-\mathbf{B c}_{i}\right\|^{2}+\lambda\left\|\mathbf{d}_{i} \odot \mathbf{c}_{i}\right\|^{2} \\ \text { st. } \mathbf{1}^{\top} \mathbf{c}_{i}=1, \forall i \\ \left\|\mathbf{b}_{j}\right\|^{2} \leq 1, \forall j \end{aligned}

详细数学模型见:用于图像分类|的局部性约束线性编码IEEE会议出版|IEEE Xplore

3 实验结果

在本节中,我们基于三个广泛使用的数据集报告结果:Caltech-101 [7]、Caltech-256 [11] 和 Pascal VOC 2007 [6]。在整个实验过程中,我们仅使用了一个描述符,即定向梯度直方图 (HOG) [5]。在我们的设置中,HOG 特征是从图像上每 8 个像素密集定位的块中提取的,分别在 16×16、25×25 和 31×31 三个尺度下。每个 HOG 描述符的维数为 128。在 LLC 处理过程中,仅使用了近似的 LLC,并且邻居的数量设置为 5(第 3 节),具有移位不变约束。在“SPM”层,对于每个空间子区域。

                      来自 Caltech-256 数据中分类准确度最高的类别的示例图像 

4 Python代码实现 

部分代码:

import numpy as np
import numpy.linalg
import math
import os.path
from LLC_coding_appr import LLC_coding_appr

def LLC_pooling(B,X,pyramid,knn,img_width,img_height,X1,Y):
    dSize = B.shape[1]
    nSmp = X.shape[1]
    
    idxBin = np.transpose(np.zeros(nSmp))

5 写在最后

部分理论引用网络文献,若有侵权请联系博主删除。