Supervised Learning of Semantics-Preserving Hashing via Deep Neural Networks for Large-Scale Image S

本文提出一种监督深度散列方法SSHD,利用深度学习统一图像分类与检索,构建二进制散列码,提高大规模图像搜索效率。通过优化目标函数,确保语义相似图像具有相似散列码。

Yang H F, Lin K, Chen C S. Supervised Learning of Semantics-Preserving Hashing via Deep Neural Networks for Large-Scale Image Search[J]. Computer Science, 2015.


摘要 :本文提出了一种监督深度散列方法,从大规模图像搜索的标记数据构建二进制散列码。我们假设语义标签由一组潜在属性管理,其中每个属性可以打开或关闭,并且分类依赖于这些属性。基于这个假设,我们的方法称为监督语义保留深度散列(SSHD)。构造散列函数作为深层网络中的潜在层,其中二进制代码通过在分类误差上定义的目标函数的优化和其他期望的 哈希码的属性。通过这种设计,SSDH具有在单个学习模型中统一分类和检索的良好属性,并且学习的二进制代码不仅保持图像之间的语义相似性,而且对于图像搜索有效。此外,SSHD以点的方式执行图像表示,散列码和分类的联合学习,因此自然地可缩放到大规模数据集。SSHD是简单的,可以通过轻微修改现有的深层架构来轻松实现分类;但它对于几个基准和一个包含超过100万个图像的大数据集是有效的并且优于其他无监督和监督散列方法。


1. 介绍

        构建用于图像搜索的相似性保留二进制代码的HASHING方法在视觉社区中已经引起了极大的关注[1] - [4]。设计散列函数的关键原理是将类似内容的图像映射到相似的二进制代码,这相当于将高维视觉数据映射到低维汉明(二进制)空间。在这样做之后,可以通过简单地计算二进制向量之间的汉明距离来执行近似最近邻(ANN)搜索,这种操作可以非常快速地完成。目前,基于学习的散列方法已经变得流行,因为它们在代码构造中利用训练样本,并且学习的二进制代码比通过局部敏感散列法(LSH)[5] - [7]的方法更有效,其将类似图像映射到相同 通过随机投影具有高概率的桶,不使用训练数据,并且因此需要更长的代码以获得高搜索准确性。在各种基于学习的散列方法中,其中在散列函数学习期间利用监督信息(例如,图像对之间的相似性或标签)的监督散列可以学习更好地捕获图像数据之间的语义结构的二进制代码。虽然监督哈希方法产生有希望的性能,但是许多在训练阶段使用训练样本的对或三元组,并且需要长的计算时间和用于训练的高存储成本,使得它们对于巨大的图像集合是不切实际的。

        在本文中,通过利用深度学习,我们提出了监督语义 - 保留深度散列(SSD)用于从标记的训练图像学习二进制代码。SSHD背后的想法是图像标签可以由一组潜在属性(即,二进制代码)隐含地表示,并且分类依赖于这些属性。基于这个想法,我们构造散列函数作为卷积神经网络(CNN)中的图像表示和分类输出之间的潜在层,并且可以通过对分类误差上定义的目标函数的最小化来学习二进制代码。这种设计产生一个简单和有效的深层网络,统一在单个学习过程中的分类和检索,也鼓励语义相似的图像具有相似的二进制代码。此外,为了使散列码更紧凑,我们对学习目标施加额外的约束,以使每个散列比特携带尽可能多的信息。SSD的概述如图1所示。几个基准测试的实验结果表明,我们的SSHD提供了优于其他散列方法的性能。我们还对包含超过100万个图像的大型数据集评估SSD,以演示其可扩展性。

        总而言之,本文的主要贡献包括:

        统一检索和分类:我们提出了一种监督散列方法SSDH,它利用深度学习,在单个学习模型中统一分类和检索,并从图像数据联合学习表示,散列函数和线性分类器。

        可扩展散列:我们的SSDH以点连接的方式执行学习,从而不需要图像输入的对或三元组。 这个特性使其易于扩展到大规模图像检索。        

        轻量级散列:SSHD利用有效的深层架构进行分类,并且可以通过对现有深度分类网络的轻微修改轻松实现。

        大规模数据验证:我们在几个基准和一个大集合超过100万图像进行广泛的实验,并表明SSDH产生有希望的结果。

