本文所用代码gayhub的地址:https://github.com/chenyuntc/simple-faster-rcnn-pytorch  (非本人所写,博文只是解释代码)

好长时间没有发博客了,感觉也没啥人读我的博客,不过我不能放弃啊,总会有人发现它的价值的,哈哈!最近一直在生啃目标检测的几篇论文,距离成为我想象中的大神还有很远的一段距离啊,刚啃完Faster-RCNN的论文的时候,觉得可能是语言的关系,自己看得一直是似懂非懂的,感觉没有掌握到里面的精髓,于是我决定撸代码来看,据说Ross Girshick大神的代码很健壮,看了下是基于caffe/caffe2写的,自己不太熟悉caffe的框架和环境,于是就心血来潮在网上找基于pytorch的Faster-RCNN的代码,最后还真被我找到了陈云写的simple-faster-rcnn-pytorch-master,能从头撸出Faster-RCNN的实现真的是十分的不容易,我光读就读了一个星期,真是惭愧,差距还是很大的!simple-faster-RCNN顾名思义就是简化版的faster-rcnn,作者说代码除去注释只有2000行左右,但是能达到和rgb大神差不多的精度,真的是很了不起了!为此我还特意买了作者一本书,就当是付费看代码吧~

具体的实现精度和相关的环境建议大家仔细阅读作者的README文件,上面讲的很清楚,本篇博客主要负责解释代码,以备日后重新读不用这么费力气。

本篇博客是整个Faster-rcnn系列的第四篇文章,主要解释/simple-faster-rcnn-pytorch-master/train.py 以及/simple-faster-rcnn-pytorch-master/trainer.py

前三章地址在:

1 Faster-RCNN的数据读取及预处理部分:(对应于代码的/simple-faster-rcnn-pytorch-master/data文件夹)

2 Faster-RCNN的模型准备部分:(对应于代码目录/simple-faster-rcnn-pytorch-master/model/utils/文件夹)

3 Faster-RCNN的模型正式介绍:(对应于代码目录/simple-faster-rcnn-pytorch-master/model/文件夹)

 

下面正式开始介绍Faster-rcnn的训练部分的代码

一:trainer.py部分代码:

首先来看trainer.py,因为trainer.py里面实现了很多函数供train.py调用,trainer.py文件里函数结构如下图:

目标检测之Faster-RCNN的pytorch代码详解(模型训练篇)

然后我们开始一个函数一个函数的进行剖析,可能读着读着你就会发现原来晦涩难懂的问题突然就变得很直觉了!

1 __init__函数 代码如下:

 

 1  def __init__(self, faster_rcnn):
 2         super(FasterRCNNTrainer, self).__init__()
 3 
 4         self.faster_rcnn = faster_rcnn
 5         self.rpn_sigma = opt.rpn_sigma
 6         self.roi_sigma = opt.roi_sigma
 7 
 8         # target creator create gt_bbox gt_label etc as training targets. 
 9         self.anchor_target_creator = AnchorTargetCreator()
10         self.proposal_target_creator = ProposalTargetCreator()
11 
12         self.loc_normalize_mean = faster_rcnn.loc_normalize_mean
13         self.loc_normalize_std = faster_rcnn.loc_normalize_std
14 
15         self.optimizer = self.faster_rcnn.get_optimizer()
16         # visdom wrapper
17         self.vis = Visualizer(env=opt.env)
18 
19         # indicators for training status
20         self.rpn_cm = ConfusionMeter(2)
21         self.roi_cm = ConfusionMeter(21)
22         self.meters = {k: AverageValueMeter() for k in LossTuple._fields}
__init__

相关文章:

  • 2021-11-17
  • 2021-06-17
  • 2021-11-01
  • 2021-11-21
  • 2021-09-10
  • 2021-05-18
猜你喜欢
  • 2022-01-18
  • 2022-12-23
  • 2021-09-26
  • 2021-12-05
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
相关资源
相似解决方案