当前位置: 首页 > 后端技术 > Python

FasterRCNN目标检测网络训练与评估

时间:2023-03-26 19:32:26 Python

网络训练项目结构在网络训练之前,先介绍一下fasterrcnn项目的目录结构。如下图所示,下图展示了整个项目的目录结构,可以分为四个部分:data、model、utils和mainmodule。数据模块主要实现数据集的创建(voc_dataset.py)、图像增强和图像预处理(utils.py)。模型模块实现所有网络的构建。特征提取网络(vgg.py);区域候选网络(region_proposal_network.py);fastrcnn检测网络(roi_head.py);roi_module.py实现了roi池化层;faster_rcnn.py集成了特征提取网络、候选区域网络和目标检测网络。model.utils主要实现boundingbox的处理。此外,它还包含了AnchorTargetLayer类和ProposalTargetLayer类,分别实现了anchor和bbox的匹配以及roi和bbox的匹配。utils模块实现了网络参数设置(config.py)、网络训练可视化(vis_tool.py)和网络评估(eval_tool.py)。主模块包含trainer.py和train.py。trainer.py包含Trainer类,它集成了更快的rcnn和网络错误,以促进端到端的训练网络。train.py使用Trainer类来训练网络。参数设置backbone使用预训练的vgg特征提取网络,并冻结前四层的梯度。fastrcnn中的分类器使用vgg分类网络的分类器的前两个全连接层,并丢弃所有的dropout层。backbone的下采样率设置为16,即backbone输出的featuremap大小为输入大小的1/16。在rpn训练过程中,设置了3种纵横比(1:1、1:2、2:1)和三种尺寸的anchor(8、16、32),所以一共会生成9个不同的anchor。fastrcnn训练时,roipooling层的输出大小设置为7*7。其他网络参数设置如下:PascalVoc2012数据集用于网络训练,优化器使用随机梯度下降(SGD)优化器,学习率设置为1e-3,momentum设置为0.9,weight_decay设置为0.0005,以及tensorboard工具用于训练可视化。网络评价网络的评价主要采用mAP(MeanAveragePrecision)作为网络的评价指标。iou的阈值设置为0.5。对于每个类别,预测帧与真实帧的iou大于0.5,即认为预测正确。