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


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

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

    目录

    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 在实际应用中的实用价值。

    文章详细阅读:用于图像分类|的局部性约束线性编码IEEE会议出版|IEEE Xplore

     

     

    2 数学模型 

     argminCi=1NxiBci2 s.t. ci0=1,ci1=1,ci0,i" role="presentation" style="position: relative;">argminCi=1NxiBci2 s.t. ci0=1,ci1=1,ci0,i

    argminCi=1NxiBci2+λci1" role="presentation" style="position: relative;">argminCi=1NxiBci2+λci1

    argminC,Bi=1NxiBci2+λdici2 st. 1ci=1,ibj21,j" role="presentation" style="position: relative;">argminC,Bi=1NxiBci2+λdici2 st. 1ci=1,ibj21,j

    详细数学模型见:用于图像分类|的局部性约束线性编码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代码实现 

    本文仅展现部分代码,全部代码见:🍞正在为您运送作品详情

    1. import numpy as np
    2. import numpy.linalg
    3. import math
    4. import os.path
    5. from LLC_coding_appr import LLC_coding_appr
    6. def LLC_pooling(B,X,pyramid,knn,img_width,img_height,X1,Y):
    7. dSize = B.shape[1]
    8. nSmp = X.shape[1]
    9. idxBin = np.transpose(np.zeros(nSmp))

    5 写在最后

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

  • 相关阅读:
    React实现多图片预览功能、预览图上下张切换(实战示例)
    tomcat启动,测试被拒绝连接
    Kettle【实践 07】CSV类型文件数据解析及Concat fields使用(云资源分享:ktr脚本+csv测试文件)
    回顾vmware 补充细节
    Elasticsearch脑裂
    排行榜谁最稳?
    Python高级语法----深入理解Python协程
    手写堆与堆的常见操作
    最优控制问题中的折扣因子
    C# 一周入门之《C#-类和对象》Day Six
  • 原文地址:https://blog.csdn.net/weixin_46039719/article/details/126331131