1. 程式人生 > >FCN影象語義分割

FCN影象語義分割

歡迎訪問人工智慧研究網課程中心

-----------------------------------------------------------------------------------

FCN做影象語義分割--測試和訓練

FCN  論文:Fully Convolutional Networks for Semantic Segmentation(FC-Model).pdf FCN  原理: FCN  程式碼:基於MatConvNet構建模型   1. 下載原始碼,放到根目錄E:MatConvNet-fcn-master   2.  配置matconvnet,  拷貝matconvnet-beta16版本到根目錄下. 並進行編譯。
       CPU編譯直接執行 vl_compilenn()。        GPU編譯最好用CUDA7.5,如果是titanx等計算能力在5.2的卡,cuda6.5編譯會報錯“compute 52 xxx 錯”。        若電腦中同時有cuda6.5/cuda7.5,要在函式cuda_root = search_cuda_devkit(opts)中設定nvcc=nvcc(index(2)),        而且要檢查,系統變數中 CUDA_PATH和 CUDA_Samples_PATH的路徑是在7.5下。        編譯前,還要拷貝cudnnxx.dll到matcoonvnet的mex資料夾下,以提供對cudnn的支援。
       編譯前,還要在vl_compilenn()中加上 “v7.5”這個CUDA版本號,直接搜素"v6.5"就到了對應位置。   3.  拷貝ZF模型和VGG模型,注意是-beta16版格式的,其他版本會報錯,到FCN的data/modles路徑下。   4.  配置VOC2011資料集,進行訓練。訓練主函式 fcnTrain()。        配置資料集根據錯誤除錯掉BUG.
function fcnTrain(varargin)
%FNCTRAIN Train FCN model using MatConvNet

run matconvnet/matlabl_setupnn ;
addpath matconvnet/examples ;

% experiment and data paths
opts.archiveDir = fullfile('F:','VOC2011'); % 下載原始資料
opts.dataDir = fullfile('F:','VOC2011','VOCtrainval');
opts.expDir = fullfile('data','fcn16s-voc11-train');
opts.modelType = 'fcn16s' ;
opts.sourceModelPath = 'data/models/imagenet-vgg-verydeep-16.mat'; %-beta16版本
[opts, varargin] = vl_argparse(opts, varargin) ;

% experiment setup
opts.imdbPath = fullfile(opts.expDir, 'imdb.mat') ;
opts.imdbStatsPath = fullfile(opts.expDir, 'imdbStats.mat') ;
opts.vocEdition = '11' ;
opts.vocAdditionalSegmentations = true ;

opts.numFetchThreads = 1 ; % not used yet

% training options (SGD)
opts.train.batchSize = 20 ;
opts.train.numSubBatches = 10 ;
opts.train.continue = true ;
opts.train.gpus = 1 ;
opts.train.prefetch = true ;
opts.train.expDir = opts.expDir ;
opts.train.learningRate = 0.0001 * ones(1,50) ;
opts.train.numEpochs = numel(opts.train.learningRate) ;

opts = vl_argparse(opts, varargin) ;
5. 測試FCN,注意使用fcnTest ,  執行如下。。。。。

本部落格所有案例程式 提供原始碼 和 安裝執行指導!

需要的可以加Q群 625691515