APP下载

基于HOG和SVM的船舶图像分类算法

2019-04-19吴映铮杨柳涛

关键词:直方图梯度灰度

吴映铮, 杨柳涛

(上海船舶运输科学研究所 航运技术与安全国家重点实验室,上海 200135)

0 引 言

随着航运业的发展和海上贸易量的增加,在航船舶的数量不断增多,海上交通密度不断增大,海上意外事故发生率日趋升高,严重影响着船舶的安全航行。据统计,大量的海上意外事故都是由人为因素造成的,因此提高船舶的安全航行水平尤为紧迫。通过对船舶安全航行技术进行研究,人们已在船舶识别技术方面取得很多重要成果。依靠现代化的船舶识别技术能在一定程度上解决船舶间和船岸间信息交流不准确的问题,极大地降低船舶碰撞事故发生率,提升船舶监管效率[1]。

近年来,船舶交通管理系统(Vessel Traffic Service, VTS)在船舶航行领域得到广泛应用。VTS是一种旨在提高船舶交通安全程度和工作效率,保护海洋环境,为在海上航行的船舶提供信息服务、导航援助服务和交通组织服务的系统。在船舶航行期间应用VTS,有利于优化海洋环境、改善船舶交通秩序、提高船舶交通安全性能和船舶交通效率及减少海上意外事故发生次数。近年来,雷达识别系统、自动雷达标绘仪(Automatic Radar Platting Aid, ARPA)、电子海图显示与信息系统(Electronic Chart Display and Information System, ECDIS)和船舶自动识别系统(Automatic Information System, AIS)等系统在VTS上得到广泛应用,其中:雷达识别系统和ARPA能为船舶航行提供避碰保障;ECDIS可为船舶操作人员提供各种信息查询功能并在CRT(Cathode Ray Tube)屏幕上显示本船的位置。但是,这3种系统主要以船舶定位为主,无法实现船舶类型识别。AIS是一种相对新型的船舶避碰设备,与雷达目标跟踪相比,改变了船舶获取避碰信息的手段[2]。2000年,国际海事组织(International Maritime Organization, IMO)海上安全委员会审议并通过了SOLAS公约,在《船用导航系统和设备装配要求》中明确提出从2002年起,300总吨以上的船舶和VTS必须安装AIS。VTS虽然能为船舶的安全航行提供保障,但由于技术等方面的原因,存在一些缺陷。例如,在某些情况下AIS不能使用,且很多300总吨以下的船舶并未安装AIS。此外,现在仍有不少VTS依靠甚高频(Very High Frequency, VHF)通信实现船舶识别,这样不仅消耗人力,而且效率不高[3]。

为弥补传统的船舶识别手段存在的缺陷,基于计算机视觉技术的船舶类型识别与分类技术成为当前船舶安全航行领域的研究热点。金雪丹[2]提出采用BP(Back Propagation)神经网络算法对船舶特征进行分类处理,试验结果表明,BP神经网络的引入能显著提高船舶识别率。赵亮等[4]采用卷积神经网络结构自动提取特征,并结合方向梯度直方图(Histogram of Oriented Gradients,HOG)特征提取算法和HSV(Hue, Saturation, Value)算法提取边缘特征和颜色特征,输入支持向量机(Support Vector Machine,SVM)分类器进行分类,试验结果显示识别准确率达到93.55%。

本文采用DALAL等[5]提出的HOG特征提取算法与SVM分类器相结合的船舶分类方法实现船舶分类。首先,利用HOG算法对船舶训练图库中的船舶图集进行图像预处理并提取船舶的边缘特征;其次,通过SVM分类器对利用HOG算法提取到的特征进行训练,得到SVM分类器模型;最后,对船舶测试图库中的图片进行分类预测并记录准确率。相对于传统的船舶识别方法,本文的方法有以下优势:

1)HOG具有几何和光学转化不变性,容易提取,有利于表现图像的原始特征;

2)采用SVM分类器,分类效果更好,能降低计算的复杂度,提高鲁棒性[4]。

1 方向梯度直方图特征

