日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美精品99久久久 | 激情五月av | 波多野结衣亚洲天堂 | 性色av无码久久一区二区三区 | 国产性猛交╳xxx乱大交一区 | 中文字幕免费高清视频 | 91精品一区二区三区在线观看 | 天天槽| 久久精品国产亚洲av久 | 无码一区二区三区在线 | 午夜福利电影 | 欧美精产国品一二三 | 国产精品系列在线观看 | 精品国产一二区 | 尤物精品在线观看 | 中国美女一级看片 | 亚洲情区 | 国产无码精品久久久 | 亚洲一区二区观看 | 色网站在线看 | 91爱爱影院 | www.色日本| 日韩精品2区 | 国产99久久精品 | 三级黄色av | 国产麻豆午夜三级精品 | 日本精品一区二区三区视频 | 美女又爽又黄免费视频 | 中文字幕有码无码人妻av蜜桃 | 国产精品二区在线 | 欧美三根一起进三p | 亚洲欧美日韩精品在线 | 91片看| 国产妻精品一区二区在线 | 性做久久久久久免费观看欧美 | 欧美在线色 | 午夜不卡av | 免费久草视频 | 经典av在线 | 精品国产区 | 一区二区毛片 | 午夜电影在线播放 | 国产福利视频网站 | 国产又粗又大又爽视频 | 无人码人妻一区二区三区免费 | 成人免费一级 | 日韩在线欧美在线 | 九九九九精品九九九九 | 日本美女毛茸茸 | 超碰激情| 久久久亚洲国产精品 | 1024毛片| 91精品视频一区 | 日韩a视频| 欧美一区二区久久久 | 国产精品无码久久久久 | 成人免费在线视频观看 | 亚洲av无码一区二区乱子仑 | 国产二区视频在线观看 | 毛片无遮挡 | 神马午夜场 | 黄视频免费在线观看 | 成年人性视频 | 成年人国产视频 | 超碰在线色 | 欧美成年人视频在线观看 | a天堂在线 | 亚洲一区二区三区久久久 | 国产一二在线 | 91成人国产 | 精产国品一区二区 | 国产一级淫 | 欧美一级视频在线观看 | 色香蕉网站 | 禁断介护av | 日本色综合 | 先锋av资源在线 | 极品少妇在线 | 一本亚洲 | 奇米在线观看 | 制服av在线 | 色偷偷免费 | 在线观看一区二区视频 | 99re在线精品视频 | 高清免费毛片 | 97国产成人 | 色婷婷综合久久久久中文字幕 | 性欧美色图 | 成人网站免费观看入口 | 精品国产一区二区三区性色 | 东北熟女一区二区三区 | 插插插插综合 | 日本丰满少妇裸体自慰 | 久久国| 精品色图 | 99久久伊人| 九九久久九九久久 | 亚洲国产aⅴ精品一区二区的游戏 | 波多野结衣导航 |