此代码位于 lib/model/faster_rcnn
这个文件夹下的resnet.py和vgg16.py是用训练好的模型提取图片特征。
重点看一下faster_rcnn.py 代码
1,初始化
1,classes ,具体什么作用还不知道
2,class_agnostic,是否专类
def init(self, classes, class_agnostic):
super(_fasterRCNN, self).init()
self.classes = classes
//类别的数量
self.n_classes = len(classes)
self.class_agnostic = class_agnostic
# 初始化分类loss和边框偏移loss
self.RCNN_loss_cls = 0
self.RCNN_loss_bbox = 0
# 定义rpn网络
self.RCNN_rpn = _RPN(self.dout_base_model)
self.RCNN_proposal_target = _ProposalTargetLayer(self.n_classes)
self.RCNN_roi_pool = _RoIPooling(cfg.POOLING_SIZE, cfg.POOLING_SIZE, 1.0/16.0)
self.RCNN_roi_align = RoIAlignAvg(cfg.POOLING_SIZE, cfg.POOLING_SIZE, 1.0/16.0)
self.grid_size = cfg.POOLING_SIZE * 2 if cfg.CROP_RESIZE_WITH_MAX_POOL else cfg.POOLING_SIZE
self.RCNN_roi_crop = _RoICrop()
2,第二个函数是:_init_weights
主要初始化参数,RCNN_cls_score roi分类的打分。RCNN_bbox_pred,偏移的打分。
3,forward:
输入:
1, im_data,图片
2,im_info,图片信息(宽高)
3,gt_boxes,标注信息
4,num_boxes分类数目
输出:
1,rois,预测框 测试条件下,通过rpn中的proposal_layer 拿到
训练条件下,通过rpn中proproposal_target_layer 拿到
2,cls_prob 对cls_core 进行一个softmax
3,bbox_pred bbox的offset
4,RCNN_loss_cls(cls_score和rois_label 的交叉熵.
5,RCNN_loss_bbox,预测偏差和实际偏差的偏移的误差
6,rpn_loss_cls cls的loss,rpn中获得
7,rpn_loss_bbox(),rpn中获得
8,rois_label,每个rois的分类
后续需要在对代码详细理解的基础上,学习normal_init是如何生成各项数据的。
之后的代码我准备在阅读论文之后,再进行解析。
本文主要关注Faster R-CNN的源码实现,特别是faster_rcnn.py中的关键部分。初始化阶段设置类别数和是否为类不敏感,还包括分类损失和边界框偏移损失。_init_weights函数用于参数初始化。在forward过程中,输入包括图片、图片信息、标注框和类别数,输出包含预测框、分类概率、边界框偏移、损失函数值等。后续计划在理解论文基础上继续解析代码。
317

被折叠的 条评论
为什么被折叠?



