HALCON 20.11:深度学习笔记(4)
HALCON 20.11.0.0中,实现了深度学习方法。关于网络和训练过程如下:
在深度学习中,任务是通过网络发送输入图像来执行的。整个网络的输出由许多预测组成。例如,对于一个分类任务,预测得到的每个类的置信度,表示图像显示该类实例的可能性有多大。
具体的网络会有所不同,特别是从一种方法到另一种方法。一些方法,如对象检测,使用子网络生成特征图(参见下面和深度学习/对象检测中给出的解释)。在这里,我们将解释一个基本的卷积神经网络(CNN)。这种网络由一定数量的层或滤波器组成,这些层或滤波器按特定的方式排列和连接。一般来说,任何层都是执行特定任务的构建块。可以将它看作一个容器,它接收输入,根据函数转换输入,并将输出传入到下一层。因此,不同类型的层可以有不同的功能。在“分类解决方案指南”中给出了几个可能的例子。许多层或滤波器都有权重,参数也称为滤波器权重。这些是在网络训练过程中修改的参数。大多数层的输出都是feature map。因此,特征映射的数量(层输出的深度)和大小(宽度和高度)取决于特定的层。
Schema of an extract of a possible classification network.
Below we show feature maps corresponding to the layers, zoomed to a uniform size.
为了训练网络完成特定的任务,需要添加损失函数。不同的任务有不同的损失函数,但它们都按照以下原则工作。损失函数比较来自网络的预测与给定的信息,它应该在图像中找到什么(以及,如果适用,在哪里),并惩罚偏差。然后滤波器的权值以使损失函数最小化的方式更新。因此,针对特定的任务训练网络,人们努力使网络的损失(一个错误函数)最小化,人们希望这样做也会改善性能度量。在实践中,这种优化是通过计算梯度和更新不同层的参数(滤波器权重)来实现的。这通过在训练数据上迭代多次来重复。
还有一些额外的参数会影响训练,但这些参数并不是在常规训练中直接学到的。这些参数在开始训练之前已经设置了值。我们将最后一种类型的参数称为超参数,以便将它们与训练期间优化的网络参数区分开来。请参阅“设置训练参数:超参数”一节。
为了从头训练所有的滤波器权重,需要大量的资源。因此,我们可以从以下观察中得到好处。第一层检测底层特征,如边缘和曲线。下面各层的特征映射较小,但它们代表更复杂的特征。对于一个大型网络,底层特征足够普遍,因此相应层的权值在不同任务之间不会有太大的变化。这就产生了一种称为迁移学习的技术:利用一个已经训练好的网络,再训练它以适应特定的任务,受益于较低层次已经相当合适的过滤权重。因此,所需的资源要少得多。虽然一般情况下,网络在大数据集上训练时应该更可靠,但再训练所需的数据量也取决于任务的复杂性。在分类的帮助下,迁移学习工作流程的基本架构如下图所示。
Basic schema of transfer learning with the aid of classification.
(1) A pretrained network is read.
(2) Training phase, the network gets trained with the training data.
(3) The trained model with new capabilities.
(4) Inference phase, the trained network infers on new images.