2017-07-19 41 views
1

好的,我有一個關於在caffe中使用SPP Layer的問題。 此問題是previous one後面的問題。在caffe中使用SPP層導致檢查失敗:pad_w_ <kernel_w_(1與1)

當使用SPP層時,我得到下面的錯誤輸出。 看起來圖像在到達spp層時變得太小了? 我使用的圖像很小。寬度範圍在10到20像素之間,高度範圍在30到35像素之間。

I0719 12:18:22.553256 2114932736 net.cpp:406] spatial_pyramid_pooling <- conv2 
I0719 12:18:22.553261 2114932736 net.cpp:380] spatial_pyramid_pooling -> pool2 
F0719 12:18:22.553505 2114932736 pooling_layer.cpp:74] Check failed: pad_w_ < kernel_w_ (1 vs. 1) 
*** Check failure stack trace: *** 
    @  0x106afcb6e google::LogMessage::Fail() 
    @  0x106afbfbe google::LogMessage::SendToLog() 
    @  0x106afc53a google::LogMessage::Flush() 
    @  0x106aff86b google::LogMessageFatal::~LogMessageFatal() 
    @  0x106afce55 google::LogMessageFatal::~LogMessageFatal() 
    @  0x1068dc659 caffe::PoolingLayer<>::LayerSetUp() 
    @  0x1068ffd98 caffe::SPPLayer<>::LayerSetUp() 
    @  0x10691123f caffe::Net<>::Init() 
    @  0x10690fefe caffe::Net<>::Net() 
    @  0x106927ef8 caffe::Solver<>::InitTrainNet() 
    @  0x106927325 caffe::Solver<>::Init() 
    @  0x106926f95 caffe::Solver<>::Solver() 
    @  0x106935b46 caffe::SGDSolver<>::SGDSolver() 
    @  0x10693ae52 caffe::Creator_SGDSolver<>() 
    @  0x1067e78f3 train() 
    @  0x1067ea22a main 
    @  0x7fff9a3ad5ad start 
    @    0x5 (unknown) 
+0

好像你是正確的。您使用的圖像太小。你可能會考慮填充你正在使用的conv層,或者避免使用pooling來保持足夠大的中間特徵映射。 – Shai

回答

0

我是對的,我的圖像很小。 我改變了我的網絡,它的工作。我刪除了一個conv層,並用spp層替換了普通的pool層。我還必須將我的測試批量設置爲1.準確度非常高,但我的F1分數下降了。我不知道這是否與我必須使用的小批量測試有關。


網:

name: "TessDigitMean" 
layer { 
    name: "input" 
    type: "Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TRAIN 
    } 
    transform_param { 
    scale: 0.00390625 
    } 
    data_param { 
    source: "/Users/rvaldez/Documents/Datasets/Digits/SeperatedProviderV3_1020_SPP/784/caffe/train_lmdb" 
    batch_size: 1 #64 
    backend: LMDB 
    } 
} 
layer { 
    name: "input" 
    type: "Data" 
    top: "data" 
    top: "label" 
    include { 
    phase: TEST 
    } 
    transform_param { 
    scale: 0.00390625 
    } 
    data_param { 
    source: "/Users/rvaldez/Documents/Datasets/Digits/SeperatedProviderV3_1020_SPP/784/caffe/test_lmdb" 
    batch_size: 1 
    backend: LMDB 
    } 
} 
layer { 
    name: "conv1" 
    type: "Convolution" 
    bottom: "data" 
    top: "conv1" 
    param { 
    lr_mult: 1 
    } 
    param { 
    lr_mult: 2 
    } 
    convolution_param { 
    num_output: 20 
    kernel_size: 5 
    pad_w: 2 
    stride: 1 
    weight_filler { 
     type: "xavier" 
    } 
    bias_filler { 
     type: "constant" 
    } 
    } 
} 

layer { 
    name: "spatial_pyramid_pooling" 
    type: "SPP" 
    bottom: "conv1" 
    top: "pool2" 
    spp_param { 
    pyramid_height: 2 
    } 
} 
layer { 
    name: "ip1" 
    type: "InnerProduct" 
    bottom: "pool2" 
    top: "ip1" 
    param { 
    lr_mult: 1 
    } 
    param { 
    lr_mult: 2 
    } 
    inner_product_param { 
    num_output: 500 
    weight_filler { 
     type: "xavier" 
    } 
    bias_filler { 
     type: "constant" 
    } 
    } 
} 
layer { 
    name: "relu1" 
    type: "ReLU" 
    bottom: "ip1" 
    top: "ip1" 
} 
layer { 
    name: "ip2" 
    type: "InnerProduct" 
    bottom: "ip1" 
    top: "ip2" 
    param { 
    lr_mult: 1 
    } 
    param { 
    lr_mult: 2 
    } 
    inner_product_param { 
    num_output: 10 
    weight_filler { 
     type: "xavier" 
    } 
    bias_filler { 
     type: "constant" 
    } 
    } 
} 
layer { 
    name: "accuracy" 
    type: "Accuracy" 
    bottom: "ip2" 
    bottom: "label" 
    top: "accuracy" 
    include { 
    phase: TEST 
    } 
} 
layer { 
    name: "loss" 
    type: "SoftmaxWithLoss" 
    bottom: "ip2" 
    bottom: "label" 
    top: "loss" 
} 
相關問題