问题标签 [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 回答
601 浏览

python - 我的自定义 mobilenet 训练模型未显示任何结果。我究竟做错了什么?

我开始使用 Tensorflow/Deeplab 学习 ML。我尝试使用带有 mobilenet_v2 模型变体的语义分割从头开始训练我自己的衣服识别模型。但我没有得到结果。

我正在使用tensorflow/models进行 tfrecord 导出和训练。以及用于可视化和测试目的的deeplab/示例代码(在本地重命名为 main.py),我修改了一些行,以便获得本地模型和测试图像。

我将展示我遵循的过程:

  1. 下载 100 张 JPEG 图像(我知道不是很大,但我想我可以试试这个数量)。仅适用于 1 级 -> 衬衫
  2. 为每个图像创建分割类 PNG。
  3. 为以下文件创建图像集定义:train(85 个文件名)、trainval(100 个文件名)和 val(15 个文件名)。
    所以我的“pascal dataset”目录有:ImageSets、JPEGImages 和 SegmentationClassPNG 文件夹。
  4. 像这样将“pascal dataset”目录导出到 tfrecord(我在“models-master/research/deeplab/datasets”文件夹中):

    • 这很好用,它会在“train/tfrecord”上生成 *.tfrecord 文件
  5. 我像这样编辑了“models-master/research/deeplab/data_generator.py”:{'train': 85, 'trainval': 100, 'val': 15}, num_classes=2。

  6. 现在是时候开始训练了(我在“models-master/research/deeplab”)。我用了10000步,为什么?我用 30000 证明了大约 30 个小时没有结果,所以我用新的参数来减少它。我想 10000 步可以告诉我一些东西:
    • 这一步需要将近 8 个小时(有一个很小的 ​​GPU,所以.. 不能使用它),它会生成检查点、graph.pbtxt 和 model.ckpt-XXX(包括 10000 个)文件。
  7. 我用(我在“models-master/research/deeplab”)这个命令行导出了之前的结果:
    • 它创建冻结图 (frozen_inference_graph.pb)。
  8. 现在运行:py main.py(证明图像和frozen_inference_graph.pb已经导入)
  9. 我的自定义模型没有结果。最后一个脚本适用于预先训练的 mobilenetv2_coco_voc_trainaug。不适用于我的自定义模型

data_generator.py(编辑行):

我用于训练的图像示例(1/100)(我使用了labelMe实用程序):
shirt_001.jpg
shirt_001.png


mobilenetv2_coco_voc_trainaug 的 main.py 结果(作为一个人的衬衫,没关系)和我的自定义模型
mobilenetv2_coco_voc_trainaug 结果
我的自定义模型结果

如您所见,我的模型失败了。我一直在测试许多组合但没有成功。我应该怎么办?谢谢!

0 投票
2 回答
2935 浏览

numpy - 地面实况图像到一个热编码阵列(语义分割)

我正在为人员和街道分割创建自己的数据集。下面,您会看到一个标记的地面实况 (GT) 图像。

地面真相

过去我在模型输出和 GT Image 之间做了一个简单的回归(过去我只使用 Streets)。现在我读到,在这种情况下,交叉熵损失更为常见。因为,我的 GT 和模型输出 Image 具有与输入图像相同的宽度w和高度h,所以我必须创建一个大小为h x w x c的数组,其中c是类的数量(在我的情况下为 3,背景、街道、人物)。我认为,这称为 One-Hot-Encoded Array。

我解决了这个问题:

其中 get_class(channels) 方法通过像素的颜色决定像素类别。

我有两个问题:

  1. 我的方法很慢(全高清图像大约需要 3 分钟),有没有办法加快速度?

  2. 我注意到颜色在通道值的意义上是不同的。例如,橙色应该是 [243,169,0] (RGB),但我发现像这样的条目 [206,172,8] 甚至是 [207,176,24] 会发生这种情况,因为我将标签存储为 jpg?有没有比我上面的阈值更好的方法来找到橙色和蓝色像素?

编辑:

我自己解决了第一个问题。全高清图像需要 2 或 3 秒:

然后我对第 2 类和第 3 类(其他一切)做同样的事情,我可以做:

之后,我必须调整类型:

问题 2 仍然是一个开放的问题。

0 投票
1 回答
972 浏览

tensorflow - 为什么 deeplab v3+ 模型对图像边界外的像素感到困惑?

我正在使用谷歌研究 github 存储库在我的数据集上运行 deeplab v3+ 来分割汽车的各个部分。我使用的裁剪尺寸是 513,513(默认),代码为小于该尺寸的图像添加了一个边界(如果我错了,请纠正我)。

例子

该模型似乎在添加的边界上表现不佳。有什么我应该纠正的,或者模型会通过更多的训练做得很好吗?

更新:这是用于训练的张量板图。为什么正则化损失会这样?输出似乎正在改善,有人可以帮我从这些图表中做出推断吗?

0 投票
1 回答
490 浏览

keras - 如何修复keras模型中的输入形状错误

我尝试使用本教程执行语义分割: https ://github.com/nikhilroxtomar/UNet-Segmentation-in-Keras-TensorFlow/blob/master/unet-segmentation.ipynb 我修改了一点他的笔记本,但我成功地训练了50% 准确率的模型。

我已经尝试重塑输入数组,但它不起作用。这是代码:

这是模型:

我知道这是一个菜鸟错误,但我真的很想解决它!

0 投票
0 回答
455 浏览

python - 如何修复“DataLossError : Unable to open table file .\checkpoints: NewRandomAccessFile failed to Create/Open: .\checkpoints : Access is denied”?

我已经训练了一个模型(这里有一个链接!)我通过以下方式成功训练了模型:

当我想运行 test.py 时,我得到了标题中提到的错误。检查点文件夹包含测试所需的所有权重,我尝试将检查点分配给模型:

但未能运行它。你能帮我运行test.py吗?

PS:我最终需要在新数据集上预测模型,对此部分的任何帮助也表示赞赏。

我已阅读https://github.com/davidsandberg/facenet/issues/251https://github.com/balancap/SSD-Tensorflow/issues/150但他们帮不了我。

0 投票
1 回答
7893 浏览

python - 用于语义分割的 ImageDataGenerator

我正在尝试使用 Keras 进行语义分割,并且在尝试加载图像时,我使用flow_from_directory方法得到了这个错误。

这是我的代码。

我已阅读此问题,但解决方案对 Keras 的语义分割不起作用,flow_from_directory() 错误

0 投票
1 回答
1443 浏览

deep-learning - Pytorch:使用自定义权重图应用交叉熵损失

我正在使用 pytorch 中的 u-net 架构解决多类分割问题。正如U-NET论文中所指定的,我正在尝试实现自定义权重图以应对类不平衡。

以下是我要应用的操作 - 图片

另外,我减少了,batch_size=1以便在将其传递给precompute_to_masks函数时可以删除该维度。我尝试了以下方法-

其中 weight_map 是计算我从这里得到的权重掩码的函数 我面临的问题是我在memory error应用以下方法时得到的。
我正在使用 61gb RAM 和 Tesla V100 GPU。我真的认为我以不正确的方式应用它。怎么做?
我从训练循环中省略了非必要的细节。以下是我的weight_map功能:

错误的追溯——

0 投票
1 回答
808 浏览

python - 使用 cv2 显示 unet 预测图像

我已经使用图像和掩码训练了一个模型,并预测了一个图像。我预测的图像的形状是(1024,1024,3)

代码。

我添加另一个维度的原因是因为我的模型只拍摄 3 维图像。最后,我预测的图像形状(1,256,256,1) 现在正在阅读 cv2 文档,我无法显示 4 维的图像,所以这就是我所做的。

我删除了轴 0 和 3 上的尺寸以显示图像,但我得到的是紫色图像。这是预测的图像还是我做错了什么?

0 投票
1 回答
758 浏览

python - 带有彩色蒙版的语义图像分割

所以我有一组带有彩色面具的图片,例如蓝色代表椅子,红色代表灯等。

由于我对这一切都不熟悉,因此我尝试使用 unet 模型执行此操作,我已经使用 keras 处理了图像,就像这样。

现在仔细看,我认为这种方式不适用于我的面具,我尝试将面具处理为 rgb 颜色,但我的模型不会像那样训练。

模型。

所以我的问题是如何训练带有彩色图像蒙版的模型。

编辑,我拥有的数据示例。

给定图像来训练模型 给定图像训练模型的示例

它的面具 图像掩码

以及每个这样的面具的百分比。 {"water": 4.2, "building": 33.5, "road": 0.0}

0 投票
1 回答
286 浏览

python - 使用自己的损失函数编译 Keras 模型时出错

当我试图在 Keras 中编译一个带有损失函数的模型时我遇到了一个错误

ValueError:形状必须为 2 级,但对于 'loss/activation_10_loss/MatMul'(操作:'MatMul')为 1 级,输入形状为:[?]、[?]。

我已尝试按照答案修复此错误。

复制问题的最简单方法:

如何使用自定义损失函数编译模型或如何防止错误?

Python 版本 3.7.4、keras 2.3.0、TF 1.14、分段模型 0.2.1