Instance-Aware Hashing for Multi-Label Image Retrieval 解析

本文介绍了一种基于深度学习的方法,用于生成多标签图片的哈希码,实现图像检索功能。文中详细阐述了从图片到哈希码的生成过程,包括proposal生成、深度卷积子网络提取特征、标签概率计算模型及哈希编码模型等内容。

源代码百度云链接:http://pan.baidu.com/s/1pLTtbM7 密码:8o2r 

 深度学习入门选了这篇文章和相应代码,纠结了两三个月,加上师兄讲解,现在才勉强搞懂,写出来,自己总结一下,也希望其他人少走点弯路,之后还会写一篇关于本文代码的博客。由于我是从小白开始的,所以这篇文章会尽可能清楚,请大牛们不要介意我唠叨。我写的有错的地方,欢迎大家留言,我更正。

文章目的和哈希码(hashing)

  讲文章目的之前,先讲一个概念,叫哈希(hashing)码。当初纠结好久,查了论文,现在就凭我自己的认知写吧,尽量直白。哈希码总的来说,就是用一串0、1码代表,在本文就是代表图片啦。文中有两种,一种叫语义哈希(Semantic Hashing)。以图1为例,给了查询图片,针对这张图生成一条语义哈希码,这条哈希码可以是32位,48位,64位等,在此以16位为例。假设生成的语义哈希码是这样0010001001011001,本文中的哈希码是保留相似性的哈希(Similarity-preserving hashing),相似图片生成的哈希码也是相似的。那么它可以对数据库中其他图片也用相同方式(后面会讲是什么方式)生成哈希码。假设还有一张图,哈希码是这样的0010001001010001,那么就可以认为这两张图片相似(只有一位哈希码不同),就得到了如下图1(5a)那样的结果。另一种叫Category-Aware哈希。这种哈希是重点。注意名字中的Category-Aware。种类已知。如下图1,给它一张图,经过吧啦吧啦的处理,它对每个种类,如下图的自行车和沙发各生成一条哈希码。一条哈希码代表自行车,那可以检索带自行车的图;另一条哈希码代表沙发,可以检索带沙发的图。文章的目的就是对多标签图片(一个图里面有多个object)生成这两种哈希码,可以用于检索。(作者给的代码里只生成哈希码,检索的代码要自己写,呜呜,就为这浪费了好几天)

图1

步骤

  从一幅图到一条哈希码(语义哈希)或多条哈希码(category-aware hashing)是怎样做到的呢?分四步,第一步,把冰箱门打开;第二步,把大象放进去。。。好啦,接下来是四个步骤。先看图吧。

图2.对多标签图像生成哈希码的深度结构。先接受一张图(假设该图所在数据集一共c类),接着生成N个proposals作为输入。先经过深度卷积子网络(GoogLeNet),通过SPP方法得到N个临时特征向量(每个临时特征向量针对一个proposal)。有了临时向量,接下来有两个分支:一个分支计算区域的标签概率(见图3),另一个分支生成proposal特征。

 

1.四部曲之生成proposal

proposal是什么呢,就是用算法处理图像,针对object把图像分割,这样提取的特征可以代表特定目标。如下图2红色部分就是proposal。也就是算法认为哪一块可能是一个object。本文中用了Geodesic object proposals(GOP)方法生成proposal。这个方法先不细讲了,以免影响大家对文章的整体理解。总之,把图像扔给GOP方法,它会给你多个proposal,就是它认为哪里可能是一个object。这多个proposal肯定会有重叠部分,不会像图2那么理想。其实生成的proposal是坐标的形式,左上角的横纵坐标和右下角的横纵坐标四个数字代表一个proposal。

图3.proposal

2.四部曲之深度卷积子网络

GooLeNet这个网络提取图像特征效果很好,作者就以它为基础。用它提取proposals的特征。但是我前面也讲了proposals个数很多,要是用户给了一张图,你针对这张图里生成的每个proposal都用GoogLeNet这种深度网络处理一遍,那黄花菜都凉了。这里,作者用到了另一种方法Spatial Pyramid Pooling(SPP)。SPP的好处是我们可以先把整张图用GooLeNet提取特征F,然后对每个proposal,直接根据F生成固定长度的表示。(可以理解为先计算整张图的特征F,需要哪块再从F中提取相应位置特征)。

