问题标签 [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.
android - 无法测试和部署用于推理的 deeplabv3-mobilenetv2 tensorflow-lite 分割模型
我们正在尝试使用 deeplabv3 和 mobilenetv2 在 android 上运行语义分割模型。我们在 bazel 的帮助下使用 TOCO 和 tflite_convert 遵循官方 tensorflow lite 转换过程。源冻结图来自官方 TensorFlow DeepLab Model Zoo。
我们能够使用以下命令成功转换模型:-
CUDA_VISIBLE_DEVICES="0" toco --output_file=toco256.tflite --graph_def_file=path/to/deeplab/deeplabv3_mnv2_pascal_trainval/frozen_inference_graph.pb --input_arrays=ImageTensor --output_arrays=SemanticPredictions --input_shapes=1,256,256,3 --inference_input_type=QUANTIZED_UINT8 --inference_type=FLOAT --mean_values=128 --std_dev_values=127 --allow_custom_ops --post_training_quantize
tflite 文件的大小约为 2.25 Mb。但是当我们尝试使用官方基准工具测试模型时,它失败并出现以下错误报告:-
我们还尝试了相同的命令,但不包含“allow_custom_ops”和“post_training_quantize”选项,甚至使用了与 1,513,513,3 相同的输入大小;但结果是一样的。
这个问题似乎类似于以下 github 问题:(https://github.com/tensorflow/tensorflow/issues/21266)。然而,在最新版本的 TensorFlow 中,该问题应该已得到修复。
型号: http: //download.tensorflow.org/models/deeplabv3_mnv2_pascal_trainval_2018_01_29.tar.gz Tensorflow 版本:1.11 Bazel 版本:0.17.2 操作系统:Ubuntu 18.04
此外,android 应用程序无法正确加载模型(tflite 解释器)
那么,我们如何才能将分割模型正确地转换为可用于在 android 设备上进行推理的 tflite 格式呢?
更新:-
使用 tensorflow 1.12,我们得到了一个新的错误:
此外,在使用来自 tensorflow deeplab模型动物园的 depth_multiplier=0.5 的同一模型(3 Mb .pb 文件)的较新版本时,我们得到了一个不同的错误:-
在这种情况下,我们使用上述相同的命令进行 tflite 转换;但我们甚至无法生成“tflite”文件作为输出。这似乎是深度乘数值的问题。(即使我们尝试将 depth_multiplier 参数作为参数转换时)。
android - 无法在 Android 应用程序中加载 tflite deeplab 分割模型。错误:ByteBuffer 不是有效的 flatbuffer 模型
在将转换后的 TFLite 模型加载到 android 应用程序时遇到问题。
模型:Deeplabv3 Mobilenetv2(在 Pascal VOC 上训练)TFLite 版本:1.10
使用 tflite_convert 将 pb 文件转换为 tflite。(张量流版本:1.11.0)
代码:
错误:
在build.gradle中将tensorflow-lite版本改为'org.tensorflow:tensorflow-lite:0.0.0-nightly',得到如下错误
tensorflow - 使用 tensorRT 运行 deeplab v3+
我正在尝试使用 tensorRT 优化 deeplab v3+ 模型,但出现以下错误:
据我了解,这是由 uff 转换器不支持的某些层引起的吗?有没有人成功地将 deeplab 模型转换为 uff?我在 tensorflow 中使用原始的 deeplabv3+ 模型。
谢谢
python - 元组组件中的 Deeplab v3+ 形状不匹配
我已经在ADE20K
数据集上训练了 deeplab v3+,并得到了训练ckpt
好的 jlogs 和events
日志。但是当我继续运行eval.py
时vis.py
,ADE20K
我得到了以下关于形状的错误:
这些是我的eval
脚本和vis
脚本:
eval
脚本:
vis
脚本:
还有我的train
脚本:
有什么我设置错了吗?谢谢你的帮助。
tensorflow - 为什么 DeepLabV3+ 生成的所有图像都只变成黑色?
我尝试使用 DeepLab v3+ 进行语义分割,但结果全黑了。
我把原来的文件删掉了,把原来的数据分别放在ImageSets/,JPEGImages/和SegmentationClass/对应的里面。
我根据 PASCAL VOC 2012 颜色的规则准备了 SegmentationClassRaw 图像。
我编辑了 build_voc2012_data.py 和 segmentation_dataset.py
[build_voc2012_data.py]
[segmentation_dataset.pu]
我像这样运行 train.py 和 vis.py。
[train.py 命令]
[vis.py 命令]
两者都没有问题,但我确认了图片datasets/pascal_voc_seg/exp/train_on_trainval_set/vis/raw_segmentation_results/
,这些都是黑色的。为什么?
这是因为火车数据大于 512x512 吗?(训练数据量很大:大约15000x13500)
[构建我的目录]
python - DeepLab v3 - 如何处理任意大小比例的图像。(h * w)
Deeplab v3 仅以默认比例 512 * 512 进行预测。如何处理不同大小比例的图像。
请查看错误:-
回溯(最近一次通话最后):
文件“”,第 35 行,在 predict = model_dlv3.predict(img[np.newaxis, ...])
文件“/home/developer/anaconda2/envs/py36/lib/python3.6/site-packages/keras/engine/training.py”,第 1149 行,预测 x,_,_ = self._standardize_user_data(x)
文件“/home/developer/anaconda2/envs/py36/lib/python3.6/site-packages/keras/engine/training.py”,第 751 行,在 _standardize_user_data exception_prefix='input')
文件“/home/developer/anaconda2/envs/py36/lib/python3.6/site-packages/keras/engine/training_utils.py”,第 138 行,位于standardize_input_data str(data_shape))
ValueError:检查输入时出错:预期 input_3 的形状为 (512, 512, 3) 但得到的数组的形状为 (2448, 3264, 3)
python - deeplabv3+ 均值减法实现了吗?
我目前在我自己的数据集上使用 deeplabv3+,因此我仔细研究了一些用于预处理的实用函数的代码。看起来,平均减法是在 feature_extractor.py 中定义的,但在 input_generator.py 调用的 input_preprocess.py 中没有使用。train.py 也不进行均值减法,它只是调用 input_generator ,其中不调用均值减法函数。我想知道我错过了什么吗?它是在其他地方实施还是?谢谢回复!
python - deeplab 的自定义损失
我想为 Deeplab v3 添加自定义损失,它不仅适用于一个热编码标签,而且适用于显着性预测。因此,您在下面看到的不是 Deeplab 损失实现:
我使用了这个实现:
用 5 张图像训练了大约 1000 个 epoch,得到了以下结果:
- 输入带有填充的简化图像 - https://i.stack.imgur.com/07GsL.png
- 地面实况标签 - https://i.stack.imgur.com/ttEZi.png
- 自定义损失结果]( https://i.stack.imgur.com/cNooX.png
- 使用一种热编码结果的交叉熵 - https://i.stack.imgur.com/LEhl3.png
此外,尝试了几种学习率,但它不会改变自定义损失的结果。
android - Tensorflow-lite - 从量化模型输出中获取位图
我们正在使用 tensorflow-lite 在 android 中进行语义分割应用。使用的“.tflite”deeplabv3 模型具有类型为 (ImageTensor) uint8[1,300,300,3] 的输入和类型为 (SemanticPredictions) uint8[300,300] 的输出。我们成功了能够在 tflite.run 方法的帮助下运行模型并以 ByteBuffer 格式获取输出。但是我们无法在 java 中从该输出中提取图像。使用 pascal voc 数据集训练并实际转换为的模型TF 模型中的 tflite 格式:' mobilenetv2_dm05_coco_voc_trainval '。
该问题似乎类似于以下 stackoverflow 问题:tensorflow-lite - using tflite Interpreter to get an image in output
处理浮点数据类型转换的相同问题似乎已在 github 问题中得到修复:https ://github.com/tensorflow/tensorflow/issues/23483
那么,我们如何才能正确地从 UINT8 模型输出中提取分割掩码呢?
tensorflow - 语义分割性能:多类与二类
我们正在为 PC 和移动平台开发一个语义分割应用程序。最初我们尝试了谷歌当前最先进的 DeeplabV3+ 框架。使用的数据集是 Pascal VOC,来自官方模型动物园的模型在精度方面(张量流)。模型在 PC 和移动端(转换为 coreml 和 tflite)的性能不能满足我们的要求。即使我们尝试了不同的模型优化和量化技术,我们也无法在两者之间取得很好的平衡性能和准确性。
然而,我们实际上只关心单个类的分割(在 PASCAL VOC 中)。但是模型计算每个类标签的分割掩码,这在我们的例子中似乎是多余的。所以,如果我们训练网络只有一个类(额外的背景),它会在速度方面提高性能吗?