Jiangfeng-Xiong / satellite_seg

CCF BCDI2017 卫星影像的AI分类与识别
153 stars 66 forks source link

您好,有些问题想请教 #7

Open jayboxyz opened 4 years ago

jayboxyz commented 4 years ago

您好。我做的语义分割,也是在该数据集实践和训练(我用的 keras),存在些问题想请教您哈?

1、在数据增强方面,您当时考虑过哪些数据方式吗?我看有的不会添加噪声,有的会,有时候我也迷茫,到底采用哪些增强方式,一般“旋转”应该需要的,但诸如光照、噪声等增强,不知道该不该加? 2、“多次度训练/预测”,请问多尺度训练、多尺度预测指的是? 3、您尝试过其他 backbone 及分割模型组合,亦或改模型如添加空洞卷积、特征金字塔、Attention 等吗?有觉得哪些方式能在该数据集取得比较不错的结果吗,或是您觉得哪些方式可以考虑尝试(我最近在尝试改模型,不知道该怎么改好,如果随便改觉得有些茫然)? :看您这里用的是 densenet+pspnet,你当时没考虑用 resnet 吗,还是说您当时实践发现 resnet 做主干不好? 5、看您这里提到使用 CRF 后处理,您这里是在一开始使用的 CRF 处理吗?还是对预测后的图像进行 CRF 处理? 6、您当时实践过程中,交叉熵 loss 和 focal loss,在该数据集上训练区别大吗?:本来我想对少类别的过采样,但没找到代码如何过采样,所以想考虑 focal loss 试试,不造如何。 7、还有预测后拼接痕迹的问题,采用滑动比“预测小图”小的步伐进行预测,但有的地方还是会看到的拼接痕迹,如果训练的本身不好,那拼接痕迹更加严重,请问您知道还有什么办法消除或是减小该痕迹吗?

Jiangfeng-Xiong commented 4 years ago

你好,对于你的问题,

  1. 数据增强该不该用光照这些,主要看测试集分布决定。光照应该能起作用,噪声的话可能作用不大,毕竟测试数据基本也不会存在噪点
  2. 多尺度训练测试是语义分割和目标检测常用的提分的方法,就是不同的网络输入大小,测试阶段多个尺度结果求平均
  3. 如果你想在这个数据集上提升性能的话,主要还是要看网络错误的分割结果集中在哪,然后根据问题针对性优化,例如我们当时做的时候,主要是围绕样本不均衡去做的
  4. resnet和densenet的效果差不多,当时我跟队友其实两个都用了,最后进行模型融合
  5. 一开始对GT的CRF处理是因为GT有噪声。预测后也采用了CRF进行平滑
  6. 我的代码里面有滑动步长采样,也就是你说的对少类的过采样。focal loss结果差别其实并不是很大
  7. 减小滑动的步长,也就是重叠的区域会增大,这样拼接的效果就不太明显
jayboxyz commented 4 years ago

