色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度學習的框架Caffe使用詳情

tUM2_ADA ? 來源:djl ? 作者:ADAS ? 2019-08-09 08:59 ? 次閱讀

Caffe是一個深度學習框架,具有表達力強、速度快和模塊化的思想,由伯克利視覺學習中心(BVLC)和社區貢獻者開發。Yangqing Jia在加州大學伯克利分校攻讀博士期間創建了這個項目。

為什么選擇Caffe?

富有表現力的架構鼓勵應用和創新。使用Caffe,可以在配置中定義模型和優化,不需要硬編碼。通過設置一個GPU機器訓練標記在CPU和GPU之間轉換,接著調配商品化集群系統或移動設備來完成。

代碼的可擴展性讓開發更加活躍。在Caffe項目的第一年,它就被開發者fork超過1000次,由他們完成許多重要的修改并反饋回來。多虧那些貢獻者,這個框架在代碼和模型兩方面都在追蹤最先進的技術。

速度使Caffe完美的用于研究實驗和工業開發。使用一個NVIDIA K40 GPU Caffe每天可以處理超過60M的圖像。推理過程為1ms/一幅圖像,而學習過程為4ms/一幅圖像。我們相信Caffe是現在可使用最快的ConvNet應用。

社區:在視覺、速度和多媒體方面,Caffe已經有能力用于學術研究項目、啟動原型,甚至大規模的工業應用。

安裝

在安裝之前,看一下這個手冊,記錄下平臺的一些細節。我們可以在Ubuntu 16.04-12.04、OS X10.11-10.8上通過Docker和AWS安裝和運行Caffe。官方的編譯腳本和Makefile.config編譯由社區CMake編譯補全。

逐步介紹:

Docker setup開包即用計劃

Ubuntu installation標準平臺

Debian installation使用單個命令安裝caffe

OS X installation

RHEL/CentOS/Fedora installation

Windows請參閱由Guillaume Dumont領導的Windows分支

OpenCL請參閱由Fabian Tschopp領導的OpenCL分支

AWS AMI預配置為AWS

必備條件

Caffe有幾個依賴項:

CUDA是GPU模式所需要的。

推薦使用庫版本7+和最新的驅動版本,但是6.*也可以。

5.5和5.0兼容但是被認為是過時的。

BLAS通過ATLAS、MKL或OpenBLAS使用。

Boost>=1.55

Protobuf、glog、gflags、hdf5

可選依賴項:

OpenCV>=2.4 包括3.0

IO庫:lmdb、leveldb(注意:leveldb需要snappy)

CuDNN用于GPU加速(v5)

Pycaffe和Matcaffe接口有它們自己的需求。

對于Python Caffe:Python 2.7或Python 3.3+,numpy(>=1.7),boost條件下為boost.python

對于MATLAB Caffe:帶有mex編譯器的MATLAB。

cuDNN Caffe:為了達到最快的運行速度,Caffe通過插入式集成NVIDIA cuDNN來加速。為了提升你的Caffe模型的速度,安裝cuDNN,然后安裝Caffe時在Makefile.config中取消注釋USE_CUDNN:=1標記。Caffe會自動進行加速。當前版本是cuDNN v5;在舊版Caffe中支持舊版本。

CPU-only Caffe:對于cold-brewed只有CPU模式的Caffe,在Makefile.config中取消注釋CUP_ONLY :=1標記,配置和生成沒有CUDA的Caffe。這對于云或者集中配置非常有幫助。

CUDA和BLAS

Caffe需要CUDA nvcc編譯器編譯它的GPU代碼和用于GPU操作的CUDA驅動器。可以去NUIDIA CUDA網站,按照那里的安裝說明安裝CUDA。分別安裝庫和最新的獨立驅動器;驅動器和庫捆綁在一起通常是過時的。警告!331.*CUDA驅動器序列有嚴重的性能問題,不要使用它。

為獲得最佳性能,Caffe可以通過NVIDIA cuDNN加速。在cuDNN網站上免費注冊、安裝,然后繼續根據安裝說明操作。編譯cuDNN時在你的Makefile.config中設置USE_CUDNN :=1標記。

Caffe需要BLAS作為它的矩陣和向量計算的后端。有幾個這個庫的實現工具。你可以選擇:

ATLAS:免費、開源、默認用于Caffe。

Intel MKL:商業的,針對Intel CPUs進行了優化,可以免費試用,也可以獲得學生授權。

安裝MKL。

