MMDetection 详解
1.train
-
configure文件表示整个模型结构,是mmdetection里面最重要的部分。就是使用一个configure文件来管理所有的内容,是因为整个ML的参数太多了,所以统一在config文件夹中进行设置。
-
具体要写多少层,训练策略,选取的优化器,数据的处理等,这些所有的参数你都不能每次都去源码里面去改,那就把这些所有的事情都写到一个config文件里面。然后让一键构建,这就是config文件的作用。
-
config文件是mmdetection最重要的部分,其实不仅仅是参数的设定,它还包括了模型的构建,模型整个搭起来就是在一个config文件里面的。
-
mmdection的config文件就是一个py文件,yaml文件也是config文件的一种类型。
-
比如你打开一个py文件,如上图所示,你也不知道是什么意思,其实这个文件特别长,但是你看到的就是这一句话。为什么只有这一句话呢?这是因为它索引了base,它索引了一个前面的配置文件。它只对这个配置文件的这一些字段做了修改。
-
点这个配置文件,你会发现它索引了另外一个配置文件,另外一个配置文件可能又会索引到另外一个配置文件,这样的索引,可能要7-8次。
-
对于新手来说,往往难以找到字段,所以说的第一个重要的事情就是print_config()把所有的参数都打印出来。
1.1 print_config()
-
在mmdetection里面给了一个tools工具将config文件打印出来。
可以将config文件的所有内容,打印到一个py脚本当中。这是第一个重要的点,尤其是对于刚学的人来说,你那些字段是什么,甚至不知道有那些字段。
一定要把config文件中的信息打印出来去研究,这是第一件事情。
1.2 训练模型
-
你想模型只需要这一句话,,连后面的--work-dir $WORKDIR 都不需要。
-
只需要 ,你想train什么都可以,所以config就是包含了所有。训练就只需要包含这一句话就好了。所以config是极其重要的重点。
-
mmdetection集成了非常多的算法,举个例子,比如打开fastercnn这个算法,
faster_rcnn里面又包含各种结构,比如backbone不一样,训练策略的不一样,数据集的不一样等。
-
比如说这个配置文件,这个命名是有严格规范的,
1.faster_rcnn--- 对应方法。
2.r101-------backbone。
3.fpn------Feature pyramid network(特征金字塔网络),提高目标检测的准确率,尤其是小目标的检测
4.mstrain---多尺度的训练。
5.3x---longsgadule 更长时间的训练 1x 就是12个epoch,3x就是36个epoch。
6.coco---是指在coco数据集上进行训练。
每一个文件夹集成了一个方法,每个方法又有不同的结构和训练方式。
在_base_文件夹下包含三个部分1.models,2. schedules和3.datasets:
- configure文件的组成是字典结构,一定是一个一个的字典。
- configure文件写这么多,主要是为了将数据传到这个地方,文件中的有些字段并不是字典,而是一个值。
像上面的train_pipeline,test_pipeline等,它只是一个值,它是作为一个value传到后面的字典里面。
上面写这么多,只是为了把value传在这个地方,
要知道某些字段并不是configure文件的构成,它是一些值,为了传到字典里面的。
像下面这个model,它有backbone,首先是model的类型是SOLOv2,backbone 是由ResNet101搭建,neck,mask_head就把复杂的模型搭建完成了。
1.2.1 Model
type=‘Resnet’既然登记为这个类,一定有这个类的源码。
在这个文件夹,backbones里面可以找到对应的源码,后面的字典只是将参数传递给源码里。或者在config文件里面不知道代码是干什么的,可以快速的找到源码,了解其用途。