你好,对于你的问题,

  1. 数据增强该不该用光照这些,主要看测试集分布决定。光照应该能起作用,噪声的话可能作用不大,毕竟测试数据基本也不会存在噪点
  2. 多尺度训练测试是语义分割和目标检测常用的提分的方法,就是不同的网络输入大小,测试阶段多个尺度结果求平均
  3. 如果你想在这个数据集上提升性能的话,主要还是要看网络错误的分割结果集中在哪,然后根据问题针对性优化,例如我们当时做的时候,主要是围绕样本不均衡去做的
  4. resnet和densenet的效果差不多,当时我跟队友其实两个都用了,最后进行模型融合
  5. 一开始对GT的CRF处理是因为GT有噪声。预测后也采用了CRF进行平滑
  6. 我的代码里面有滑动步长采样,也就是你说的对少类的过采样。focal loss结果差别其实并不是很大
  7. 减小滑动的步长,也就是重叠的区域会增大,这样拼接的效果就不太明显
  1. “不同的网络的输入大小”是指的使用不同网络进行训练并且每个网络输入的“切割小图”的分辨率大小不一样吗?然后在测试阶段,对不同网络的测试结果进行求平均?

  2. 好的,我多想想。我也在忧虑类别不均衡的问题导致我很难有好的结果

  3. “GT有噪声”您是指标签标的不准确是吗?能具体讲下①:“一开始用CRF处理”是怎个操作吗?②:预测后采用 CRF 处理,您当时效果如何?(注:我自己这边有对预测后的图像进行 crf 处理,这是预测的 image ,我是按照这个代码 crf 处理的:https://github.com/Gurupradeep/FCN-for-Semantic-Segmentation/blob/master/CRF.ipynb,但发现处 image
    想请教,您 crf 怎么处理的?

  4. ①"滑动步伐过采样,也就是你说的对少类的过采样",能具体描述下这内部是怎么实现的吗?我看网上很多写的 SMOTE 等算法。② 我有训练 unet 和 segnet,都使用的 focal loss,不造为什么,训练unet 的时候 acc 会出现随着训练降低,也有训练 segnet,整体上是正常的,但仔细观察 loss 还是存在些波动

  5. 有减小滑动步伐,但发现没有多少的明显的改变 o(╥﹏╥)o

Jiangfeng-Xiong commented 4 years ago
  1. 同一个网络
  2. 相当于把GT作为网络输出再过CRF,与预测做CRF是一样的。CRF提升还是挺明显的
  3. https://github.com/Jiangfeng-Xiong/satellite_seg/blob/master/utils/preprocess.py#L21
jayboxyz commented 4 years ago
  1. 同一个网络
  2. 相当于把GT作为网络输出再过CRF,与预测做CRF是一样的。CRF提升还是挺明显的
  3. https://github.com/Jiangfeng-Xiong/satellite_seg/blob/master/utils/preprocess.py#L21
  1. “同一网络”的话,我的理解,是不是在预测的时候比如要求输入的是 256x256 小图,在切割大图的时候切割出比 256 大的图进行缩放至 256 大小进行预测。多尺度预测是指这样吗?

  2. 我还没理解 crf 的处理,我看的我找的那个 crf 代码,参数是这几个:原图、预测的且上色了的标签图、输出的预测图。您这里的 crf 的处理,比如“GT作为网络输出再过CRF”是指把上了色的标签图通过crf处理一边作为真正的 label 吗

  3. 看了下您代码,您是碰到根据类别少的步伐减小进行更多的采样?另外您整个是采用的滑动切割?ps我这边用的是随机切割 o(╥﹏╥)o

xiaowoniuli commented 4 years ago

您好,数据集链接失效了呢,麻烦再发一下吧

liuhongyan123456 commented 2 years ago

你好,我最近在运rain行您的代码遇到了一些问题。 1、首先是写入train.txt这里,您只进行了打印并没有进行数据的写入,我现在修改如下,不知道当时是这样处理嘛,只写入图片的名字 def write_train_list(pathdir): labels_img_paths = os.listdir(os.path.join(pathdir,'label')) num_sets = len(labels_img_paths) indexs = list(range(num_sets))

indexs = range(num_sets)

np.random.shuffle(indexs)
train_set_num = 0.95 * num_sets
train_f = open(os.path.join(pathdir,'train.txt'),'w')
val_f = open(os.path.join(pathdir,'val.txt'),'w')
trainval_f = open(os.path.join(pathdir,'trainval.txt'),'w')
for index in range(num_sets):
    if(index<train_set_num):
        print(train_f,labels_img_paths[indexs[index]])
        train_f.write(labels_img_paths[indexs[index]]+'\n')
    else:
        print(val_f,labels_img_paths[indexs[index]])
        val_f.write(labels_img_paths[indexs[index]]+'\n')

    print(trainval_f,labels_img_paths[indexs[index]])
    trainval_f.write(labels_img_paths[indexs[index]]+'\n')

train_f.close()
val_f.close()
trainval_f.close()

2、我在运行您的train.py的时候遇到了from models import get_model,但是您的代码里面并没有这个py文件,您这边可以给我发一下吗?我想顺利运行下代码

liuhongyan123456 commented 2 years ago

image 我运行拧的代码这里也有问题