问题标签 [tensorflow-ssd]

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

android - Android 上的 TensorFlow 对象检测 API

我想将 Google 的 Tensorflow 检测示例应用程序中的 TensorFlowMultiBoxDetector.java 使用的 multibox_model.pb 替换为对象检测 API 的模型动物园中包含的 mobilenet freeze_inference_graph.pb。

我已经在其上运行了 optimize_for_inference 脚本,但 tensorflowInferenceInterface 无法解析优化模型。但是,它可以解析原始的 freeze_inference_graph.pb。我仍然认为我需要以某种方式修改此图以获取正方形大小的输入图像,例如 multibox_model.pb 所做的 224x224 图像。

0 投票
3 回答
4009 浏览

tensorflow - 在张量流中将 SSD 转换为冻结图。必须使用哪些输出节点名称?

我使用TensorFlow Object Detection API训练 SSD ,如此所述。它产生一个ckpt、元和索引文件。为了在我的图像上运行它,我尝试检查演示代码。它要求将模型转换为冻结图。我尝试将我的模型转换为此处所述的冻结推理图。在该程序中,我必须提供输出节点名称。我无法确定必须在此处使用的 SSD 模型中的节点名称。请帮忙。我试过'num_detections:0','detection_boxes:0'等。只是得到错误:

AssertionError:num_detections 不在图中

0 投票
1 回答
549 浏览

android - MobileNet 用于 *mobile* 上的对象检测

我正在尝试使用 MobileNet 在 Android 上进行对象检测。虽然微调网络运行良好,但生成的模型无法在 Android 上使用。

它与使用 TensorFlowMultiBoxDetector 的 Android 对象检测演示应用程序不兼容(张量名称、形状)。现在我有一个不能在手机上使用的 MobileNet。

我在 CVPR2017 上看到了一个显然使用 MobileNetV1 的 Android 对象检测演示,所以它一定是可能的

有没有人设法做到这一点?任何指针如何修改应用程序?

0 投票
0 回答
373 浏览

android - 手机的gpu可以用吗

我已经在我的手机上尝试了 tensorflow 的 android 演示,并成功使用了我自己的由 object_detection API 训练的 ssd_mobilenets 模型。它说ssd_mobilenets可以在android手机上实时运行,但在我的手机上运行有点慢。检测物体花费了近 1 秒。我想知道是否可以使用我手机的gpu来加速配置。

0 投票
1 回答
1374 浏览

tensorflow - 在没有任何输出或错误的情况下,Keras 中的 SSD 实施训练在几次迭代后停止

在第一个 epoch 的几次迭代之后,训练过程停止,没有任何输出或错误消息。Keras 中的 SSD 实现来自https://github.com/rykov8/ssd_keras

程序的输出如下:

之后没有输出或错误消息。

0 投票
2 回答
952 浏览

tensorflow - 输入大小会影响 mobilenet-ssd 的纵横比和实际锚比吗?(张量流 API)

我最近使用 tensorflow api 对象检测。默认的 SSD-MobileNet v1 使用 300 x 300 图像作为输入训练图像,但我将图像大小编辑为不同值的宽度和高度。例如,320 * 180。.config 中的纵横比是代表锚宽/高比的实际比例,还是仅适用于方形图像?

0 投票
1 回答
932 浏览

python - 如何使用 TensorFlow ObjectDetection API 中的自定义输入分辨率设置特定的 SSD (lite) 预测架构

我想使用TensorFlow ObjectDetection API在 COCO 数据集上训练一个自定义 SSDLite- MobileNetV2对象检测器。我想要更高的输入分辨率,而不是(300,300)的固定输入分辨率,例如VGA(640,480)或(544,544)。由于该架构是完全卷积的,因此可以具有不同的输入分辨率。但是,我想通过以下方式稍微更改 SSD 架构:

使用 300x300 的原始输入分辨率,在第一个 3x3 卷积和 5 个反向瓶颈之后,我们有一个 19x19x96 的特征图,在另外两个瓶颈之后 - 10x10x320,然后是 1x1 - 10x10x1280,然后通过使用 3x3 深度可分离卷积变为5x5x512、3x3x256、2x2x256 和 1x1x128。然后在 19x19 - 19x19x576 的扩展版本、10x10x1280 以及所有其他分辨率较低的特征图(5x5、3x3、2x2、1x1)上进行预测 - 总共 6 个。

