图像增强
一、示例简介
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核心 |
不低于2倍加速卡缓存容量的系统内存,256GB |
建议配置 |
8张MLU270对应总共不少于32个CPU核心 |
不低于3倍加速卡缓存容量的系统内存,384GB |
4张MLU270对应总共不少于16个CPU核心 |
不低于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