本章主要讲述卷积、Maxpooling、全连接、BN、激活函数等预备知识,为学习Yolov4做准备。
例如输入为一个(7,7,1)单通道图像,与(3,3,1)进行卷积,设定步长stride=1,padding=0时,将得到(5,5,1)的输出。单个点输出的卷积结果其实是点乘和相加的过程。
若对于多层的单通道图像(7,7,3),与(3,3,3)进行卷积,设定步长stride=1,padding=0时,将各个通道对应进行卷积操作,得到3个(5,5,1)的输出,再各点相加,得到(5,5,1)的输出。
若此时增加通道数则会得到什么样的结果呢?例如将多层的单通道图像(7,7,3),与(3,3,3,256)进行卷积,这里的256代表256个通道,即256个(3,3,3)。设定步长stride=1,padding=0时,得到输出为256个(5,5,1)的堆叠,即(5,5,256)。
由上述公式,即可通过设定得到例如Yolov4中的下采样操作(f=3,p=1,s=2)。
1x1卷积可以灵活的降维和升维,减少参数量和计算量;同时可以用1x1卷积替代全连接层,在Yolov4中的好处是可以除了分类信息外,又可以获得位置信息,这是相比于Yolov1和v2的改进之处。
max—pooling操作其实是在kernel_size的范围内求取最大值,若有多通道则需要cat拼接起来。
全连接操作主要分为两步:(1)将图像特征信息reshape,例如将(3,3,5)变换为x=(3*3*5,1)=(45,1);(2)y=wx+b。这里y是神经元,举例为(4096,1),w是矩阵,根据维数可得w为(4096,45)。全连接层就是一种全局的卷积。
VGG16卷积神经网络中就是将输入进行卷积层、全连接操作后最后得到输出。
softmax的公式为:
也可以考虑从用sigmod函数来代替softmax,因为softmax更适用于类别互斥的情况。