Deep Learning of Binary Hash Codes for Fast Image Retrieval 代码编译

本文记录了在编译2015年CVPR会议上关于Deep Learning的二进制哈希代码时遇到的问题和解决过程,包括cublas_v2.h找不到、libreadline.so.6链接错误、libncurses缺失以及Caffe编译中的各种依赖问题。通过安装缺失的库,如libncurses5-dev、leveldb、snappy、hdf5和opencv等,以及解决CUDNN和HDF5的版本不兼容问题,最终成功完成编译。
摘要由CSDN通过智能技术生成

2015年CVPR上的一篇文章,具体内容还没有细看,等细看了感觉有需要的话再另外做paper的笔记。 毕竟刚配好了caffe, 决定先把代码扒下来运行运行。 文献应该很容易搜到,各大高校的数据库应该都有的,万一实在要是没有,私我我给你发过去(代码下载的地址: https://github.com/kevinlin311tw/caffe-cvprw15)。


首先就碰到了一个大坑...

./include/caffe/util/device_alternate.hpp:34:23: fatal error: cublas_v2.h: No such file or directory compilation terminated.

本人自己智障,在装搜狗的时候写了一句sudo apt atuoremove

结果把下图里的安装都卸掉了,还好我当时随手截了个图,还知道要装回去哪些。装回去就好了,但是不知道会不会漏掉了什么或者有后遗症,太脑残了我。就是看到一个安装的教程,说是fcitx跟搜狗有冲突,要先卸载。我就按照他的教程输了上面那个鬼东西...也怪我自己没看仔细就输入了y,太坑了。他的ref我就不给了。装搜狗可容易了,正确的ref在这里: http://www.linuxdiyf.com/linux/20275.html


接着cd到下载下来的包下面,想make clean。 报错:anaconda2/lib/libreadline.so.6: undefined symbol: PC


解决方法(ref:https://github.com/ContinuumIO/anaconda-issues/issues/42)

aem@aem:~$ cd ~/anaconda2/lib
aem@aem:~/anaconda2/lib$ sudo rm libreadline.a libreadline.so.6.2 libreadline.so.6 libreadline.so
aem@aem:~/anaconda2/lib$ pip install readline


报错

creating build/lib.linux-x86_64-2.7
gcc -pthread -shared -L/home/aem/anaconda2/lib -Wl,-rpath=/home/aem/anaconda2/lib,--no-as-needed build/temp.linux-x86_64-2.7/Modules/2.x/readline.o readline/libreadline.a readline/libhistory.a -L/home/aem/anaconda2/lib -lncurses -lpython2.7 -o build/lib.linux-x86_64-2.7/readline.so
/usr/bin/ld: cannot find -lncurses
collect2: error: ld returned 1 exit status
error: command 'gcc' failed with exit status 1

----------------------------------------
Failed building wheel for readline
Running setup.py clean for readline
Failed to build readline
Installing collected packages: readline
Running setup.py install for readline ... error
Complete output from command /home/aem/anaconda2/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-dpeWpY/readline/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-vdw_3m-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_ext
building 'readline' extension
creating build
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/Modules
creating build/temp.linux-x86_64-2.7/Modules/2.x
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -W

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
"Deep Hashing for Compact Binary Codes Learning" 是一篇关于深度哈希学习的论文。该论文提出了一种用于学习紧凑二进制码的深度哈希算法。以下是该论文中深度哈希算法的公式推导过程: 1. 首先,给定一个训练集 $\{x_i\}_{i=1}^n$ 和它们的标签 $\{y_i\}_{i=1}^n$,其中 $x_i$ 是输入数据,$y_i$ 是输出标签。 2. 然后,利用神经网络学习一个将输入数据映射到二进制码的哈希函数 $h(x_i)$,其中 $h(x_i)$ 是一个 $k$ 位的二进制向量,$k$ 是哈希码的长度。 3. 在深度哈希学习中,我们使用多个哈希函数来生成多个二进制码。因此,我们学习 $m$ 个哈希函数,每个哈希函数对应一个二进制码 $B_j$。 4. 对于每个输入数据 $x_i$,我们得到 $m$ 个哈希码 $B_j^i$,其中 $j=1,2,...,m$。 5. 然后,我们将这些哈希码组合成一个紧凑的二进制码 $b_i$,即 $b_i = [B_1^i, B_2^i, ..., B_m^i]$。 6. 确定损失函数,使得学习到的二进制码可以最大程度地保留数据之间的相似度。 7. 定义损失函数 $L$,其中 $L$ 由两部分组成:量化损失和分类损失。 8. 量化损失用于衡量哈希码的质量,分类损失用于保留数据之间的相似度。 9. 量化损失可以表示为:$L_{quan} = \sum_{i=1}^n\sum_{j=1}^m\frac{1}{2}(B_j^i - h_j(x_i))^2$,其中 $h_j(x_i)$ 是第 $j$ 个哈希函数的输出。 10. 分类损失可以表示为:$L_{cls} = -\sum_{i=1}^n\sum_{j=1}^n w_{ij}y_iy_j\log\sigma(b_i^Tb_j)$,其中 $w_{ij}$ 是样本 $i$ 和 $j$ 之间的相似度权重,$\sigma$ 是 sigmoid 函数。 11. 最终的损失函数可以表示为:$L = \lambda L_{quan} + L_{cls}$,其中 $\lambda$ 是量化损失的权重。 12. 在训练过程中,我们使用反向传播算法来优化损失函数,学习到最优的哈希函数和二进制码。 这就是 "Deep Hashing for Compact Binary Codes Learning" 论文中深度哈希算法的公式推导过程。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值