
Citation: | Zhang Feng-lin, Liu Yu-jie, Ding Xiao-lei, Chen-Jian. L/S Dual Bands Monopluse Paraboloid Antenna[J]. Journal of Electronics & Information Technology, 2007, 29(11): 2743-2746. doi: 10.3724/SP.J.1146.2006.00533 |
旋转是计算机视觉领域中的热点问题,广泛存在于在图像分类[1],目标检测[2,3],点云等任务中[4]。图像分类是其中较为经典的研究方向,在分类任务中,不同角度拍摄同一个物体,它的朝向是任意的,特别是在医学、遥感和天文领域中。这些领域的物体没有确定的主方向,如何准确分类任意旋转的物体是一个棘手的问题。
先明确两个概念,以平移变换为例,卷积的平移等变性[5]和模型的平移不变性[6]。一张特征图在平移的前后,如果被同一个卷积核分别卷积得到的两张特征图也满足同样的平移关系,那么称这个卷积具有平移等变性。如果输入的图像无论平移与否,模型输出的结果是一致的,那么称这个模型具有平移不变性。
传统卷积神经网络(Convolutional Neural Network, CNN),在检测输入图像的特征时,卷积核滑动执行卷积操作,因此卷积神经网络具有平移不变性[7]。然而,它不具有旋转不变性,在遇到任意旋转的图像时会力不从心,导致分类精度断崖式降低。想要让卷积神经网络具有旋转不变性,数据增强是最直接的方法。然而,数据增强会大幅度增加训练时间和提高过拟合风险。后来,人们想到可以旋转输入的图片或某一层输出的特征图来实现旋转不变性[8,9]。随着研究的深入,人们设计具有旋转等变性的卷积层以增加卷积神经网络对旋转的学习能力[10,11]。还有一些研究设计了具有可操纵性的滤波器[12]以实现模型的旋转不变性。但是,上述两种方式都是需要进行非常复杂的旋转编码,会带来庞大的计算量。
虽然卷积神经网络很强大,但是计算机视觉的主角是图像。为了实现旋转不变性,不仅要改进卷积神经网络的卷积层,更重要的还是要从图像本身入手。每一张图像都具有不同的像素分布,本文通过这种分布来引入角度信息,再结合卷积神经网络,最终实现一个具有旋转不变性的模型。因为计算得出的结果是完全依赖图像自身的像素值和像素分布的,属于图像自身属性,所以这个方向也是属于图像自身属性,将这个所有像素点对于图像中心位置的吸引方向命名为图像的偏移角。每张随机旋转的图片都有各自的偏移角,当计算得到了图像的偏移角后,将随机旋转的图片再基于偏移角旋转,得到修正了偏移角后的图片。接下来把提取图像的特征和分类的工作需要交给卷积神经网络。为了增加对于旋转图片分类的容错率,本文设计了一种多分支卷积神经网络[13]。最后将多个分支的预测结果输入到设计的响应模块中找出最佳分支,并输出最终的分类结果。本文的贡献总结如下:(1)提出了一种从图像自身像素值计算得出图像角度信息和偏移角的算法,并将它用于卷积神经网络提取体征和分类前的预处理,有利于控制较为复杂的随机旋转情况。(2)设计了一种增加对旋转图片分类预测容错率的多分支卷积神经网络。多分支卷积神经网络在同一层中共享权重,不仅可以减少参数量还有利于对不同角度的图片提取特征和预测分类。(3)设计了响应模块,用于从多分支网络中提取最佳结果。(4)从预处理的偏移角和多分支卷积神经网络到最后的响应模块组装起来的模型,命名为图像偏移角和多分支卷积神经网络(Offset Angle and Multibranch CNN, OAMC),在美国国家标准与技术研究院数据集(Modified National Institute of Standards and Technology dataset, MNIST)上仅用了极少的8 k参数量却取得了最佳精度。并且在多个遥感数据集上使用前人1/3的参数量提升了最高8%的分类精度。
首先从输入图像中计算得到图像的偏移角,接着将图像基于自身偏移角反向旋转,这可以看作对随机旋转图像的预处理;然后将随机旋转的图像输入到多分支卷积神经网络中以从多个角度提取图像特征;再将多个分支的分类预测结果作为响应模块的输入,找出最佳分支并作为整个模型的最终分类预测。
偏移角的检测与旋转模块的整体流程图如图1所示,包括通过缩放调整输入图片的大小、构建直角坐标系、计算偏移角、基于偏移角旋转。
首先是缩放输入图像。如图2(a)所示,如果输入的图像的高和宽均为奇数,那么之后在构建直角坐标系时,坐标原点O一定是一个像素点,且会有一些像素点在坐标轴上。构建直角坐标系的目的是让每个像素点具有坐标,便于后续在坐标系中计算偏移角。而在坐标轴上的像素点,其X和Y坐标至少有1个为0,会导致丢失一定的方向信息,无法充分利用所有像素点,进而无法准确计算偏移角。因此,需要首先通过缩放调整输入图像的尺寸,采用缩放的原因主要有以下两点。第一,缩放能够尽可能地保留图片的全部信息。第二,针对不同输入尺寸的图片,缩放操作更灵活。经过缩放操作之后输入图像的高和宽均为偶数,如图2(b)所示,重新命名坐标原点为O′,构建如图2(b)所示的直角坐标系,这样每一个像素点都有唯一确定的坐标。图2中的i和j分别代表像素点的横坐标和纵坐标,I(i,j)代表在(i,j)处的像素值。
在直角坐标系中的图像可以被看作为坐标格点和像素值的组合,一个像素点是由一个坐标格点和一个像素值组成的,二者一一对应。把坐标格点看作3维世界中的一个平面,坐标原点O′固定,如果向平面的任意一个格点施加一个垂直向下的重力,那么这个平面就会向那个格点倾斜,多个任意位置的重力就会以坐标原点O′为支点,形成平面杠杆原理,最终确定一个垂直向下的合力,平面就会向合力的方向倾斜。如果这时候把图像的支点更换为合力的位置,那么平面会恢复水平,因此这个合力的位置定义为重心。图像的偏移角是图像重心偏移的方向,在直角坐标系中可以看作是图像重心相对于坐标原点的方向。在现实世界中,垂直向下的力为重力,它与物体的质量有关,而在图像中每个像素点的质量可以类比为像素值。因此,首先定义任意一个像素点P对中心位置O′的吸引系数A等于这个像素点的像素值I(i,j)。其次,一个像素点相对于中心位置的距离L采用欧氏距离计算方法,即L=√i2+j2。那么构建向量V,V=O′P,其距离为L,方向考虑与X正半轴的夹角α, α=tan(j/i)。再次,将吸引系数A和向量V结合起来,可以得到像素点P对坐标轴中心位置O′的吸引力F=V⋅A。一张图片的所有像素点都有一个对中心位置O′的吸引力,但是这些力都会有相互作用,最终会得到一个合力。为了便于计算最终的合力,需要将每个像素点对O′的吸引力投影到X和Y方向,即
FX=V⋅A⋅sinαFY=V⋅A⋅cosα} | (1) |
所有的吸引力被投影到X和Y方向之后,经过叠加就可以计算得到最终合力在X和Y方向的分量,再利用这两个分量得到最终合力的方向,其中合力的方向即所需要的偏移角θ
θ=tan−1‖∑FY‖‖∑FX‖ | (2) |
得到偏移角之后再基于偏移角旋转输入图片,使得偏移角与X正半轴重合。随机旋转的图片经过偏移角的修正之后,为图片引入了角度信息,有利于控制较为复杂的随机旋转情况。
使用不同角度的卷积核组成多分支结构的卷积神经网络可以有效增加对于旋转图片分类的容错率。不同角度的卷积核是在一个标准卷积核的基础上旋转得到的。首先假设多分支卷积神经网络的分支数为B,每一个子分支为bm,其中m=0,1,⋯,(B−1)。接下来为了便于表示每个分支对应的角度,可以用αm表示第m个分支对应的角度,那么则有公式为
αm=360Bm | (3) |
在b0分支定义标准卷积核Wlα0,其中l代表当前卷积核在模型中的层数,假设模型总共的层数为L,l=1,2,⋯,L。其他角度的卷积核都是基于标准卷积核旋转得到的,在反向传播中只会更新Wlα0。
这样一共B个卷积核组成一组卷积,除了标准卷积核Wlα0外,其余卷积核可以用Wlαm来表示。由于其余B−1个分支的权重值都是根据标准卷积核Wlα0旋转得到的,因此不会产生额外的需要学习的参数,即在同一层中不同角度的卷积核是共享权重的。相比于为卷积神经网络引入旋转编码的方法,多角度卷积核的多分支卷积神经网络不仅参数量少,还可以避免卷积核内部编码造成的额外计算开销。
分支数不是越多越好,这是由旋转卷积核的算法决定的。以本文使用的3×3的卷积核为例,由于标准卷积核Wlα0对应0度的情况,因此假设W0为
W0=[a1a2a3a8a0a4a7a6a5] | (4) |
如果是分支数B=2,那么两个分支中的卷积核相差180°,经过旋转算法后,可以得到表达式为
W180=[a5a6a7a4a0a8a3a2a1] | (5) |
可以发现卷积核中的每个元素都经过了水平翻转和竖直翻转到了新的位置,其中的值并没有改变。除了从翻转的角度观察,还可以从元素移动的方面发现,a1移动到了a5的位置,可以看作是逆时针移动了4个位置,除了中心位置的元素外,所有元素都如此移动了一圈,并且仅仅是改变了位置而没有改变卷积核内部元素的值。那么再考虑B=4的情况,除标准卷积分支的其余3个分支分别基于标准卷积旋转了90°,180°和270°。使用同样的旋转算法,得到的表达式为
W90=[a3a4a5a2a0a6a1a8a7],W270=[a7a8a1a6a0a2a5a4a3] | (6) |
发现W90中每个元素除了中心位置都逆时针移动了2个位置,与旋转180°时移动4个位置相比,减少了1/2。而W270外圈元素都逆时针移动了6个位置,与W90,刚好相差了180°。那么如果把卷积核外圈元素只逆时针移动1个位置,可以看作是旋转了45°[14]。
这种移动方法的共同特性是,卷积核内部元素的值没有改变,仅改变了元素所在位置。这样做的好处是,在使用不同角度卷积核对同样的图像进行卷积后,得到不同角度的特征图,其中的值也仅仅是位置不同,这样不同角度卷积得到的特征图的区别也仅仅相差在角度上,而没有受到其他因素的干扰。如果使用B=3的多分支卷积神经网络,那么每次旋转的角度是120°的整数倍,在本文使用的3×3卷积核中,旋转后的元素无法通过简单移位得到,因此会使用线性插值法计算旋转后卷积核的值,这势必会导致卷积核内的值发生改变,进而导致不同角度的特征图内部的值也不同,造成角度关系的丢失。因此本文选择不改变卷积核内部元素的分支数以最大程度保留角度关系,即B=1,2,4,8。为了使得多分支卷积神经网络均匀涵盖整个360°,在B=2时,两个分支分别对应0和180°;在B=4时,4个分支分别对应0, 90°, 180°和270°;在B=8时,8个分支分别对应0, 45°, 90°, ···, 270°, 315°。而在B=1时,是使用了偏移角的单分支卷积神经网络。为了区分不同分支个数的模型,模型进一步命名为OAMC-B,B指的是分支个数。
在一层网络中,每个分支除了卷积层,还有归一化层,激活函数和池化层。池化层选择的是最大池化,这不可避免地会丢失部分信息,造成角度关系的部分缺失,但是仍然会有部分角度关系保留到最后。此时,如果在最后一层将特征图的尺度下采样为1×1,那么会完全丢失角度信息,因为1×1只包含了原先2×2特征图中的最大值,而2×2的特征图还可以保留一些角度关系。因此在每个分支的末尾,为了保留仅剩的角度信息,当特征图的尺度在2×2时则不再使用最大池化,而是改为全局平均池化。这样在即将被展平并进入全连接层时能够将角度信息融合并充分利用。
响应模块是多分支结构的尾声。它可以从多分支结构输出的多个分类结果中,找出最贴近实际的分支作为最终输出。主要分为以下3个步骤。
步骤1 在dim=1的维度上拼接所有分支的输出,得到concat
concat=[b1,b2,⋯,bB],u=1 | (7) |
其中bm代表第m个分支。经过这一步操作,所有分支的分类概率已经被整合在了一起,结果的形状变为(IBS,B×C),其中IBS代表批大小,C代表数据集图像类别个数。
步骤2 这是响应模块的关键。需要从B×C个分类概率中,找到最大概率所在分支,因此只关心B×C这个维度。因此需要对IBS维度进行融合归一化
FN=∑concat,dim=0IBS | (8) |
经过这一步操作,结果的形状变为(1,B×C)。
步骤3 在dim=1的维度上归一化FN,再找到B×C个分类概率的最大值所在位置k。最后输出最佳分支boutput。argmax函数用于找到一个张量中最大值的位置索引
k=argmax(FN∑FN,dim=1) | (9) |
boutput=bk | (10) |
根据上述3个模块,OAMC-B模型的整体结构如图3所示,其中L代表模型的层数,根据数据集复杂程度的不同,L会不同。
经过第2.2节的讨论,分支数B可以为1, 2, 4, 8这4种情况,需要针对这4种情况分别进行实验与讨论。此外,因为模型的层数会根据数据集的复杂程度进行调整,所以整体结构图省略了部分分支和层数,在第3节的实验部分会涉及模型参数的选择。
从上述响应模块的第2个步骤中可以看出,IBS对于最终输出是有影响的。这一步相当于融合了一个批次中的所有图片。然而,一个批次中,不同图片的最大分类概率所在分支是不同的。IBS越大,融合的图片越多,分类结果越不准确。因此本文在训练时采用的IBS为8,验证时采用的IBS均为1。
OAMC-B模型将在4个数据集中被测试,其中包括手写数字数据集MNIST和3个遥感数据集。
MNIST是一个收集手写数字的数据集,包括数字0~9。其中包含60 000张训练集图片和10 000张验证集图片,图片的大小为28×28。将原始MNIST验证集的10 000张图片每10度旋转1次,总共旋转36次,这样可以得到36×10000张旋转了的验证集。本文将这360 000张图片作为最终的测试数据集,命名为MV360k (MNIST Validation 360k),此测试集一共包含360 000张图片。
接下来是制作旋转的MNIST验证集。首先,从原始MNIST的验证集中随机抽出28张图片保持不变,剩下的9 972张图片随机划分为等量的36份,用n进行标记,n=1,2,⋯,36。接着,把每一份中的每张图片统一旋转 10n\mathrm{°} 。然后把36份数据集与28张保持不变的数据集合并起来得到新的验证集,命名为RMV (Rotated MNIST Validation)。同时,不改变MNIST训练集。为了便于表示,本文将MNIST训练集命名为MT (MNIST Training)。那么得到的新的数据集被命名为MT-RMV。
由于MNIST数据集是较为简单的二值图像,因此设置OAMC-B的 L=4 ,并且卷积层的卷积核尺寸都是 3\times 3 。在多分支OAMC-B模型中,分别令 B=1,2,4,8 ,训练轮次为200,初始学习率为0.000 1,优化器为adam,在MT-RMV数据集上进行训练和验证,输出最佳验证精度的权重之后再在MV360k测试集上测试多角度分类精度。最终测试得到的分类精度如表1所示。因为在本文设计的多分支卷积神经网络中,一层中的参数是共享的,每一个分支都是基于标准卷积核所在分支得到的,没有引入新的参数量。因此无论有多少个分支,参数量都相等。相比于之前提出的具有旋转不变性的网络,OAMC-4不仅在取得了最高的精度96.98%,还在参数量上具有较大优势。
本文还对比了OAMC不同分支的精度,可以发现4分支时精度最高,而8分支次之,原因是当使用过多的分支时,相应模块融合了较多的信息,反而无法准确找出最佳分支,导致精度的降低。
此外,本文统计了MV360k测试集中36个旋转子集的测试精度,即MNIST验证集分别旋转10°, 20°等直到360°。从图4可以看出,OAMC-4在不同旋转角度的精度曲线几乎是平整的。然而,其他网络的分类精度曲线在45°及其整数倍的角度上,都有较为明显的下降。进而可以证明,OAMC-4是真正具有旋转不变性模型。
本节选用的遥感数据集是NWPU VHR-10 (Northwest Polytechnical University Vehicle to Human Ratio-10)[17], MTARSI (Multi Type Aircraft Remote Sensing Images)[18]和AID (Aerial Images Dataset)[19]。
NWPU VHR-10是一个10分类的遥感影像目标检测数据集,其中有3 894张图片。本文从每个分类中各取30张图片为训练集,其余图片均为验证集。MTARSI是一个基于遥感影像的飞机类型分类数据集,包含20种飞机的9 385张图像。AID是一个包含30种环境类别的数据集,其中有10 000张图像。这两个数据集都是从每个分类中各取100张图片为各自的训练集,其余图片为各自的验证集。这3个数据集有共同的特点。每个数据集中同一分类的物体在外形上几乎一致,却具有不同的朝向。因此,无需再对数据集进行额外的旋转。
由于遥感数据集中的图片相比于MNIST数据集更加复杂,因此设置OAMC-B的 L=6 ,选择OAMC-4模型。训练轮次为100,初始学习率为0.01,优化器为adam,结果如表2所示。与VGG16 (Visual Geometry Group 16)[20]和RIC-VGG16 (Rotation Invariance CNN - VGG16)[1]相比,在多个遥感数据集下,OAMC-4模型只用了1/3的参数却大大提高了分类准确率。
本文通过图像偏移角并结合多分支卷积神经网络和响应模块,提出了一种可用于对旋转图像分类的模型OAMC-B。首先通过调整输入图片的尺寸以充分利用每个像素信息,之后构建直角坐标系,用向量的方法计算得到图像的偏移角。然后搭建多分支卷积神经网络,增加对旋转图像分类预测的容错率。再通过相应模块找出最佳分支作为最终分类预测。实验结果表明,使用四分支卷积神经网络的OAMC-4模型在旋转MNIST数据集上仅使用8k参数量却取得了目前最佳精度,96.98%。此外,在多个遥感数据集上,仅用前人提出的模型的1/3的参数量,提高了最多8%的分类精度。实验证明了OAMC-B模型的旋转不变性,为解决旋转相关问题提供一种可行的方案。