FCN-加載訓練與測試數據

當我們生成了數據后,我們來看看FCN是如何加載數據的。

FCN 代碼預覽

這里寫圖片描述

其中:
- data : 訓練測試數據
- ilsvrc-nets:存放預訓練的模型
- 剩下的框:不同數據集的訓練測試prototxt
- voc_layers,siftflow_layers等:數據生成層
- snapshot:保存快照(若沒有自建)

加載訓練測試數據

我們從solve.py看起。
在這里鄭重聲明一下:如果訓練fcn32s的網絡模型,一定要修改solve.py利用transplant的方式獲取vgg16的網絡權重。
具體操作為:

import sys  
sys.path.append('/home/hitoia/caffe/python')
import caffe
import surgery, scoreimport numpy as np
import os
import systry:import setproctitlesetproctitle.setproctitle(os.path.basename(os.getcwd()))
except:passvgg_weights = '../ilsvrc-nets/vgg16-fcn.caffemodel'  
vgg_proto = '../ilsvrc-nets/VGG_ILSVRC_16_layers_deploy.prototxt'  
weights = '../ilsvrc-nets/vgg16-fcn.caffemodel'
#weights = '../ilsvrc-nets/vgg16-fcn.caffemodel'# init
#caffe.set_device(int(sys.argv[1]))
caffe.set_mode_gpu()
caffe.set_device(0)#solver = caffe.SGDSolver('solver.prototxt')
#solver.net.copy_from(weights)
solver = caffe.SGDSolver('solver.prototxt')
vgg_net=caffe.Net(vgg_proto,vgg_weights,caffe.TRAIN) 
surgery.transplant(solver.net,vgg_net)  
del vgg_net# surgeries
interp_layers = [k for k in solver.net.params.keys() if 'up' in k]
surgery.interp(solver.net, interp_layers)# scoring
val = np.loadtxt('/home/hitoia/fcn.berkeleyvision.org/data/pascal/VOCdevkit/VOC2012/ImageSets/Segmentation/seg11valid.txt', dtype=str) #seg11valid就是測試數據for _ in range(25):solver.step(1000)score.seg_tests(solver, False, val, layer='score')

關于VGG_ILSVRC_16_layers_deploy.prototxt 可以在http://pan.baidu.com/s/1geLL6Sz下載。

如果訓練fcn16s,則可以直接copy自己的fcn32s的model的權重,不需要transplant,也就是不需要修改solve.py
如果訓練fcn8s,則可以直接copy自己的fcn16s的model的權重,不需要transplant,也就是不需要修改solve.py
只有如此,才能避免loss高居不下的情況

【注意:】為什么這里要使用transplant?
參考:http://www.cnblogs.com/xuanxufeng/p/6243342.html
這里寫圖片描述

其實主要是因為vgg中包含了fc6,fc7等全連接層,而FCN中將之改成了全卷積層,二者性質不同,但仍然可以將全連接層的參數拷貝到全卷積層上,也就是這里的transplant所起的作用。

這里的:

for _ in range(25):solver.step(1000)score.seg_tests(solver, False, val, layer='score')

奇怪的現象:修改solver.prototxt中的max_iter: 100000沒有改變最大迭代次數,只有改變這個step里的數字才有用,這里最大迭代次數等于25*1000 = 25000次。

而至于訓練數據的加載,則在train.prototxt中

layer {name: "data"type: "Python"top: "data"top: "label"python_param {module: "voc_layers"layer: "SBDDSegDataLayer"param_str: "{\'sbdd_dir\': \'../data/sbdd/dataset\', \'seed\': 1337, \'split\': \'train\', \'mean\': (104.00699, 116.66877, 122.67892)}"}
}

param_str包含了訓練數據加載的參數:sbdd_dir,split

label的加載

上一篇《FCN-數據篇》 講述了如何生成label數據,
生成索引圖后,本應該 制作mat文件,但是有點麻煩,參考了網上的資料,修改代碼,使得這里也可以直接存放索引圖。
修改fcn目錄下的voc_layers.py
注釋掉原本的load_label ,修改為新的