3.四部曲之标签概率计算模型

  这个模型是干嘛的呢?前面不是一张图生成了多个proposal嘛,这个模型可以告诉你,每个proposal包含每个类的概率是多少。很厉害是不是,可是我们只有整幅图的标签呀,还拿图1那个自行车和沙发的图说事,根据标签,我们只知道图里有自行车和沙发,你怎么知道每个proposal有自行车或沙发的概率呢?作者用了一个厉害的办法,见图4.对一个有着N个proposals的图(c类),我们的工作是对每个proposal生成一个概率向量,这个向量有多长呢,c那么长,因为有c类呀。接下来如图4,N个proposal的概率向量就堆在一起,针对每一位,都选该列最大的拿出来,放到最后的概率向量里去。举个例子,N个proposal概率向量的第一位拿出来比,嗯,第3个proposal第一位的值最大,那就把这个值放到最后的概率向量去。这个方法叫什么cross-hypothesis max-pooling.图4最后那部分,不就可以代表整张图了么,因为你把它里面所有的proposals都包括了,正巧我们还有整幅图的标签,这就可以开始训练了呀。原谅我先不讲细节了,太痛苦。。。先讲个大致。

 图4.传说中的标签概率计算模型。

 

4.哈希编码模型

  终于要开始编码了,这部分两个任务,一个是把整幅图表示为1条哈希码,就是我们前面讲的语义哈希;另一个是表示为多条哈希码,每条哈希码和一个种类相关。种类已知哈希。(先写这些吧,过几天再陆续加)

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/mafang/p/5932700.html

“Geometry - Aware Satellite-to-Ground Image Synthesis for Urban Areas”(城市区域几何感知的卫星到地面图像合成)这一研究方向结合了卫星图像和地面图像的特点,利用几何感知的方法来实现两者之间的图像合成,在城市规划、地理信息系统、智能交通等领域有广泛应用前景。 ### 研究背景 传统的图像合成方法往往忽略了场景的几何信息,在城市区域这种复杂的环境中,不同视角(卫星和地面)的图像存在较大的几何差异,几何感知的引入可以更好地处理这些差异,提高合成图像的质量和真实性。 ### 研究方法 - **几何建模**:对城市区域的三维几何结构进行建模,例如建筑物、道路等的形状和位置。这可以通过激光雷达数据、三维地图等方式获取。 - **特征提取**:从卫星图像和地面图像中提取特征,包括纹理、颜色、边缘等。利用深度学习算法,如卷积神经网络(CNN),来自动提取这些特征。 - **图像生成**:结合几何信息和提取的特征,使用生成对抗网络(GAN)等模型来合成卫星到地面视角的图像。 ### 代码示例(基于PYTHON和PYTORCH) ```python import torch import torch.nn as nn import torch.optim as optim # 定义一个简单的生成器网络 class Generator(nn.Module): def __init__(self): super(Generator, self).__init__() self.model = nn.Sequential( nn.Conv2d(3, 64, kernel_size=3, padding=1), nn.ReLU(), nn.Conv2d(64, 128, kernel_size=3, padding=1), nn.ReLU(), nn.Conv2d(128, 3, kernel_size=3, padding=1), nn.Tanh() ) def forward(self, x): return self.model(x) # 初始化生成器 generator = Generator() # 定义损失函数和优化器 criterion = nn.MSELoss() optimizer = optim.Adam(generator.parameters(), lr=0.001) # 模拟训练过程 input_image = torch.randn(1, 3, 256, 256) target_image = torch.randn(1, 3, 256, 256) for epoch in range(100): optimizer.zero_grad() output = generator(input_image) loss = criterion(output, target_image) loss.backward() optimizer.step() if epoch % 10 == 0: print(f'Epoch {epoch}, Loss: {loss.item()}') ``` ### 相关研究资料 - **学术论文**:可以在IEEE Xplore、ACM Digital Library、ScienceDirect等学术数据库中搜索相关论文,例如以“Geometry - Aware Satellite-to-Ground Image Synthesis for Urban Areas”为关键词进行搜索。 - **开源项目**:在GitHub等代码托管平台上搜索相关的开源项目,可能会找到实现该方法的代码和数据集。 - **研究机构**:关注一些在计算机视觉和遥感领域有研究的机构,如斯坦福大学计算机视觉实验室、卡内基梅隆大学机器人研究所等的相关研究动态。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值