天天看點

caffe項目實踐:實作YOLO對物體進行檢測

這是一個18年畢業大學生的一個畢設題目,項目還沒有完成,在這裡會記錄下在caffe上實作YOLO的過程。歡迎大家和我交流!

20171123-前期準備:

  1. 首先當然是YOLO作者的自留地:darknet
  2. 一位在caffe添加了自己寫的層
  3. YOLO算法的Caffe實作
  4. caffe 添加YOLO新層Leaky Layer
  5. 在微軟caffe上實作yolov1的訓練和預測(windows cpu) 

    github上關于caffe-yolo項目 

    https://github.com/hojel/caffe-yolo-model 

    https://github.com/yeahkun/caffe-yolo 

    https://github.com/xingwangsfu/caffe-yolo 

    大緻看了一下以後感覺要看一下caffe 的源碼,添加一些caffe目前沒有的層和改變caffe最後的激活函數。

20171124-閱讀caffe源碼教程: 

caffe源碼解析的三個部落格分享 

caffe目錄結構 及 caffe源碼檔案說明

  1. 學習了解有關C++的基礎知識,編寫自己需要的layer。 (c++相關課程,請大家也多多推薦哦)
  2. 調研目前業界常用的物體檢測的開放樣本集并收集整理。
  3. 制定一個選取負樣本的政策。

~20171220: 

之前幾天主要完成到工作:

  1. 完成正樣本制作1.5w張,負樣本制作0.05w張;
  2. 在ubuntu環境下搭建caffe(ubuntu16.04+cuda+cuDNN+anacoda3+caffe)

~20180410 

我還在搞這個項目啊,現在我從github裡面下了一個基于Caffe的YOLO模型,改成了中間自己的參數,雖然過程中沒有什麼難點但是實際操作上碰到了一些坑。

  1. 比如說有時候會在訓練bith_size 太大的時候,會報會記憶體不過的錯誤

    Check failed: error == cudaSuccess (2 vs. 0) out of memory

    。這是時候對應的解決方案是在指令台輸入

    nvidia-smi

    得到正在運作的GPU的PID,使用如下代碼。如果進行如下操作還是報相同錯誤,那就應該嘗試将bitch_size改小。

    kill -9 PID

  2. 有時候在使用python調用caffe的時候

    ImportError: No module named 'caffe'

    的報錯,但是你在項目導入過程中不僅

    make pycaffe

     了,而且在桌面的python下面,

    import caffe

    也沒有報錯,那很有可能是因為你的py檔案缺少下面一段話:
    • 1
  3. 在基于caffe使用别人寫的網絡的過程中,經常會出現要調用不同版本的python情況。網上也有很多很友善的方法,下面是本人經常使用更換ubuntu系統預設python版本的方法(以将python3.5換成python2.7為例):
    ~$ python --version //檢視系統python自帶版本
    Python 
    ~$ whereis python2 //搜尋系統是否已經安裝python2.7
    python2: /usr/bin/python2-config /usr/bin/python2
    /usr/bin/python2 /usr/lib/python2 /etc/python2
    /usr/local/lib/python2 /usr/include/python2
    /usr/share/man/man1/python2.gz
    //若結果裡面有/usr/bin/python2.7說明已經安裝
    //如果沒有則需要手動安裝
    ~$ sudo rm /usr/bin/python //删除原有的python連接配接檔案
    ~$ sudo ln -s /usr/bin/python2  /usr/bin/python  //然後建立指向python2.7的軟連結
    $ PATH=/usr/bin:$PATH //把路徑/usr/bin/加入環境變量PATH中
               
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  4. 重新裝完python以後,肯定就是要import caffe。在import caffe之前需要下載下傳skimage

    sudo pip install scikit-image

    sudo pip install protobuf

因為直接拿别人的代碼來會比較簡單,是以我現在的思路是

  1. 首先把一個基于Caffe的YOLO網絡和SSD跑通,YOLO使用的網絡是yeahkun 的,SSD使用的是 

    weiliu89的,并且還附有ssd_pacal.py的源碼解讀(20180411完成)

  2. 然後再用自己的資料集在上面跑通,這裡當然會有一些了解網絡參數,修改參數符合自己資料集的過程,進行一些對網絡性能的評估運算;(20180410完成在YOLO上面的自己資料集的運作)
  3. 接着對YOLO網絡進行一些調參的訓練,這個過程也是一個看代碼學習的過程。
  4. 最後希望就是自己基于caffe寫一個網絡,可以是YOLO2或者YOLO3。

20180412 

我的Ubuntu系統根目錄滿了根本下不了東西了,我知道有多種清空記憶體的方法,但是我還是喜歡暴力簡單的,直接從win系統中分出一部分給ubuntu,下班之前搞一下。參考文章 

确定評估我的檢測網絡的标準。

繼續閱讀