前言

数据集

       在进行所有人工智能检测前我们必需准备的工作之一是获取数据集,目标检测算法根据流行的不同模型分为使用,所以很多时候需要用代码将数据集转换成我们需要的格式。但是其进行下一步创建数据加载类时大都以一种形式将获取到的边界框、类别、旋转角度等特征呈现使用,这里我不确定是不是都全转换成txt文件传入,但是最后形成的特征格式如下图,文件位置非必须)
人工智能——大白话熟悉目标检测基本流程-LMLPHP
       简单来说就是不论是哪个数据集,放到数据加载类里都是一样的形式,所谓那些主流算法需要使用特定格式数据集只是人家就写了这一部分转换的代码而已,或许是因为团队不一样,公司不一样,所以不必在这一部分过于纠结。

数据加载类

       整理好特征数据,接下来就是合理分配他们,但是这并不能像进行回归预测那样一股脑全部塞进去,受各方面影响,需要分批次进行训练,也就是平时经常听到的bach size,将数据传输给主干网络。
       同时在此对数据进行

主干网络(Backclone)

       此时数据已经处理好了,接下来我们需要将处理好的数据传入主干网络,主干网络是目标检测任务的基本特征提取器,我们可以理解为进行了一次相比颈部网络较为笼统地特征提取,最终传递所需n个输出特征层传入颈部网络。又因为适用场合不同,又分为更深且连接密集的主干网络和轻量级网络,分别用于研究突破和用于工业、现场使用。
       主干网络具体代码咱们就不讨论了,网上已经有很多实例了,本文主要是疏通一下目标检测的整体流程,可以分享一下主干网络主要用的思想就是大家耳熟能详的那几种算法->VGG16/ResNet/CSPDarknet53/MobileNet系列等等

颈部网络

       主干网络产生的输出特征层传入颈部网络,颈部网络的作用是提取一些更复杂的特征,这一块就相对来说更加细节,相对流行的有FPN(特征金字塔),对特征进行多尺度融合;还有 SPP 模块,扩宽感受野,增强对特征图的提取能力,防止过拟合…
       这一部分只是可太多了,但他们的本质都是将特征进行进一步处理,使特征的相关性更加紧密,这样训练的模型鲁棒性更好,最后得出模型。如果将目标检测比作做一个精美的木雕的话,数据集就是原材料,主干网络就是雕一个大概原型,颈部网络就是细细雕刻每一个部位,最后的头部网络便是将对应目标木雕分销到各自需要的地方。

头部网络

       通过前面网络训练的特征头部网络负责检测与定位,通过loss损失函数和非极大值抑制计算选取出最佳边界候选框位置,最后用mAP指标评价->通俗一点讲就是用来预测最后展示目标的类别和位置。

11-07 21:45