s******a 发帖数: 184 | 1 我需要对很大的图像做分割。比如说size是 2048×2048。图像数量只有几百幅。 在做
训练集的时候, 我把大幅照片分割成小得,比如说64×64。
在做prediction的时候,就像sliding window 一样, 依次从2048×2048中选取64×64
的方格, feed到训练好的network里做分割。然后粘贴起来成为整个2048×2048的分割
图像。 这样的方法是标准的做法吗。一般在patch交接的地方,比如第一个64×64 和
第二个64×64交界的那些pixel会看出不连续的样子。有没有更好的做法。 |
j********g 发帖数: 61 | 2 把slide调成1.等于总共有(2048-64+1)*(2048-64+1)个patches。再把output组合起来
。 |
s******a 发帖数: 184 | 3 我这么做过, 结果是平滑很多,但那些pixel就会显得非常模糊。当然我可以用一个特
定的threshold, 把这些pixel value 归成0 或一。还有其它的做法吗?
【在 j********g 的大作中提到】 : 把slide调成1.等于总共有(2048-64+1)*(2048-64+1)个patches。再把output组合起来 : 。
|
w***g 发帖数: 5958 | 4 训练时用patch, 预测时用全图。64有点太小,两三百三四百比较正常吧。实在不行采
用stitch.
64
【在 s******a 的大作中提到】 : 我需要对很大的图像做分割。比如说size是 2048×2048。图像数量只有几百幅。 在做 : 训练集的时候, 我把大幅照片分割成小得,比如说64×64。 : 在做prediction的时候,就像sliding window 一样, 依次从2048×2048中选取64×64 : 的方格, feed到训练好的network里做分割。然后粘贴起来成为整个2048×2048的分割 : 图像。 这样的方法是标准的做法吗。一般在patch交接的地方,比如第一个64×64 和 : 第二个64×64交界的那些pixel会看出不连续的样子。有没有更好的做法。
|
s******a 发帖数: 184 | 5 谢谢, 我再试试。 有两个问题
1) 预测时用全图。可建model的时候用的是patch,相当于局部信息。虽说CNN可以抓
global, 但这么用好象思路上没转过来。
2)还有在具体实现上,比如我训练时基于64×64。 第一层入口处的输入image shape
也是设定成64×64。假如我预测时feed进256×256。 这个通不过呀。 是不是先把256
×256 resize成64×64, 预测完再resize回来。
能不能说一下你提到的stitch 是什么意思。感谢。
训练时用patch, 预测时用全图。64有点太小,两三百三四百比较正常吧。实在不行采
【在 w***g 的大作中提到】 : 训练时用patch, 预测时用全图。64有点太小,两三百三四百比较正常吧。实在不行采 : 用stitch. : : 64
|
w***g 发帖数: 5958 | 6 FCN的输入不需要确定大小,至少我用过caffe和tensorflow都支持自动调整大小。
只要保证每个batch大小一致就行。我都是batch size = 1。
比如
X = tf.placeholder(tf.float32, shape=(None, None, None, 3), name="images")
Y = tf.placeholder(tf.float32, shape=(None, None, None, 1), name="labels")
只有channel数是定的,batch size和图片大小都是每个iteration动态调整的。
你的问题不是CNN抓global信息。FCN本身就是一个大的convolution,就是local的。
你的问题是一般network的receptive field都> 64,也就是说大于你的input size。
这样你train出来的model都会expect有白边。如果这个model直接apply到全图上,
中间那些位置没有白边,就会和training example有systematic的差别。
你把test image切片可以避免这个问题,但是输出会损失连续性。因为你的每个
patch在预测的时候系统其实都偷偷给你加了白边。如果非要stitch,我觉得加大
patch size能改善你这个问题。
shape
256
【在 s******a 的大作中提到】 : 谢谢, 我再试试。 有两个问题 : 1) 预测时用全图。可建model的时候用的是patch,相当于局部信息。虽说CNN可以抓 : global, 但这么用好象思路上没转过来。 : 2)还有在具体实现上,比如我训练时基于64×64。 第一层入口处的输入image shape : 也是设定成64×64。假如我预测时feed进256×256。 这个通不过呀。 是不是先把256 : ×256 resize成64×64, 预测完再resize回来。 : 能不能说一下你提到的stitch 是什么意思。感谢。 : : 训练时用patch, 预测时用全图。64有点太小,两三百三四百比较正常吧。实在不行采
|
w***g 发帖数: 5958 | 7 你这个套路有一种暴力美, 我很喜欢。
【在 j********g 的大作中提到】 : 把slide调成1.等于总共有(2048-64+1)*(2048-64+1)个patches。再把output组合起来 : 。
|
s******a 发帖数: 184 | 8 wdong,谢谢。 请问这个receptive field是不是根据max pooling的 层数算出来的,
比如我有四层 pooling,假设size是2, 那么receptive field就是64。 这里假设con
V layer没有pixel的丢失。
另外你说的这个 “如果这个model直接apply到全图上,
中间那些位置没有白边,就会和training example有systematic的差别” 怎么理解,
为什么中间没有白边,怎末就和training example有systematic的差别? 谢了。
【在 w***g 的大作中提到】 : FCN的输入不需要确定大小,至少我用过caffe和tensorflow都支持自动调整大小。 : 只要保证每个batch大小一致就行。我都是batch size = 1。 : 比如 : X = tf.placeholder(tf.float32, shape=(None, None, None, 3), name="images") : Y = tf.placeholder(tf.float32, shape=(None, None, None, 1), name="labels") : 只有channel数是定的,batch size和图片大小都是每个iteration动态调整的。 : 你的问题不是CNN抓global信息。FCN本身就是一个大的convolution,就是local的。 : 你的问题是一般network的receptive field都> 64,也就是说大于你的input size。 : 这样你train出来的model都会expect有白边。如果这个model直接apply到全图上, : 中间那些位置没有白边,就会和training example有systematic的差别。
|
w***g 发帖数: 5958 | 9 比如某层convolution, filter size是5, step size是2, 那么这层output的每个
pixel的receptive field就是7. 然后就一层层叠加。
我有个自动算receptive field的程序
https://github.com/aaalgo/tfgraph
你的training example是66, 这个一般会小于receptive field。所以你的model
train的时候padding就会生效,会pad进去synthatic的东西,倒是不一定是白边。
如果你的每个training example都需要padding, 你的model就会把padding作为
数据的特征学进去。
testing时如果图片大于receptive field,那么convolve到中间的时候就不需要
padding,这时候model看不到padding反而就觉得不正常了。
con
,
【在 s******a 的大作中提到】 : wdong,谢谢。 请问这个receptive field是不是根据max pooling的 层数算出来的, : 比如我有四层 pooling,假设size是2, 那么receptive field就是64。 这里假设con : V layer没有pixel的丢失。 : 另外你说的这个 “如果这个model直接apply到全图上, : 中间那些位置没有白边,就会和training example有systematic的差别” 怎么理解, : 为什么中间没有白边,怎末就和training example有systematic的差别? 谢了。
|
w***g 发帖数: 5958 | 10 我那个receptive field算得不对。我自己也绕糊涂了。
conv filter=5, step=2 然后后面加 max pool step = 2
那么max pool本身的receptive field是2.
叠加到conv后变成 2 + 5 = 7, 因为连续两个convolution window有重叠。
关于白边这个事情是我自己拍脑子想的,我也是一直这么practice的。
不过我还真没试过用66那么小的patch做训练。
【在 w***g 的大作中提到】 : 比如某层convolution, filter size是5, step size是2, 那么这层output的每个 : pixel的receptive field就是7. 然后就一层层叠加。 : 我有个自动算receptive field的程序 : https://github.com/aaalgo/tfgraph : 你的training example是66, 这个一般会小于receptive field。所以你的model : train的时候padding就会生效,会pad进去synthatic的东西,倒是不一定是白边。 : 如果你的每个training example都需要padding, 你的model就会把padding作为 : 数据的特征学进去。 : testing时如果图片大于receptive field,那么convolve到中间的时候就不需要 : padding,这时候model看不到padding反而就觉得不正常了。
|
|
|
l*******m 发帖数: 1096 | 11 他这个图片比较大,面积基本是大陆货的20倍,估计inference够慢的
【在 w***g 的大作中提到】 : FCN的输入不需要确定大小,至少我用过caffe和tensorflow都支持自动调整大小。 : 只要保证每个batch大小一致就行。我都是batch size = 1。 : 比如 : X = tf.placeholder(tf.float32, shape=(None, None, None, 3), name="images") : Y = tf.placeholder(tf.float32, shape=(None, None, None, 1), name="labels") : 只有channel数是定的,batch size和图片大小都是每个iteration动态调整的。 : 你的问题不是CNN抓global信息。FCN本身就是一个大的convolution,就是local的。 : 你的问题是一般network的receptive field都> 64,也就是说大于你的input size。 : 这样你train出来的model都会expect有白边。如果这个model直接apply到全图上, : 中间那些位置没有白边,就会和training example有systematic的差别。
|
s******a 发帖数: 184 | 12 我试过128 和64的, 确实128的好不少。我用的是U-net来做的segmentation。
【在 w***g 的大作中提到】 : 我那个receptive field算得不对。我自己也绕糊涂了。 : conv filter=5, step=2 然后后面加 max pool step = 2 : 那么max pool本身的receptive field是2. : 叠加到conv后变成 2 + 5 = 7, 因为连续两个convolution window有重叠。 : 关于白边这个事情是我自己拍脑子想的,我也是一直这么practice的。 : 不过我还真没试过用66那么小的patch做训练。
|
s******a 发帖数: 184 | 13 请问你说的这个inference 很慢,是针对wdong 的approach:用小patch(比如256×
256)training, 然后把全幅照片直接predict吗?那这样做,inference 慢的原因是
什么呢?
【在 l*******m 的大作中提到】 : 他这个图片比较大,面积基本是大陆货的20倍,估计inference够慢的
|
w***g 发帖数: 5958 | 14 楼上你搞啥图片,方便的话贴一个出来也让众弟兄见识见识。
【在 s******a 的大作中提到】 : 我试过128 和64的, 确实128的好不少。我用的是U-net来做的segmentation。
|
l*******m 发帖数: 1096 | 15 wdong的方法是最快的,我说慢是你图片的好大
【在 s******a 的大作中提到】 : 请问你说的这个inference 很慢,是针对wdong 的approach:用小patch(比如256× : 256)training, 然后把全幅照片直接predict吗?那这样做,inference 慢的原因是 : 什么呢?
|
l*******m 发帖数: 1096 | 16 估计unet基本上生物医学图片
【在 w***g 的大作中提到】 : 楼上你搞啥图片,方便的话贴一个出来也让众弟兄见识见识。
|