昇腾AI应用,探索人工智能的无限可能,使能千行百业
黑白图像上色模型原理如下图所示,对物件包括背景色(L通道代表的灰度图)使用卷积运算提取特征,然后同样用卷积进行分类,从而尝试给出对灰度图片每个像素点的色彩预期(ab通道)。将ab通道的值Resize到原始图片宽高并与L通道叠加后,转为RGB图片即可得到彩色图像。黑白图像上色模型原理如下图所示,对物件包括背景色(L通道代表的灰度图)使用卷积运算提取特征,然后同样用卷积进行分类,从而尝试给出对灰度图片每个像素点的色彩预期(ab通道)。将ab通道的值resize到原始图片宽高并与L通道叠加后,转为RGB图片即可得到彩色图像。
其中模型的输入为L通道的数据(224,224,1),输出为ab通道的数据(56,56,2)。
如下图所示,昇腾软件栈中存在一个atc模型转换工具,针对本应用,我们需要使用该工具将原始模型转换成系统支持的om模型。
本应用采用了下图所示的模块化设计,通过各模块之间的协调配合完成一张图片的推理输出。
其中各个模块的主要功能点如下所示:
模型原始链接: https://github.com/richzhang/colorization
本应用图像预处理部分,使用OpenCV的imread接口读取图片,读取出来的是BGR格式。模型输入为224×225,因此需要把读取到的图像Resize到224×224。Resize后对数据做归一化处理。如算法设计部分所言,该模型采用Lab色彩空间,因此需要把BGR格式转为Lab格式数据。该模型用L通道数据预测出可能的ab空间数据,所以要从Lab数据中分离出L通道数据。再对所得的数据减均值,即可得到模型需要的输入数据。
模型推理得到预测出的ab空间数据。首先把得到的数据resize回原图像大小,然后和原图像L通道数据合并,即得到完整Lab图像。把Lab图像转回BGR格式即可保存为jpeg图片,得到上色后的图像。