问题标签 [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.
tensorflow - 为什么在 deeplab 中 xception_71 推理时间比 xception_65 快?
我正在使用基于 xception_65 和 xception_71 架构的预训练(在城市景观数据集上) DeepLab模型进行语义分割推理。我观察到:
- 与 xception_71 相比,xception_65 在创建分割掩码方面更好。
- 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 毫秒
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
如果有人有一些见识,我将不胜感激。
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.py和build_data.py的修改版本以及修改后的data_generator.py读取它们。其他所有内容都保留在 repo 中。
分片生成以及 train.py 似乎运行良好。在抛出错误的 eval.py 中遇到问题。
这是生成分片的代码。
在 eval.py 中,这段代码似乎产生了错误:
错误信息如下:
python-3.x - 在 deeplab 中运行测试文本“local_test.sh”时出现问题。但 modle_test.py 工作正常
我在github上复制了deeplab的源代码,并按要求配置了所有文件。并且对model_test.py运行良好。但是当我尝试运行local_tset.sh测试文件时,出现了一系列问题。
我无法阅读错误消息,所以我不知道出了什么问题,我不知道从哪里开始
python - 我的自定义 mobilenet 训练模型未显示任何结果。我究竟做错了什么?
我开始使用 Tensorflow/Deeplab 学习 ML。我尝试使用带有 mobilenet_v2 模型变体的语义分割从头开始训练我自己的衣服识别模型。但我没有得到结果。
我正在使用tensorflow/models进行 tfrecord 导出和训练。以及用于可视化和测试目的的deeplab/示例代码(在本地重命名为 main.py),我修改了一些行,以便获得本地模型和测试图像。
我将展示我遵循的过程:
- 下载 100 张 JPEG 图像(我知道不是很大,但我想我可以试试这个数量)。仅适用于 1 级 -> 衬衫
- 为每个图像创建分割类 PNG。
- 为以下文件创建图像集定义:train(85 个文件名)、trainval(100 个文件名)和 val(15 个文件名)。
所以我的“pascal dataset”目录有:ImageSets、JPEGImages 和 SegmentationClassPNG 文件夹。 像这样将“pascal dataset”目录导出到 tfrecord(我在“models-master/research/deeplab/datasets”文件夹中):
- 这很好用,它会在“train/tfrecord”上生成 *.tfrecord 文件
我像这样编辑了“models-master/research/deeplab/data_generator.py”:{'train': 85, 'trainval': 100, 'val': 15}, num_classes=2。
- 现在是时候开始训练了(我在“models-master/research/deeplab”)。我用了10000步,为什么?我用 30000 证明了大约 30 个小时没有结果,所以我用新的参数来减少它。我想 10000 步可以告诉我一些东西:
- 这一步需要将近 8 个小时(有一个很小的 GPU,所以.. 不能使用它),它会生成检查点、graph.pbtxt 和 model.ckpt-XXX(包括 10000 个)文件。
- 我用(我在“models-master/research/deeplab”)这个命令行导出了之前的结果:
- 它创建冻结图 (frozen_inference_graph.pb)。
- 现在运行:py main.py(证明图像和frozen_inference_graph.pb已经导入)
- 我的自定义模型没有结果。最后一个脚本适用于预先训练的 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 结果
我的自定义模型结果
如您所见,我的模型失败了。我一直在测试许多组合但没有成功。我应该怎么办?谢谢!
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:
whereimg
和seg
areimage_t
以及segmap_t
包含指向数据和维度数组的指针的类型,该TF_NewTensor()
方法可以使用这些指针来生成输入和输出张量,然后传递给TF_SessionRun()
. (来自tiny_deeplab_api.hpp):
下面是源代码,以防问题不明显......
测试.cpp:
tiny_deeplab_api.hpp:
tiny_deeplab_api.cpp:
和运行的输出./test
:
c - 运行 Tensorflow 会话会产生一个空的张量
我正在尝试使用 Tensorflow C API 来运行与 Deeplab 图的会话。在 Cityscapes 上预训练的 Deeplab 的冻结图从这里下载:http: //download.tensorflow.org/models/deeplabv3_mnv2_cityscapes_train_2018_02_05.tar.gz
通过 python line: 打印出图的所有张量tensors = [n.values() for n in tf.get_default_graph().get_operations()]
,我发现输入张量的维度是 {1,?,?,3},输出张量是 {1,?,?},而输入和输出张量的数据类型分别为 uint8 和 int64。我使用这些信息编写了一个 C++ 方法来运行图形会话:
其中参数类型image_t
和segmap_t
包含调用 TF_NewTensor 所需的参数。它们只是保存指向为输入/输出张量分配的缓冲区的指针、张量的尺寸和以字节为单位的大小:
然后,我使用 OpenCV 用街景图像填充一个数组(与上面相同),并将image_t
andsegmap_t
结构传递给会话运行方法:
但生成的张量 ( set_out->data_ptr
) 由全 0 组成。该图似乎执行了大约 5 秒,与工作 python 实现的时间相同。不知何故,该图未能将输出张量数据转储到我分配的缓冲区中。我究竟做错了什么?
tensorflow - 获得比预训练模型更准确的 DeepLab
我现在对 deeplab v3 精度有疑问,模型 xception65_coco_voc_trainval 87.80 达到的最佳精度(mIOU)。我想知道如果我训练模型以减少班级数量,我们是否可以进一步增加它让我们说只使用相同数据集的人,否则不会有任何区别。问题在于边缘模型无法正确识别它。原始图像具有所有绿色背景,并且在应用蒙版后会留下一些绿色残留物。所以简而言之 2 个问题 1. 如果我训练单节课,那么准确性会提高吗?2. 如果没有,那么我可以应用任何其他方法来获得更好的结果注意:背景不必在所有情况下都是绿色的。我看到了 remove.bg 网站,他们做得很好,有谁知道他们采取了什么方法来取得好的结果谢谢