fcn+caffe+制作自己的數據集


參考博客:

http://blog.csdn.net/jacke121/article/details/78160398

 

以視網膜血管分割的數據集為例:

訓練樣本:

訓練標簽:

標簽圖的制作依據voc數據集中的樣例,將被檢測的目標改為voc中的一類。

將用ps軟件制作的黑底白色標簽轉化為,目標為(128,0,0)的單通道彩色圖片,存儲格式為.png。也就是將待分割的目標當做飛機。

轉化png的matlab的代碼如下:

imgname='15.jpg';
I=imread(imgname);
I_gray=rgb2gray(I);
I_bw=uint8(im2bw(I_gray))*128;
I1=uint8(zeros(size(I,1),size(I,2),3));
I1(:,:,1)=I_bw;
[x,map]=rgb2ind(I1,256);
imgSaveName=imgname(1:length(imgname)-4);
imwrite(x,map,strcat(imgSaveName,'.png'));

 

制作好訓練集后,修改一些文件中的路徑。

我的工程路徑:

I:\caffe171101\caffe-master\fcn-master\retina200-fcn32s

I:\caffe171101\caffe-master\fcn-master\data\retina200_200

voc_layers.py修改:

可以刪掉底下的class SBDDSegDataLayer(caffe.Layer)   訓練的時候用不到。

修改這三個地方的路徑即可。

 

train.prototxt修改:

這個mean,就是計算訓練樣本RGB三通道的平均值。

 將后面的num_output:21  全部改為num_output:2      只有背景和待分割的目標兩類。

 val.prototxt的修改同理。

 

 deploy_voc_32s.prototxt  不變

solver.prototxt  不需要改動

 

 因為是第一次訓練,采用fcn32s-heavy-pascal.caffemodel作為預訓練模型。

 

 solve.py

import caffe
import surgery, score

import numpy as np
import os
import sys

try:
    import setproctitle
    setproctitle.setproctitle(os.path.basename(os.getcwd()))
except:
    pass

weights = 'fcn32s-heavy-pascal.caffemodel'
deploy_proto = 'deploy_voc_32s.prototxt'

# init
caffe.set_device(int(0))
caffe.set_mode_gpu()

solver = caffe.SGDSolver('solver.prototxt')
#solver.net.copy_from(weights)
vgg_net=caffe.Net(deploy_proto,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('../data/retina200_200/val.txt', dtype=str)

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

必須采用transplant的方式訓練。因為這個模型的網絡中的圖片尺寸和自己的數據集中的圖片尺寸不一樣。

 

訓練完成之后,進行預測時,這個deploy.prototxt文件需要改動一下。

將其中num_output:21的地方全部改為num_output:21

 

實驗結果:

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM