文章信息
- 张驰, 王朝, 盛辉. 2021.
- ZHANG Chi, WANG Zhao, SHENG Hui. 2021.
- 卫星视频舰船目标检测方法
- Research on ship target detection based on satellite video
- 海洋科学, 45(5): 9-15
- Marina Sciences, 45(5): 9-15.
- http://dx.doi.org/10.11759/hykx20201108006
-
文章历史
- 收稿日期:2020-11-08
- 修回日期:2021-01-20
2. 青岛市勘察测绘研究院, 山东 青岛 266000
2. Qingdao Geotechnical Investigation and Surveying Research Institute, Qingdao 266000, China
海面是重要的经济区域, 在军事和民用领域具有显著的地位。舰船是海上交通运输以及装备的主要载体, 对其进行快速和精确的检测在沿海监管和防御等领域具有重要意义[1]。视频卫星作为一种新型的对地观测卫星, 与传统遥感卫星相比, 其最大的特点是可以对某一区域进行“凝视”观测, 以“视频录像”的方式实时获取动态信息, 并实时传输至用户, 特别适于监视动态目标, 分析目标位置变化特性[2]。
传统视频目标检测方法主要有帧间差分法、背景建模法、光流法等。Kopsiaftis等[3]针对Skysat-1卫星视频, 利用背景差分法将当前帧与背景模板进行计算得到待检测目标, 检测完整度为80%, 精度为80%, 但是难以适应海量数据。张过等[4]利用“吉林一号”卫星视频数据, 在经典算法随机邻域和区域匹配法的基础上, 结合光流法的运动矢量辅助并加以精化处理取得较好的效果, 但是光流法计算量较大, 很难应用到遥感卫星视频目标的实时检测中。
随着目标检测在计算机视觉领域的发展, 各类硬件水平不断提高, 基于深度学习的目标检测方法逐渐成为主流, 主要算法有Faster RCNN[5], YOLO[6](you only look once)和SSD[7](single shot multibox detector)等。近年来, 将深度学习类目标检测算法用于遥感视频卫星的研究也越来越多, 例如, 张作省等[8]结合遥感影像特点对YOLOv2网络结构进行改进, 首次将深度卷积神经网络应用于凝视视频卫星目标检测, 填补了光学视频卫星成像领域目标检测方案的技术空白; 刘贵阳等[9]使用改进的YOLO模型和内容一致性检测模型, 利用视频数据中相邻帧之间内容的相似性降低精确检测的次数, 在保证检测精度的前提下, 提高了视频数据的检测效率。将深度学习用于视频卫星目标检测主要面临两个问题: 一是需要大量的待检测目标样本, 二是计算量大导致其检测速度可能无法满足实时性的要求。
本文结合视频卫星数据的特点, 将目前在传统图像目标检测中性能较为优异的SSD算法用于卫星视频舰船目标检测, 并进行改进, 在本文构建的舰船数据集上进行实验并分析实验结果, 最后利用“吉林一号”卫星视频数据进行验证。结果表明, 改进后的SSD算法在保证准确度的同时, 提高了舰船目标检测效率。
1 方法 1.1 SSD算法原理 1.1.1 模型结构SSD算法模型结构如图 1所示, 输入图像大小为300×300, 采用VGG16[10]作为基础网络, 保留了VGG16的卷积层部分用于特征提取, 并将VGG16的两个全连接层转换为了普通的卷积层(Conv6和Conv7), 之后又加了多个卷积层(Conv8_1, Conv8_2, Conv9_1, Conv9_2, Conv10_1, Conv10_2), 最后用一个全局池化层来变成1×1的输出(Conv11_2)。
1.1.2 多尺度特征图SSD算法采用多尺度特征图进行检测, 选取Conv4_3, Conv_7, Conv8_2, Conv9_2, Conv10_2, Conv11_2这些大小不同的卷积块作为预测特征层, 进行多尺度目标检测。较浅的特征层由于感受野较小, 主要用于检测小目标; 而较深的特征层感受野较大, 主要用于检测大目标。如图 2所示, 对于每一个预测特征层采用不同个数的3×3大小的卷积核计算类别得分和边界框回归参数, 分别对应图 2中的conf和loc, 其中, Δ(cx, cy, w, h)表示边界框的中心坐标、宽和高的变换量, (c1, c2, …, cp)表示各类别得分。
1.1.3 先验框SSD算法参照Faster RCNN中的锚框机制, 在不同特征图的不同单元设置了尺度和长宽比不同的的先验框, 预测的边界框是以这些先验框为基准的, 在一定程度上减少训练难度。一般情况下, 每个单元会设置多个先验框, 其尺度和长宽比存在差异, 如图 2所示, 以每一个特征图的而每一个单元作为中心, 使用了四种不同的先验框, 图片中猫和狗分别采用最适合它们形状的先验框来进行训练。假设对于特征图的每个位置预测K个边界框, 对于每一个边界框, 预测C个类别得分, 以及相对先验框中心坐标的4个偏移量值, 则共需要(C+4)×K个分类器, 在m×n的特征图上面将会产生(C+4)×K×m×n个预测值。每个特征层的尺度通过下面的公式计算得到:
${S_k} = {S_{\min }} + \frac{{{S_{\max }} -{S_{\min }}}}{{m -1}}\left( {k -1} \right), k \in \left[ {1, m} \right], $ | (1) |
其中, Smin表示最底层的尺度, 其值为0.2; Smax表示最高层的尺度, 其值为0.9; m表示特征层数。
先验框的设置使用5种横纵比, 分别为1, 2, 3, 1/2, 1/3, 另外, 当横纵比为1时, 先验框大小的计算公式为:
${S'_k} = \sqrt {{S_k}{S_{k + 1}}} .$ | (2) |
每个特征层先验框的尺度和比例设置如表 1所示。利用不同尺度和比例的先验框, 可以基本覆盖各种形状大小的图像, 具有很好的适应性和选择性。
特征层 | 尺度/ppi | 比例 | 先验框数/个 |
Conv4_3 | 30 | 1, 2, 1/2 | 4 |
Conv7 | 60 | 1, 2, 3, 1/2, 1/3 | 6 |
Conv8_2 | 111 | 1, 2, 3, 1/2, 1/3 | 6 |
Conv9_2 | 162 | 1, 2, 3, 1/2, 1/3 | 6 |
Conv10_2 | 213 | 1, 2, 1/2 | 4 |
Conv11_2 | 264 | 1, 2, 1/2 | 4 |
SSD算法的损失函数包含两个部分, 一个是类别损失, 一个是定位损失。整个损失函数计算公式为:
$L(x, c, l, g) = \frac{1}{N}\left[ {{L_{{\rm{conf}}}}(x, c) + a{L_{{\rm{loc}}}}(x, l, g)} \right], $ | (3) |
其中, N是匹配到的正样本数量, c是类别置信度预测值, l是先验框对应的边界框预测值, g是先验框的位置参数, x代表网络的预测值。
类别损失计算公式为:
${L_{{\rm{conf}}}}(x, c) = -\sum\nolimits_{i \in {\rm{POS}}}^N {x_{ij}^p} \log \left( {\hat c_i^p} \right) -\sum\nolimits_{i \in {\rm{Neg}}} {\log \left( {\hat c_i^0} \right)} , $ | (4) |
其中,
定位损失计算公式为:
${L_{loc}}(x, l, g) = \sum\nolimits_{i \in {\rm{POS}}}^N {\sum\nolimits_{m \in (cx, cy, w, h)} {x_{ij}^k} } smoot{h_{L1}}\left( {l_i^m -\hat g_j^m} \right), $ | (5) |
$\hat g_j^{cx} = \left( {g_j^{cx} -d_i^{cx}} \right)/d_i^w, $ | (6) |
$\hat g_j^{cy} = \left( {g_j^{cy} -d_i^{cy}} \right)/d_i^h, $ | (7) |
$\hat g_j^w = \log \left( {\frac{{g_j^w}}{{d_i^w}}} \right), $ | (8) |
$\hat g_j^h = \log \left( {\frac{{g_j^h}}{{d_i^h}}} \right), $ | (9) |
其中,
SSD算法是将VGG16作为骨干网络, 并在其基础上修改并增加一系列卷积块构成的, VGG16是一种深层的卷积神经网络, 由13个卷积层和3个全连接层叠加而成, 它使用较小的卷积核代替较大的卷积核来减少参数量的同时通过增加网络的深度和宽度来提升性能。原始SSD模型的设计主要是针对自然场景中的目标检测任务, 其在纹理信息丰富的数据集中可以提高计算效率, 但是对于经过压缩的卫星视频数据来说这会丢失大量目标的重要特征。
ResNet[11]是一种残差网络, 基本结构如图 3所示, 其采用残差连接替换原本的级联方式, 增加前后特征层的联系, 采用批归一化的方式并将激活函数设置为ReLU(rectified linear unit), 在增加网络深度的同时减少模型的参数量, 避免了因梯度爆炸或梯度消失带来的性能下降。
本文将原始SSD模型的骨干网络替换为ResNet, 构建ResNet-SSD模型, 完整结构如图 4所示, 与原始SSD模型类似, ResNet-SSD以ResNet50(ResNet中最具代表性的版本)作为特征提取网络, 保留了ResNet50模型的前4个卷积层(图 4中的Conv1、Conv2_x、Conv3_x、Conv4_x)作为骨干网络, 同时为了使输入图像经过Conv4_x后得到的预测特征层1尺度不变, 我们将Conv4_x中的第一个残差结构中的步距全部修改为1(图 4中虚线指示部分), 增强对小目标特征信息的提取, 并且去掉ResNet50卷积层后续的全连接层, 增加额外的卷积层作为预测特征层, 得到不同尺度的特征图。本文ResNet-SSD模型虽然增加了网络深度, 但是由于使用了残差结构来减少参数量, 模型精度提升的同时速度也有所提高。
2 实验 2.1 环境实验在Intel Xeon(R) CPU E5-2699、64 G内存、Windows10系统下搭建的Pytorch环境下进行, 显卡为Geforce GTX1080TI, 实验环境配置参数如表 2所示。
配置名称 | 参数 |
操作系统 | Windows10 |
CPU | Intel Xeon(R) CPU E5-2699 |
GPU | GTX1080TI/16 G |
RAM | 64 G |
CUDA | 10.2 |
cuDNN | 7.6 |
Pytorch | 1.5 |
Python | 3.6 |
目前, 大部分用于目标检测的公开数据集主要是针对自然图像, 遥感图像数据集较少, 其中包含的舰船数量更少, 因此, 我们收集了来自不同卫星的高分辨率光学遥感图像, 将其裁剪为500×500大小的图像, 构建舰船数据集, 其中包括1 963张图像, 共2 287个舰船目标。为了提高模型训练精度, 我们采用镜像、随机旋转、随机对比度变换等方法对数据集进行增强, 将数据集扩充为19 630张图像, 使用LableImg软件进行标注, 得到完整的舰船检测数据集。在实验中, 我们将数据集分为训练集、验证集和测试集, 三者比例为8︰1︰1。舰船样本如图 5所示。
本文卫星视频数据采用“吉林一号”卫星视频数据, 由视频03星获取, 分辨率为0.92 m, 时间为30 s, 共300帧, 视频中每帧图像大小为4 096×3 072, 将每一帧图像分割为500×500大小。
2.3 结果由于SSD模型中先验框参数的设置对检测精度会产生一定的影响, 本文统计了所构建数据集中舰船大小分布情况, 如图 6, 可以看出本文数据集中, 舰船面积大多在102 ppi和902 ppi之间, 因此原始SSD的参数大小并不适用于本文数据集, 根据本文数据集特点, 进行多组实验, 最终取Smin为0.02, Smax为0.4, 计算得到各特征层先验框参数设置如表 3所示。
特征层 | 尺度/ppi | 比例 | 先验框数/个 |
Conv4_3 | 3 | 1, 2, 1/2 | 4 |
Conv7 | 6 | 1, 2, 3, 1/2, 1/3 | 6 |
Conv8_2 | 34 | 1, 2, 3, 1/2, 1/3 | 6 |
Conv9_2 | 63 | 1, 2, 3, 1/2, 1/3 | 6 |
Conv10_2 | 91 | 1 2, 1/2 | 4 |
Conv11_2 | 120 | 1, 2, 1/2 | 4 |
为验证改进后SSD算法的有效性, 本文在原始SSD模型的基础上, 利用ResNet50作为骨干网络构建SSD模型, 在本文构建的数据集上采用SGD (stochastic gradient descent)优化器对模型进行训练, 初始学习率设为0.001, 采用动态学习率调整机制, 随着迭代次数增加, 学习率逐渐衰减直到模型收敛, 迭代最大次数设置为100 000。利用训练得到的最终模型在测试集上进行测试, 并使用均值平均精度(mAP, mean average precision)评估模型性能, 得到结果如表 4所示。
由表 4可以看出, 改进后的SSD算法mAP值为93%, 相比原始SSD算法提高了5.31%, 并且运行时间加快了7 s。这表明特征提取对于整体模型精度的影响较大, 本文使用的ResNet50特征提取网络由于使用跨层连接传递的方式将卷积处理后的特征与输入特征进行合并, 减少参数量的同时充分利用了各层特征信息, 将底层网络训练的更加充分, 使其网络深度增加, 精度也得到提高, 证明了残差网络的优异性能。
为测试改进后的SSD算法对卫星视频中舰船目标的检测能力, 利用“吉林一号”卫星视频数据进行实际舰船检测, 本文算法检测结果如图 7所示, 图中绿色矩形框为检测出的舰船目标。为了综合评价算法的检测性能, 同时考虑虚警率和检测率, 本文利用舰船检测品质因数FOM对检测结果进行定量分析:
$ {F_{{\rm{OM}}}} = \frac{{{N_t}}}{{{N_f} + {N_g}}}, $ | (10) |
其中, Nt为舰船目标的正确检测数目, Nf为虚警目标数目, Ng为实际的舰船目标数目, 由上式知, FOM越大则检测性能越好。
由表 5可知, 改进前后的SSD算法漏检目标数目分别为15和10, 正确检测目标数目分别为21和26, 说明对于大部分舰船目标, SSD算法都能够准确地检测出来, 而漏检目标大部分为难分样本, 可以通过扩充数据集来减少漏检目标。改进前后的SSD算法虚警目标数目分别为5和1, 说明残差网络能够很好的避免因梯度爆炸或梯度消失带来的性能下降。综合来看, 改进后的SSD算法FOM为0.703, 比原始SSD算法提高了0.191, 说明本文算法不仅能够很好地应用于卫星视频舰船目标检测, 并且检测效果比原始SSD算法更好。
针对传统视频目标检测算法计算量大, 难以适应海量数据的问题, 本文将在传统图像目标检测中性能优异的SSD算法用于卫星视频舰船目标检测, 并在原始SSD模型基础上进行改进, 在本文构建的数据集上进行测试, 并利用“吉林一号”卫星视频数据进行验证, 主要结论如下。
1) 通过分析本文数据集中舰船目标大小分布, 进行多组实验确定最佳先验框的大小, 一定程度上提高了SSD算法对小目标的检测能力。
2) 为提高SSD算法对舰船目标的检测能力, 本文将残差网络与SSD算法相结合, 利用ResNet作为骨干网络构建SSD模型, 采用残差连接替代原本的级联方式, 在减少参数量的同时将深层特征与浅层特征结合, 相比原始的SSD算法, 在测试集上mAP提高了5.31%, 速度上也有一定的提升。
3) 为验证改进后的SSD算法对卫星视频中舰船目标的检测能力, 利用“吉林一号”卫星视频数据进行舰船目标检测实验, 分析检测过程中的漏检和误检目标, 得到舰船检测品质因数为0.703, 总体检测效果较好, 证明了改进后的SSD算法在卫星视频舰船目标检测中的有效性。但该算法对于训练过程要求较高, 并且需要大量的数据集, 后续还应进一步扩充数据集并对算法进行改进。
[1] |
唐沐恩, 林挺强, 文贡坚. 遥感图像中舰船检测方法综述[J]. 计算机应用研究, 2011, 28(1): 29-36. TANG Muen, LIN Tingqiang, WEN Gongjian. Survey of ship detection methods in remote sensing images[J]. Research on Computer Application, 2011, 28(1): 29-36. DOI:10.3969/j.issn.1001-3695.2011.01.007 |
[2] |
孙志远, 张刘, 金光, 等. 视频小卫星凝视姿态跟踪的仿真与实验[J]. 光学精密工程, 2011, 19(11): 2715-2723. SUN Zhiyuan, ZHANG Liu, JIN Guang, et al. Simulation and experiment of gaze attitude tracking for video small satellite[J]. Optical Precision Engineering, 2011, 19(11): 2715-2723. |
[3] |
KOPSIAFTIS G, KARANTZALOS K. Vehicle detection and traffic density monitoring from very high resolution satellite video data[C]//Proceedings of the 2015 IEEE International Geoscience and Remote Sensing Symposium. Milan: IEEE, 2015, 1881-1884.
|
[4] |
张过. 卫星视频处理与应用进展[J]. 应用科学学报, 2016, 34(4): 361-370. ZHANG Guo. Progress of satellite video processing and Application[J]. Journal of Applied Science, 2016, 34(4): 361-370. DOI:10.3969/j.issn.0255-8297.2016.04.001 |
[5] |
REN S, HE K, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[6] |
REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2015). Washington: IEEE Computer Society, 2016: 779-788.
|
[7] |
LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[C]//Proceedings of the European Conference on Computer Vision. Berlin, Germany: Springer, 2016: 21-37.
|
[8] |
张作省, 朱瑞飞. 凝视视频卫星目标检测算法[J]. 航天返回与遥感, 2018, 39(6): 102-111. ZHANG Zuoxing, ZHU Ruifei. Satellite target detection algorithm based on staring video[J]. Space Return and Remote Sensing, 2018, 39(6): 102-111. DOI:10.3969/j.issn.1009-8518.2018.06.012 |
[9] |
刘贵阳, 李盛阳, 邵雨阳. 卫星视频中目标的快速检测算法研究[J]. 计算机系统应用, 2018, 27(11): 155-160. LIU Guiyang, LI Shengyang, SHAO Yuyang. Research on fast target detection algorithm in satellite video[J]. Application of Computer System, 2018, 27(11): 155-160. |
[10] |
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[J]. Computer Science, 2014, 1409-1556. |
[11] |
HE Kaiming, ZHANG Xiangyu, REN Shaoqing, et al. Deep residual learning for image recognition[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA: IEEE Computer Society, 2016: 770-778.
|