【CN110120009A】基于显著物体检测和深度估计算法的背景虚化实现方法【专利】

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910382558.3
(22)申请日 2019.05.09
(71)申请人 西北工业大学
地址 710072 陕西省西安市友谊西路127号
(72)发明人 韩军伟 张妮 刘念 
(74)专利代理机构 西北工业大学专利中心
61204
代理人 王鲜凯
(51)Int.Cl.
G06T 3/00(2006.01)
G06T 3/40(2006.01)
G06T 5/20(2006.01)
G06T 7/50(2017.01)
(54)发明名称
基于显著物体检测和深度估计算法的背景
虚化实现方法
(57)摘要
本发明涉及一种本发明提出的一种基于显
著物体检测和深度估计算法的背景虚化实现方
法,输入一张单摄像头手机拍摄图像,通过显著
性物体检测和深度估计得到显著图和距离拍摄
镜头远近的深度图,根据背景区域不同深度来决
定虚化程度,从而得到最终的背景虚化图。

本发
明中编码器采用的轻量化网络,在手机上的存储
与计算相较于传统网络有所降低。

设计的两个解
码器用于分别进行显著物体检测和深度估计,可
满足单摄像头手机拍摄图像实现背景虚化的需
求。

相较于已有的背景虚化方法,本方法根据背
景区域不同深度来决定虚化程度,可获得质量更
高的背景虚化图。

权利要求书2页 说明书5页 附图2页CN 110120009 A 2019.08.13
C N 110120009
A
1.一种基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于步骤如下:
步骤1、构建深度神经网络结构并初始化参数:采用带跨越连接的编码器解码器的网络结构来同时进行显著物体检测和深度估计,得到神经网络参数;
所述网络结构包含一个编码器和两个解码器,编码器采用MobileNetV2轻量化网络结构提供预训练模型来初始化编码器参数;两个解码器U-Net网络结构
步骤2、构建训练数据集:利用DUTS-TR数据集来构建显著物体检测训练数据,利用NYU-Depth、ReDWeb和DIW数据集来构建深度估计训练数据;
步骤3:利用步骤2所构建的训练数据集在Tensorflow平台上对步骤1所构建的神经网络参数进行训练,微调参数后得到训练完备的网络模型:
步骤3a、固定编码器参数,单独训练其中一个解码器:利用步骤2中构建的显著物体检测训练数据训练其中一个解码器,训练的条件是设置网络的损失函数为交叉熵损失函数,设置优化算法为随机梯度下降算法,得到训练好的第一解码器;
步骤3b、固定编码器参数,单独训练另一个解码器:利用步骤2中构建的深度估计训练数据中的NYU-Depth来单独训练另一个解码器,训练的条件是设置网络的损失函数为欧氏距离损失函数,设置优化算法为随机梯度下降算法;再利用步骤2中构建的深度估计训练数据中的ReDWeb来微调这个解码器,训练的条件是设置网络的损失函数为优化排序损失函数,设置优化算法为随机梯度下降算法;最后利用步骤2中构建的深度估计训练数据中的DIW继续微调这个解码器,训练的条件是设置网络的损失函数为排序损失函数,设置优化算法为随机梯度下降算法,得到训练好的第二解码器;
步骤3c、使用步骤2中构建的显著物体检测训练数据DUTS-TR和步骤2中构建的深度估计训练数据中的DIW数据集交替微调编码器、步骤a训练好的第一解码器和步骤b训练好的第二解码器;过程中:每一步先使用一个批次的DUTS-TR数据在交叉熵损失函数下更新一次编码器和第一解码器,然后使用一个批次的DIW数据在排序损失函数下更新一次编码器和第二解码器,最终得到训练完备的网络模型;
步骤4、使用步骤3训练完备的网络模型结果进行背景虚化:
步骤4a:将图像I缩放至网络输入大小后,然后将其输入步骤3训练完备的网络模型:缩放至网络输入大小的图像I经过编码器和第一解码器得到一副显著图m,缩放至网络输入大小的图像I经过编码器和第二解码器得到一副深度图d;使用阈值t对显著图m进行二值化操作,即对于显著图m上的每个像素点,大于阈值的置为255,小于阈值的置为0,从而得到二值图s;
步骤4b:利用二值图和深度图得到显著物体所有像素点的深度值,然后将所有属于显著物体的像素点的深度值除以所有显著物体的像素点总个数得到显著物体的平均深度z s,
即使用公式计算,其中,s和z分别为步骤a得到的二值图和深度图;i表
示像素点的索引;
步骤4c:对每一个属于背景区域的像素点,减去步骤4b中得到的显著物体的平均深度值,再对其求绝对值得到该像素点的绝对深度差。

