图像增强

一、示例简介

1. 应用场景

在科技高速发展的时代,对于图像质量的要求越来越高,而图强增强系统却能解决部分图像表现力不足的问题,可应用在图像压缩、直播平台、特效处理、图像复原等多个场景中。

2. 实现功能

基于市场部分的要求,本系统仅实现了图像超分与风格迁移部分的开发,并且在web端提供了可供交互的展示界面,用户可通过展示界面完成数据的传输与处理结果的展示。

 

二、方案优势

1. 使用寒武纪智能处理卡,为端、云侧推理提供的强大运算能力支撑,并具备视频解码功能。

2. 基于cnstream开源框架,以模块的方式组织功能,可以根据具体场景方便地增加或替换模块,具有很高的扩展性。

3. 根据寒武纪硬件进行优化,通过多batch等方式,充分利用多个MLU core进行平行处理。

4. 直接加载寒武纪离线模型,脱离深度学习框架,直接调用寒武纪运行时库(CNRT),具有很高的执行效率。

 

三、适配规格

1. 硬件平台

寒武纪MLU270系列智能处理卡

寒武纪 MLU270采用寒武纪MLUv02架构,可支持视觉、语音、自然语言处理以及传统机器学习等多样化的人工智能应用,更为视觉应用集成了充裕的视频和图像编解码硬件单元。

 MLU270集成了寒武纪在处理器架构领域的一系列创新性技术,处理非稀疏深度学习模型的理论峰值性能提升至上一代思元100的4倍,达到128TOPS(INT8);同时兼容INT4和INT16运算,理论峰值分别达到256TOPS和64TOPS;支持浮点运算和混合精度运算。  

最低配置

8张MLU270对应总共不少于16个CPU核心
配置时服务器需采用Balanced拓扑

不低于2倍加速卡缓存容量的系统内存,256GB

建议配置

8张MLU270对应总共不少于32个CPU核心
配置时服务器需采用Balanced拓扑

不低于3倍加速卡缓存容量的系统内存,384GB

4张MLU270对应总共不少于16个CPU核心
配置时服务器需采用Balanced拓扑

不低于3倍加速卡缓存容量的系统内存,192GB

 

  案例展示

服务器厂商

型号

高度

CPU平台

MLU板卡

插卡数

Inspur

NF5468M5

4U

2* Intel Xeon Scalable Processor

MLU270-X5K

8

NF2180M3

2U

FT2000plus

MLU270-A4K

4

GreatWall

DF720

2U

FT2000plus

MLU270-A4K

2

 

2. 软件环境

依赖寒武纪驱动(Cambricon Driver),寒武纪软件(Cambricon Neuware)中的编解码库(CNCodec)、运行时库(CNRT)、CNDev、CNDrv、CNML、CNPlugin等。

 

四、功能介绍

图像增强系统的系统用例图,如下图所示:

 

通过系统用例图可发现本系统的主要功能如下:

1. 支持图像超分和风格迁移方法

2. 支持多种展示模式(主要是为图像超分所设计的)

3. 支持web端实时显示处理后的结果

4. 支持多种输入源,包括JPG、JPEG、PNG等格式的图像文件,也可输入图像地址链接,还包括AVI、MP4等格式的视频文件,也可输入RTSP或RTMP流

5. 支持图像处理结果可下载

 

五、实现方案

1. 系统框架图

图像增强系统可由Infer Server和Web Server两部分组成,

Infer Server采用cnstream框架进行开发,通过搭建多个插件,组合成流水线来完成图像增强的图像处理,

每一个环节由一个插件来完成,插件是以多线程的方式并行执行,插件之间的数据传输通过阻塞式的消息队列实现。

Web Server采用flask框架进行开发,解析HTTP请求,完成数据的解析与封装,实现与infer Server之间的通信。

图像增强系统的系统框架图如下:

 

2. 流程图

整个系统的处理流程主要包含Web Server和Infer Server的处理部分,以及两者之间的数据通信部分

其中Web Server的主要功能是提供处理数据的接收以及处理结果的展示服务,相当于一个数据中转站,

而Infer Server则是提供实际的网络推理服务,完成各类数据的图像增强,是系统中最重要的部分

图像增强系统的流程图如下:

 

3. 解释说明

整个流程包括以下环节:请求的解析与响应、数据解析与封装、进程通信、图像与视频编解码、超分处理以及风格迁移处理等。

 

1)请求的解析与响应

请求可分为两种类型的请求,分别是GET和POST类型的请求

其中GET类型的请求,是将携带的信息放在HTTP链接中传递到Web后端,这种方式的请求携带的数据量一般都小,适合数据是地址链接的

而POST类型的请求,是将数据以表格的方式存放在HTTP请求的body内,这种方式能够传递较大的数据信息,适合以图像视频文件传递的

对于响应,Web Server在收到Infer Server处理的结果后,生成对于响应页面进行发送

 

2)数据解析与封装

数据的解析与封装主要应用在Web Server与Infer Server之间的通信中,

