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

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

学习前言

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

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

; 深度学习库的组成

通过《初入深度学习3——如何分解与学习一个深度学习库》我们已经了解到,一个深度学习仓库具有不同的组成,我们可以将一个深度学习仓库分解如下:
深度学习库的功能通常包括两个部分,一部分是训练模型,另一部分是利用模型进行预测。

在训练模型时,需要考虑模型本身,训练参数,数据加载与损失函数。
在预测模型时,需要考虑模型本身,数据加载,预测后处理。

修改目标定位

在修改仓库前,需要根据所需要修改的功能对需要修改的目标进行定位,比如:
想要对网络结构进行改进,那么就定位到 模型本身,然后修改网络结构的特定部分。
想要对训练参数进行改进,那么就定位到 训练参数,然后查找各个参数的作用,进一步进行修改。
想要对数据增强进行改进,那么就定位到 数据加载,然后分解其中数据增强的部分,修改数据增强的过程。
想要对损失函数进行改进,那么就定位到 损失函数,然后分解其中的回归部分、分类部分等,进一步对细节进行修改。
想要对预测结果进行改进,那么就定位到 预测后处理,然后根据自身需求,分解每个输出的作用,进一步修改。

因此,在修改前需要做到:
定位修改目标与分析相关变量。

举例

一、任务介绍

接下来,本文将对目标检测算法进行修改, 对检测到的对象进行计数

这个计数的过程实现非常简单,但询问的人却蛮多的,简单看看如何实现。

二、目标定位

首先需要对 计数这个任务进行分析,分析结果如下:
计数与模型本身并没有什么关系
预测前我们不能进行计数
计数和训练没什么关系
计数发生在预测之后
因此 计数是属于预测后处理的内容。我们首先定位到预测的后处理部分。

本文以使用较多的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)

之后就可以正常计数了。

总结

代码的修改有易有难,本文举了一个较为简单的例子,但修改的思路却是不变的,首先定位修改目标,然后进行变量分析,最后修改代码即可。

最大的不变就是变化,需求时时刻刻都是在变化的,自己会修改代码,未来的路也会宽的多。

Original: https://blog.csdn.net/weixin_44791964/article/details/123475899
Author: Bubbliiiing
Title: 初入深度学习4——如何修改一个深度学习库

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/649169/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球