這是一個18年畢業大學生的一個畢設題目,項目還沒有完成,在這裡會記錄下在caffe上實作YOLO的過程。歡迎大家和我交流!
20171123-前期準備:
- 首先當然是YOLO作者的自留地:darknet
- 一位在caffe添加了自己寫的層
- YOLO算法的Caffe實作
- caffe 添加YOLO新層Leaky Layer
-
在微軟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源碼檔案說明
- 學習了解有關C++的基礎知識,編寫自己需要的layer。 (c++相關課程,請大家也多多推薦哦)
- 調研目前業界常用的物體檢測的開放樣本集并收集整理。
- 制定一個選取負樣本的政策。
~20171220:
之前幾天主要完成到工作:
- 完成正樣本制作1.5w張,負樣本制作0.05w張;
- 在ubuntu環境下搭建caffe(ubuntu16.04+cuda+cuDNN+anacoda3+caffe)
~20180410
我還在搞這個項目啊,現在我從github裡面下了一個基于Caffe的YOLO模型,改成了中間自己的參數,雖然過程中沒有什麼難點但是實際操作上碰到了一些坑。
- 比如說有時候會在訓練bith_size 太大的時候,會報會記憶體不過的錯誤
。這是時候對應的解決方案是在指令台輸入Check failed: error == cudaSuccess (2 vs. 0) out of memory
得到正在運作的GPU的PID,使用如下代碼。如果進行如下操作還是報相同錯誤,那就應該嘗試将bitch_size改小。nvidia-smi
kill -9 PID
- 有時候在使用python調用caffe的時候
的報錯,但是你在項目導入過程中不僅ImportError: No module named 'caffe'
了,而且在桌面的python下面,make pycaffe
也沒有報錯,那很有可能是因為你的py檔案缺少下面一段話:import caffe
- 1
- 在基于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
- 重新裝完python以後,肯定就是要import caffe。在import caffe之前需要下載下傳skimage
sudo pip install scikit-image
sudo pip install protobuf
因為直接拿别人的代碼來會比較簡單,是以我現在的思路是
-
首先把一個基于Caffe的YOLO網絡和SSD跑通,YOLO使用的網絡是yeahkun 的,SSD使用的是
weiliu89的,并且還附有ssd_pacal.py的源碼解讀(20180411完成)
- 然後再用自己的資料集在上面跑通,這裡當然會有一些了解網絡參數,修改參數符合自己資料集的過程,進行一些對網絡性能的評估運算;(20180410完成在YOLO上面的自己資料集的運作)
- 接着對YOLO網絡進行一些調參的訓練,這個過程也是一個看代碼學習的過程。
- 最後希望就是自己基于caffe寫一個網絡,可以是YOLO2或者YOLO3。
20180412
我的Ubuntu系統根目錄滿了根本下不了東西了,我知道有多種清空記憶體的方法,但是我還是喜歡暴力簡單的,直接從win系統中分出一部分給ubuntu,下班之前搞一下。參考文章
确定評估我的檢測網絡的标準。