【问题标题】:How to change model structure of Mobilnet-SSD in Tensorflow Object Detection API?如何在 Tensorflow 对象检测 API 中更改 Mobilnet-SSD 的模型结构?
【发布时间】:2019-01-14 14:27:08
【问题描述】:

我正在训练一个 Mobilnet-SSD 来检测小头。
所以我想在网络层的前面添加一些box_predictor_layer,比如添加一个box_predictor_layer来连接5/6th Convolution层。

怎么做?
我阅读了所有 .proto 文件,找到了 ssd.protossd_anchor_generator.protobox_predictor.proto
但是不知道怎么改,因为tensorboard的图太乱了。

【问题讨论】:

    标签: python tensorflow object-detection-api


    【解决方案1】:

    您需要从主干添加另一个“退出点”(即应用检测的特征图)。通过在here 中添加层的名称,并在layer_depth 的相应位置添加-1 来做到这一点(这意味着您不需要告诉它特征图的深度是多少,因为它由下式给出骨干)。 如果您只需要检测小头,而不需要检测大头,您可能可以摆脱(至少部分)附加的 SSD 特征图,这些特征图由 @ 中的 ''s 添加到主干之后987654325@ 和 512、256、256、128 在layer_depth。 不要忘记相应地修改配置文件中的num_layers

    model {
      ssd {
        anchor_generator {
          ssd_anchor_generator {
            num_layers: <num_of_feature_maps>
            ...
          }
        }
      }
    }
    

    【讨论】:

    • 非常感谢。我还有一个问题。该网络的输出是 4 个节点:detection_boxes、detection_scores、detection_classes、num_detections。但是现在我只需要一个节点,如何将这些合并到一个节点?我认为只需要更改export_inference_graph
    • 感谢您的回答,我遇到了与 OP 中类似的问题。但是,我尝试按照您描述的程序进行操作,但它不起作用。我在 ssd_mobilenet_v1_feature_extractor.py 中添加了一个 Conv2d_5_pointwise (以及 layer_depth 中相应的 -1 字段),并将配置文件中的 num_layers 也更改为 7,但我仍然收到一条错误消息,指出“ValueError: Number特征图的长度应该等于“num_anchors_per_location”的长度。我还需要修改什么吗?
    猜你喜欢
    • 2020-06-17
    • 2019-11-09
    • 2019-12-13
    • 2018-10-07
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2018-05-20
    • 2020-11-02
    相关资源
    最近更新 更多