近期开赛的亚马逊云科技【AI For Good - 2022 遥感光学影像目标检测挑战赛】中,动辄超过10000 x 10000的卫星遥感图像让许多选手感到头疼。同时遥感影像中目标尺寸差别大、角度各异也导致常见的CV框架难以实现快速精准的目标识别。
目前比较成熟的卫星图像识别算法并不少,但大多依托于强大的计算资源,为了用有限的计算资源实现大尺寸图像识别,我们找到了一个可行的开源框架,给大尺寸图像识别提供了不错的思路。
YOLT 是一个基于YOLO v2的卫星图像识别开源算法,核心思路是:
1. 通过图片裁切和图像网络重构解决图像尺寸问题;
2. 通过“上采样”提升小而聚集的目标的检测精度;
3. 通过将不同尺寸模型融合,提升整体检测精度。
YOLT项目地址:GitHub - avanetten/yolt: You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery
YOLO是经典的图像识别算法,YOLT在YOLO的基础上针对卫星图像特有的问题提出了特定的解决思路。详细思路参见论文「You Only Look Twice: Rapid Multi-Scale Object Detection In Satellite Imagery」(GitHub项目中附有论文链接)。
▲左侧为常见问题,右侧为解决办法
1. 针对物体尺寸不规则、方向多样的问题,YOLT对卫星图像数据进行尺寸变换与旋转等数据增强的处理。
2. 针对目标尺寸过小并聚集的问题,YOLT框架主要采用3种方式进行处理:
(1) 修改图像网络结构,将YOLO v2框架中的stride由32改为16,有利于检测出大小在32 x 32以下的目标
(2) 对图像进行上采样,完成图片的“解压缩”操作,即把原先的图片放大,以便检测小而密集的物体
(3) 将不同尺寸的检测模型进行融合,即Ensemble操作,由于不同目标的尺寸差异可能较大,如海港与船只、机场与飞机,Ensemble操作能够提升大尺寸差异下的识别精度。
针对卫星图像尺寸过大的问题,YOLT采用切块的方式,将原始图像切割成小块后输入模型进行训练,并结合2-(3)进行模型融合。
▲ YOLT的网络结构,输出特征尺寸多为26 x 26,可以提升检测精度
应用实例
从下面的检测实例中,我们可以看到YOLT是如何工作的:
首先,开发团队将一张卫星图片调整至416 x 416大小(如上左),发现无法检测出车辆目标;
而从原图中切割出416 x 416的区域(称其为Chips)则可以实现部分车辆目标的检测
。
顺着这个思路,开发团队采用划窗方式将原始图像切割为许多chips,并使相邻chips之间有一定重合(如上图),以确保图像检测的完整性。
再利用NMS算法将重复检测过滤,最后将各块的检测结果进行融合,即可得出最后的结果。
▲ 检测实例:采用YOLT v4识别机场中的飞机
YOLT的思路不止可以应用于卫星图像识别,同样可以在目标尺寸小且密集的其他类图像识别问题中发挥作用。
对本次亚马逊【AI For Good - 2022 遥感光学影像目标检测挑战赛】的选手而言,YOLT的解决思路能够帮助大家越过图片尺寸过大的第一道坎。