课题背景
阴影检测向来是计算机视觉中基础且富有挑战性的问题——对于一张输入图像,我们通过生成二进制图像来标记阴影区域,阴影区域的检测为进一步获取图像中的光照情况、物体的形状与位置,以及摄像机的参数提供了可能。与此同时,阴影的存在也为计算机视觉中进一步理解图像的算法,例如物体的检测与跟踪,带来了障碍。
在自然条件下,由于遮挡物的存在,光源发出的光线无法全部入射到物体表面,从而产生阴影. 一方面,阴影区域能够提供足够的信息,用于估计环境光亮度、推断遮挡物的几何形状以及确定光源位置等[1]. 另一方面,图像中阴影像素的存在会导致图像内容的不确定性,对目标识别、目标跟踪、视频监控、自动驾驶等任务而言是有害的. 因此,研究全自动阴影检测算法,并将其用作计算机视觉任务的预处理步骤,提前标注出阴影区域的位置,避免其与待处理目标的混淆,可提高计算机视觉算法的鲁棒性.
现有的阴影检测算法可按照自身特点分为4类:基于本征图像(intrinsic image)的方法[2-4]、基于区域的方法[5-8]、基于特征提取的方法[9-13]、基于深度学习的方法[14-18]. Finlayson等[2-4]提出完整的本征图像理论(intrinsic image theory),该理论建立在光照均匀假设的基础上,利用熵值最小化(entropy minimization)方法求取灰度不变图像(greyscale invariant image),进而完成阴影检测与阴影去除. 但是,由于光照均匀假设并非时刻成立,图像质量参差不齐,使用该自动算法对普通网络图片进行处理时鲁棒性不强. 基于区域的方法通常采用聚类(clustering)算法将图像像素分为不同的小块,根据颜色、亮度、纹理等特征将像素块分类为阴影区域或非阴影区域. Hoiem等[5-6]基于支持向量机(support vector machine,SVM)方法分别构建单区域分类器和双区域分类器,使用图割法(graph cut)实现最终预测. Vincente等[7]和Yuan等[8]采用与Hoiem等[5-6]类似的算法流程,但在分类器及分类依据上有所不同. Vincente等[7]为每项不同特征单独训练SVM分类器,最终获得多核SVM分类器. Yuan等[8]使用逻辑回归(logistic regression)和决策树(decision trees)构建单区域分类器. 基于区域的方法包含聚类、多特征提取、分类、随机场优化等算法流程,时间复杂度高,不适用于实时阴影检测. 基于特征提取的方法关注阴影区域与非阴影区域的不同特性. 通常来说,阴影区域亮度和饱和度偏低,色调基本不变. 利用这一特性设定阈值,可获得初步的阴影检测结果. 但考虑到场景、光照条件、物体表面反射率的多样性,仅使用1种特征进行阈值分割是不够的. 一些算法[9-10]关注阴影区域的颜色信息,采用HSI、YCbCr等颜色空间协助检测任务. 另一些算法[10-13]关注物体的几何特征及边缘信息,常使用sobel算子或canny算子,这类算法往往侧重于提取图像的低阶信息,忽略像素块之间的关系及图像中物体的语义信息,对复杂场景的处理效果不佳. 由于深度学习方法的兴起,近年来学者们提出了一系列利用卷积神经网络(convolutional neural network,CNN)模型实现阴影检测的新方法. Khan等[14]首先使用深度学习方法进行阴影检测,训练2个网络分别用于检测阴影区域和阴影边缘,将检测结果输入条件随机场(conditional random field,CRF)得到分类结果,相比传统算法效果提升显著. Vincente等[15]最早使用2个级联网络实现阴影检测,第1个网络用来初步提取阴影标记,并将其作为阴影概率图与原图一起输入到第2个网络,最终得到精细化的阴影标记结果. Hosseinzadeh等[16]根据颜色及纹理特征使用SVM分类器得到阴影先验图(shadow prior map),将其与原图合并后送入训练好的CNN网络,输出阴影检测结果. Nguyen等[17]引入条件生成对抗网络(conditional generative adversarial networks,cGAN),生成器(generator)输出阴影标记,判别器(discriminator)分辨阴影标记真假,两者相互对抗使得生成器具备检测图像阴影区域的能力,该方法相较Vincente[15]的方法有了进一步的效果提升. Le等[18]同样借鉴生成对抗网络的思想,训练生成器生成阴影区域被衰减后的图像,训练判别器输出阴影标记,从图像源层面加强网络分辨阴影区域的能力. 现有的CNN阴影检测方法常使用级联网络[14-16]或生成对抗网络[17-18]的形式,增加了模型训练的难度,同时不利于快速检测算法的实现. 与之相比,单网络结构既可以实现端对端训练,降低模型训练的难度,又可以在一定程度上减少计算量,加快算法的运行速度,优势明显.
相关论文:
1.Mask-ShadowGAN: Learning to Remove Shadows from Unpaired Data
效果如下:
2. DSC: Direction-aware Spatial Context Features for Shadow Detection
code:https://github.com/xw-hu/DSC
https://github.com/stevewongv/DSC-PyTorch
3.Bidirectional Feature Pyramid Network with Recurrent Attention Residual Modules for Shadow Detection
github:https://github.com/zijundeng/BDRAR
参考文献:
1.Attention Res-Unet: 一种高效阴影检测算法