图1 HOG特征提取算法基本流程

HOG特征提取算法是DALAL等[5]提出的一种特征提取算法,在行人检测中得到广泛应用,且其准确性已得到有效验证,核心思想是所检测物体图像的局部可用边缘的和梯度方向的分布密度来表示。该算法首先将图像分成很小的细胞单元(cell),随后采集每个细胞单元中各像素点梯度的或边缘的方向直方图,最后将这些直方图组合起来构成HOG描述器[6]。图1为HOG特征提取算法基本流程。

方向梯度直方图特征提取的具体步骤如下:

1)受光照、局部阴影和噪声等因素的影响,在提取HOG特征之前需对颜色空间进行规范化,包括图像灰度化和Gamma处理2个过程。

(1) 图像灰度化。对于原图(即彩色图像),图像灰度化就是将RGB(Red, Green, blue)分量转化为灰度图像,转化公式为

Gray=0.3R+0.59G+0.11B

(1)

式(1)中:R、G、B分别为红、绿、蓝等3个颜色通道。

(2) Gamma处理。由于图像照度存在不均匀性,通过Gamma处理可提高或降低图像的整体亮度。在实际应用中,通常采用平方根法或对数法进行Gamma处理。本文采用的是平方根法,表达式为

I(x,y)=I(x,y)CGamma

(2)

式(2)中:I(x,y)为图像;CGamma为校正值,本文取CGamma=0.5。

2)要获得HOG特征,首先需获得水平方向和垂直方向的梯度。可通过水平方向模板K=[-1,0,1]及其转置来过滤图像,从而很容易地完成水平方向和垂直方向梯度的计算,表达式[7]为

gx=I(x+1,y)-I(x-1,y)

(3)

gy=I(x,y+1)-I(x,y-1)

(4)

式(3)和式(4)中:gx为x方向的方向梯度;gy为y方向的方向梯度;I(x,y)为像素点(x,y)的像素值。

由此,像素点(x,y)处的梯度幅值和梯度方向的计算式分别为

(5)

(6)

式(5)和式(6)中:▽g(x,y)为梯度幅值;θ为梯度方向。

3)构建细胞单元的方向梯度直方图。细胞是算法分解处理图片过程中的最小统计和处理单元。将梯度方向量化为9个直方图通道(代表9个不同的梯度方向),基于这9个直方图通道对细胞单元中的各像素点进行加权投票;将梯度的大小作为投影,依次以投影量为权值叠加到这9个梯度方向代表的直方图上[6]。图2为梯度直方图方向块,即[0,20]度数范围统计为一个直方图。

图2 梯度直方图方向块

4)由于图像中的光照情况和背景变化多样,梯度值的变化范围会比较大,因此良好的特征标准化对于提高检测率而言较为重要[8]。特征标准化的核心思路是将细胞单元(例如3×3个或2×2个细胞单元)组合成1个块(block)的特征描述符(descriptor),以1个滑动窗口步长扫描所有图像,将所有的块组合成整幅图片的特征描述符。需注意,块内的细胞单元之间没有像素重叠,但块间的细胞单元之间会有像素重叠。

2 支持向量机

SVM[9]是一种以结构风险最小化为理论基础的新型机器学习算法,本质上是核函数方法,通常用来解决二分类问题,也可用来解决多分类问题,对解决非线性、小样本、高维度和局部极小值等问题十分有效。

SVM是一种监督学习算法,通常用来分析线性可分问题,即将线性不可分问题在高维空间内转化成线性可分问题,构造出最优分类面[10-11]。对于二值分类问题,由于分割超平面能“容忍”训练样本的局部干扰,因此需寻找“容忍”性能最好的位于2类训练样本正中间的分割超平面。

在训练样本集合中,分割超平面可表示为

ωTx+b=0

(7)

式(7)中:ω=(w1,w2,…,wd)为法向量,决定超平面的方向;b为位移项,决定超平面与原点之间的距离[12]。由式(7)可知,分割超平面由法向量ω和位移b共同确定,即可将分割超平面记为(ω,b)。因此,训练样本集合中点x与分割超平面(ω,b)之间的距离可表示为

