caffe在训练数据时,图像的尺寸不是方形,如何修改输入的尺寸大小

请教大神,caffe在训练数据时,图像的尺寸不是方形,如何修改输入的尺寸大小
已邀请:
建议读一下caffe.proto文件,里面有对每种layer的详细参数定义,在ConvolutioalParameter里可以找到你想找到的。

1.jpg

 

辛淼 - CaffeCN社区创始人。北航PhD,目前在哈佛大学工作。

赞同来自: 至静至远

在打lmdb的时候把不同的尺寸resize到同样的尺寸啊,
你看看examples/imagenet里面的convert_imageset.sh

GLOG_logtostderr=1 $TOOLS/convert_imageset \
    --resize_height=$RESIZE_HEIGHT \
    --resize_width=$RESIZE_WIDTH \

    --shuffle \
    $TRAIN_DATA_ROOT \
    $DATA/train.txt \
    $EXAMPLE/ilsvrc12_train_lmdb

 

王斌_ICT - 研究领域:深度学习,目标检测

赞同来自: 至静至远

可以看一下caffe官网layer的文档,上面说的很清楚,卷积时候卷积核的大小设置(kernel_size,kernel_h,kernel_w),pad,滑动步长stride都可以容易的设置。 这是链接,可以好好看一下http://caffe.berkeleyvision.or ... .html

李扬 - 密码六个一

赞同来自: 至静至远

构造一个网络首先要保证数据流是通的,即各层的输出形状的是整数,不能是小数。至于构造出来的网络效果好不好,按下不表。只要数据流通畅,你的输入图像是什么形状的都无所谓了。
 
如果你的图像是边长为 256 的正方形。那么卷积层的输出就满足 [ (256 - kernel_size)/ stride ] + 1 ,这个数值得是整数才行,否则没有物理意义。例如,你算得一个边长为 7.7 的 feature map 是没有物理意义的。 pooling 层同理可得。FC 层的输出形状总是满足整数,其唯一的要求就是整个训练过程中 FC 层的输入得是定长的。
 
如果你的图像不是正方形。那么可以像 @辛淼 所说,在制作 leveldb / lmdb 数据库时,缩放到统一大小(非正方形)。然后再如@attitude 所言,使用非正方形的 kernel_size 来使得卷积层的输出依然是整数。
 
总之,撇开网络的好坏不谈,其本质上就是在做算术应用题:如何使得各层的输出是整数。

至静至远

赞同来自:

谢谢辛淼博士那么快速的解答,如果在前向传导过程中,通过调整stride的大小来左右滑动窗口,那么通过修改什么可以调整上下滑动卷积窗口的步幅??谢谢 辛淼博士的解惑!

要回复问题请先登录注册