【问题标题】:Managing classes in tensorflow object detection API在 tensorflow 对象检测 API 中管理类
【发布时间】:2018-11-07 10:28:34
【问题描述】:

我正在开展一个项目,该项目需要仅识别视频或摄像头直播中的人物。我目前正在使用带有 python 的 tensorflow 对象识别 API,并且我尝试了不同的预训练模型和冻结推理图。我只想识别人,也许还有汽车,所以我不需要我的神经网络来识别所有 90 个基于 mobilenet 或 rcnn 的冻结推理图的类,因为这似乎减慢了这个过程,而这 90 个中的 89 个我的项目中不需要课程。我必须训练自己的模型还是有办法修改推理图和现有模型?对于你们中的一些人来说,这可能是一个菜鸟问题,但请注意,我使用 tensorflow 和机器学习仅一个月。 提前致谢

【问题讨论】:

  • 现网有90个节点的softmax head。删除其他节点没有任何好处。只需获取您的检测结果并丢弃您不想要的课程。如果您确实觉得需要从网络本身中删除其他类,那么您必须修改 pipeline.config 文件并更改 NUM_CLASSES: 1 并重新训练网络,也就是对其进行微调。
  • 感谢您的评论。我想删除不需要的类来加速检测过程,因为我需要实时识别并且有点准确。我不确定这是否加快了过程,我只是认为这可能会减少工作量过程从而提高速度。

标签: python python-3.x tensorflow object-detection object-detection-api


【解决方案1】:

将最后一层缩小为输出 1 或 2 个类别不太可能产生大幅加速。这是因为大部分计算都在中间层。您可以缩小中间层,但这会导致精度降低。

【讨论】:

  • 我对 object-detection-api 还是很陌生。我想知道我在哪里可以访问这个层架构,以便我可以修改它。谢谢
【解决方案2】:

是的,你必须训练自己的模型。让我们简而言之看看一些方法。

选项 1。当您想尽可能多地应用迁移知识时,您可以冻结 CNN 层。之后,您使用分类器(密集层)的维度更改检测到的类的数量。分类器是 CNN 架构中的最新部分。现在,您应该只重新训练分类器。

选项 2。假设,您想对 CNN 的第一层应用迁移知识(例如,冻结前 2-3 个 CNN 层)并使用分类器重新训练 CNN 的其余部分。之后,您使用分类器的维度更改检测到的类的数量。现在,您应该重新训练其余的 CNN 层和分类器。

选项 3。假设你想用分类器重新训练整个 CNN。之后,您使用分类器的维度更改检测到的类的数量。现在,您应该使用分类器重新训练整个 CNN。

一般来说,Tensorflow 对象检测 API 对初学者来说是一个好的开始!如何处理您的问题,您可以查看here 更多关于整个过程的详细信息和额外说明here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-16
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多