Caffe 学习:Crop 层

版权声明:原创文章,转载请注明: 转载自 DT-IOT的博客https://blog.csdn.net/weixin_41213648 https://blog.csdn.net/weixin_41213648/article/details/89944909

 

  在Fully Convolutional Networks(FCN)中,会用到Crop 层,他的主要作用是进行裁切。下面我们举一个例子来说明如何使用Crop 层。

  Caffe中的数据是以 blobs形式存在的,blob是四维数据,即 (Batch size, number of Chennels, Height, Width)=(N, C, H, W)。---(0,1,2,3)

Crop层的输入(bottom blobs)有两个,让我们假设为A和B,输出(top)为C。

  • A是要进行裁切的bottom,他的size是 (20,50,512,512)
  • B是裁切的参考输入,他的size是(20,10,256,256)
  • C是输出(top blob),由A裁切而来,那么他的size是(20,10,256,256)

  

  在这个例子中,轴0的维度不变,我们只需要裁切blob的轴1,2,3,所以我们设置axis=1,代表我们将会裁切轴1和它之后的所有轴。

  有两个裁切模式:

模式1---给出3个offsets,每个针对一个dimension,offset=(25,128,128)

  • axis=1,offset=(25,128,128)
  • crop operation: C = A[: , 25: 25+B.shape[1] , 128: 128+B.shape[2] , 128: 128+B.shape[3] ]
  • 也就是说,对于A的轴1,对称裁切了25-35
  • 对称裁切:offset = (Original_length - desired length ) / 2

模式2---给出1个offset,适用于三个dimension,offset=25

  • 那么就相当于模式1 的 offset=(25,25,25)

  

  模式1的prototxt写法如下:

layer {

  name: "crop_layer"

  type: "Crop"

  bottom: "A"

  bottom: "B"

  top: "C"

  crop_param {

    axis: 1

    offset: 25

    offset: 128

    offset: 128

  }

}

另外本人还开设了个人公众号:JiandaoStudio ,会在公众号内定期发布行业信息,以及各类免费代码、书籍、大师课程资源。

                                           

                                            

扫码关注本人微信公众号,有惊喜奥!公众号每天定时发送精致文章!回复关键词可获得海量各类编程开发学习资料!

例如:想获得Python入门至精通学习资料,请回复关键词Python即可。
 

猜你喜欢

转载自blog.csdn.net/weixin_41213648/article/details/89944909