如果我的输入分辨率为 554x554,则如下所示:在 3x3 转换和 5 个反向瓶颈之后,它是 34x34x96,在另外两个之后 - 17x17x320,但是为了达到 1x1 分辨率,我需要一个额外的层:9x9、5x5、 3x3、2x2,然后是 1x1。

我想修改架构的方法是跳过 2x2 分辨率,并通过未填充的 3x3 深度可分离卷积从 3x3 直接获得 1x1。我的问题是这是否可以在不修改大量代码的情况下使用 TensorFlow ObjectDetection API,例如通过更改配置文件或轻微修改代码。

编辑:添加了 Python 标签。

EDIT2 - 尝试使问题更清楚:在当前具有当前填充的架构中,为了从 3x3 的特征图传递到 1x1,我需要通过 2x2 的特征图(3x3 转换,步幅 = 2,填充)。我想知道是否可以更改配置以使用单个 3x3 转换直接从 3x3 到 1x1 特征图,如果没有 - 如何编辑/制作替代 ssd_mobilenet_v2_feature_extractor (或其他代码)以实现那。

0 投票
1 回答
2756 浏览

tensorflow - SSD mobilenet 模型无法检测到更远距离的物体

我已经用自定义数据集(电池)训练了一个 SSD Mobilenet 模型。下面给出了电池的示例图像,并附上了我用来训练模型的配置文件。

示例电池图像

当物体更靠近相机(使用网络摄像头测试)时,它会以超过0.95的概率准确地检测到物体,但是当我将物体移动到更长的距离时,它不会被检测到。经过调试,发现对象被检测到但概率较低0.35。最小阈值设置为 0.5。如果我将阈值 0.5 更改为 0.2,则会检测到对象,但会有更多错误检测。

参考这个链接,SSD对于小物体的表现不是很好,一个替代的解决方案是使用FasterRCNN,但是这个模型在实时上很慢。我也希望使用 SSD 从更远的距离检测电池。

请帮我解决以下问题

  1. 如果我们想以更高的概率检测更远距离的物体,我们是否需要更改配置中的纵横比和比例参数?
  2. 如果我们想要纵横比,如何选择与对象相关的那些值?
0 投票
0 回答
55 浏览

python - 为什么使用 GPU 时 SSD 在小图像上的推理时间比大图像长

我发现使用 GPU 时 SSD 在小图像上的推理时间比大图像长,不知道为什么。

我正在https://github.com/balancap/SSD-Tensorflow上学习 SSD_tensorflow 的代码,我更改了 net 代码中的 feat_shapes,以便在记录 vgg_ssd300 的推理时间时可以测试不同大小的图像,我发现了一个奇怪的现象:

图像(720*1280)的推理时间比图像(300*760)短

我对此感到非常困惑,所以我做了一些测试,我发现:

  1. 当长宽比接近 1:2 时,推理时间会非常大,甚至比尺寸较大但长宽比为 1:1 的图像还要大

    我的测试结果是:

    t(720, 1280, 3) < t(306, 763, 3)

    t(720, 1280, 3) < t(308, 665, 3)

    t(720, 1280, 3) < t(307, 1144, 3)

    t(720, 1280, 3) < t(302, 739, 3)

  2. 这仅发生在 GPU 上。在 CPU 上,无论长宽比如何,图像尺寸越大,时间总是越长。

有没有人发现这个问题?

0 投票
2 回答
2415 浏览

tensorflow - 训练SSD-MOBILENET V1,损失不减

我是关于 CNN 和 tensorflow 的新手。我训练了一个预训练的 ssd-mobilenev1-pets.config 来检测建筑物的柱子,大约一天,但损失在 2-1 之间,并且自 10 小时前以来没有减少。我意识到我的输入图像是 128x128,SSD 将图像大小调整为 300*300。输入图像的大小会影响训练吗?如果是这种情况,我应该用更大的输入图像重新训练网络吗?或者减少损失的另一种选择是什么?我的火车数据集有 660 张图像和测试 166 我不知道是否有足够的图像我真的很感谢你的帮助....