需求分析--论文复现的不同角度

对于一篇论文来说,大部分人讨论的都是论文中新的思路和创新点,又或是采用的新的结构,但是在第一次复现论文代码的过程中你将发现:论文的思路并不能完全作为你复现代码的完整思路。本文将概括性的描述论文复现的过程(以复现faster rcnn为例,仅供参考)。

首先,需要思考程序的目的–搭建深度学习,进行训练使网络的输出满足需求,网络的结构需要参考论文的描述。为了实现前面的目的,我们需要数据集用以训练并搭建可以用于训练的网络。因此,对于本次复现而言首先需要实现的是对数据集的处理,获得数据集信息用于后续的程序设计,这一步骤需要选择合适的数据集如PASCAL VOC、COCO、kitter等,选定数据集之后可以搜索数据集的信息提取方式,或者在github上找到类似代码进行参考,最终实现对数据集信息的有用提取(提取的结果将用于后面的网络输入,需要根据自己的需要提取必要的信息)。

在数据集信息处理完成之后,需要对网络进行设计,网络部分只讨论RPN(其他的自行类别即可)。RPN采用了VGG16进行提取特征并去除了VGG16的全连接层,因此需要自行搜索到可以直接加载VGG16的方法,并采用常规的编程方法实现后续网络结构,网络的结构需要根据论文的内容进行设计并且需要知道输出的目标是什么(不是所有的参数都适合去拟合,如拟合了不恰当的参数容易出现网络不收敛等现象)。

在获得输出后,需要计算损失并进行反向传播。在损失计算的设计开始之前,首先需要被了解的是损失计算的输入有哪些,而这些输入有哪些是需要根据数据集信息进行二次制作才能使用的。对于需要二次制作的数据集信息都需要进行格式和大小的规划,例如anchor对应的ground truth、IOU和label,再进行一系列后续处理后才能得到可以作为损失函数的输入。此时再进行损失函数计算的设计,以方便进行反向传播。

最后编写训练函数以整合之前所有编写的函数的功能,实现完整的功能实现。

你可能感兴趣的:(需求分析--论文复现的不同角度)