对所有像素点循环操作后得到所有背景
区域与显著物体的绝对深度差即使用公式计算。

步骤4d:利用下述公式计算高斯低通滤波器的标准差
其中,为步骤c计算的绝对深度差;i表示像素点的索引;
步骤4e:利用公式w i=int(6σi+1)计算高斯低通滤波器的窗口大小,其中,σi为步骤d计算的标准差;i为像素点的索引;int为取整操作;
步骤4f:对图像I的每个像素点i,使用窗口大小为w i,标准差为σi高斯低通滤波器进行滤波,将所有的像素点滤波后即得到合成的背景虚化图像。

2.根据权利要求1所述基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于:所述MobileNetV2轻量化网络结构采用Mark Sandler等人在2017年的工作“MobileNetV2:Inverted Residuals and Linear Bottlenecks”中所提出的MobileNetV2轻量化网络结构。

3.根据权利要求1所述基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于:所述U-Net网络结构采用Olaf Ronneberger等人在2015年的工作“U-Net: Convolutional Networks for Biomedical Image Segmentation”中所提出的U-Net网络结构。

4.根据权利要求1所述基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于:所述优化排序损失函数为Ke Xian等人在2018年的工作Monocular Relative Depth Perception with Web Stereo Data Supervision中提出的优化排序损失函数。

5.根据权利要求1所述基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于:所述排序损失函数为Weifeng Chen等人在2016年的工作Single-Image Depth Perception in the Wild中排序损失函数。

6.根据权利要求1所述基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于:所述步骤4a的阈值t=0.5。

基于显著物体检测和深度估计算法的背景虚化实现方法
技术领域
[0001]本发明属于计算机视觉算法研究领域,涉及一种基于显著物体检测和深度估计算法的背景虚化实现方法。

背景技术
[0002]随着移动互联网的快速发展,用户对手机拍照功能的需求日益增长。

通过对手机拍摄图像的背景进行虚化,使得主体突出,可达到提升照片美感的效果。

然而手机摄像头本身光圈小、焦距短,难以拍出背景虚化的照片。

目前,已有厂商通过给手机设置双摄像头,充分利用两颗摄像头的像差来判断背景和被摄物,实现背景虚化技术。

但是双摄像头成本较高,在多数智能手机中还未普及。

因此,基于单摄像头的背景虚化实现方法具有重大应用价值。

[0003]目前已存在的背景虚化方法,对图像中的显著物体进行检测后,直接对背景进行模糊处理。

该类方法存在以下缺点:生成的虚化图背景模糊无层次感,效果不理想。

发明内容
[0004]要解决的技术问题
[0005]为了避免现有技术的不足之处,本发明提出一种基于显著物体检测和深度估计算法的背景虚化实现方法,应用于单摄像头拍摄图像,达到背景虚化效果佳的目的。

