Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于该git代码与训练集问题的相关解释 #57

Open
Shikairan opened this issue Nov 26, 2019 · 8 comments
Open

关于该git代码与训练集问题的相关解释 #57

Shikairan opened this issue Nov 26, 2019 · 8 comments

Comments

@Shikairan
Copy link

Shikairan commented Nov 26, 2019

关于该git我收到许多疑问与求助,这里我需要声明一下本人不是该git的作者
该git代码unet部分是没有问题的,可以使用,注意一下shape中channel的顺序就行。
但是segnet部分建议不要使用,因为segnet模型是需要在pooling时记住pooling index的,然后在upsampling的时候借用pooling index去恢复图像,keras是在upsampling的时候是没有根据pooling index去特定恢复的功能,这里需要自己用tf去写一个pooling与upsampling。

其次,git里的训练数据集是有问题的。有兴趣的可以打开一张训练图与标记图去看看,建筑的标记及其不准确,有的顺带将大楼阴影标记为建筑,有的将道路上的树木标记为建筑,有的将一个建筑的一半标记为建筑另一半是标记为道路的,而且标记的边缘极其粗糙,经常会带着一些一些奇奇怪怪的东西一并标记成建筑。这也能解释为什么评论里到处都是问准确率的问题,拿着一个有问题的训练集当然训练不好。

最后需要指明一点的是,这个代码所需要的GPU性能还是挺高的,尤其是显存要求。我自己的使用数据集(每张图256-256-3,共50000张图)在12GB的P100下(NVIDIA-SMI 430.26 ;Driver Version: 430.26;CUDA Version: 10.2),BS=64的unet模型就能吃满显存,BS=67下就能直接报显存爆的了错误。修改后的Segnet,在BS=17下就能爆显存。所以显卡内存不足的“道友”想要训练模型请做好心理准备。


训练最佳结果与训练时间:
Segnet建筑识别最佳结果:loss:0.144, 训练精度:0.9479,验证集精度:0.9423
BS=16,epoch=30,每epoch需要30分钟,共大约15小时训练完,验证集精度在前9轮从86%收敛到91%,后续21轮从91%收敛到94%。最佳模型出现在第30轮epoch。

Segnet道路识别最佳结果:loss:0.068, 训练精度:0.9817,验证集精度:0.9800
BS=16,epoch=30,每epoch需要30分钟,共大约15小时训练完,验证集精度在第一轮就收敛到94%,后续29轮在验证精度95%-98%之间震荡。最佳模型出现在第2轮epoch。

Unet建筑识别最佳结果:loss:0.157, 训练精度:0.9391,验证集精度:0.9365
BS=64,epoch=30,每epoch需要5分钟,共大约2个半小时训练完,验证集精度在第一轮就收敛到90%,后续29轮在验证精度90%-94%之间震荡。最佳模型出现在第27轮epoch。

Unet道路识别最佳结果:loss:0.110, 训练精度:0.9729,验证集精度:0.9726
BS=64,epoch=30,每epoch需要5分钟,共大约2个半小时训练完,验证集精度在第一轮就收敛到95%,后续29轮在验证精度95%-98%之间震荡。最佳模型出现在第13轮epoch。
高分图像的建筑道路识别


最后说明一点,我没法公布保密数据集,所以要数据集的同志抱歉了。

@wcl6
Copy link

wcl6 commented Dec 5, 2019

请问您的Unet模型是每个类单独训练一个模型吗?如果同时训练多个模型合适吗?可以的话怎么去做?

@panyinyin
Copy link

请问您的Unet模型是每个类单独训练一个模型吗?如果同时训练多个模型合适吗?可以的话怎么去做?

我也想问这个问题

@panyinyin
Copy link

想问一下unet模型怎么跑多分类呀,里面那个classes的变量如何应用呢

@zy1139069091
Copy link

@Shikairan 我跑出来的unet模型训练和验证准确率都是90%多,用模型进行预测时发现几乎什么都被识别为建筑物,数据集是用的自己的数据集。请问我这是数据集的问题吗,还是模型本身有问题

@zhanglei961120
Copy link

@Shikairan 我跑出来的unet模型训练和验证准确率都是90%多,用模型进行预测时发现几乎什么都被识别为建筑物,数据集是用的自己的数据集。请问我这是数据集的问题吗,还是模型本身有问题

你好,我也遇到了同样的情况,请问你找到原因了吗?我是做水体识别,然后预测结果显示大量建筑物和道路被识别为水体。

@Sept-Oct
Copy link

Sept-Oct commented Dec 16, 2020

@Shikairan 我跑出来的unet模型训练和验证准确率都是90%多,用模型进行预测时发现几乎什么都被识别为建筑物,数据集是用的自己的数据集。请问我这是数据集的问题吗,还是模型本身有问题

你好,请问你是做的多分类吗?我在用unet训练时loss一直为负,acc一直0.33左右,能交流一下为什么吗?谢谢,期待回复。

@panyinyin
Copy link

panyinyin commented Dec 16, 2020 via email

@zhgv
Copy link

zhgv commented Feb 25, 2021

自己用tf去写一个pooling与upsampling?该怎么写呢?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants