问题标签 [deeplab]

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 回答
892 浏览

tensorflow - 为什么在 deeplab 中 xception_71 推理时间比 xception_65 快?

我正在使用基于 xception_65 和 xception_71 架构的预训练(在城市景观数据集上) DeepLab模型进行语义分割推理。我观察到:

  1. 与 xception_71 相比,xception_65 在创建分割掩码方面更好。
  2. xception_71 明显快于 xception_65。

由于 xception_71 有 71 层,这比 xception_65 中的层数(65 层)多,它不应该有更高的推理时间还是我在某个地方错了?

(与 xception_71 相比,xception_65 中的更少

您可以在colab:segmentation_deeplab.ipynb检查代码以重现结果。

xception_65

模型:xception65_cityscapes_trainfine
CPU 时间:用户 1.08 秒,系统:815 毫秒,总计:1.89 秒挂
壁时间:1.71 秒

xception_71

模型:xception71_cityscapes_trainfine
CPU 时间:用户 146 毫秒,系统:28 毫秒,总计:174 毫秒
挂墙时间:649 毫秒

0 投票
1 回答
815 浏览

python - Deeplab v3+ 的可视化输出问题

我正在尝试在一些遥感数据上运行 Deeplab v3+(标准 tensorflow 版本)以执行二进制分类(对冲或无对冲),但我发现输出非常奇怪,让我相信可能有一些东西读取我的输入数据时出错。

运行 vis.py 脚本后,我在 segmentation_results 文件夹中得到以下 000000_image.png 输出。据我了解,名为 xxxx_image 的图像应该代表原始图像?这里的像素值范围为 0-3,在其他图像中,值可以是 0-7。

在此处输入图像描述

但是我的原始图像看起来像这样(不是完全相同的文件,而只是原始数据的一个示例,因此您会有所了解)。

在此处输入图像描述

在这个文件夹中也是预测文件:

在此处输入图像描述

因此,我假设预测 = 分类,图像 = 原始文件。知道为什么我将其作为原始文件吗?

要构建 TFRecords 数据,我使用以下脚本:

在 build_data.py 脚本中,我更改了一个细节,因为我的输入数据是 png uint16。

为了训练我使用你可以在这个链接上找到的脚本(我觉得在这里粘贴有点大)https://github.com/tensorflow/models/blob/master/research/deeplab/train.py

对于导致此输出的可视化,我已经展示了我使用此处找到的脚本https://github.com/tensorflow/models/blob/master/research/deeplab/vis.py

如果有人有一些见识,我将不胜感激。

0 投票
1 回答
641 浏览

python-2.7 - 如何修复“无效参数:得到 3 帧,但动画 gif 只能由 tf.image.decode_gif 或 tf.image.decode_image 解码”

我正在使用 deeplab 框架对具有 4 个以上信息通道的图像(Github: https ://github.com/tensorflow/models/tree/master/research/deeplab 和 tensorflow 版本 1.14.0)进行分类。

我的想法是将单独的通道放入 .gif 文件中,并使用build_voc_2012.pybuild_data.py的修改版本以及修改后的data_generator.py读取它们。其他所有内容都保留在 repo 中。

分片生成以及 train.py 似乎运行良好。在抛出错误的 eval.py 中遇到问题。

这是生成分片的代码。

在 eval.py 中,这段代码似乎产生了错误:

错误信息如下:

我的回购链接如下:https ://github.com/michael-ross-scott/DeeplabV3

0 投票
1 回答
117 浏览

python-3.x - 在 deeplab 中运行测试文本“local_test.sh”时出现问题。但 modle_test.py 工作正常

我在github上复制了deeplab的源代码,并按要求配置了所有文件。并且对model_test.py运行良好。但是当我尝试运行local_tset.sh测试文件时,出现了一系列问题。

我无法阅读错误消息,所以我不知道出了什么问题,我不知道从哪里开始

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 投票
1 回答
827 浏览

c - Tensorflow:TF_SessionRun 返回 TF_INVALID_ARGUMENT

我正在使用 Tensorflow C API 从 Deeplabv3 的冻结图运行会话。当我使用 运行会话时TF_SessionRun,返回值为 3,表示TF_INVALID_ARGUMENT。我怀疑它可能与TF_Operation*我留下的输入(第 8 个参数,即“目标操作”参数)有关NULL,但我找不到任何关于这个参数代表什么的文档。下面是我对 TF_SessionRun 的有问题的调用:

来自tiny_deeplab_api.cpp

whereimgsegareimage_t以及segmap_t包含指向数据和维度数组的指针的类型,该TF_NewTensor()方法可以使用这些指针来生成输入和输出张量,然后传递给TF_SessionRun(). (来自tiny_deeplab_api.hpp):


下面是源代码,以防问题不明显......

测试.cpp:

tiny_deeplab_api.hpp:

tiny_deeplab_api.cpp:

和运行的输出./test

0 投票
1 回答
391 浏览

c - 运行 Tensorflow 会话会产生一个空的张量

我正在尝试使用 Tensorflow C API 来运行与 Deeplab 图的会话。在 Cityscapes 上预训练的 Deeplab 的冻结图从这里下载:http: //download.tensorflow.org/models/deeplabv3_mnv2_cityscapes_train_2018_02_05.tar.gz

当我使用 python 运行时,我得到了这个分段输出: 使用 Python 进行分割输出

通过 python line: 打印出图的所有张量tensors = [n.values() for n in tf.get_default_graph().get_operations()] ,我发现输入张量的维度是 {1,?,?,3},输出张量是 {1,?,?},而输入和输出张量的数据类型分别为 uint8 和 int64。我使用这些信息编写了一个 C++ 方法来运行图形会话:

其中参数类型image_tsegmap_t包含调用 TF_NewTensor 所需的参数。它们只是保存指向为输入/输出张量分配的缓冲区的指针、张量的尺寸和以字节为单位的大小:

然后,我使用 OpenCV 用街景图像填充一个数组(与上面相同),并将image_tandsegmap_t结构传递给会话运行方法:

但生成的张量 ( set_out->data_ptr) 由全 0 组成。该图似乎执行了大约 5 秒,与工作 python 实现的时间相同。不知何故,该图未能将输出张量数据转储到我分配的缓冲区中。我究竟做错了什么?

0 投票
1 回答
972 浏览

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

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

例子

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

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

0 投票
0 回答
134 浏览

tensorflow - 获得比预训练模型更准确的 DeepLab

我现在对 deeplab v3 精度有疑问,模型 xception65_coco_voc_trainval 87.80 达到的最佳精度(mIOU)。我想知道如果我训练模型以减少班级数量,我们是否可以进一步增加它让我们说只使用相同数据集的人,否则不会有任何区别。问题在于边缘模型无法正确识别它。原始图像具有所有绿色背景,并且在应用蒙版后会留下一些绿色残留物。所以简而言之 2 个问题 1. 如果我训练单节课,那么准确性会提高吗?2. 如果没有,那么我可以应用任何其他方法来获得更好的结果注意:背景不必在所有情况下都是绿色的。我看到了 remove.bg 网站,他们做得很好,有谁知道他们采取了什么方法来取得好的结果谢谢

在此处输入图像描述

0 投票
1 回答
187 浏览

matlab - 如何从 MATLAB (Image Labeler) 生成正确的标记图像以进行图像分割

每当在 MATLAB R2019a 的 Image Labeler 应用程序中将标签导出到文件时,我都会得到黑色图像

这是我所做的:

另外,我知道 PNG 文件的图像值由 0 1 2 组成,这就是图像显示为黑色的原因。 b

我尝试了这段代码,我得到了显着的结果,但图像的尺寸发生了变化。

在此处输入图像描述

我需要的是带有适当尺寸的标签 png 图像。我怎样才能做到这一点 ?