[0006]技术方案
[0007]一种基于显著物体检测和深度估计算法的背景虚化实现方法,其特征在于步骤如下:
[0008]步骤1、构建深度神经网络结构并初始化参数:采用带跨越连接的编码器解码器的网络结构来同时进行显著物体检测和深度估计,得到神经网络参数;
[0009]所述网络结构包含一个编码器和两个解码器,编码器采用MobileNetV2轻量化网络结构提供预训练模型来初始化编码器参数;两个解码器U-Net网络结构
[0010]步骤2、构建训练数据集:利用DUTS-TR数据集来构建显著物体检测训练数据,利用NYU-Depth、ReDWeb和DIW数据集来构建深度估计训练数据;
[0011]步骤3:利用步骤2所构建的训练数据集在Tensorflow平台上对步骤1所构建的神经网络参数进行训练,微调参数后得到训练完备的网络模型:
[0012]步骤3a、固定编码器参数,单独训练其中一个解码器:利用步骤2中构建的显著物体检测训练数据训练其中一个解码器,训练的条件是设置网络的损失函数为交叉熵损失函数,设置优化算法为随机梯度下降算法,得到训练好的第一解码器;
[0013]步骤3b、固定编码器参数,单独训练另一个解码器:利用步骤2中构建的深度估计训练数据中的NYU-Depth来单独训练另一个解码器,训练的条件是设置网络的损失函数为欧氏距离损失函数,设置优化算法为随机梯度下降算法;再利用步骤2中构建的深度估计训练数据中的ReDWeb来微调这个解码器,训练的条件是设置网络的损失函数为优化排序损失
函数,设置优化算法为随机梯度下降算法;最后利用步骤2中构建的深度估计训练数据中的DIW继续微调这个解码器,训练的条件是设置网络的损失函数为排序损失函数,设置优化算法为随机梯度下降算法,得到训练好的第二解码器;
[0014]步骤3c、使用步骤2中构建的显著物体检测训练数据DUTS-TR和步骤2中构建的深度估计训练数据中的DIW数据集交替微调编码器、步骤a训练好的第一解码器和步骤b训练好的第二解码器;过程中:每一步先使用一个批次的DUTS-TR数据在交叉熵损失函数下更新一次编码器和第一解码器,然后使用一个批次的DIW数据在排序损失函数下更新一次编码器和第二解码器,最终得到训练完备的网络模型;
[0015]步骤4、使用步骤3训练完备的网络模型结果进行背景虚化:
[0016]步骤4a:将图像I缩放至网络输入大小后,然后将其输入步骤3训练完备的网络模型:缩放至网络输入大小的图像I经过编码器和第一解码器得到一副显著图m,缩放至网络输入大小的图像I经过编码器和第二解码器得到一副深度图d;使用阈值t对显著图m进行二值化操作,即对于显著图m上的每个像素点,大于阈值的置为255,小于阈值的置为0,从而得到二值图s;
[0017]步骤4b:利用二值图和深度图得到显著物体所有像素点的深度值,然后将所有属于显著物体的像素点的深度值除以所有显著物体的像素点总个数得到显著物体的平均深
度z s,即使用公式计算,其中,s和z分别为步骤a得到的二值图和深度
图;i表示像素点的索引;
[0018]步骤4c:对每一个属于背景区域的像素点,减去步骤4b中得到的显著物体的平均深度值,再对其求绝对值得到该像素点的绝对深度差。

对所有像素点循环操作后得到所有
背景区域与显著物体的绝对深度差即使用公式计算。

[0019]步骤4d:利用下述公式计算高斯低通滤波器的标准差
[0020]
[0021]其中,为步骤c计算的绝对深度差;i表示像素点的索引;
[0022]步骤4e:利用公式w i=int(6σi+1)计算高斯低通滤波器的窗口大小,其中,σi为步骤d计算的标准差;i为像素点的索引;int为取整操作;
[0023]步骤4f:对图像I的每个像素点i,使用窗口大小为w i,标准差为σi高斯低通滤波器进行滤波,将所有的像素点滤波后即得到合成的背景虚化图像。

[0024]所述MobileNetV2轻量化网络结构采用Mark Sandler等人在2017年的工作“MobileNetV2:Inverted Residuals and Linear Bottlenecks”中所提出的MobileNetV2轻量化网络结构。

[0025]所述U-Net网络结构采用Olaf Ronneberger等人在2015年的工作“U-Net:
Convolutional Networks for Biomedical Image Segmentation”中所提出的U-Net网络结构。

[0026]所述优化排序损失函数为Ke Xian等人在2018年的工作Monocular Relative Depth Perception with Web Stereo Data Supervision中提出的优化排序损失函数。

[0027]所述排序损失函数为Weifeng Chen等人在2016年的工作Single-Image Depth Perception in the Wild中排序损失函数。

[0028]所述步骤4a的阈值t=0.5。

[0029]有益效果
[0030]本发明提出的一种基于显著物体检测和深度估计算法的背景虚化实现方法,基本思想是:输入一张单摄像头手机拍摄图像,通过显著性物体检测和深度估计得到显著图和距离拍摄镜头远近的深度图,根据背景区域不同深度来决定虚化程度,从而得到最终的背景虚化图。

