初入深度学习|初入深度学习4——如何修改一个深度学习库


初入深度学习4——如何修改一个深度学习库

  • 学习前言
  • 深度学习库的组成
  • 修改目标定位
  • 举例
    • 一、任务介绍
    • 二、目标定位
    • 三、变量分析
    • 四、修改代码
  • 总结

学习前言 在学习过一个深度学习库之后,如果想要满足自己项目或者论文的不同需求,大多数需要对仓库及进行修改,此时如何定位修改的位置,并且对变量进行分析修改,就显得非常重要。
初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

深度学习库的组成 通过《初入深度学习3——如何分解与学习一个深度学习库》我们已经了解到,一个深度学习仓库具有不同的组成,我们可以将一个深度学习仓库分解如下:
深度学习库的功能通常包括两个部分,一部分是训练模型,另一部分是利用模型进行预测。
在训练模型时,需要考虑模型本身,训练参数,数据加载与损失函数。
在预测模型时,需要考虑模型本身,数据加载,预测后处理。
修改目标定位 在修改仓库前,需要根据所需要修改的功能对需要修改的目标进行定位,比如:
想要对网络结构进行改进,那么就定位到模型本身,然后修改网络结构的特定部分。
想要对训练参数进行改进,那么就定位到训练参数,然后查找各个参数的作用,进一步进行修改。
想要对数据增强进行改进,那么就定位到数据加载,然后分解其中数据增强的部分,修改数据增强的过程。
想要对损失函数进行改进,那么就定位到损失函数,然后分解其中的回归部分、分类部分等,进一步对细节进行修改。
想要对预测结果进行改进,那么就定位到预测后处理,然后根据自身需求,分解每个输出的作用,进一步修改。
因此,在修改前需要做到:
定位修改目标与分析相关变量。
举例 一、任务介绍 【初入深度学习|初入深度学习4——如何修改一个深度学习库】接下来,本文将对目标检测算法进行修改,对检测到的对象进行计数。
这个计数的过程实现非常简单,但询问的人却蛮多的,简单看看如何实现。
二、目标定位 首先需要对计数这个任务进行分析,分析结果如下:
计数与模型本身并没有什么关系。
预测前我们不能进行计数。
计数和训练没什么关系。
计数发生在预测之后。
因此计数是属于预测后处理的内容。我们首先定位到预测的后处理部分。
本文以使用较多的YoloV3-Pytorch库为例,进行解析。定位到YoloV3-Pytorch库的预测的后处理部分,下面的截图中,包括了预测部分与预测后处理的部分。预测后就是预测后处理的部分了。
初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

三、变量分析 对预测结果进行分析,网络self.net的输出是outputs,outputs解码后仍赋给了outputs。这两行过后,outputs是预测结果解码后的内容。
初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

下一步是进行非极大抑制,结果赋给了results,因此results是非极大抑制后的结果。
初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

下一步对非极大抑制后的结果进行分解,获得标签,置信度,和预测框坐标。
初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

在这里,我们已经定位到我们需要的变量了,就是这个top_label,由于top_label代表的是所有预测框的标签,那么我们只需要根据标签进行计数即可。
四、修改代码 既然要使用到top_label,那么首先先打印一下top_label是个什么。
初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

初入深度学习|初入深度学习4——如何修改一个深度学习库
文章图片

打印出来可知,top_label就是一个长条矩阵罢了,里面是每个预测框的标签种类。
由于要进行计数,我们需要判断每个预测框属于哪个类,在python中,利用矩阵可以进行整体的判断,因此我们对self.class_names进行循环,然后判断top_label等于每个类的数量即可。
类别较多时,会将许多无关的类显示出来,因此多增加一个if sub_label_num > 0:的条件判断,只显示有数量的类别。
for i in range(len(self.class_names)): sub_label_num = np.sum(top_label == i) if sub_label_num > 0: print(self.class_names[i], sub_label_num)

之后就可以正常计数了。
总结 代码的修改有易有难,本文举了一个较为简单的例子,但修改的思路却是不变的,首先定位修改目标,然后进行变量分析,最后修改代码即可。
最大的不变就是变化,需求时时刻刻都是在变化的,自己会修改代码,未来的路也会宽的多。

    推荐阅读