背景
单幅图像去雾在军事活动、自动驾驶、天文研究等领域有较大应用价值,如下图所示,在有雾的天气情况下,由于大气中的水汽和固体颗粒物的存在,使得采集到的图像在色彩、饱和度和对比度等方面与场景原有信息相比出现偏差,严重影响了图像质量。因此设计出合适的图像去雾算法具有重要的实用价值。
雾天降质图像
概述
该项目在华为Atlas 200开发平台(Atlas 200 DK 开发者套件(型号:3000),以下简称Atlas 200 DK)上实现单幅图像去雾的系统。该系统将用户在客户端选取的任意有雾图像作为输入,运行部署在Atlas 200 DK上的去雾模型,实时返回去雾结果作为输出并显示给用户。
原理
- 判整个系统的体系结构可以划分为三部分,分别为主机端的训练层、Atlas 200 DK端的推断层以及主机端的展示层,如图5-5所示。各层侧重点各不相同。
- 训练层运行在安装有tensorflow框架的服务器,首先要完成训练数据的读取,即完成有雾图像和无雾图像的读取;其次对训练数据进行随机翻转和随机裁剪等数据增广操作,并将图像归一化至[-1,1]范围内;接下来定义去雾网络的生成器、判别器和损失函数,获得全局可更新参数并初始化全局参数;之后不断更新去雾模型中的生成器和判别器中的所有参数,记录损失函数在训练过程中的下降情况。
- 推断层运行于Atlas 200 DK环境,能够支持卷积神经网络的加速。该阶段主要包括3个步骤。第一步是获取输入的有雾图像并完成图像预处理操作。第二步是调用训练阶段训练好的去雾模型,先通过生成器编码阶段提取图像特征,然后通过生成器转换器阶段将图像从有雾域转换至无雾域,最后通过生成器编码阶段还原特征。第三步是生成无雾图像,保存并显示去雾后的无雾图像。
- 展示层运行于客户端应用程序,能够完成图像选择并实时显示推断层的计算结果。
- 各层之间存在单向依赖关系。推断层需要的网络模型由训练层提供,并根据需要进行必要的格式转换或加速重构。相应的,展示层要显示的元数据需要由推断层计算得到。
技术
Atlas 200 DK 开发者套件(型号:3000)、深度学习服务器。
硬件
- 华为基于Ascend 310 AI处理器的MindSpore DDK(Device Developer Kit)
- OpenCV计算机视觉库,Tensorflow深度学习框架,Tensorlayer扩展,PyTorch框架,ImageAug图像增广
- 基于GAN的图像去雾模型模型
优化点
单张图像去雾网络目前使用的是Resnet类似网络,为了速度进行了两次降采样后升采样,为了提高性能在接下来优化中可以考虑引入DenseNet等结构,同时网络GAN部分使用了基础的GAN,可以考虑用WGAN或者谱归一化提高训练稳定性。网络实现了一个较完整的Pipeline,提供了训练到部署代码和一个简单的CS架构演示程序,该代码也可以用于HDR,图像超分辨率等任务中。