PPN-Pooling Pyramid Network for Object Detection

PPN(Pool Pyramid Network)是SSD目标检测算法的优化版,通过共享box predictor和用最大池化替换卷积,减少了模型规模和计算量,同时保持了精度。这种方法解决了SSD中不同尺度预测器的局限,提升了模型效率。

PPN(用于目标检测的池化金字塔网络)是对SSD目标检测算法的改进,主要体现在减小模型规模、参数和计算量


【摘要】

我们提出一个类似SSD的目标检测算法,在保证模型精度的基础上减小了模型规模。对于不同尺度的特征图,我们使用共享的box predictor,并且对于不同尺度间的卷积操作,我们使用最大池化代替。相比于SSD,有两个优势:(1)避免了不同尺度间的分数校准错误(2)共享的box predictor可以看到所有尺度的训练数据。因为我们把多个box predictor减少至1个,并且在不同的层中共享,模型的规模显著减小。相比于SSD,我们同时也保证了精度。


SSD由于其运行速度和容易在 硬件上实现而流行。大多数的SSD算法采用多尺度预测,并且对于不同尺度的feature map,采取独立的predictor来预测类别得分和边框偏移量。

但是,对于multi scales的feature map,每一个feature map都采用独立的predictor,那么每一个predictor只能看见特定尺寸下的物体,各层之间没有联系。

下图左边是SSD的流程图,右边是PPN的流程图。可以看到改进主要体现在

  1. 对于feature map的降采样操作,本文采用max pooling来代替原有的卷积。
  2. 相比于原来的SSD中,不同feature map采用独立的conv来预测类别得分和边框偏移量,PPN采用一个共享的conv来得出bbox score和bbox location。

这样改进之后,有以下几个优势:

  1. 卷积采用最大池化替代,独立的predictor采用共享的predictor替代,有效减小了模型规模和参数,在保证精度的条件下提高了运行速度。
<think>嗯,用户想了解如何在PBS脚本中设置nodes=1:X24C:ppn=12的具体意义和用法。首先,我需要回忆一下PBS调度系统的基本参数设置。节点和处理器数量的指定在作业脚本中很常见,但具体每个参数的含义可能需要详细拆解。 首先,PBS中的nodes参数用来指定需要的节点数量。这里的nodes=1应该是指请求1个计算节点。接下来是X24C,这可能是一个节点类型或节点属性的名称。不同的集群可能有不同的节点类型,比如有的节点配置了特定型号的CPU或GPU,X24C可能是该集群中某种节点类型的标识。用户需要根据所在集群的文档确认这个名称是否正确,否则作业可能无法正确调度。 然后是ppn=12,这应该是每个节点请求的处理器核心数,即每个节点使用12个CPU核心。所以整个设置的意思是请求1个类型为X24C的节点,并且在该节点上使用12个核心。用户需要确保集群的X24C节点确实有至少12个可用的核心,否则作业可能会被挂起或失败。 接下来要考虑的是如何将这些参数正确写入PBS脚本。通常,这些资源请求是通过PBS指令指定的,比如使用#PBS -l nodes=1:X24C:ppn=12。不过,不同版本的PBS(如Torque、PBS Pro)可能有细微的语法差异,需要确认集群的具体要求。例如,某些系统可能需要将节点类型和ppn分开指定,或者使用不同的分隔符。 另外,用户可能还需要考虑内存等其他资源的需求。如果应用程序需要较大的内存,可能需要通过其他参数如mem来指定,比如#PBS -l mem=16gb,但这取决于集群的配置和策略。如果用户没有指定内存,系统可能会默认分配每个核心对应的内存,这可能不足,导致作业运行失败。 在实际应用中,用户可能会遇到作业无法调度的问题。这时候需要检查集群中X24C节点的可用性和资源是否充足。使用qnodes命令查看节点状态,或者联系管理员确认节点配置是否正确。此外,ppn的值不应超过节点实际的核心数,否则作业将无法运行。 还有一个常见的问题是,用户可能混淆了ppn和mpiexec中的进程数。例如,如果用户使用MPI并行任务,需要确保启动的进程数不超过总的请求核心数。比如,如果请求了ppn=12,那么MPI命令应该使用不超过12个进程,否则会导致资源争用,影响性能甚至报错。 最后,应该提醒用户在提交作业前测试脚本,使用qsub命令提交并检查作业状态。如果作业长时间处于排队状态,可能需要调整请求的资源或联系管理员了解集群负载情况。此外,提供示例脚本可以帮助用户更好地理解如何整合这些参数到自己的PBS文件中。</think>在PBS脚本中设置`nodes=1:X24C:ppn=12`的含义如下: ### 参数解析 1. **nodes=1** 表示申请1个计算节点。若需多节点并行,可改为`nodes=2`等数值[^1]。 2. **X24C** 特指节点类型标识符,不同集群的节点命名规则不同: - 可能是节点硬件型号(如Intel Xeon 24核配置) - 可能是带特定加速卡的节点(如含GPU资源) - 需通过`qnodes`命令或集群文档确认该节点类型是否存在[^1] 3. **ppn=12** 表示每个节点申请的处理器核心数(processors per node)。需注意: - 实际核数不能超过节点物理核心数 - 超线程环境下可能需要换算(如物理12核可设为ppn=24) ### 示例脚本 ```bash #!/bin/bash #PBS -N MyJob #PBS -l nodes=1:X24C:ppn=12 #PBS -l walltime=01:00:00 # 加载环境变量 cd $PBS_O_WORKDIR # 运行程序(假设使用12线程) ./my_program -np 12 ``` ### 验证方法 1. 提交作业前使用`checkjob`命令检查资源请求合法性 2. 通过`qstat -n`查看作业分配的节点 3. 在作业日志中验证实际使用的核心数 ### 常见问题排查 | 现象 | 可能原因 | 解决方案 | |------|---------|---------| | 作业排队超时 | X24C节点资源不足 | 改用其他节点类型或减少ppn值 | | 节点无法分配 | 节点名拼写错误 | 通过`pbsnodes -l`查看可用节点 | | 程序运行报错 | ppn超实际核数 | 联系管理员确认节点配置 |
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值