目录
一、代码的重要部分
二、模型本身
三、训练参数
四、数据加载
1.训练的数据价值
2.预测的数据加载
五、损失函数
六、预测后结果
一、代码的重要部分
包括两个部分:训练模型,模型预测。
训练模型--------需要考虑模型本身,训练参数,数据加载与损失函数。
模型预测--------需要考虑模型本身,数据加载,预测后处理。
二、模型本身
一般来讲,模型本身在仓库中的名字是net(网络)或者model(模型)。以UNET为例:在github上找到对应的代码,如下
网络结构的部分就存储在model.py中,基本上网络的组成与构建,都会在这个部分完成。如果想要修改与了解网络结构,一般是在这一部分进行操作。
三、训练参数
训练参数一般伴随着训练文件,因此一般在train.pyh文件里面,每一个库指定参数的方式不同,有些喜欢通过yaml文件指定,有些喜欢通过cfg文件(mmdetection、mmsegmentation)指定,有些甚至通过py文件指定,都不一样,这个需要参考每一个库的组成去分析。但大多数库都可以在train.py文件中找到。
参数一般通过argparse指定。argparse是python自带的命令行参数解析包,可以用来方便地读取命令行参数。
如果对于参数不理解是什么意思的可以自行百度。慢慢成长学习。
四、数据加载
分为两部分:训练的数据加载;预测的数据加载。
1.训练的数据价值
训练的数据加载其实是非常重要的,直接关系到模型的训练,监督模型在训练时加载的数据一般分为两部分,一部分是输入变量,通常是图片;另一部分是标签,在目标检测中就是图片对应的框的坐标,在语义分割中就是每个像素点的种类。
一般来讲,数据加载部分,模型本身在仓库中的名字是data、datasets或者dataloader。
datasets文件通过create_dataloader函数构建文件加载器,然后通过LoadImagesAndLabels这个文件加载器的类来获取图片与标签文件。然后在LoadImagesAndLabels中,算法会进行数据增强、数据预处理等操作,最终返回输入图片与标签。
2.预测的数据加载
预测的数据加载和训练的数据加载相比,少了数据增强与标签处理的部分,因此会相对简单一些,主要是对输入图片进行预处理。
既然是预测部分的数据预处理,需要从预测文件开始寻找。
五、损失函数
一般来讲,损失函数在仓库中的名字是Loss(损失),Loss函数是模型优化的目标,在训练过程中Loss理论上是要被越优化越小的。
一般loss.py在utils文件夹中,要想了解Loss的工作,通常要对损失进行一行、一行的分析
六、预测后结果
预测的后处理主要包括了预测结果的解码与预测图片的可视化。
既然是预测部分的后处理,需要从预测文件开始寻找。