frame

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

[caffe] Compile error when try to concat result of concat

Simple example,
but compile error when try to concat result of concat

mvNCCompile -s 12 opir5.prototxt -in m1

Traceback (most recent call last):
  File "/usr/local/bin/mvNCCompile", line 118, in <module>
    create_graph(args.network, args.inputnode, args.outputnode, args.outfile, args.nshaves, args.inputsize, args.weights)
  File "/usr/local/bin/mvNCCompile", line 101, in create_graph
    net = parse_caffe(args, myriad_config)
  File "/usr/local/bin/ncsdk/Controllers/CaffeParser.py", line 503, in parse_caffe
    node.concat_axis = layer.concat_param.axis
AttributeError: 'list' object has no attribute 'concat_axis'

opir5.prototxt:

layer {
  name: "image"
  type: "Input"
  top: "image"
  input_param {
    shape {
      dim: 1
      dim: 3
      dim: 432
      dim: 368
    }
  }
}
layer {
  name: "m1"
  type: "Convolution"
  bottom: "image"
  top: "m1"
  convolution_param {
    num_output: 24
    bias_term: false
    kernel_size: 3
    group: 1
    stride: 2
    pad_h: 1
    pad_w: 1
  }
}
layer {
  name: "m2"
  type: "Convolution"
  bottom: "image"
  top: "m2"
  convolution_param {
    num_output: 24
    bias_term: false
    kernel_size: 3
    group: 1
    stride: 2
    pad_h: 1
    pad_w: 1
  }
}
layer {
  name: "m3"
  type: "Convolution"
  bottom: "image"
  top: "m3"
  convolution_param {
    num_output: 24
    bias_term: false
    kernel_size: 3
    group: 1
    stride: 2
    pad_h: 1
    pad_w: 1
  }
}

layer {
  name: "feat_concat1"
  type: "Concat"
  bottom: "m1"
  bottom: "m2"
  bottom: "m3"
  top: "feat_concat1"
  concat_param {
    axis: 1
  }
}

layer {
  name: "m4"
  type: "Convolution"
  bottom: "image"
  top: "m4"
  convolution_param {
    num_output: 24
    bias_term: false
    kernel_size: 3
    group: 1
    stride: 2
    pad_h: 1
    pad_w: 1
  }
}

layer {
  name: "feat_concat2"
  type: "Concat"
  bottom: "m4"
  bottom: "feat_concat1"
  top: "feat_concat2"
  concat_param {
    axis: 1
  }
}

Comments

  • 6 Comments sorted by Votes Date Added
  • @jokilokis Did you solved the problem?

  • @Tome_at_Intel I have encountered this problem too. NCSDK version is 1.12.00.01.

    Is this bug fixed?
    If not, are there any temporary solutions which DO NOT require modifications of prototxt file?
    I have checked python codes under "/usr/local/bin/ncsdk", but I couldn't find a solution.
    Can you help me with this problem?

    Thanks in advance.

  • @prophett0527 You are seeing the same issue as the jokilokis? The issue with concat being the last layer is still being worked on. The current work around is to modify the prototxt file as you mentioned. As for concat of a specific axis of two inputs (see caffe example below), the current NCSDK and verion 1.12 doesn't have support for this yet.

    layer {
      name: "feat_concat2"
      type: "Concat"
      bottom: "m4"
      bottom: "feat_concat1"
      top: "feat_concat2"
      concat_param {
        axis: 1
      }
    }
    
  • @Tome_at_Intel Thanks for the quick response.

    My problem is the same as @jokilokis .
    When concat the result of another concat layer, mvNCCompile reports errors "AttributeError: 'list' object has no attribute 'concat_axis'".
    If currently NCSDK does not support this type of layers, the only solution is to add a proxy layer between the two concats?
    Ex:
    problem : "feat_concat1" => "feat_concat2"
    solution : "feat_concat1" => "proxy layer(max pooling with k=1)" => "feat_concat2"

    Is this solution going to fix the problem?

    BTW, the PeleeNet, which is published this year, has this type of layers (concat the result of another concat)

    layer {
      name: "stage1_2/concat"
      type: "Concat"
      bottom: "stage1_1/concat"
      bottom: "stage1_2/branch1b"
      bottom: "stage1_2/branch2c"
      top: "stage1_2/concat"
      concat_param {
        axis: 1
      }
    }
  • @prophett0527 I haven't tried that solution yet so I can't say. The concat of a specific axis isn't supported yet, but full concat of a layer is supported (see example below).

    layer {
      name: "inception_3a/output"
      type: "Concat"
      bottom: "inception_3a/1x1"
      bottom: "inception_3a/3x3"
      bottom: "inception_3a/5x5"
      bottom: "inception_3a/pool_proj"
      top: "inception_3a/output"
    }
    
Sign In or Register to comment.