[0031]本发明是在给定输入和期望情况下,让网络自动去学习显著物体和图像深度概念,是一种端到端的训练方式。

本发明中编码器采用的轻量化网络,在手机上的存储与计算相较于传统网络有所降低。

设计的两个解码器用于分别进行显著物体检测和深度估计,可满足单摄像头手机拍摄图像实现背景虚化的需求。

相较于已有的背景虚化方法,本方法根据背景区域不同深度来决定虚化程度,可获得质量更高的背景虚化图。

附图说明
[0032]图1是本发明方法的流程图。

[0033]图2是本方法的整体网络结构图。

[0034]图3是本发明方法的实验结果图。

具体实施方式
[0035]现结合实施例、附图对本发明作进一步描述:
[0036]用于实施的计算机硬件环境是:因特尔Xeon E5-2640v3@2.6GHz 32-核CPU处理器,64GB内存,配备GeForce GTX TITAN X GPU。

运行的软件环境是:Linux 14.0464位操作系统。

运用python语言在pycharm-community-2016.3.2软件中实现发明中提出的方法。

[0037]参照图1方法流程图,本发明具体实施方式如下:
[0038]步骤1、构建深度神经网络结构并初始化参数。

采用带跨越连接的编码器解码器的网络结构来同时进行显著物体检测和深度估计。

网络结构包含一个编码器和两个解码器,如图2所示。

编码器使用Mark Sandler等人在2017年的工作MobileNetV2:Inverted Residuals and Linear Bottlenecks[C].Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2018:4510-4520中所提出的MobileNetV2轻量化网络结构。

解码器1和解码器2均使用Olaf Ronneberger等人在2015年的工作U-Net: Convolutional Networks for Biomedical Image Segmentation[C].International C o n f e r e n c e o n M e d i c a l I m a g e C o m p u t i n g a n d C o m p u t e r-A s s i s t e d Intervention.2015:234-241.中所提出的U-Net网络结构。

使用MobilenetV2网络官方提供预训练模型来初始化编码器参数。

[0039]本实例中的预训练模型来源于:
[0040]https:///mobilenet_v2/checkpoints/mobilenet_v2_ 1.0_224.tgz。

[0041]步骤2、构建训练数据集。

训练数据集包括原始图像和对应人工标注的真值图像。

本实例中利用DUTS-TR数据集来构建显著物体检测训练数据,数据集来源于http:// /duts/#outline-container-orgab269ec。

利用NYU-Depth、ReDWeb 和DIW数据集来构建深度估计训练数据。

NYU-Depth数据来源于https:///~s i l b e r m a n/d a t a s e t s/n y u_d e p t h_v2.h t m l,R e D W e b数据库来源于h t t p:// s i t e s.g o o g l e.c o m/s i t e/r e d w e b c v p r18,D I W数据来源于h t t p://w w /~wfchen/depth-in-the-wild/。

将所有的训练数据中的自然图像及其对应的真值图像缩放至256×256尺寸大小。

[0042]步骤3、利用步骤2所构建的训练数据集在Tensorflow平台上对步骤1所构建的神经网络参数进行训练,微调参数后得到训练完备的网络模型。

[0043]步骤a:固定编码器参数,单独训练其中一个解码器:利用步骤2中构建的显著物体检测训练数据训练其中一个解码器,训练的条件是设置网络的损失函数为交叉熵损失函数,设置优化算法为随机梯度下降算法,得到训练好的第一解码器;
[0044]本实例中参数设置为:第一解码器初始学习率设置为0.01,并在训练到20000步和30000步时以0.1的系数线性衰减,同时设置编码器学习率为0,共计训练40000步,得到训练好的解码器1。

