歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> FCN網絡的訓練——以SIFT-Flow 數據集為例

FCN網絡的訓練——以SIFT-Flow 數據集為例

日期:2017/2/28 13:44:59   编辑:Linux教程

caffe的安裝配置,以及fcn的使用在我前邊的文章當中都已經提及到了,這邊不會再細講。在下邊的內容當中,我們來看看如何使用別人提供的數據集來訓練自己的模型!在這篇文章之後,我計劃還要再寫如何fine-tune和制作自己的數據集,以及用自己的數據集fine-tune。

Caffe 深度學習入門教程 http://www.linuxidc.com/Linux/2016-11/136774.htm

Ubuntu 16.04 安裝配置Caffe 圖文詳解 http://www.linuxidc.com/Linux/2016-12/138870.htm

Ubuntu 16.04下Matlab2014a+Anaconda2+OpenCV3.1+Caffe安裝 http://www.linuxidc.com/Linux/2016-07/132860.htm

Ubuntu 16.04系統下CUDA7.5配置Caffe教程 http://www.linuxidc.com/Linux/2016-07/132859.htm

Caffe在Ubuntu 14.04 64bit 下的安裝 http://www.linuxidc.com/Linux/2015-07/120449.htm

深度學習框架Caffe在Ubuntu下編譯安裝 http://www.linuxidc.com/Linux/2016-07/133225.htm

Caffe + Ubuntu 14.04 64bit + CUDA 6.5 配置說明 http://www.linuxidc.com/Linux/2015-04/116444.htm

Ubuntu 16.04上安裝Caffe http://www.linuxidc.com/Linux/2016-08/134585.htm

Caffe配置簡明教程 ( Ubuntu 14.04 / CUDA 7.5 / cuDNN 5.1 / OpenCV 3.1 ) http://www.linuxidc.com/Linux/2016-09/135016.htm

Ubuntu 16.04上安裝Caffe(CPU only) http://www.linuxidc.com/Linux/2016-09/135034.htm

Ubuntu 14.04搭建Caffe(僅CPU) http://www.linuxidc.com/Linux/2017-01/139236.htm

(一)數據准備(以SIFT-Flow 數據集為例)

下載數據集: http://pan.baidu.com/s/1dFxaAtj ,並解壓至/fcn.berkeleyvision.org/data/下,並將文件夾名重命名為sift-flow。之後,將數據全部resize到500*500。

這裡一定要注意,/fcn.berkeleyvision.org/data/下本來就有一個文件夾叫sift-flow,千萬不要覆蓋。同時,這些原本就存在的文件夾裡的東西還要全部復制到新解壓的sift-flow文件夾下邊。你可以先把原本的sift-slow重新命名為sitf-flow_1,然後再解壓復制!

(二) 下載預訓練模型

下載VGG-16的預訓練模型放至/fcn.berkeleyvision.org/ilsvrc-nets/目錄下,並重命名為vgg16-fcn.caffemodel

百度網盤下載:

鏈接: http://pan.baidu.com/s/1c2d0mBY 密碼: pjgi

到Linux公社1號FTP服務器下載

------------------------------------------分割線------------------------------------------

FTP地址:ftp://ftp1.linuxidc.com

用戶名:ftp1.linuxidc.com

密碼:www.linuxidc.com

在 20177年LinuxIDC.com\1月\FCN網絡的訓練——以SIFT-Flow 數據集為例\

下載方法見 http://www.linuxidc.com/Linux/2013-10/91140.htm

------------------------------------------分割線------------------------------------------

(三)源碼修改

1. prototxt文件修改

進入siftflow-fcn32s文件夾下,將test.prototxttrainval.prototxt中的fc6fc7分別替換為其他名稱,例如:fc6_newfc7_new

原因是我們下載的預訓練模型VGG-16原模型中包含有fc6和fc7這兩個全連接層,而在prototxt中,使我們新添加的卷積層,在模型加載時,如果名稱一樣,而結構數據不同,便會報錯。如果改名之後,原來的fc6/7則會被忽略,而使用我們新的層。

2. caffe path的加入

由於FCN代碼和caffe代碼是獨立的文件夾,因此,須將caffe的Python接口加入到path中去。這裡有兩種方案,一種是在所有代碼中出現import caffe 之前,加入:

1 import sys
2 sys.path.append('caffe根目錄/python')

另一種一勞永逸的方法是:在終端或者bashrc中將接口加入到PYTHONPATH中:

export PYTHONPATH=caffe根目錄/python:$PYTHONPATH

(四)訓練

1 $ cd cd siftflow-fcn32s/
2 $ python solve.py

這裡會遇見幾個問題:

(1)No module named surgery,score

原因是下載的fcn源碼解壓根目錄下有兩個文件:surgery.py和score.py。這兩個文件是下載下來就自帶的,並不是caffe自帶的,也不是前邊我安裝caffe時需要配置的。由於我是在/fcn根目錄/siftflow-fcn32s/這個文件夾下執行的,會導致找不到這兩個文件。所以,解決方案就是:

 cp surgery.py score.py ./siftflow-fcn32s/

將surgery.py和score.py拷貝到siftflow-fcn32s下。


(2)ImportError: No module named setproctitle

解決方案是:安裝setproctitle! sudo pip install setproctitle

(3)IndexError: list index out of range

解決方案:修改GPU編號為0號GPU

(4)No modulw named siftflow_layers

解決方案:瘋了,干錯把根目錄下邊的所有.py文件全拷貝到siftflow-fcn32s裡邊去吧。

好了,現在可以開始訓練了!看看訓練過程:

由於損失loss很大,我也不知道什麼時候能收斂,所以先放一放,等跑出結果來我再過來更新!

Copyright © Linux教程網 All Rights Reserved