設置MKL環境變量(細節:Linux,OS X)。例如:source /opt/intel/mkl/bin/mklvars.sh intel64

在Makefile.config中設置BLAS := mkl

OpenBLAS:免費并開源;安裝這個優化的并行的BLAS需要更多的工作量,雖然它可能提供加速。

安裝OpenBLAS

在config中設置BLAS :=open

Python 和 MATLAB Caffe(可選)

Python

主要依賴numpy和boost.python(由boost提供)。Pandas也很有用,而且一些例子中需要它。

你可以使用下面的命令安裝依賴項。

Python

1 forreqin$(catrequirements.txt);dopipinstall$req;done


但是,建議先安裝Anaconda Python發行包,它可以提供大多數必需的包和hdf5庫依賴項。

在安裝結束后導入caffe Python模塊,通過諸如export PYTHONPATH=/path/to/caffe/python:$PYTHONPATH添加模塊目錄到你的$PYTHONPATH。不應該在caffe/python/caffe目錄中導入模塊。

Caffe’s Python接口在Python2.7中工作。Python3.3+應該立即可以使用,不需要protobuf支持。對于protobuf支持請安裝protobuf 3.0 alpha (https://developers.google.com/protocol-buffers/)。早期版本的Python需要自行探索安裝方法。

MATLAB

安裝MATLAB,確保$PATH中已加入mex。

Caffe的MATLAB接口可以在版本2015a、2014a/b、2013a/b和2012b中工作。

編譯

Caffe可以使用Make或CMake編譯。Make是官方支持,CMake由社區支持。

使用Make編譯

通過復制和修改示例Makefile.config為安裝配置生成文件。默認值應該可以工作,但是如果使用Anaconda Python,要取消注釋對應的代碼行。

Python

1
2
3
4
5
cpMakefile.config.exampleMakefile.config
# Adjust Makefile.config (for example, if using Anaconda Python, or if cuDNN is desired)
makeall
maketest
makeruntest


對于CPU&GPU加速的Caffe,不需要改變。

對于使用NVIDIA私有的cuDNN軟件的cuDNN加速器,取消注釋Makefile.config中的USE_CUDNN :=1。cuDNN有時比Caffe的GPU加速器速度快,但不是一貫如此。

對于只有CPU的Caffe,取消注釋Makefile.config中的CPU_ONLY :=1。

為了編譯Python和MATLAB包裝類,分別執行make pycaffe和make matcaffe。確保先在Makefile.config中設置你的MATLAB和Python路徑。

分配:運行make distribute,創建一個帶有所有Caffe頭文件的distribute目錄,編譯庫、二進制文件等。為分配到其他機器所需。

速度:為了快速的生成,通過運行make all –j8并行編譯,其中8是并行編譯線程的數量(線程數量最好選擇機器內核的數量)。

安裝好Caffe后,檢查MNIST教程和ImageNet模型教程。

CMake編譯

在手動編輯Makefile.config的地方配置編譯文件,Caffe提供一個非官方的CMake編譯,感謝一些社區成員。需要CMAke版本>=2.8.7。基本步驟如下所示:

Python

1
2
3
4
5
6
mkdirbuild
cdbuild
cmake..
makeall
makeinstall
makeruntest


ImageNet訓練網絡

這個教程是為了讓你準備好使用自己的數據訓練自己的模型。如果你想要一個ImageNet訓練網絡,那么請注意訓練會消耗大量的能源,而我們討厭全球變暖,所以我們提供CaffeNet模型作為下面model zoo中的訓練模型。

數據準備

本文指出所有的路徑,并假設所有的命令在caffe根目錄執行。

ImageNet,我們這里的意思是ILSVRC12挑戰賽,但是你可以輕松訓練整個ImageNet,只是需要更多的磁盤控件和稍微多一點的訓練時間。

我們假設你已經下載了ImageNet訓練數據和驗證數據,它們存儲在你的磁盤中如下位置:

Python

1
2
/path/to/imagenet/train/n01440764/n01440764_10026.JPEG
/path/to/imagenet/val/ILSVRC2012_val_00000001.JPEG


首先,你需要準備一些用于訓練的輔助數據。這些數據可以這樣下載。

Python

1 ./data/ilsvrc12/get_ilsvrc_aux.sh


訓練和驗證輸入數據分別為train.txt和val.txt,使用文本文件列出所有文件和它們的標簽。注意我們對標簽使用同ILSVRC devkit不同的索引:我們按照ASCII碼排序這些同義詞組的名字,從0到999標記它們。在synset_works.txt中查看同義詞組和名字的映射。

你可能想要預先調整圖像的大小為256*256。默認情況下,我們不需要顯示的做這個,因為在集群環境中,一個好處是可以并行調整圖像大小,并使用分布式編程環境。例如,Yangqing使用他的輕量級mincepie包。如果你想要事情更簡單,你也可以像這樣使用shell命令:

Python

1
2
3
fornamein/path/to/imagenet/val/*.JPEG;do
convert-resize256x256\!$name$name
done


看一下examples/imagenet/create_imagenet.sh。根據需要設置路徑為訓練和驗證目錄,同時設置“RESIZE=true”調整所有圖像的大小為256*256,如果你沒有提前調整圖像?,F在只使用examples/imagenet/create_imagenet.sh創建leveldbs。注意,examples/imagenet/ilsvrc12_train_leveldb和examples/imagenet/ilsvrc12_val_leveldb不應該在執行前存在。它由腳本創建。GLOG_logtostderr=1僅僅傳送更多的信息給你觀察,你可以安全地忽視它。

計算圖像平均值

模型需要我們從每幅圖像中減去圖像平均值,所以我們必須計算平均值。tools/compute_image_mean.cpp完成這些,它也是一個熟悉怎樣操縱多個組件很好的例子,例如協議緩存、leveldbs和登錄,如果你不熟悉它們的話??傊骄涤嬎憧梢赃@樣做:

Python

1 ./examples/imagenet/make_imagenet_mean.sh


結果會生成data/ilsvrc12/imagenet_mean.binaryproto.

模型定義

我們將描述Krizhevsky、Sutskever和Hinton在NIPS 2012的文章中第一次提出這個方法的參考實例。

網絡定義(models/bvlc_reference_caffenet/train_val.prototxt)遵循Krizhevsky等人的定義。注意,如果偏離了本文建議的文件路徑,你需要在.prototxt文件中調整相關路徑。

如果你認真看了models/bvlc_reference_caffenet/train_val.prototxt,你會注意到幾個指定phase: TRAIN或phase: TEST的include部分。這部分允許我們在一個文件中定義兩個非常相關的網絡:一個網絡用于訓練,另一個網絡用于測試。這兩個網絡幾乎是相同的,分享所有的層,除了那些標記為include { phase: TRAIN } 或 include { phase: TEST }的層。在這種情況下,只有輸入層和一個輸出層是不同的。

輸入層的不同:訓練網絡數據的輸入層從examples/imagenet/ilsvrc12_train_leveldb中提取數據,隨機的映射到輸入圖像。測試網絡的數據層從examples/imagenet/ilsvrc12_val_leveldb中獲得數據,不執行隨機映射。

輸出層的不同:兩個網絡都輸出softmax_loss層,它在訓練網絡中用于計算損失函數,并初始化反向傳播算法,而在驗證過程只是簡單的報告這個損失。測試網絡還有第二個輸出層,accuracy,它用于報告測試集的準確度。在訓練過程,測試網絡偶爾在測試集上被實例化并測試,產生代碼行如Test score #0: xxx 和 Test score #1: xxx。在這里score0是準確度(對于未訓練的網絡將從1/1000=0.001開始),score1是損失(對于未訓練的網絡將從7附近開始)。

我們也將設計一個協議緩存用于運行求解。讓我們做幾個計劃:

我們將以256個為一組,運行總共450000次迭代(大約90個最大訓練次數)。

每1000次迭代,我們使用驗證數據測試學習網絡。

我們設置初始學習速率為0.01,每100000次迭代后減小它(大概20個最大訓練次數)。

每20個迭代顯示一次信息。

這個訓練網絡的動量為0.9,權重衰減為0.0005.

每10000次迭代,我們會簡要說明當前狀態。

聽起來不錯吧?這是在models/bvlc_reference_caffenet/solver.prototxt.中完成的。

訓練ImageNet

準備好了嗎?我們開始訓練。

Python

1 ./build/tools/caffetrain--solver=models/bvlc_reference_caffenet/solver.prototxt


在一個K40機器上,每20次迭代大概需要運行26.5秒(在K20上為36秒),所以實際上每幅圖像完成完全前后向移動采集數據為5.2ms。大概2ms向前,其余時間向后。如果你對仔細分析計算時間感興趣,你可以運行

Python

1 ./build/tools/caffetime--model=models/bvlc_reference_caffenet/train_val.prototxt


繼續訓練?

我們都經歷過停電,或者我們想要稍微獎勵自己一下,玩一會兒Battlefield(還有人記得Quake嗎?)。因為我們在訓練時截取中間結果,所以我們可以從截圖位置繼續訓練。這可以很容易的完成,像這樣:

Python

1
2
./build/tools/caffetrain--solver=models/bvlc_reference_caffenet/solver.prototxt—
snapshot=models/bvlc_reference_caffenet/caffenet_train_iter_10000.solverstate


其中腳本caffenet_train_iter_10000.solverstate是存儲所有所需信息的求解狀態簡介,可以用來恢復為準確的求解狀態(包括參數、動量歷史等)。

結語

因為你有了已訓練網絡,查看怎樣使用Python接口分類圖像。

分類ImageNet:使用C++接口

Caffe,它的內核是用C++寫的??梢允褂肅affe的C++接口去完成類似上個例子中Python代碼展示的圖像分類應用。為了查看Caffe C++ API更通用的示例,你應該學習tools/caffe.cpp中的命令行工具caffe的源代碼。

介紹

文件examples/cpp_classification/classification.cpp給出了簡單的C++代碼。為了簡單起見,這個例子不支持單一樣本過采樣,也不支持多個獨立樣本的批處理。這個例子不是試圖達到系統吞吐量的最大可能分類,而是特別注意在保持代碼可讀性的同時避免不必要的劣化。

編譯

這個C++示例是在編譯Caffe時自動生成。遵循文檔說明編譯Caffe,在build目錄中這個分類示例被生成為examples/classification.bin。

用途

想要使用預先訓練的CaffeNet模型分類示例,需要先從“Model Zoo”中下載。使用腳本:

Python

1 ./scripts/download_model_binary.pymodels/bvlc_reference_caffenet


ImageNet標簽文件(也叫同義詞組文件)也是需要的,用于將預測類別映射到類別名:

C++

1 ./data/ilsvrc12/get_ilsvrc_aux.sh


使用這些下載的文件,我們可以分類預先準備的貓圖像(examples/images/cat.jpg),使用命令:

C++

1
2
3
4
5
6
./build/examples/cpp_classification/classification.bin\
models/bvlc_reference_caffenet/deploy.prototxt\
models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel\
data/ilsvrc12/imagenet_mean.binaryproto\
data/ilsvrc12/synset_words.txt\
examples/images/cat.jpg


輸出應該是:

C++

1
2
3
4
5
6
7
8
9
10
11
----------Predictionforexamples/images/cat.jpg----------
0.3134-"n02123045 tabby, tabby cat"
0.2380-"n02123159 tiger cat"
0.1235-"n02124075 Egyptian cat"
0.1003-"n02119022 red fox, Vulpes vulpes"
0.0715-"n02127052 lynx, catamount"


提高性能

為了進一步提高性能,你需要更多的利用GPU,這里是一些準則:

盡早將數據轉移到GPU上,在這里完成所有的預處理操作。

如果你同時分類許多圖像,應該使用批處理(許多獨立圖像在一次運行中被分類)。

使用多線程分類確保GPU被充分利用,不要等待I/O阻塞CPU線程。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 多媒體
    +關注

    關注

    0

    文章

    496

    瀏覽量

    36975
  • C++
    C++
    +關注

    關注

    22

    文章

    2108

    瀏覽量

    73623
  • 深度學習
    +關注

    關注

    73

    文章

    5500

    瀏覽量

    121113
收藏 人收藏

    評論

    相關推薦

    Nanopi深度學習之路(1)深度學習框架分析

    就能實現!還請關注我后面的日記。實際上我也是剛剛有時間學習深度學習,我是個純初學者,但面對深度學習里的各種復雜理論和公式推導,自己實現個小功
    發表于 06-04 22:32

    【NanoPi K1 Plus試用體驗】搭建深度學習框架

    近幾年各種深度學習框架涌現,大家可能很難從眾多的深度學習框架中選擇一個合適的
    發表于 07-17 11:40

    Mali GPU支持tensorflow或者caffe深度學習模型嗎

    Mali GPU 支持tensorflow或者caffe深度學習模型嗎? 好像caffe2go和tensorflow lit可以部署到ARM,但不知道是否支持在GPU運行?我希望把訓
    發表于 09-16 14:13

    TensorFlow實戰之深度學習框架的對比

    的熱潮持續高漲,各種開源深度學習框架也層出不窮,其中包括TensorFlow、Caffe、Keras、CNTK、Torch7、MXNet、Leaf、Theano、DeepLearnin
    發表于 11-16 11:52 ?4569次閱讀
    TensorFlow實戰之<b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>框架</b>的對比

    深度學習框架Keras代碼解析

    總體來講keras這個深度學習框架真的很“簡易”,它體現在可參考的文檔寫的比較詳細,不像caffe,裝完以后都得靠技術博客,keras有它自己的官方文檔(不過是英文的),這給初學者提供
    發表于 12-15 08:22 ?4512次閱讀

    為什么選擇Caffe深度學習框架Caffe的安裝和程序概述

    Caffe是一個深度學習框架,具有表達力強、速度快和模塊化的思想,由伯克利視覺學習中心(BVLC)和社區貢獻
    的頭像 發表于 04-29 16:23 ?4248次閱讀
    為什么選擇<b class='flag-5'>Caffe</b><b class='flag-5'>深度</b><b class='flag-5'>學習</b><b class='flag-5'>框架</b><b class='flag-5'>Caffe</b>的安裝和程序概述

    浪潮在美國發布深度學習計算框架Caffe

    4月6日消息(美國硅谷當地時間4月5日)今日,在2016年GPU全球技術大會(GTC16)上,浪潮開源發布深度學習計算框架Caffe-MPI。同時,浪潮還表示將設立
    發表于 05-18 18:03 ?1576次閱讀

    Xeon PHI集群深度學習框架Caffe和Tensorflow的性能優化

    In this talk, we analyze the performance characteristics of Caffe* and TensorFlow* on an Intel? Xeon Phi? processor x200.
    的頭像 發表于 10-19 07:30 ?2608次閱讀

    八種主流深度學習框架的介紹

    導讀:近幾年隨著深度學習算法的發展,出現了許多深度學習框架。這些框架各有所長,各具特色。常用的開
    的頭像 發表于 04-26 18:45 ?8575次閱讀

    深度學習框架是什么?深度學習框架有哪些?

    深度學習框架是什么?深度學習框架有哪些?? 深度
    的頭像 發表于 08-17 16:03 ?2733次閱讀

    深度學習框架的作用是什么

    深度學習框架的作用是什么 深度學習是一種計算機技術,它利用人工神經網絡來模擬人類的學習過程。由于
    的頭像 發表于 08-17 16:10 ?1560次閱讀

    深度學習算法庫框架學習

    深度學習算法庫框架學習 深度學習是一種非常強大的機器學習
    的頭像 發表于 08-17 16:11 ?691次閱讀

    深度學習框架連接技術

    深度學習框架連接技術 深度學習框架是一個能夠幫助機器學習
    的頭像 發表于 08-17 16:11 ?771次閱讀

    深度學習cntk框架介紹

    深度學習cntk框架介紹? 深度學習是最近幾年來非常熱門的話題,它正在徹底改變我們生活和工作的方式。隨著越來越多的創新和發展,人工智能和機器
    的頭像 發表于 08-17 16:11 ?1363次閱讀

    深度學習框架深度學習算法教程

    深度學習框架深度學習算法教程 深度學習是機器
    的頭像 發表于 08-17 16:11 ?1072次閱讀
    主站蜘蛛池模板: 欧美极限扩肛| 97人妻无码AV碰碰视频| 欧美另类一区| 久久aa毛片免费播放嗯啊| 在线va无卡无码高清| 色综合久久综合网观看| 嫩草影院成人| 久久永久影院免费| 九九精品视频一区二区三区| 国产欧美一区二区精品性色tv | 粉嫩极品国产在线观看| 最新国产在线视频在线| 亚洲中文字幕手机版| 亚洲国产精品日本无码网站| 色久天| 青青草 久久久| 欧美高清另类video| 免费三级现频在线观看| 啦啦啦 中文 中国 免费 高清在线 | 年轻的搜子8中字在线观看| 久久精品国产清白在天天线| 韩国电影久久| 黄色三级网站| 久久亚洲AV成人无码动态图| 久久久96| 暖暖 免费 高清 日本视频5| 内射人妻无码色AV麻豆去百度搜| 久久精品电影| 久久中文字幕无线观看| 麻豆人妻换人妻X99| 女子扒开腿让男生桶爽| 日本色高清| 亚洲成人一区| 8050午夜二级一片| 操他射他影院| 国产女高清在线看免费观看| 国产人成高清在线视频99| 久久yy99re66| 欧美日韩中文在线字幕视频| 神马电影我不卡国语版| 亚洲 日本 欧美 中文字幕 |