由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 向做Deeplearning的同学们请教个问题。
相关主题
胡扯几句什么叫Deep Learning入门同时train segm和obj detect
神经网络研究的致命伤有推荐做deeplearning的机器的吗?
如果数据少,是不是就不能用CNN数学的美
统计那拨人可以学java,pythoncode swarm (video)
几十层的神经网络用小机器能不能训练出来?stl iterator has "NULL" like const?
神经网络识别多个目标如何自学python
想上手deep learning的看过来這版的碼工每一個都弱爆了
lightroom请科普下双路deep learning妈的怎么那么多鸡毛语言/软件
相关话题的讨论汇总
话题: 64话题: 2048话题: receptive话题: none
进入Programming版参与讨论
1 (共1页)
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反而就觉得不正常了。

相关主题
神经网络识别多个目标同时train segm和obj detect
想上手deep learning的看过来有推荐做deeplearning的机器的吗?
lightroom请科普下双路deep learning数学的美
进入Programming版参与讨论
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 的大作中提到】
: 楼上你搞啥图片,方便的话贴一个出来也让众弟兄见识见识。
1 (共1页)
进入Programming版参与讨论
相关主题
妈的怎么那么多鸡毛语言/软件几十层的神经网络用小机器能不能训练出来?
Re: [BSSD] GTX1080是业余GPU (转载)神经网络识别多个目标
CNN相关的Scale,Translation Invariant都是伪概念想上手deep learning的看过来
caffe等CNN里面convolution和relu是分开的两层?lightroom请科普下双路deep learning
胡扯几句什么叫Deep Learning入门同时train segm和obj detect
神经网络研究的致命伤有推荐做deeplearning的机器的吗?
如果数据少,是不是就不能用CNN数学的美
统计那拨人可以学java,pythoncode swarm (video)
相关话题的讨论汇总
话题: 64话题: 2048话题: receptive话题: none