#    def load_label(self, idx):
#        """
#        Load label image as 1 x height x width integer array of label indices.
#        The leading singleton dimension is required by the loss.
#        """
#        import scipy.io
#        mat = scipy.io.loadmat('{}/cls/{}.mat'.format(self.sbdd_dir, idx))
#        label = mat['GTcls'][0]['Segmentation'][0].astype(np.uint8)
#        label = label[np.newaxis, ...]
#        return labeldef load_label(self, idx):"""Load label image as 1 x height x width integer array of label indices.The leading singleton dimension is required by the loss."""im = Image.open('{}/cls/{}.png'.format(self.sbdd_dir, idx))label = np.array(im, dtype=np.uint8)label = label[np.newaxis, ...]return label

這里的label載入都是0,1等的索引值,代表分割種類。

參考

  1. ubuntu下caffe的FCN8模型訓練
  2. FCN網絡的訓練——以SIFT-Flow 數據集為例

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258588.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

怎么撤銷定時說說_已注冊商標遇到撤三申請怎么辦

很多企業的商標都遇到過商標撤三的情況,撤三簡單的說就是,注冊商標沒有正當理由連續三年不使用的,任何單位或者個人可以向商標局申請撤銷該注冊商標。所以說,無論您的企業多大,商標持有的再多,也要做好商標…

windows下架設SVN服務器并設置開機啟動

1、安裝SVN服務器,到http://subversion.apache.org/packages.html上下載windows版的SVN,并安裝,在命令行下運行svn命令,如下所以,則svn服務器安裝成功。 C:\Documents and Settings\Administrator>svn 使用“svn …

Spartan-6 FPGA SelectIO Resources User Guide 筆記2 SelectIO Attributes/Constraints

1.Location Constraint 用于分配I/O端口 NET <I/O_NAME> LOC "<EXTERNAL_PORT_IDENTIFIER>"; Example: NET MY_IO LOCR7; 2.IOSTANDARD Attribute 用于選擇IO標準如LVCMOS25&#xff0c;LVDS_25等 NET <I/O_NAME> IOSTANDARD”<IOSTANDARD V…

python合并pdf 加書簽_Python生成pdf目錄書簽的實例方法

有時候我們用的一些pdf資料是沒有目錄的&#xff0c;這樣找尋我們想到的東西比較麻煩。本篇文章就為大家帶來python來生成pdf目錄書簽的方法。首先&#xff0c;我們需要下載一個軟件FreePic2Pdf,利用它我們可以將我們的pdf文件導入書簽工具下載&#xff1a;https://www.jb51.ne…

正則表達式及其在python上的應用

今天學習了一早上正則表達式。如下內容部分轉載自《讀懂正則表達式就這么簡單》 一、什么是正則表達式 正則表達式是一種特殊的字符串模式&#xff0c;用于匹配一組字符串&#xff0c;就好比用模具做產品&#xff0c;而正則就是這個模具&#xff0c;定義一種規則去匹配符合規…

安全專家在硬盤固件中發現NSA的網絡間諜程序

本周安全專家在硬盤固件中發現了美國國家安全局&#xff08;NSA&#xff09;的網絡間諜程序&#xff0c;這些程序非常難以被檢測或者刪除。來自卡巴斯基的研究者公布了該惡意程序用來“Phone Home”的URL地址&#xff0c;NSA利用這些隨機、凌亂的地址來收集硬盤上的敏感數據。 …

SVN 分支/合并/切換

本文無條理性&#xff0c;僅作自我參考。 花費了兩個半下午&#xff0c;走馬觀花的看了一下說明文檔&#xff0c;SVN設計的太復雜&#xff0c;對我這樣的&#xff0c;不在一個集體的的業余開發者&#xff0c;要理解起來真是太難了。。。。 分支 Make branches as often as yo…

使用Firefox或Chrome的雇員表現更好不頻繁跳槽

一家銷售軟件幫助雇主招募雇員和留住雇員的公司Cornerstone OnDemand稱&#xff0c;使用非默認瀏覽器如Firefox或Chrome的雇員表現更好不頻繁跳槽。 這項研究旨在幫助那些跳槽率過高的行業&#xff0c;比如呼叫中心的年跳槽率高達45%。對50000名在線工作評估參與者的數據進行分…

關于FCN的數據集著色說明

前方我們講解了《 FCN-數據篇》。里面包含了如何制作類似pascal voc的label。很大篇幅在談如何著色&#xff0c;如何轉化為索引圖像。 由于一些內容參考網上的資料&#xff0c;所以對里面的一些操作含義也有些糊涂。 其實網上的東西也不都對&#xff0c;很多人云亦云。所以需要…

