微軟研究院大神Ross Girshick新作:fase CNN,測試速度比RCNN快200倍。
Caffe用右上圖的觀點來解釋左上圖:數據存儲在多邊形的datablob上conv1卷積運算對datablob中的數據進行操作卷積操作的結果存儲到conv1blob上右圖是一個多路徑的前向五環Graph,是典型的最簡單Train網絡,datablob所在路徑為網絡主路徑(卷積層、FC層、Pooling層等),Labelblob所在路徑提供label數據用于計算loss或在Test時計算AccuracyCaffeModel要訓練一個網絡,在Caffe中至少要包含2個prototxt文件:一個是描述Net結構(“Blob+Layers+數據流”構成)的文件一個是描述訓練算法的Solver文件
以下主要是對于Caffe主頁文檔的總結 1. 結構的生成:caffe的基本結構是采用google的proto庫自動生成的,基本流程就是定義一個配置文件,擴展名為proto,調用proto庫的編譯器編譯這個文件可以生成相應的類的c++的代碼。具體的可以參見proto庫的介紹。
在上一篇中配置好Caffe for windows并配置matlab接口之后,我們嘗試運行RCNN(區域卷積神經網絡)的demo,在給出該方法的思想之前,我們嘗試運行demo看看效果如何。
深度學習(Deep Learning),又叫Unsupervised Feature Learning或者Feature Learning,是目前非常熱的一個研究主題。 本文將主要介紹Deep Learning的基本思想和常用的方法。 一. 什么是Deep Learning? 實際生活中,人們為了解決一個問題,如對象的分類(對象可是是文檔、圖像等),首先必須做的事情是如何來表達一個對象,即必須抽取一些特征來表示一個對象,如文本的處理中,常常用詞集合來表示一個文檔,或把文檔表示在向量空間中(稱為VSM模型),然后才能提出不同的分類算法來進行分類;又如在圖像處理中,我們可以用像素集合來表示一個圖像,后來人們提出了新的特征表示,如SIFT,這種特征在很多圖像處理的應用中表現非常良好,特征選取得好壞對最終結果的影響非常巨大。因此,選取什么特征對于解決一個實際問題非常的重要。
本PPT架構1、WHY2、WHAT3、HOW(模式圖)4、HOW(公式推導)回顧review回顧review1、對sparseautoencoder的回顧總結:通過相似的輸入和輸出,用cost函數求出中間的參數(更新到最小的cost函數的輸出就是中間的參數),而更新時需要用梯度下降法,梯度下降法需要偏導,偏導需要用BP算法。2、經典sparseautoencoder的輸出應該是和輸入數據尺寸大小一樣的,且很相近。3、然后,拿掉那個后面的輸出層后,隱含層的值就是我們所需要的特征值了。4、因為模型的輸出是x,可以看出,特征值輸出的也是x的特征,其實這是一種無監督的學習unsupervisedlearning的一種方式,叫self-taughtlearning5、在這種無監督學習中,可以看出,每個特征值(參數)都與輸入相連。
Model中DCNN是Finetune VGG-16 net,像素級連接的CRF起到平滑邊緣的作用。模型很清晰,看過FCN之后再看這個就相對比較輕松了。 通過控制Input Stride實現Fine目標(Dense Extractor),而不用像FCN結合Lower Layer和上采樣的方式來Fine,相對FCN減小了運算量。Author最后還是結合了Lower Layer信息,進一步提升了效果
最近打算稍微系統的學習下deep learing的一些理論知識,打算采用Andrew Ng的網頁教程UFLDL Tutorial,據說這個教程寫得淺顯易懂,也不太長。不過在這這之前還是復習下machine learning的基礎知識
Artificial Intelligence,也就是人工智能,就像長生不老和星際漫游一樣,是人類最美好的夢想之一。雖然計算機技術已經取得了長足的進步,但是到目前為止,還沒有一臺電腦能產生“自我”的意識。是的,在人類和大量現成數據的幫助下,電腦可以表現的十分強大,但是離開了這兩者,它甚至都不能分辨一個喵星人和一個汪星人。 圖靈(圖靈,大家都知道吧。計算機和人工智能的鼻祖,分別對應于其著名的“圖靈機”和“圖靈測試”)在1950年的論文里,提出圖靈試驗的設想,即,隔墻對話,你將不知道與你談話的,是人還是電腦。這無疑給計算機,尤其是人工智能,預設了一個很高的期望值。但是半個世紀過去了,人工智能的進展,遠遠沒有達到圖靈試驗的標準。這不僅讓多年翹首以待的人們,心灰意冷,認為人工智能是忽悠,相關領域是“偽科學”。?
MNIST在caffe上的訓練與學習.如果前面的train_net.cpp編譯通過了,那么這個就非常簡單。caffe訓練和測試的數據都是需要leveldb格式的,niuzhiheng大牛已經給我們轉好了MNIST的數據格式
Deep Learning已經火了好久,有些人已經在這里面耕耘了好多年,而有些人才剛剛開始,比如本人。如何才能快速地進入這個領域在較短的時間內掌握DeepLearning最新的技術是值得思考的問題。就目前的情況看,通過網絡上的課程及各種Tutorials以及各種論文來研究這個領域是最佳的途徑。經過一段時間的摸索,我以為圍繞Deep Learning領域的四位大牛展開學習是最佳的具體方式。
本人修改的 caffe detection (windows)(gitcafe 鏈接,github 鏈接),針對車輛檢測編譯后的結果,目錄中的主要文件如下所示。(注:本機為Window 7 x64 位系統,GTX 650 GPU 顯卡。在無顯卡機上請使用CPU模式運行)。
利用訓練好的Caffe網絡得到輸入圖像的分類本文檔描述是:如果已經訓練好了一個Caffe網絡,如何利用這個網絡進行圖像的分類。以下以mnist網絡為例。mnist是用來分類手寫數字0-9的。當用戶寫好一個數字后,圖像進入mnist網絡,然后網絡計算出每個數的概率,認為讀到的是概率最大的數。
深度卷積網絡CNN與圖像語義分割.html級別1:DL快速上手級別2:從Caffe著手實踐級別3:讀paper,網絡Train起來級別4:Demo跑起來讀一些源碼玩玩熟悉Caffe接口,寫Demo這是硬功夫分析各層Layer輸出特征級別5:何不自己搭個CNN玩玩TrainCNN時關于數據集的一些注意事項級別6:加速吧,GPU編程關于語義分割的一些其它工作說好的要筆耕不綴,這開始一邊實習一邊找工作,還攤上了自己的一點私事困擾,這幾個月的東西都沒來得及總結一下。這就來記錄一下關于CNN、Caffe、ImageSematicSegmentation相關的工作,由于公司技術保密的問題,很多東西沒辦法和大家詳說只能抱歉了。在5月份前,我也是一個DL和CNN的門外漢,自己試著看tutorials、papers、搭Caffe平臺、測試CNNNet,現在至少也能改改Caffe源碼(Add/ModifyLayer)、基于Caffe寫個Demo。這里希望把學習的過程分享給那些在門口徘徊的朋友。沒法事無巨細,但希望能起到提點的作用!“乍可刺你眼,不可隱我腳”。
train_net.cpptrain_net.cpp是caffe的主函數所在處,學習caffe時應該由此輻射到各個具體的函數去學習。
caffe源碼簡單解析——Blob(1)使用caffe也有一段時間了,但更多是使用Python的接口,使用現有的ImageNet訓練好的模型進行圖片分類。為了更好的了解caffe這個框架,也為了提高自己的水平,在對卷積神經網絡有了一些研究之后,終于開始研讀caffe的源碼了,今天看了Blob類的一些內容,做個總結。看過caffe官方文檔的話,應該會知道,它可以分為三層:Blob、Layer、Net。Blob是一個四維的數組,用于存儲數據,包括輸入數據、輸出數據、權值等等;Layer層則是神經網絡中具體的各層結構,主要是計算的作用,在根據配置文件初始化結構后,前向計算結果,反向更新參數,都是它要做的,而它的輸入和輸出都是Blob數據;Net的話,就是多個Layer組合而成的有向無環圖結構,也就是具體的網絡了。Layer和Net的代碼有待深入,尤其是Layer的代碼,caffe實現了差不多40種不同的Layer層,里面有不同的激活函數,這個要好好研究下。
caffe源碼分析--math_functions.cu代碼研究其中用到一個宏定義
Caffe代碼導讀(0):路線圖【Caffe是什么?】Caffe是一個深度學習框架,以代碼整潔、可讀性強、運行速度快著稱。代碼地址為:https://github.com/BVLC/caffe【博客目的】從接觸Caffe、編譯運行、閱讀代碼、修改代碼一路走來,學習到不少內容,包括深度學習理論,卷積神經網絡算法實現,數學庫MKL,計算機視覺庫OpenCV,C++模板類使用,CUDA程序編寫……本博客目的是為初學者清除代碼閱讀中的障礙,結合官網文檔、融入個人理解、注重動手實踐
按照官網教程安裝,我在 OS X 10.9 和 Ubuntu 14.04 上面都安裝成功了。主要麻煩在于 glog gflags gtest 這幾個依賴項是google上面的需要翻墻。由于我用Mac沒有CUDA,所以安裝時需要設置 CPU_ONLY := 1。 如果不是干凈的系統,安裝還是有點麻煩的比如我在OS X 10.9上面,簡直不是一般的麻煩,OS X 10.9 默認的編譯器是clang,所以還要修改編譯器和重行編譯一大堆依賴庫。這方面其實網上教程很多,涵蓋了各種你可能遇到的問題,多Google下問題還是可以解決的。
Leveldb介紹?Leveldb是一個google實現的非常高效的(key-value)數據庫,能夠支持十億級別的數據量了。在這個數量級別下還有著非常高的性能,主要歸功于它的良好的設計。?LevelDB是單進程的服務,性能非常之高,在一臺4核Q6600的CPU機器上,每秒鐘寫數據超過40w,而隨機讀的性能每秒鐘超過10w。 實際中的應用:我是學習和使用caffe才知道有leveldb這個東西的,比leveldb更高級的有,不過我看了下其文檔,比leveldb復雜多了,先學習leveldb,有時間再學習leveldb。?在caffe中沒有python的leveldb示例,都是用C++直接將圖片轉化leveldb,之前仿照著寫一個將自己的圖片保存為leveldb,訓練之后發現錯誤,而且找不到原因,所以就找了python的實現,畢竟python找錯誤比較簡單一些。