(8)

假设分割超平面(ω,b)能正确分类样本集,即对于(xi,yi)∈D:若yi=+1,则有ωTxi+b>0;若yi=-1,则有ωTxi+b<0。令

(9)

图3为支持向量与间隔,当式(9)中的等号成立时,距离分割超平面最近的训练样本点称为“支持向量”,2个“异类”支持向量到超平面的距离总和为

(10)

式(10)中:γ为“间隔”。

图3 支持向量与间隔

若要使分割超平面具有“最大间隔”,不仅要求参数ω和b满足式(9)的条件,而且要求γ的值最大,即

(11)

(12)

这就是SVM的基本数学模型。

3 试验分析

3.1 整体框架

本文设计的基于HOG和SVM的船舶图像分类模型见图4,主要分为训练阶段和测试阶段2个过程。

图4 基于HOG和SVM的船舶图像分类模型

1) 训练阶段:将训练船舶图库中带标签的图像输入HOG特征提取模型,通过图像灰度化、Gamma处理和尺寸规范化等一系列操作得到训练船舶图像的HOG特征;同时,结合标签和训练SVM分类器得到完成训练的SVM分类模型。

2) 测试阶段:提取测试船舶的HOG特征,通过训练好的SVM分类模型,输出预测结果并计算准确率。

3.2 试验环境和数据来源

试验所处的硬件环境是Dell台式电脑,主要配置为Inter Core i5-6500 CPU(3.2 GHz)和8 GB运行内存,操作系统为Windows 7系统(64位),仿真运行工具为MATLAB 2017b版。采用的SVM工具箱为LIBSVM库,该库具有程序小、开源等特点,广泛应用于机器学习工具的开发研究中。

试验测试的船舶图集是从百度图库和谷歌图库中收集到的,分为帆船、集装箱船、军舰、渔船和邮船等5类,其中,训练样本713张,测试样本270张,训练样本量与测试样本量的比例接近7∶3。

3.3 试验结果分析

由第1节的理论分析可知,在进行HOG特征提取之前,需进行图像预处理,包括图像灰度化、Gamma处理和图像尺寸规范化。MATLAB程序中采用以下语句:

imdsTrain=imageDatastore('F:vm_images rain_images','IncludeSubfolders',true,'LabelSource','foldernames');

imageSize = [256,256];

image1 = readimage(imdsTrain,1);

image1 =rgb2gray(image1);

image1 =double(image1);

scaleImage = imresize(image1,imageSize)

img=sqrt(scaleImage);

图5为MATLAB输出的集装箱船、军舰和邮船的原图、灰度化处理和Gamma处理效果对比。

a) 集装箱船原图

b) 集装箱船灰度化处理

c) 集装箱船Gamma处理

d) 军舰原图

e) 军舰灰度化处理

f) 军舰Gamma处理

g) 邮船原图

h) 邮船灰度化处理

i) 邮船Gamma处理

由于在识别船舶类型的研究中颜色信息对船舶分类的影响不大,因此图像预处理的第一步通常是将原图转化为灰度图,从而减少需处理的数据量。图5b、图5e和图5h为经过灰度化处理的图像,可看出灰度化处理后的图像依旧可反映出原图的整体分布特征,且能减少后续数据的处理量和计算量。图5c、图5f和图5i为经过Gamma处理的图像,可看出图像经过Gamma处理之后提高了整体亮度,有效地减少了光照变化和局部阴影,减弱了光照因素对图像的影响,有利于后续船舶HOG特征的提取。

在图像预处理完成之后,得到规范化图像的尺寸为256×256像素;细胞单元的尺寸设定为8×8像素,即1个细胞单元的像素大小为64;块的尺寸设定为2×2个细胞单元,即大小为16×16像素。由第1节的理论分析可知,每个细胞单元具有9维的特征向量,由此得到整幅图像的HOG特征向量的总维数为34 596维。参数设置完毕之后即可调用MATLAB中内置的HOG特征提取函数extractHOGFeatures()进行HOG特征的提取和计算。图6为集装箱船、军舰和邮船的原始图像与HOG特征可视化对比。