在Web Server封装与在Infer Server解析的数据主要包括:

关键字

内容

infer_model

推理模型名称

infer_type

处理方法

data_form

数据类型(视频或图像)

server_port

消息接受的服务器端口号

user_id

用户的标识id

filepath

文件的本地路径

show_mode

展示模式

 

在Web Server解析与在Infer Server封装的数据主要包括:

关键字

内容

filepath

图像文件地址

user_id

用户的标识id

hwt

单次图像推理的硬件时间

swt

单次图像推理的软件时间

input_size

输入图像的大小

output_size

输出图像的大小

eos

标识视频推理是否是最后一帧

 

3)进程通信

Web Server 和 Infer Server是两个独立的进程,它们之间采用socket套接字进行通信,传递在数据解析和封装中所述的数据信息

socket套接字包含client端和server端,在Web Server和Infer Server都会存在一个socket的server,每次消息传递时都会新建一个client与对应的server进行连接,完成进程的通信

而视频处理与图像处理存在部分不同,其中在Infer Server向Web Server传递数据时,图像处理传递的是处理后的图像文件地址,而视频处理传递的是RTSP流

对于视频处理传递RTSP流的原因是为了提高用户的体验感,每处理完一帧就立即传递到Web Server进行展示,能提高视频处理的实时性,减少用户在处理视频时等待的时间

 

4)图像与视频编解码

解码插件需要能够解析RTSP/RTMP视频流,本地各种编码格式的视频文件以及JPEG图像。实际使用的解码模块可使用CPU来软解码,也可采用MLU硬件解码器模块完成解码。

考虑到CPU资源比较宝贵(后续很多插件都会大量使用CPU资源),所以一般情况下,采用cnstream的decoder模块实现MLU解码功能。

编码插件能够使用MLU硬件编码器实现对数据帧的编码,采用cnstream的encoder模块实现MLU编码功能

 

5)超分处理

超分处理模块,可实现图像的超分处理,本系统采用的模型有三种,分别是CARN、EDSR、RCAN,超分辨都是x4尺寸的

由于超分模型的计算量过大,在生成离线模型的时,过大的输入尺寸的选择会导致硬件资源使用殆尽,以至于不能生成离线模型,因此模型统一输入尺寸在160x120,对batch_size的设置也只能设置为1,core num的大小设置为16,在进行模型推理时,对于尺寸超出的部分进行拆分,不足的部分进行填充,拆分算法可见下图

示例中是一张原始尺寸为500x340大小的图像,如图中所示按160x120大小对图像进行分块,每个块大小之间存在30px大小的重叠区域,对于超出的50px大小部分进行零填充,

拆分后对每个part都独立进行推理,全部part都处理完后进行合并操作,每个part采用中间部分的130x90大小区域的像素值并且保留无重叠区域的边缘像素,对于零填充的边缘进行截取,来还原到原始图像大小

设置重叠区域的原因是模型网络中存在卷积,卷积的结果是根据原始像素点及周围像素点的值来确定的,而进行拆分后,part边缘像素会损失一部分周围像素值,从而影响模型的处理效果,在还原图像后会存在折痕

每个part图像的处理可分为前处理、模型推理、后处理

前处理阶段主要是颜色空间转换和convert

模型推理可根据选择模型名称,加载不同的超分模型进行处理

后处理阶段主要是处理结果的保存

 

6)风格迁移处理

风格迁移同超分的类型差不多,支持任意比例的输入大小,但在生成离线模型时必须给定输入尺寸,对于过大的尺寸同样不能生成合格的离线模型,因此统一生成输入尺寸是640x480的离线模型,对于batch_size设置为以,core num设置为16

对于风格迁移,并没有采用与超分相同的处理方法,因为风格迁移的算法是根据整个图像的像素值来进行计算的,当进行拆分,每个part的像素范围都不大相同,因此在拼接后会产生明暗相间的像素块

图像的处理也可分为前处理、模型推理、后处理

前处理阶段主要是颜色空间转换、resize和convert

模型推理可根据选择模型名称,加载不同的风格迁移模型进行处理

后处理阶段主要是处理结果的保存

 

7)展示模式

展示模式主要是为图像超分所设计的,分为五种模式,Default、Overlap、Contrast、Over Contrast和Distribution

Default是默认模式,不进行任何加工

Overlap是叠加模式,在超分图左下角叠加一个原图

Contrast是对比模式,将超分图与resize到超分图大小后的原始图进行对比

Over Contrast是叠加模式与对比模式的混合

Distribution是多区域模式,将原图中多个区域进行超分展示

 

六、效果展示

初始界面

 

超分模式展示

1. Overlap

 

2. Contrast

 

3. Over Contrast

 

4. Distribution

 

风格迁移

1. horse2zebra

 

2. style_monet

 

3. style_cezanne

 

4. style_ukiyoe

 

七、相关资源

将在GitHub(https://github.com/Cambricon)上开源,感谢您的关注。

 

 

申 请 试 用