整体思路 以上是Faster RCNN的整体网络框架图,首先需要构建一个基础的网络框架类FasterRCNNBase,随后在此基础上构建子类FasterRCNN,在这个类中进行各个模块如RPN/ROI Header的实例化. FasterRCNNBase init函数接收backbone/rpn/roi_heads/transform四个变量并初始化参数. 主要看forward函数.首先会对训练数据(bbox的tensor格式)进行检查.然后记录图片原始的大小. 接着进行预处理,丢到骨干网络中得到特征图(如果在多个特征图上预测,得到的特征图将是一个字典) 在特征图上使用RPN网络提取Proposal,并得到RPN网络的损失. 将RPN生成的Proposal,随同特征图与标注target丢入ROI_Header中得到预测结果和预测损失.最后还需要将预测结果进行预处理. 最后当然就是把RPN Loss和Fast RCNN Loss加起来反向传播~(如果是预测模式直接返回detections即可,eager_outpus就是
Faster RCNN框架图 图源: deep-learning-for-image-processing/pytorch_object_detection/faster_rcnn at master · WZMIAOMIAO/deep-learning-for-image-processing (github.com) 源码主要内容 Faster R-CNN源码阅读将从以下几个方面展开,详见其他文档 DataSet 网络框架 GeneralizedRCNNTransform RPN Predict Header 正负样本划分与采样 Loss函数 PostProcess Change Backbone(with FPN) 环境配置 Python 3.6/3.7/3.8 Pytorch>=1.6.0 pycocotools Ubuntu or Centos Use Gpu to train model more details see requirements.txt 文件结构 ├── backbone: 特征提取网络,
摘要 Faster RCNN在Fast RCNN的基础上增加了RPN网络来代替比较耗时的Selective Search。RPN网络和检测网络共享同一张卷积特征图,他同时预测每个位置的前景(背景)概率和每一类相对于锚框的偏移,得到的预测框将送入Fast RCNN的检测头进行进一步的分类和BBOX回归。 对于非常深的VGG-16模型,Faster RCNN在GPU上的帧速率为5fps(包括所有步骤),同时在PASCAL VOC 2007、2012和MS COCO数据集上实现了最先进的对象检测精度,每张图像只有300个建议框。在ILSVRC和COCO 2015竞赛中,Faster R-CNN和RPN是多个赛道第一名获奖作品的基础。 算法流程 RPN网络结构 正向传播 对于特征图上的每个3x3的滑动窗口(实际实现就是用conv3x3 p1 s1),首先计算窗口中心点在原图上的位置,并计算出k个anchor box 对于anchor的选择,共有三种比例,三种尺度,即每个位置都有9个anchor 感受野 对于特征图上的感受野,骨干网络为ZFNet时,感
相较于RCNN的改进 Fast RCNN仍然使用selective search选取2000个建议框,但是这里不是将这么多建议框都输入卷积网络中,而是将原始图片输入卷积网络中得到特征图,再使用建议框对特征图提取特征框。这样做的好处是,原来建议框重合部分非常多,卷积重复计算严重,而这里每个位置都只计算了一次卷积,大大减少了计算量 由于建议框大小不一,得到的特征框需要转化为相同大小,这一步是通过ROI池化层(region of interest)来实现的 Fast RCNN里没有SVM分类器和回归器了,分类和预测框的位置大小都是通过卷积神经网络输出的 为了提高计算速度,网络最后使用SVD代替全连接层 算法流程 输入一张图片,使用Selective Search获取建议框(region proposal) 将原始图片输入卷积神经网络之中,获取特征图 对每个建议框,从特征图中找到对应位置(按照比例映射),截取出特征框(深度保持不变) 将每个特征框划分为 HxW个网格(论文中是 7×7 ),在每个网格内进行最大池化(即每个网格内取最大值),这就是ROI池化。这样每个特征框就
摘要 RCNN可以说是利用深度学习进行目标检测的开山之作。在当时的VOC 2012数据集上,将mAP提升了30%以上,达到了53.3%。 这篇论文主要提出两个关键见解: 可以将高容量的卷积神经网络应用在自底向上的区域建议(region proposal),以此来定位和分割对象。 当训练数据不足时,可以选择进行辅助任务的监督预训练,再针对具体任务进行fine-tuning,以此获得显著的性能提升。 算法流程 一张图像生成1k~2k个候选区域(使用Selective Search) 对每个候选区域,使用深度网络提取特征 特征送入每一类的SVM分类器,判别种类 使用回归器对候选框进行微调 候选区域生成 使用Selective Search算法。算法大致思路是通过聚类的方法在图像上初步分割,找到 颜色/纹理/大小/相似度比较相似的区域,再根据这些区域进行加权合并,最后(希望)得到一些包括了GT box的候选框。 AlexNet 提取特征 对于每个候选框,将框中的内容提取出来,并缩放至227x227的大小,送入AlexNet中提取特征,产生4096维的
JJJYmmm
Updating as per fate.