日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于deep learning的快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)

發(fā)布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于deep learning的快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
 ????

基于deep learning的快速圖像檢索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)

190人閱讀 評論(1) 收藏 舉報 本文章已收錄于: 分類: 圖像檢索(9) 作者同類文章X

    目錄(?)[+]

  • 引言
  • 基本問題與技術(shù)
  • 本檢索系統(tǒng)原理
  • 預(yù)訓(xùn)練好的模型
  • 傻瓜式環(huán)境配置手冊
  • 關(guān)于系統(tǒng)
  • centOS配置方法
  • 1 配置yum源
  • 2 安裝依賴的庫
  • 3 安裝科學(xué)計算庫
  • 4 其余依賴
  • 5 python版本依賴
  • ubuntu配置方法
  • caffe的編譯與準(zhǔn)備
  • 作者:寒小陽?
    時間:2016年3月。?
    出處:http://blog.csdn.net/han_xiaoyang/article/details/50856583?
    聲明:版權(quán)所有,轉(zhuǎn)載請聯(lián)系作者并注明出處

    1.引言

    本系統(tǒng)是基于CVPR2015的論文《Deep Learning of Binary Hash Codes for Fast Image Retrieval》實現(xiàn)的海量數(shù)據(jù)下的基于內(nèi)容圖片檢索系統(tǒng),250w圖片下,對于給定圖片,檢索top 1000相似時間約為1s,其基本背景和原理會在下文提到。

    2.基本問題與技術(shù)

    大家都知道,基于內(nèi)容的圖像檢索系統(tǒng)是根據(jù)圖像的內(nèi)容,在已有圖像集中找到最『相近』的圖片。而這類系統(tǒng)的效果(精準(zhǔn)度和速度)和兩個東西直接相關(guān):

    • 圖片特征的表達(dá)能力
    • 近似最近鄰的查找

    根據(jù)我們這個簡單系統(tǒng)里的情況粗淺地談?wù)勥@兩個點。

    首先說圖像特征的表達(dá)能力,這一直是基于內(nèi)容的圖像檢索最核心卻又困難的點之一,計算機(jī)所『看到』的圖片像素層面表達(dá)的低層次信息與人所理解的圖像多維度高層次信息內(nèi)容之間有很大的差距,因此我們需要一個盡可能豐富地表達(dá)圖像層次信息的特征。我們前面的博客也提到了,deep learning是一個對于圖像這種層次信息非常豐富的數(shù)據(jù),有更好表達(dá)能力的框架,其中每一層的中間數(shù)據(jù)都能表達(dá)圖像某些維度的信息,相對于傳統(tǒng)的Hist,Sift和Gist,表達(dá)的信息可能會豐富一下,因此這里我們用deep learning產(chǎn)出的特征來替代傳統(tǒng)圖像特征,希望能對圖像有更精準(zhǔn)的描繪程度。

    再說『近似最近鄰』,ANN(Approximate Nearest Neighbor)/近似最近鄰一直是一個很熱的研究領(lǐng)域。因為在海量樣本的情況下,遍歷所有樣本,計算距離,精確地找出最接近的Top K個樣本是一個非常耗時的過程,尤其有時候樣本向量的維度也相當(dāng)高,因此有時候我們會犧牲掉一小部分精度,來完成在很短的時間內(nèi)找到近似的top K個最近鄰,也就是ANN,最常見的ANN算法包括局部敏感度哈希/locality-sensitive hashing,最優(yōu)節(jié)點優(yōu)先/best bin first和Balanced box-decomposition tree等,我們系統(tǒng)中將采用LSH/局部敏感度哈希來完成這個過程。有一些非常專業(yè)的ANN庫,比如FLANN,有興趣的同學(xué)可以了解一下。

    3. 本檢索系統(tǒng)原理

    圖像檢索系統(tǒng)和關(guān)鍵環(huán)節(jié)如下圖所示:?


    ?

    圖像檢索過程簡單說來就是對圖片數(shù)據(jù)庫的每張圖片抽取特征(一般形式為特征向量),存儲于數(shù)據(jù)庫中,對于待檢索圖片,抽取同樣的特征向量,然后并對該向量和數(shù)據(jù)庫中向量的距離,找出最接近的一些特征向量,其對應(yīng)的圖片即為檢索結(jié)果。

    基于內(nèi)容的圖像檢索系統(tǒng)最大的難點在上節(jié)已經(jīng)說過了,其一為大部分神經(jīng)網(wǎng)絡(luò)產(chǎn)出的中間層特征維度非常高,比如Krizhevsky等的在2012的ImageNet比賽中用到的AlexNet神經(jīng)網(wǎng),第7層的輸出包含豐富的圖像信息,但是維度高達(dá)4096維。4096維的浮點數(shù)向量與4096維的浮點數(shù)向量之間求相似度,運(yùn)算量較大,因此Babenko等人在論文Neural codes for image retrieval中提出用PCA對4096維的特征進(jìn)行PCA降維壓縮,然后用于基于內(nèi)容的圖像檢索,此場景中效果優(yōu)于大部分傳統(tǒng)圖像特征。同時因為高維度的特征之間相似度運(yùn)算會消耗一定的時間,因此線性地逐個比對數(shù)據(jù)庫中特征向量是顯然不可取的。大部分的ANN技術(shù)都是將高維特征向量壓縮到低維度空間,并且以01二值的方式表達(dá),因為在低維空間中計算兩個二值向量的漢明距離速度非常快,因此可以在一定程度上緩解時效問題。ANN的這部分hash映射是在拿到特征之外做的,本系統(tǒng)框架試圖讓卷積神經(jīng)網(wǎng)在訓(xùn)練過程中學(xué)習(xí)出對應(yīng)的『二值檢索向量』,或者我們可以理解成對全部圖先做了一個分桶操作,每次檢索的時候只取本桶和臨近桶的圖片作比對,而不是在全域做比對,以提高檢索速度。

    論文是這樣實現(xiàn)『二值檢索向量』的:在Krizhevsky等2012年用于ImageNet中的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)基礎(chǔ)上,在第7層(4096個神經(jīng)元)和output層之間多加了一個隱層(全連接層)。隱層的神經(jīng)元激勵函數(shù),可以選用sigmoid,這樣輸出值在0-1之間值,可以設(shè)定閾值(比如說0.5)之后,將這一層輸出變換為01二值向量作為『二值檢索向量』,這樣在使用卷積神經(jīng)網(wǎng)做圖像分類訓(xùn)練的過程中,會『學(xué)到』和結(jié)果類別最接近的01二值串,也可以理解成,我們把第7層4096維的輸出特征向量,通過神經(jīng)元關(guān)聯(lián)壓縮成一個低維度的01向量,但不同于其他的降維和二值操作,這是在一個神經(jīng)網(wǎng)絡(luò)里完成的,每對圖片做一次完整的前向運(yùn)算拿到類別,就產(chǎn)出了表征圖像豐富信息的第7層output(4096維)和代表圖片分桶的第8層output(神經(jīng)元個數(shù)自己指定,一般都不會很多,因此維度不會很高)。引用論文中的圖例解釋就是如下的結(jié)構(gòu):



    上方圖為ImageNet比賽中使用的卷積神經(jīng)網(wǎng)絡(luò);中間圖為調(diào)整后,在第7層和output層之間添加隱層(假設(shè)為128個神經(jīng)元)后的卷積神經(jīng)網(wǎng)絡(luò),我們將復(fù)用ImageNet中得到最終模型的前7層權(quán)重做fine-tuning,得到第7層、8層和output層之間的權(quán)重。下方圖為實際檢索過程,對于所有的圖片做卷積神經(jīng)網(wǎng)絡(luò)前向運(yùn)算得到第7層4096維特征向量和第8層128維輸出(設(shè)定閾值0.5之后可以轉(zhuǎn)成01二值檢索向量),對于待檢索的圖片,同樣得到4096維特征向量和128維01二值檢索向量,在數(shù)據(jù)庫中查找二值檢索向量對應(yīng)『桶』內(nèi)圖片,比對4096維特征向量之間距離,做重拍即得到最終結(jié)果。圖上的檢索例子比較直觀,對于待檢索的”鷹”圖像,算得二值檢索向量為101010,取出桶內(nèi)圖片(可以看到基本也都為鷹),比對4096維特征向量之間距離,重新排序拿得到最后的檢索結(jié)果。

    4. 預(yù)訓(xùn)練好的模型

    一般說來,在自己的圖片訓(xùn)練集上,針對特定的場景進(jìn)行圖像類別訓(xùn)練,得到的神經(jīng)網(wǎng)絡(luò),中間層特征的表達(dá)能力會更有針對性一些。具體訓(xùn)練的過程可以第3節(jié)中的說明。對于不想自己重新費時訓(xùn)練,或者想快速搭建一個基于內(nèi)容的圖片檢索系統(tǒng)的同學(xué),這里也提供了100w圖片上訓(xùn)練得到的卷積神經(jīng)網(wǎng)絡(luò)模型供大家使用。

    這里提供了2個預(yù)先訓(xùn)練好的模型,供大家提取『圖像特征』和『二值檢索串』用。2個模型訓(xùn)練的數(shù)據(jù)集一致,卷積神經(jīng)網(wǎng)絡(luò)搭建略有不同。對于幾萬到十幾萬級別的小量級圖片建立檢索系統(tǒng),請使用模型Image_Retrieval_20_hash_code.caffemodel,對于百萬以上的圖片建立檢索系統(tǒng),請使用模型Image_Retrieval_128_hash_code.caffemodel。

    對于同一張圖片,兩者產(chǎn)出的特征均為4096維度,但用作分桶的『二值檢索向量』長度,前者為20,后者為128。

    模型下載地址為云盤地址。

    傻瓜式環(huán)境配置手冊

    1.關(guān)于系統(tǒng)

    這個說明是關(guān)于Linux系統(tǒng)的,最好是centOS 7.0以上,或者ubuntu 14.04 以上。低版本的系統(tǒng)可能會出現(xiàn)boost,OpenCV等庫版本不兼容問題。

    2. centOS配置方法

    2.1 配置yum源

    配置合適的yum源是一種『偷懶』的辦法,可以簡化很多后續(xù)操作。不進(jìn)行這一步的話很多依賴庫都需要自己手動編譯和指定caffe編譯路徑,耗時且經(jīng)常編譯不成功。?
    在國內(nèi)的話用sohu或者163的源?
    rpm -Uvh http://mirrors.sohu.com/fedora-epel/7/x86_64/e/epel-release-7-2.noarch.rpm

    如果身處國外的話,可以查一下fedora mirror list,找到合適的yum源添加。

    接著我們讓新的源生效:?
    yum repolist

    2.2 安裝依賴的庫

    該圖像檢索系統(tǒng)依賴于caffe深度學(xué)習(xí)框架,因此需要安裝caffe依賴的部分庫:比如protobuf是caffe中定義layers的配置文件解析時需要的,leveldb是訓(xùn)練時存儲圖片數(shù)據(jù)的數(shù)據(jù)庫,opencv是圖像處理庫,boost是通用C++庫,等等…

    我們用yum install一鍵安裝:?
    sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel

    2.3 安裝科學(xué)計算庫

    這個部分大家都懂的,因為要訓(xùn)練和識別過程,涉及到大量的科學(xué)計算,因此必要的科學(xué)計算庫也需要安裝。同時Python版本caffe中會依賴一些Python科學(xué)計算庫,pip和easy_install有時候安裝起來會有一些問題,因此部分庫這里也用yum install直接安裝了。?
    yum install openblas-devel.x86_64 gcc-c++.x86_64 numpy.x86_64 scipy.x86_64 python-matplotlib.x86_64 lapack-devel.x86_64 python-pillow.x86_64 libjpeg-turbo-devel.x86_64 freetype-devel.x86_64 libpng-devel.x86_64 openblas-devel.x86_64

    2.4 其余依賴

    包括lmdb等:?
    sudo yum install gflags-devel glog-devel lmdb-devel?
    若此處yum源中找不到這些拓展package,可是手動編譯(要有root權(quán)限):

    <code class="language-shell hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># glog</span> wget https://google-glog<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.googlecode</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.com</span>/files/glog-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.3</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.tar</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.gz</span> tar zxvf glog-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.3</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.tar</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.gz</span> cd glog-<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.3</span> ./configure make && make install <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># gflags</span> wget https://github<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.com</span>/schuhschuh/gflags/archive/master<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zip</span> unzip master<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.zip</span> cd gflags-master mkdir build && cd build export CXXFLAGS=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"-fPIC"</span> && cmake .. && make VERBOSE=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span> make && make install <span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;"># lmdb</span> git clone https://github<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.com</span>/LMDB/lmdb cd lmdb/libraries/liblmdb make && make install</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li></ul>

    2.5 python版本依賴

    編譯pycaffe的時候,我們需要更多的一些python的依賴庫。這時候我們可以用pip或者easy_install完成。

    pip和easy_install的配置方法為:

    <code class="language-shell hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">wget --no-check-certificate https://bootstrap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.pypa</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.io</span>/ez_setup<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.py</span> python ez_setup<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.py</span> --insecure wget https://bootstrap<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.pypa</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.io</span>/get-pip<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.py</span> python get-pip<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.py</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

    在caffe/python/requirements.txt中有pycaffe的python依賴包,如下:

    <code class="language-python hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">Cython>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.19</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.2</span> numpy>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.7</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.1</span> scipy>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.13</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.2</span> scikit-image>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.9</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.3</span> matplotlib>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.1</span> ipython>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.0</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span> h5py>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.2</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span> leveldb>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.191</span> networkx>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.8</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.1</span> nose>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span> pandas>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0.12</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span> python-dateutil>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.4</span>,<<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> protobuf>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.5</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span> python-gflags>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.0</span> pyyaml>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3.10</span> Pillow>=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2.3</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.0</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li></ul>

    通過以下shell命令可以全部安裝:

    <code class="language-shell hljs bash has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> req <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">in</span> $(cat requirements.txt); <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">do</span> pip install <span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">$req</span>; <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">done</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

    3. ubuntu配置方法

    基本與centOS一致,這里簡單列出需要執(zhí)行的shell命令:

    <code class="language-shell hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">sudo apt<span class="hljs-attribute" style="box-sizing: border-box;">-get</span> install libprotobuf<span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> libleveldb<span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> libsnappy<span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> libopencv<span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> libhdf5<span class="hljs-attribute" style="box-sizing: border-box;">-serial</span><span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> protobuf<span class="hljs-attribute" style="box-sizing: border-box;">-compiler</span> sudo apt<span class="hljs-attribute" style="box-sizing: border-box;">-get</span> install <span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">--</span>no<span class="hljs-attribute" style="box-sizing: border-box;">-install</span><span class="hljs-attribute" style="box-sizing: border-box;">-recommends</span> libboost<span class="hljs-attribute" style="box-sizing: border-box;">-all</span><span class="hljs-attribute" style="box-sizing: border-box;">-dev</span>sudo apt<span class="hljs-attribute" style="box-sizing: border-box;">-get</span> install libgflags<span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> libgoogle<span class="hljs-attribute" style="box-sizing: border-box;">-glog</span><span class="hljs-attribute" style="box-sizing: border-box;">-dev</span> liblmdb<span class="hljs-attribute" style="box-sizing: border-box;">-dev</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>

    python部分的依賴包安裝方式同上。

    4. caffe的編譯與準(zhǔn)備

    保證caffe所需依賴都安裝完成后,在caffe目錄下執(zhí)行:?
    cp Makefile.config.example Makefile.config?
    根據(jù)自己的實際情況,修改Makefile.config的內(nèi)容,主要修改的幾個如下:

    • 如果沒有GPU,只打算用CPU進(jìn)行實驗,將# CPU_ONLY := 1前的#號去掉。
    • 如果使用GPU,且有cuDNN加速,將# USE_CUDNN := 1前的#號去掉。
    • 如果使用openBLAS,將BLAS := atlas改成BLAS := open,并添加BLAS_INCLUDE := /usr/include/openblas(Caffe中默認(rèn)的矩陣運(yùn)算庫為ATLAS,但是OpenBLAS有一些性能優(yōu)化,因此建議換做OpenBLAS)

    未完待續(xù)…

    總結(jié)

    以上是生活随笔為你收集整理的基于deep learning的快速图像检索(Deep Learning of Binary Hash Codes for Fast Image Retrieval)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美大片黄色 | 成人h片在线观看 | 日韩人体视频 | 蜜桃又黄又粗又爽av免 | 欧美精品第二页 | 四色成人网 | 免费观看av的网站 | 久久久视频在线 | 99热这里只有精品7 青青草社区 | 日韩性av| 国产精品露脸视频 | www.av88| 91精品国产色综合久久不卡98 | 亚洲一级黄色片 | 男人日女人网站 | 专业操老外 | 女人囗交吞精囗述 | 国产99久久久久久免费看 | 亚洲永久免费网站 | 免费在线观看小视频 | 超碰91在线观看 | 在线播放小视频 | 最新黄色在线 | 欧美爽爽 | a级黄色录像 | 欧美精品日韩精品 | 国产鲁鲁 | 成人一区二 | 成人精品三级av在线看 | 绿帽视频| youjizz.com日本| 婷婷射图 | 国产交换配乱淫视频免费 | 国产精品无码免费播放 | 波多野结衣一区二区三区高清av | 四房婷婷 | 日女人免费视频 | 亚洲国产欧美在线人成 | 日韩免费网址 | 黄色大片在线免费观看 | 午夜国产片 | 97se综合 | 最好看的日本字幕mv视频大全 | 午夜影院日本 | 亚洲操 | av国产免费 | 国产午夜免费视频 | 美色视频 | 插插网站 | 国产精品久久久久免费 | 国产日韩欧美一区 | 成人短视频在线观看 | 男生和女生一起搞鸡 | 超碰国产一区二区三区 | 国产婷婷精品 | 日本韩国欧美一区二区三区 | 黄色一区二区三区 | 色婷婷av一区二区三区之红樱桃 | 欧美男女啪啪 | 99久久久久成人国产免费 | av猫咪| 伊人色综合网 | www.国产免费 | 久久久久在线观看 | 99热国产在线观看 | 另类小说亚洲色图 | 91精品人妻一区二区三区蜜桃2 | 一区二区三区三区在线 | 伊人国产在线 | 欧美一级在线免费观看 | 色婷婷亚洲综合 | 嫩草影院在线观看视频 | 免费看欧美一级片 | 成年人福利 | 精品久久久中文字幕 | 国产嫩草av | 黄页在线播放 | 97色资源| 中字幕视频在线永久在线观看免费 | 亚洲一区二区乱码 | 久久精品视频16 | 日本理论片午伦夜理片在线观看 | 五月99久久婷婷国产综合亚洲 | 激情福利 | 性视频一区| 污站在线观看 | 五月婷婷丁香激情 | 女子spa高潮呻吟抽搐 | 老熟妇仑乱一区二区av | 刘亦菲久久免费一区二区 | 天堂资源地址在线 | 亚洲欧美另类在线视频 | 少妇精品久久久一区二区三区 | 久久影视一区二区 | 朴麦妮原版视频高清资源 | 男女猛烈无遮挡 | 在线观看国产一区二区 | 国外成人免费视频 | 日韩欧美中文 |