首页
/ Faster R-CNN中VGG_CNN_M_1024模型的训练网络结构解析

Faster R-CNN中VGG_CNN_M_1024模型的训练网络结构解析

2025-07-07 02:10:11作者:申梦珏Efrain

概述

本文将深入解析Faster R-CNN目标检测框架中使用的VGG_CNN_M_1024模型的训练网络结构(train.prototxt)。这个网络结构是基于VGG的变种模型,专门为PASCAL VOC数据集设计,包含21个类别(20个物体类别+背景)。

网络结构详解

1. 数据输入层

layer {
  name: 'data'
  type: 'Python'
  top: 'data'
  top: 'rois'
  top: 'labels'
  top: 'bbox_targets'
  top: 'bbox_inside_weights'
  top: 'bbox_outside_weights'
  python_param {
    module: 'roi_data_layer.layer'
    layer: 'RoIDataLayer'
    param_str: "'num_classes': 21"
  }
}

数据输入层使用Python层实现,负责提供以下数据:

  • 原始图像数据(data)
  • 候选区域(rois)
  • 类别标签(labels)
  • 边界框回归目标(bbox_targets)
  • 边界框内部权重(bbox_inside_weights)
  • 边界框外部权重(bbox_outside_weights)

2. 卷积特征提取部分

网络采用经典的卷积神经网络结构提取图像特征:

  1. 第一卷积层(conv1)

    • 96个7×7卷积核,步长2
    • 使用ReLU激活函数
    • 局部响应归一化(LRN)
    • 3×3最大池化,步长2
  2. 第二卷积层(conv2)

    • 256个5×5卷积核,步长2
    • 使用ReLU激活函数
    • 局部响应归一化(LRN)
    • 3×3最大池化,步长2
  3. 后续卷积层(conv3-conv5)

    • 512个3×3卷积核
    • 使用ReLU激活函数
    • 无池化层

3. ROI池化层

layer {
  name: "roi_pool5"
  type: "ROIPooling"
  bottom: "conv5"
  bottom: "rois"
  top: "pool5"
  roi_pooling_param {
    pooled_w: 6
    pooled_h: 6
    spatial_scale: 0.0625 # 1/16
  }
}

ROI池化层是Faster R-CNN的关键组件,它将不同大小的候选区域(ROIs)池化为固定大小(6×6)的特征图。空间比例因子0.0625表示特征图相对于原始图像缩小了16倍。

4. 全连接部分

网络包含两个全连接层:

  1. fc6层:4096个神经元
  2. fc7层:1024个神经元(这也是模型名称VGG_CNN_M_1024的由来)

每个全连接层后都跟随:

  • ReLU激活函数
  • Dropout层(丢弃率0.5)防止过拟合

5. 输出层

网络有两个并行输出分支:

  1. 分类分支(cls_score)

    • 21个输出(对应PASCAL VOC的20类+背景)
    • 使用SoftmaxWithLoss计算分类损失
  2. 边界框回归分支(bbox_pred)

    • 84个输出(21类×4个坐标值)
    • 使用SmoothL1Loss计算回归损失

训练参数设置

网络中的每一层都包含学习率乘数(lr_mult)和衰减乘数(decay_mult)参数:

  1. 卷积层参数

    • 第一卷积层参数固定(lr_mult: 0)
    • 其他卷积层:权重学习率乘数1,偏置学习率乘数2
  2. 全连接层参数

    • 权重学习率乘数1
    • 偏置学习率乘数2
  3. 权重初始化

    • 分类分支:高斯初始化(std=0.01)
    • 回归分支:高斯初始化(std=0.001)

损失函数

网络使用多任务损失函数:

  1. 分类损失(loss_cls):SoftmaxWithLoss
  2. 边界框回归损失(loss_bbox):SmoothL1Loss

两种损失的权重均为1,在训练过程中同时优化这两个目标。

总结

VGG_CNN_M_1024是Faster R-CNN框架中一个中等大小的模型,相比原始的VGG16模型,它在保持较好性能的同时减少了参数量。该网络结构体现了Faster R-CNN的核心思想:通过卷积网络提取特征,ROI池化处理不同大小的候选区域,最后通过两个分支同时完成分类和定位任务。