背景简介
增强现实技术将计算机生成的虚拟信息如图片、文字、三维物体或声音等无缝地与真实环境进行叠加融合。增强现实的真实感是非常具有挑战性的难题,其主要体现在合成图像的几何一致性与光照一致性两个方面。其中,光照一致性要求被插入物体能呈现出与背景真实环境相一致的明暗及其四周的阴影效果,因此生成与真实环境相一致的阴影将大幅度提升合成图像的真实感。虚拟物体的阴影提升真实感
本项目在华为Atlas 200 Develop Kit平台实现基于生成对抗网络(Generative Adversarial Network,GAN)的虚拟物体阴影生成。阴影生成以端到端的方式直接完成,而不需要除了RGB图像以外的信息与显式的逆渲染过程。
本项目实现的GAN网络介绍
本项目实现的GAN结构
如图,网络模型包括由一个生成器网络与一个判别器网络。生成器为一个U-Net,由5个相互对称的降采样与上采样模块组成。降采样模块输出的特征图通过短连接(Skip Connection)方式直接输入到对称的上采样模块。生成器的输出为冗余形式的阴影图像,与原图相加得到最终的阴影图像。判别器采用Phillip Isola等人2017年于文献“Image-to-Image Translation with Conditional Adversarial Nets”中提出Patch-GAN的。生成器生成图像试图欺骗判别器,而判别器鉴别图像是否为“真”,通过如此对抗训练辅助阴影的生成。
技术
- 华为基于Ascend 310 AI处理器。- 基于OpenGL的图形渲染,用于数据集制作。
- 基于TensorFlow 1.12.0的卷积神经网络实现,使用模型管家接口将其转换为Ascend 310 AI处理器支持的模型。
硬件
本项目使用Atlas 200 DK 开发者套件(型号:3000)作为开发平台。阴影生成模型的实现与移植
首先基于TensorFlow (1.12.0)框架搭建网络并训练得到PB格式的阴影生成模型。
其次,利用OMG将PB模型转换为Ascend 310 AI处理器支持的OM模型。
最后,将转换完成的模型在Ascend 310 AI处理器上运行并验证效果。
模型转换参数设置
-如图,模型转换时数据格式设置为NHWC,Batch Mode设置为Static,输入图像的维度设置为(1, 255, 255, 3),输入掩码的维度设置为(1, 256, 256, 1),不启用量化Quantization与预处理AIPP,点击Finish完成模型转换。
-用HiAI的Python接口完成计算图的构建与模型推理。用OpenCV的Python接口完成图像数据的输入与输出。
-在本项目中,图像数据的像素值需要转换成float32类型并归一化到[-1.0, 1.0]。我们通过公式 I'=2.0 * (I / 255.0) – 1.0,利用Numpy矩阵运算完成归一化操作。
-输入与输出方式为本地图像数据的读写,需要将模型,运行代码与准备好的图像数据部署到开发者板,然后登录开发者板执行模型推理的代码生成结果。
优化点
本项目实现最基本的条件对抗生成网络(cGAN)通过image-to-image translation的方式与约束生成阴影,如需要得到更精确的结果,您可以考虑使用最新的生成式网络结构并添加额外的约束。除此之外,您也可以考虑扩充数据集或显式地标注数据集中的线索信息并利用注意力机制进行改进。效果展示
本项目实现的GAN结构
阴影生成效果如图所示。网络将(a)一张不含虚拟物体阴影的AR合成图像与(b)虚拟物体的掩码作为输入,输出(c)包含虚拟物体阴影的图像。
注:输入图像为256×256的三通道BGR彩色图像,输入掩码为256×256的单通道灰度图像,模型输出256×256的三通道BGR彩色图像。