首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >张量流2,对象检测,API2批处理,非最大抑制在训练更快-RCNN网络上似乎没有工作。这是个虫子吗?

张量流2,对象检测,API2批处理,非最大抑制在训练更快-RCNN网络上似乎没有工作。这是个虫子吗?
EN

Stack Overflow用户
提问于 2021-01-22 17:53:12
回答 1查看 321关注 0票数 0

我遵循新的Tensorflow 2对象检测API 2文档,在Google平台TPU上使用传输学习来训练一个更快的RCNN检测器。培训完成后,我将结果加载到工作站上,并使用tensorflow 2实现导出模型(‘ObjectProtection/ exported _main_v2.py’)。我遵循官方指令并在本地设置环境(运行在macOS catalina、tensorflow 2.2、python3.6等上)

然而,推理管道的非最大补充(NMS)部分似乎不起作用,因为在某些情况下,不同类的边界框重叠几乎完成。我对代码进行了调试,以确保在推理管道中调用NMS (对象检测/core/post_processing.py中的batch_multiclass_non_max_suppression方法)的对象检测api实现,以获得更快的-RCNN模型。在推理时,Fast体系结构调用了它的两倍。

我为GCPs AI-Platform TPU使用的指令是官方对象检测api页面中的指令:链接。我修改了培训参数,以使用GCP上支持的TPU运行时和Python版本,因为不支持实际示例。相反,我用:

gcloud ai-平台作业提交培训whoamiobject_detectiondate +%m_%d_%Y_%H_%M_%S

-作业-dir=gs://${MODEL_DIR}

-包裹-路径./对象_检测

-模块-名称object_detection.model_main_tf2

-运行时-版本2.2

-python-版本3.7

-规模-层BASIC_TPU

-美国地区-中央1

--

-使用tpu真

-模型_dir=gs://${MODEL_DIR}

--pipeline_config_path=gs://${PIPELINE_CONFIG_PATH}

用于培训的dataset是官方对象检测api页面( 链接 )中的Pets示例。但是,为了保持一致性,我使用Tensorflow 2对象检测API 2方法导出了它。

我使用的预训练神经网络是在TPU上训练的更快的R-CNN ResNet101 V1 1024x1024

我使用的配置文件是用于TPU培训的tpu-8.config。我把班次改成了37节。我还将批数改为batch_size: 32,因为tpu v2上的gpc正在崩溃。fine_tune_checkpoint_type改为fine_tune_checkpoint_type:“检测”,我使用的唯一数据增强是random_horizontal_flip。

官方物体检测2模型动物园报告的结果是TPU培训的架构,而不是SSD。然而,官方对象检测tpu兼容性指南提到,目前SSD只支持,而非最大抑制不是。

为什么NMS不起作用?

EN

回答 1

Stack Overflow用户

发布于 2021-05-31 08:53:36

我认为这是因为batch_multiclass_non_max_suppression方法是一个类感知的NMS (或者至少是我所理解的)。这意味着,对于每个类,在属于的所有框中,如果IOU大于阈值,则只保留得分最高的框。

我想你想要一个不可知的NMS (use_class_agnostic_nms: True)。此外,如果您想要一个类来检测,您还应该设置max_classes_per_detection: 1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65850309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档