问题标签 [semantic-segmentation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
106 浏览

dataset - 如何在二进制中使用带有“计数”的 mscoco stuff 数据集?

我想通过使用 json 文件在 MSCOCO 语义分割(仅东西)上训练我的模型,但键“计数”包含二进制字符。我错过了什么?

我正在使用 MXNet 并且数据加载器正在直接查找 json 文件。不知道如何使用 png 注释图像。

这是一个示例:

0 投票
2 回答
1871 浏览

tensorflow - 语义图像分割 NN (DeepLabV3+) 的内存过多问题

我首先解释我的任务:我有来自两条不同绳索的近 3000 张图像。它们包含绳索 1、绳索 2 和背景。我的标签/蒙版是图像,例如像素值 0 代表背景,1 代表第一根绳索,2 代表第二根绳索。您可以在下面的图片 1 和 2 中看到输入图片和基本事实/标签。请注意,我的基本事实/标签只有 3 个值:0、1 和 2。我的输入图片是灰色的,但对于 DeepLab,我将其转换为 RGB 图片,因为 DeepLab 是在 RGB 图片上进行训练的。但是我转换后的图片仍然不包含颜色。

这是我的网络的输入图片 这是基本事实 原始彩色图像

这项任务的想法是神经网络应该从绳索中学习结构,因此即使有绳结它也可以正确标记绳索。因此颜色信息并不重要,因为我的绳索有不同的颜色,所以很容易使用 KMeans 来创建基本事实/标签。

对于这个任务,我在 Keras 中选择了一个名为 DeepLab V3+ 的语义分割网络,以 TensorFlow 作为后端。我想用我的近 3000 张图像训练 NN。所有图像的大小都在 100MB 以下,它们是 300x200 像素。也许 DeepLab 不是我任务的最佳选择,因为我的图片不包含颜色信息,而且我的图片尺寸非常小(300x200),但到目前为止我还没有为我的任务找到更好的语义分割 NN。

从 Keras 网站我知道如何使用 flow_from_directory 加载数据以及如何使用 fit_generator 方法。我不知道我的代码是否逻辑正确...

以下是链接:

https://keras.io/preprocessing/image/

https://keras.io/models/model/

https://github.com/bonlime/keras-deeplab-v3-plus

我的第一个问题是:

通过我的实现,我的显卡几乎使用了所有内存(11GB)。我不知道为什么。有没有可能,DeepLab 的权重有那么大?我的 Batchsize 默认为 32,我所有的近 300 张图像都在 100MB 以下。我已经使用了 config.gpu_options.allow_growth = True 代码,请参阅下面的代码。

一个普遍的问题:

有人知道我的任务有一个好的语义分割神经网络吗?我不需要接受彩色图像训练的 NN。但我也不需要 NN,它是用二进制地面实况图片训练的......我用 DeepLab 测试了我的原始彩色图像(图 3),但我得到的结果标签并不好......

到目前为止,这是我的代码:

这是我测试 DeepLab 的代码(来自 Github):

0 投票
1 回答
921 浏览

python - 使用 U-Net 作为单层进行语义分割的输入标签

例如,在使用 U-Net 进行语义分割时,将标签数据提供为 one-hot-encoded 张量似乎是一种常见的做法。在另一个 SO question中,一位用户指出这是由于标签通常代表分类值。将它们作为仅一层内的类标签(作为灰度强度值)馈送到网络会带来困难。

然而,在另一篇博文中,作者解释说标签

“[...] 有时 [get] 打包为灰度图像,其中像素强度表示类 id [...]。这种方法可能是最容易使用的。它允许分发较小的文件,并且 [ ...] 一种热向量表示 [使用] 比 [灰度编码格式] 更多的内存。”

我的硬件非常有限,我希望将标签编码为 1 层灰度张量,而不是 n 层(n 是要分段的类数),从而降低内存使用率。但是,该博客的作者随后还指出:

“即使您使用的深度学习框架接受标签数据作为类 id,如 [灰度格式],它也会在后台将该数据转换为 one-hot 编码。”

这是否意味着,毕竟在内存方面不会有任何节省?

如果值得,我将如何继续在数据集阅读器中实现它?我也没有遇到任何实现,实际上已经实践了灰度标签。因此,我还要感谢任何指向使用灰度标签进行语义分割的实现的链接!

我正在使用 PyTorch,我的代码基于此实现,不同之处在于我有 3 个类要分段。

非常感谢任何建议/链接!

0 投票
1 回答
1473 浏览

tensorflow - 如何在语义分割中删除特定的标记像素

我是语义分割的新手。我使用 FCN 来训练我的数据集。在数据集中,有一些未知类的像素。我想把这门课排除在我的损失之外。所以我根据整个数据集的类分布定义了一个权重,并将未知类的权重设置为零,如下所示。但我仍然得到这门课的预测。你知道如何正确排除一个特定的类吗?

我不知道 pytorch,但我听说损失函数中有一些为此目的的东西“ignore_index”,你可以忽略一个特定的类。如果这是解决我的问题的正确方法,您知道 tensorflow 中是否有等效的东西?

0 投票
1 回答
1670 浏览

rgb - 标记图像应该如何进行语义分割?

正如我从下面的解释中了解到的,将有两种类型的图像用于语义分割,即输入和掩码。掩码图像是包含像素值“标签”的图像,它可以是某个整数(ROAD 为 0,TREE 为 1,ROAD 为 (100,100,100),TREE 为 (0,255,0))

语义分割描述了将图像的每个像素与类别标签(例如花、人、路、天空、海洋或汽车)相关联的过程。 https://se.mathworks.com/help/vision/ug/semantic-segmentation-basics.html

根据我的研究,用于语义分割的标记图像有很多种。除了不同的扩展名(.png .jpg .gif .bmp...),其中一些是RGB 标记(3 通道)图像,一些是灰色(1 通道)图像。下面,有两个例子可以更好地解释这种情况。

  1. 带有扩展名“.png”的 RGB

    https://github.com/divamgupta/image-segmentation-keras#user-content-preparing-the-data-for-training

  2. 标有扩展名“.gif”的灰度

    https://www.kaggle.com/kmader/vgg16-u-net-on-carvana/#data

如果我的图像已标记为灰度,我基本上通过复制此 GRAY 通道的每个值为 3 个 RGB 通道使其变为 RGB。恰恰相反,通过平均 RGB 通道,我可以将标记的图像设为灰度。有什么不同?哪个更适合哪个任务(二进制分割或其他)?

就我而言,我有4 个类并尝试进行多类语义分割。我已经在 DataTurks 上标记了大约 600 张图像。这意味着,我只有对象的多边形,我必须自己制作我的标记图像。现在,我的输入图像和掩码图像的扩展名分别是“.jpg”和“.png”。我应该如何标记我的图像以及扩展名?

0 投票
2 回答
4235 浏览

python - Plotly:如何设置热图纵横比?

我有一个单通道图像,其中每个整数像素值映射到一个字符串。例如 5 -> '人'。我正在尝试创建一个交互式图像,将鼠标悬停在一个像素上将显示它的相应字符串。

我认为使用 plotly 热图可能是做到这一点的方法。我遇到的问题是:

  • 它真的很慢。如果我将我的 numpy 数组设置为 (100,100) 大小,则加载需要几分钟。我在想可能是因为我的代码效率不高?
  • 我不知道如何保持纵横比。因此,如果我的图像是一个大小为 (100,100) 的 numpy 数组,我希望该图也为 (100,100) 像素。
  • 使用空白值z_text似乎是一个不好的解决方法,但设置annotation_text=None似乎不起作用。

有谁可以帮我离开这里吗?这是我所拥有的:

这是它目前的样子:

在此处输入图像描述

此外,如果情节热图不是解决此问题的最佳方式,我很乐意听到任何替代方案!

注意:我目前正在 jupyterlab 中显示。

0 投票
0 回答
377 浏览

python - keras 图像语义分割给出重复输出(SEGNET 基本模型)

我正在尝试使用带有 tensorflow 后端的 keras 对卫星图像进行语义分割。我正在使用 SEGNET 基本模型进行图像分割。
我正在使用 python 3.6

我的问题是关于我在输出图像中得到的重复模式,而不管输入图像如何。我做错了什么以及如何解决它。我应该采取的下一步措施是什么。我的模型需要超过 1 小时才能训练,这是否正常?

关于我的问题和完整代码的详细信息如下。

我使用 1600 张大小为 256x256 的图像作为训练集。

我的输入图像和蒙版图像(标签)是尺寸太大而无法包含的 geotiff。
以下代码迭代地从马赛克中读取 256X256 图像

SEGNET 基本模型的变量

我的 SEGNET 基本模型变体如下

该模型需要超过 1 小时的时间来训练并给出 25% 的验证准确度预测部分和后处理如下

在此之后我是否缺少一些步骤?
我的输出图像是这个

输出预测

0 投票
0 回答
164 浏览

python - 如何在预训练的 VGG16 上训练 FCN 模型

我是语义分割的新手,我实现了 FCN 网络,现在我想尽量不要从头开始训练并使用预训练的 vgg16 权重。我看到了类似这个链接的实现,但我不确定新的数据集输入来自网络的何处。更清楚地说,在上面的链接中,vvg 部分从经过训练的网络和输出层 3、4、7 返回输入图像。

我不确定新一​​批数据从哪里进入模型。我很感激你的指导。

0 投票
1 回答
1547 浏览

python - 如何处理语义分割中未知类的平均交集(mIOU)?

我实现了一个 FCN 网络来进行语义分割。我使用 Cityscapes 作为我的数据集。如您所知,Cityscapes 中有一些类在训练期间被您忽略,它被标记为 255。我使用加权损失来忽略未知类的损失(将未知类的损失设置为零)。现在我想从我的评估指标中排除未知类(平均交叉联合(mIOU))。目前我不清楚如何排除未知类。

目前我正在考虑使用 tensorflow 方法的所有类,包括像这样的未知类:

我试过这个,但它给出了未绑定标签的错误(对于 unkonwn 标签)

0 投票
1 回答
159 浏览

keras - RGB图像的多类语义分割难度

谁能帮我解决这个多类语义分割的问题。我修改了代码以接受 RGB 图像和 RGB 标签作为掩码。我正在使用以下模型

如您所见,输入有 3 个通道。最后一层应该有 11 个通道中的 1 个通道吗?我正在使用的数据集有 11 个类,它们由图像中不同的 RGB 值组合表示。

谢谢。