这项工作的初步结果已经在[8],[9]中公布,这里的贡献作为一个整体。本工作中的扩展包括以下内容:(1)引入了一个新目标,其中包含了额外的约束,以便能够学习大约0-1个值,紧凑和平衡的代码;(2)已经进行了更深入的实验以通过与现有技术方法比较来评估各种数据集的性能,包括对于许多不可伸缩方法难以处理的大规模数据集的实验;和(3)分别为结构设计和实验结果添加了更多的理性/分析和讨论


2.Background






### 关于 Negative-Sample-Free Contrastive Self-Supervised Learning 的运行方法 Negative-Sample-Free Contrastive Self-Supervised Learning 是一种无负样本对比自监督学习框架,其核心在于通过正样本之间的相似性和差异性来优化模型参数,而无需显式的负样本参与训练过程。这种方法特别适用于 EEG 数据的运动想象分类任务,因为 EEG 数据通常具有高维度、低信噪比的特点。 以下是实现该算法并应用于 EEG 运动想象分类的具体说明: #### 1. 数据预处理 EEG 数据需要经过一系列预处理步骤才能输入到模型中。这些步骤可能包括但不限于信号滤波、降采样以及分段提取等操作[^2]。 ```python import numpy as np from scipy.signal import butter, filtfilt def apply_bandpass_filter(eeg_data, lowcut=8, highcut=30, fs=250, order=5): nyquist = 0.5 * fs low = lowcut / nyquist high = highcut / nyquist b, a = butter(order, [low, high], btype='band') filtered_eeg = filtfilt(b, a, eeg_data) return filtered_eeg ``` #### 2. 构建特征表示网络 为了适应 EEG 数据特性,可以采用卷积神经网络 (CNN) 或变压器架构作为基础编码器。此部分负责从原始数据中提取有意义的空间及时域特征[^3]。 ```python import torch.nn as nn class FeatureExtractor(nn.Module): def __init__(self): super(FeatureExtractor, self).__init__() self.conv_layers = nn.Sequential( nn.Conv2d(in_channels=1, out_channels=32, kernel_size=(3, 3), padding="same"), nn.ReLU(), nn.MaxPool2d(kernel_size=(2, 2)), nn.Conv2d(in_channels=32, out_channels=64, kernel_size=(3, 3), padding="same"), nn.ReLU(), nn.MaxPool2d(kernel_size=(2, 2)) ) self.fc_layer = nn.Linear(64*7*7, 128) def forward(self, x): x = self.conv_layers(x) x = x.view(-1, 64*7*7) x = self.fc_layer(x) return x ``` #### 3. 定义损失函数 NSF-CSSL 方法的核心是设计一个仅依赖正样本对齐关系的损失函数。具体而言,可以通过计算不同增强视图间的一致性度量来进行优化[^4]。 ```python import torch def contrastive_loss(z_i, z_j, temperature=0.5): batch_size = z_i.size(0) # Normalize the representations along the feature dimension. z_i_norm = torch.norm(z_i, dim=-1, keepdim=True) z_j_norm = torch.norm(z_j, dim=-1, keepdim=True) z_i = z_i.div(z_i_norm + 1e-6) z_j = z_j.div(z_j_norm + 1e-6) similarity_matrix = torch.matmul(z_i, z_j.T) / temperature nominator = torch.exp(torch.diag(similarity_matrix)) denominator = torch.sum(torch.exp(similarity_matrix), dim=1).unsqueeze(dim=1) loss = -torch.log(nominator/denominator).mean() return loss ``` #### 4. 训练流程概述 整个训练过程中涉及两个主要阶段:一是利用未标注的数据构建增强版本;二是基于前述定义好的目标函数更新权重参数直至收敛为止[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值