py-faster-rcnn中调参体会

本文详细介绍了R-CNN系列算法中config.py文件的各项参数设置及其作用,包括AnchorTargetCreator、ProposalCreator和ProposalTargetCreator的工作流程与关键阈值设置。

config.py的参数有

目录

AnchorTargetCreator (RPN开头):

ProposalCreator(RPN开头):

ProposalTargetCreator:


AnchorTargetCreator (RPN开头)

AnchorTargetCreator将 20000 多个候选的 anchor 选出 256 个 anchor 进行分类和回归位置

RPN_POSTIVE_OVERLAP =0.7,

RPN_NEGATIVE_OVERLAP =0.3

RPN_FG_FRACTION =0.5

选择过程如下:

对于每个 anchor, gt_label 要么为 1(前景),要么为 0(背景),对于每一个  gt_bbox选择和它重叠度(IoU)最高的一个 anchor 作为正样本,对于剩下的 anchor,从中选择和任意一个gt_bbox重叠度超过 0.7 的 anchor,作为正样本,正样本的数目不超过 128 个。随机选择和gt_bbox重叠度小于 0.3 的 anchor 作为负样本。负样本和正样本的总数为 256。


ProposalCreator(RPN开头):

RPN_NMS_THRESH = 0.7,如果是多目标。我觉得这里的0.7应该变小一些,这样后面选概率最大的2000个的时候,才不会在同一个目标处选太多,从上万个 anchor 中,选择一定数目(2000 或者 300),调整大小和位置,生成 RoIs,用以 Fast R-CNN 训练或者测试。(20000anchor----2000or300的ROIs-----用作RoIHead的训练样本)

TRAIN.RPN_NMS_THRESH = 0.7

RPN_PRE_NMS_TOP =12000 在nms抑制之前选的12000个anchor

RPN_POST_NMS_TOP =2000在nms抑制之后的2000个roi

FG_THRESH = 0.5

BG_THRESH_HI = 0.5

BG_THRESH_LO = 0.1

具体过程:

  1. 对于每张图片,利用它的 feature map, 计算 (H/16)× (W/16)×9(大概 20000)个 anchor 属于前景的概率,以及对应的位置参数。(找前景和anchor的位置参数)
  2. 选取概率较大的 12000 个 anchor(选概率大的前景)
  3. 利用回归(这里用的AnchorTargetCreator算出的回归的参数)的位置参数,修正这 12000 个 anchor 的位置,得到 RoIs利用gt_loc回归参数修正12000个ROIS)
  4. 利用非极大值((Non-maximum suppression, NMS)抑制,选出概率最大的 2000 个 RoIs

ProposalTargetCreator(不是RPN开头)

 负责在训练 RoIHead/Fast R-CNN 的时候,从 RoIs 选择一部分 (比如 128 个) 用以训练。同时给定训练目标, 返回(sample_RoIgt_RoI_locgt_RoI_label

BATCH_SIZE = 128

BBOX_THRESH=0.5

FG_FRACTION = 0.25

步骤:

RoIs 和 gt_bboxes 的 IoU 大于 0.5 的,选择一些(比如 32 个)

选择 RoIs 和 gt_bboxes 的 IoU 小于等于 0(或者 0.1)的选择一些(比如 128-32=96 个)作为负样本

为了便于训练,对选择出的 128 个 RoIs,还对他们的gt_roi_loc 进行标准化处理(减去均值除以标准差)

 

<think>我们正在处理关于Faster R-CNN代码运行时的问题,特别是关于"roi层找不到"的错误。根据引用[1],这个问题通常是由于Caffe配置不当引起的。用户提到代码已在运行,但出现了错误,因此我们需要提供具体的解决方案。 主要步骤: 1. 确保使用了正确的caffe分支(faster rcnn自己的分支)。 2. 下载指定的caffe-fast-rcnn版本(0dcd397b29507b8314e252e850518c5695efbb83)。 3. 将下载的caffe分支中的文件移动到caffe-faster-rcnn文件夹(注意是移动文件,而不是整个文件夹)。 4. 编辑makefile.config,确保设置`WITH_PYTHON_LAYER:=1`(这是关键,因为Faster R-CNN需要Python层支持)。 5. 编译caffe。 注意:用户可能已经运行了代码,但在运行demo.py时出现了错误,因此我们重点讲解如何修复这个错误。 此外,由于用户的问题比较宽泛(“代码已在运行相关的情况”),我们还可以补充一些其他常见问题的解决方法,以帮助用户避免后续可能遇到的问题。 根据经验,常见的Faster R-CNN运行问题还包括: - 环境依赖(如Python版本、库版本冲突) - 模型文件下载问题 - 编译过程中的CUDA/cuDNN相关问题 但根据引用[1]和用户的问题,我们主要围绕roi层的问题展开,同时可以简要提及其他常见问题。 下面开始组织回答。 </think>基于提供的引用信息,以下是关于Faster R-CNN代码运行时出现"找不到roi层"错误的详细解决方案及常见问题解析: ### 问题原因分析 在运行Faster R-CNN的`demo.py`时出现"找不到roi层"错误,根本原因是**Caffe分支配置不当**[^1]。该框架依赖特定的Caffe分支(`caffe-fast-rcnn`),若未正确配置Python层支持或文件结构错误,会导致RoI(Region of Interest)池化层加载失败。 ### 解决方案 #### 1. 获取正确分支代码 ```bash git clone -b 0dcd397b29507b8314e252e850518c5695efbb83 \ https://github.com/rbgirshick/caffe-fast-rcnn.git ``` > 关键点:必须使用指定commit的代码分支[^1] #### 2. 文件迁移与配置 ```bash # 进入克隆目录 cd caffe-fast-rcnn # 移动所有文件到Faster R-CNN的caffe目录 cp -r * /path/to/your/faster-rcnn/caffe-faster-rcnn/ # 编辑编译配置文件 nano /path/to/your/faster-rcnn/caffe-faster-rcnn/Makefile.config ``` 在`Makefile.config`中**必须启用**: ```makefile WITH_PYTHON_LAYER := 1 # 关键配置!启用Python层支持 ``` #### 3. 重新编译Caffe ```bash cd /path/to/your/faster-rcnn/caffe-faster-rcnn make clean make -j$(nproc) make pycaffe ``` #### 4. 验证修复 运行测试命令确认RoI层加载正常: ```bash python -c "from caffe import layers; print('RoI层加载成功')" ``` ### 常见关联问题 1. **CUDA/cuDNN版本冲突** 需确保CUDA版本与Caffe要求匹配(通常需CUDA 8.0-10.0) 2. **Python依赖缺失** 安装必需包: ```bash pip install cython python-opencv easydict ``` 3. **模型文件路径错误** 检查`lib/fast_rcnn/config.py`中的预训练模型路径配置 4. **显存不足** 在`experiments/cfgs/faster_rcnn_end2end.yml`中调小`batch_size` > **关键提醒**:90%的RoI层错误源于`WITH_PYTHON_LAYER=1`未启用或编译失败[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值