2020/3/9

作者說...
另外,ref:fcn voc-fcn32s training 手起刀落

clone 下來,root folder 有 surgery.py,就是把 fully connected layer 的 parameters 裁剪成 fully convolution layer 的樣子。
所以先用 ssd - fully connected layer train 到收斂後,用 surgery.py 裁出可用的部份,作為 FCN 的 pretrained parameters

先拿 train.prototxt 來看.
第一層的data 層:
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)}"
  }
}
data input 層會call voc_layer.py 中的 SBDSegDataLayer 這個 function,並且會把 param_str 傳入...
現在用的是 SBDSegDataLayer.他的 setup( ) 的comment:
        """
        Setup data layer according to parameters:

        - sbdd_dir: path to SBDD `dataset` dir
        - split: train / seg11valid
        - mean: tuple of mean values to subtract
        - randomize: load in random order (default: True)
        - seed: seed for randomization (default: None / current time)

        for SBDD semantic segmentation.

        N.B.segv11alid is the set of segval11 that does not intersect with SBDD.
        Find it here: https://gist.github.com/shelhamer/edb330760338892d511e.

        example

        params = dict(sbdd_dir="/path/to/SBDD/dataset",
            mean=(104.00698793, 116.66876762, 122.67891434),
            split="valid")
        """
配合上面的 train.prototxt 的 param_str 來看..
{
 \'sbdd_dir\': \'../data/sbdd/dataset\',
 \'seed\': 1337,
 \'split\': \'train\',
 \'mean\': (104.00699, 116.66877, 122.67892)
}
知道 data 在 ../data/sbdd/ 下..

沒有留言:

張貼留言