a) 集装箱船原图

b) 集装箱船HOG

c) 军舰原图

d) 军舰HOG

e) 邮船原图

f) 邮船HOG

由图6可知,提取到的HOG特征基本上能反映船舶的边缘特征,且船舶轮廓特征与背景阴影特征对比较为明显,总体上能辨别出梯度大小和梯度方向的分布情况。

对于船舶图像的训练,需调用LIBSVM工具箱中的svmtrain()函数进行,程序语句格式为train_model=svmtrain(trainlabels,trainfeatures,options),其中svmtrain()的输入参数包括训练集标签、训练集数据(特征)、核函数和惩罚系数等。试验中默认选择RBF核函数,并调用SVMcg()函数进行参数寻优,程序语句格式为[bestacc,bestc,bestg]=SVMcg(trainlabels,trainfeatures,0,10),该函数返回惩罚系数bestc和Gamma系数bestg的最优化值。采用的参数搜索方法为网格寻优,即在惩罚系数c和Gamma系数g组成的二维数组中依次检验每组参数的效果。该过程耗费的时间取决于图片的特征维度和迭代参数等因素,能获得全局最优解。

船舶图像训练阶段结束之后即可对船舶图像进行分类测试。调用svmpredict()函数,程序语句格式为[predictlabel,accuracy,prob_estimates]=svmpredict(testlabels,testfeatures,train_model),其中输入参数包括测试标签、测试数据(特征)和训练模型。图7为MATLAB中函数预测和训练过程。

图7 MATLAB中函数预测和训练过程

由图7可知,首先调用svmtrain()函数并设置相应的参数为“-t2 -c1 -g0.02”,其中:-t设置为2表示核函数选择为RBF核函数;-c设置为1表示设置C-SVC的参数(损失函数)为1;-g设置为0.02表示核函数中的Gamma参数设置为0.02。输出的结果为SVM的模型,其中:iter表示迭代次数;obj表示SVM问题转为二次规划求解得到的最小值;rho表示决策函数中的常数项相反数;nSV表示标准支持向量个数;nBSV表示边界的支持向量个数。其次调用svmpredict()函数,并代入svmtrain()函数生成的SVM模型中,输出的准确率为84.814 8%,即270张测试样本图像中有229张图像的预测分类结果与预先的分类标签相符,相比传统的船舶识别手段,实现了船舶类型的分类,且具有较高的准确度。

该模型还存在以下不足:

1)SVM使用的核函数除了RBF核以外,还有Sigmoid核和拉普拉斯核等。本文直接使用RBF核函数,未来可采用其他核函数进行对比,以优化算法,提高算法的准确率。

2)采用HOG特征提取算法提取到的特征维度比较大,试验中达到34 596维,且存在大量的重复特征,可考虑采用PCA算法进行降维处理,简化计算。

4 结 语

船舶图像分类研究是利用计算机视觉技术识别图像中的船舶并对其进行分类,该技术的研究与应用对船舶安全航行、海洋经济贸易发展和船舶智能感知系统研发具有重要意义,如何提高船舶识别的准确率已成为智能航行研究中的重要课题。

本文提出了一种基于HOG和SVM的船舶分类算法模型,由试验过程和结果分析可知,采用HOG特征提取算法提取到的船舶边缘特征对表征原始图像具有优良的特性,利用SVM分类器训练得到的SVM分类模型具有较高的分类准确率。试验结果表明,SVM分类模型对测试船舶集中的图像预测的准确率达到84.81%,基本满足对船舶类型的识别要求。

猜你喜欢

直方图梯度灰度
航空滤光片阵列多光谱图像条带灰度调整算法
基于应变梯度的微尺度金属塑性行为研究
采用改进导重法的拓扑结构灰度单元过滤技术
天津港智慧工作平台灰度发布系统和流程设计
Arduino小车巡线程序的灰度阈值优化方案
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
用直方图控制画面影调
航磁梯度数据实测与计算对比研究
例析频率分布直方图