网络训练
项目结构
网络训练之前,首先来介绍faster rcnn项目的目录结构。
如下图所示,下图展示了整个项目的目录结构,主要可以分为data、model、utils和主模块4个部分。
- data模块主要实现了数据集的创建(voc_dataset.py)、图片增强以及图片预处理(utils.py)。
- model模块实现了所有网络的构建。特征提取网络(vgg.py);区域候选网络(region_proposal_network.py);fast rcnn检测网络(roi_head.py);roi_module.py实现了roi pooling层;faster_rcnn.py整合了特征提取网络、区域候选网络以及目标检测网络。model.utils主要实现了边界框的处理,此外,它还包含了AnchorTargetLayer类和ProposalTargetLayer类,分别实现anchor和bbox的匹配以及roi和bbox的匹配。
- utils模块实现了网络参数的设置(config.py)、网络训练的可视化(vis_tool.py)以及网络的评估(eval_tool.py)。
- 主模块包含trainer.py和train.py。trainer.py包含了Trainer类,它整合了faster rcnn以及网络误差,方便端到端训练网络。train.py则使用Trainer类来训练网络。
参数设置
backbone使用了预训练的vgg特征提取网络,冻结了前四层的梯度。fast rcnn中的分类器使用了vgg分类网络的分类器前2个全连接层,并丢弃了所有的dropout层。backbone的下采样率设为16,即backbone输出的特征图大小为输入大小的1/16。
rpn训练过程中,设置了3种长宽比(1:1,1:2,2:1)以及三种尺寸的anchor(8,16,32), 所以一共会产生9种不同的anchor。
fast rcnn训练过程中,roi pooling层输出大小设定为7 * 7。
网络其他参数设置如下:
网络训练使用Pascal Voc2012 数据集,优化器使用随机梯度下降(SGD)优化器,学习率设为1e-3, momentum设为0.9,weight_decay设为0.0005, 使用tensorboard工具进行训练可视化。
网络评估
网络的评估主要使用mAP(Mean Average Precision)作为网络的评价指标。iou的阈值设置为0.5,对于每个类别,认为预测框与真实框的iou大于0.5,即预测正确。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。