mongobd python_Python操作MongoDB數據庫PyMongo庫使用方法

引用PyMongo復制代碼 代碼如下:>>> import pymongo創建連接Connection復制代碼 代碼如下:>>> import pymongo>>> conn pymongo.Connection(localhost,27017)或復制代碼 代碼如下:>>> from pymongo import Connection>>> conn C…

Android Property Animation動畫

3.0以前&#xff0c;android支持兩種動畫模式&#xff0c;tween animation,frame animation&#xff0c;在android3.0中又引入了一個新的動畫系統&#xff1a;property animation&#xff0c;這三種動畫模式在SDK中被稱為property animation,view animation,drawable animation…

angular實現select的ng-options

ng實現簡單的select <div ng-controller"ngSelect"><select ng-model"vm.selectVal" ng-options"o.title for o in vm.optionsData"><option value"">請選擇</option></select> </div> var app …

Ubuntu14.04下Mongodb數據庫可視化工具安裝部署步驟(圖文詳解)(博主推薦)

不多說&#xff0c;直接上干貨&#xff01; 前期博客 Ubuntu14.04下Mongodb&#xff08;離線安裝方式|非apt-get&#xff09;安裝部署步驟&#xff08;圖文詳解&#xff09;&#xff08;博主推薦&#xff09; Ubuntu14.04下Mongodb官網安裝部署步驟&#xff08;圖文詳解&#x…

deeplab運行指南

以下僅僅為一個總結&#xff0c;參考了網上的眾多資料&#xff0c;僅備忘記。 主要鏈接 deeplab主頁&#xff1a;http://liangchiehchen.com/projects/DeepLab.html官方代碼&#xff1a;https://bitbucket.org/aquariusjay/deeplab-public-ver2python 版caffe實現&#xff1a…

tensorboard使用_colab打不開tensorboard的解決辦法

2020.4.1更新&#xff1a;colab現在自帶tensorboard的魔術方法了&#xff0c;用這個命令就能展示tensorboard%load_ext tensorboard %tensorboard --logdir ./log/train# 加載一次后&#xff0c;如果要重新加載&#xff0c;就需要使用reload方法 %reload_ext tensorboard %tens…

構造函數為什么不能是虛函數 ( 轉載自C/C++程序員之家)

從存儲空間角度&#xff0c;虛函數對應一個指向vtable虛函數表的指針&#xff0c;這大家都知道&#xff0c;可是這個指向vtable的指針其實是存儲在對象的內存空間的。問題出來了&#xff0c;如果構造函數是虛的&#xff0c;就需要通過 vtable來調用&#xff0c;可是對象還沒有實…

小程序“自定義關鍵詞”功能的常見問答

我們知道小程序可以通過線下掃碼、公眾號、好友分享、長按小程序碼、搜索小程序名稱來找到&#xff0c;現在又多了一個新方式——小程序后臺新增自定義關鍵詞功能&#xff1a;已發布小程序的開發者&#xff0c;可提交最多10個與小程序業務相關的關鍵詞&#xff0c;幫助你的小程…

語義分割深度學習方法集錦

轉載&#xff1a;https://github.com/handong1587/handong1587.github.io/edit/master/_posts/deep_learning/2015-10-09-segmentation.md Papers Deep Joint Task Learning for Generic Object Extraction intro: NIPS 2014homepage: http://vision.sysu.edu.cn/projects/d…

員工培訓與開發實訓心得體會_公司新員工培訓心得體會800字范文

點擊藍字關注我們培訓是一次能夠快速提升我們的機會&#xff0c;而每個新員工也是通過培訓盡快的融入公司的。因此&#xff0c;我們要更加重視培訓一些!下面是小編為大家整理的公司新員工培訓心得體會&#xff0c;希望對大家有幫助。公司新員工培訓心得體會800字為了讓我們新進…

Nginx ab壓力測試

20-ab壓力測試及nginx性能統計模塊 優化的啟發&#xff0c;打開的文件太多 Nginx 錯誤日志顯示&#xff0c;打開文件數太多 系統層面 more /proc/sys/net/core/somaxconn 單個Nginx 測試index.html 沒優化前 [root/home/www]#ab -c 4000 -n 100000 http://test.demo.com/inde…