[0045]步骤b:固定编码器参数,单独训练另一个解码器:利用步骤2中构建的深度估计训练数据中的NYU-Depth来单独训练另一个解码器,训练的条件是设置网络的损失函数为欧氏距离损失函数,设置优化算法为随机梯度下降算法;再利用步骤2中构建的深度估计训练数据中的ReDWeb来微调这个解码器,训练的条件是设置网络的损失函数为优化排序损失函数,设置优化算法为随机梯度下降算法;最后利用步骤2中构建的深度估计训练数据中的DIW继续微调这个解码器,训练的条件是设置网络的损失函数为排序损失函数,设置优化算法为随机梯度下降算法,得到训练好的第二解码器;
[0046]本实例中参数设置为:第二解码器初始学习率设置为0.01,并每训练7000步对其以0.1的系数线性衰减,同时设置编码器学习率为0,共计训练20000步。

接着利用步骤2中构建的深度估计训练数据中的ReDWeb来微调解码器2,使用Ke Xian等人在2018年的工作Monocular Relative Depth Perception with Web Stereo Data Supervision[C] .Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition.2018:311-320中提出的优化排序损失函数来训练网络,采用随机梯度下降算法优化网络参数。

本实例中参数设置为:解第二码器学习率为0.001,共计训练20000步。

最后利用步骤2中构建的深度估计训练数据中的DIW继续微调解码器2,使用Weifeng Chen等人在2016年的工作Single-Image Depth Perception in the Wild[C].Proceedings of Advances in Neural Information Processing Systems.2016:730-738中排序损失函数来训练网络,采用随机梯度下降算法优化网络参数,本实例中设置解码器2学习率为0.0001,共计训练20000步,得到训练好的解码器2。

[0047]步骤c:使用步骤2中构建的显著物体检测训练数据DUTS-TR和步骤2中构建的深度
估计训练数据中的DIW数据集交替微调编码器、步骤a训练好的第一解码器和步骤b训练好的第二解码器;过程中:每一步先使用一个批次的DUTS-TR数据在交叉熵损失函数下更新一次编码器和第一解码器,然后使用一个批次的DIW数据在排序损失函数下更新一次编码器和第二解码器,最终得到训练完备的网络模型;
[0048]本实例中设置编码器、第一解码器、第二解码器的学习率分别为0.0001,0.001和0.001。

每一步先使用一个批次的DUTS-TR数据在交叉熵损失函数下更新一次编码器和解码器1,然后使用一个批次的DIW数据在排序损失函数下更新一次编码器和解码器2,每训练7000步将它们的学习率以0.1的系数线性衰减,共计训练20000步,最终得到训练完备的网络模型。

[0049]步骤4、使用步骤3训练完备的网络模型结果进行背景虚化:
[0050]步骤a:将单摄像头手机拍摄图像I缩放至网络输入大小256×256,输入步骤3训练完备的网络模型经过编码器和解码器1得到一副显著图m,经过编码器和解码器2得到一副深度图d,如图3所示。

使用阈值t对显著图m进行二值化操作,即对于显著图m上的每个像素点,大于阈值的置为255,小于阈值的置为0,从而得到二值图s,本实例中t=0.5。

[0051]步骤b:利用二值图和深度图得到显著物体所有像素点的深度值,然后将所有属于显著物体的像素点的深度值除以所有显著物体的像素点总个数得到显著物体的平均深度
z s,即使用公式计算,其中,s和z分别为步骤a得到的二值图和深度图;i
表示像素点的索引;
[0052]步骤c:对每一个属于背景区域的像素点,减去步骤4b中得到的显著物体的平均深度值,再对其求绝对值得到该像素点的绝对深度差。

对所有像素点循环操作后得到所有背
景区域与显著物体的绝对深度差即使用公式计算。

[0053]步骤d:利用下述公式计算高斯低通滤波器的标准差,
[0054]
[0055]其中,为步骤c计算的绝对深度差;i表示像素点的索引;
[0056]步骤e:利用公式w i=int(6σi+1)计算高斯低通滤波器的窗口大小。

其中,σi为步骤d计算的标准差;i为像素点的索引;int为取整操作;
[0057]步骤f:对于单摄像头手机拍摄图像I的每个像素点i,使用窗口大小为w i,标准差为σi高斯低通滤波器进行滤波,得到合成的背景虚化图像,如图3所示。

其中,w i由步骤e计算得到,σi由步骤d计算得到,i为像素点的索引。

由于根据深度的不同,来决定高斯低通滤波器的窗口大小和标准差,即虚化的程度。

故可解决已存在的背景。

图1
图2
图3。

相关文档
最新文档