用视频插帧开一个流体力学分析的外挂

本文涉及的产品
对象存储 OSS,标准 - 本地冗余存储 20GB 3个月
对象存储 OSS,内容安全 1000 次 1年
对象存储OSS,敏感数据保护2.0 200GB 1年
简介: 阿里云提供的线上AI能力在处理视觉信息方面已经有较为成熟和通用的产品,其中视频插帧可以用于现有超高速相机增强,用于粒子测量PIV、BOS背景纹影等领域。本文为视觉流体力学分析预处理中间件的开发思路、技术架构设计和开发实战中参数的设置介绍,对一些数字影像的基础概念和阿里云视觉人工智能的API细节进行了分析。

场景说明

为什么需要使用插帧来进行流体力学分析

高速摄影可以用于流体力学的视觉分析,涉及的研究领域包括PIV粒子分析、BOS背景纹影等领域。

高速摄影机在使用超高速拍摄时,视场会急剧缩小或者分辨率降至最高状态的八分之一。为研究大视场超小时间窗口的影像分析带来极大的不便。


基本概念介绍

纹影拍摄

利用面镜和透镜,纹影摄影技术可以拍到平时肉眼看不到的气流形态。它的原理是利用气体密度的变化,导致折射率变化,使光的传播受到扰动,进而将不可看见的气流变化,转化成可以被看见的图像。

air-flow.jpg

这项技术最初被应用于风洞的气流研究,特别是高速激波的研究,但这项技术稍加改变,就可以应用于探测隐身飞机。利用纹影摄影术还可以将有机气体逸散特性影像化,进而评估局部排气设施气罩捕集有机溶剂蒸汽的真实过程,保证劳工作业安全。


BOS背景纹影拍摄

080027e36f431f81326c03.jpg

背景纹影技术是一种基于图像的大视场、非接触的定量流场测试技术,在流场测量中有着广阔的应用前景。详细介绍了背景纹影技术的基本原理,并从理论上对系统灵敏度以及空间分辨率进行了深入分析。根据背景纹影技术原理,深入设计了背景斑点图案,搭建了密度场测量系统,基于火焰流场和喷流流场开展了定量测量研究,并给出了流场密度和温度分布测量结果。结果表明,背景纹影技术可以便捷、有效地实现流场密度测量和温度测量,为实现大视场定量的流场密度测量提供了一种简洁有效的方法。


传统方式

低分辨率超高速摄影机

普通高速摄影机在1080p模式下仅可提供1000~2000帧的速度。特殊型号可实现8000帧速度,但收到贸易限制大部分高校实验室无法获得。

v2-19b793842a547b08dfd801d2dd45f815_1440w.jpg

小视场

20151214020255-21243283245712520.jpg

超大视场800mm口径纹影仪(非常难找图,来自网络搜索)


传统光学纹影系统视场非常小,常规大小230mm以内。超过1000mm的纹影仪几乎只能在国防相关的单位才能找到。对于高校的流体力学科研带来了极大限制。


准备工作

背景板下载.png

采用5像素间距的生成随机点,尺寸1024。根据实际需要调整大小。


高速摄影机(超高速高分辨率)

测试时使用了千眼狼(国产)X113型,6000帧,1280*1024分辨率。

通过阿里云人工智能插帧能力扩展4倍,实现超过24000帧。

最终实现800倍慢放,50微秒时间窗口。

采用激光光源观察粒子,进行PIV分析。

支持240p的摄影机(高速高分辨率)

录制RAW格式4K文件,240帧录制,30帧回放。

通过阿里云人工智能插帧能力扩展4倍,实现960帧。

最终实现32倍慢放。2毫秒时间窗口。

采用LED照明,进行BOS背景纹影试验。


Matlab工作站

         分别安装BOSCom、PIVLab,用于经过阿里云人工智能插帧后的数据分析。

v2-1ce79ca4cbdb34497e351e5db7af91fb_r.jpg



如何搭建视频插帧中间件

函数计算

选择指定存储桶作为绿幕分割API的触发器,一旦出现新文件上传并完成哈希校验后立即出发该函数容器。

该函数容器调用阿里云人工智能->视觉生产->视频插帧能力的API。以下引入阿里云API调试中心的Python实例代码。

# -*- coding: utf-8 -*-# This file is auto-generated, don't edit it. Thanks.importsysfromtypingimportListfromalibabacloud_videoenhan20200320.clientimportClientasvideoenhan20200320Clientfromalibabacloud_tea_openapiimportmodelsasopen_api_modelsfromalibabacloud_videoenhan20200320importmodelsasvideoenhan_20200320_modelsfromalibabacloud_tea_utilimportmodelsasutil_modelsfromalibabacloud_tea_util.clientimportClientasUtilClientclassSample:
def__init__(self):
pass@staticmethoddefcreate_client(
access_key_id: str,
access_key_secret: str,
    ) ->videoenhan20200320Client:
"""        使用AK&SK初始化账号Client        @param access_key_id:        @param access_key_secret:        @return: Client        @throws Exception        """config=open_api_models.Config(
# 必填,您的 AccessKey ID,access_key_id=access_key_id,
# 必填,您的 AccessKey Secret,access_key_secret=access_key_secret        )
# 访问的域名config.endpoint=f'videoenhan.cn-shanghai.aliyuncs.com'returnvideoenhan20200320Client(config)
@staticmethoddefmain(
args: List[str],
    ) ->None:
# 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.htmlclient=Sample.create_client('accessKeyId', 'accessKeySecret')
interpolate_video_frame_request=videoenhan_20200320_models.InterpolateVideoFrameRequest(
video_url='http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/videoenhan/InterpolateVideoFrame/InterpolateVideoFrame1.mp4'        )
runtime=util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印 API 的返回值client.interpolate_video_frame_with_options(interpolate_video_frame_request, runtime)
exceptExceptionaserror:
# 如有需要,请打印 errorUtilClient.assert_as_string(error.message)
@staticmethodasyncdefmain_async(
args: List[str],
    ) ->None:
# 工程代码泄露可能会导致AccessKey泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378659.htmlclient=Sample.create_client('accessKeyId', 'accessKeySecret')
interpolate_video_frame_request=videoenhan_20200320_models.InterpolateVideoFrameRequest(
video_url='http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/videoenhan/InterpolateVideoFrame/InterpolateVideoFrame1.mp4'        )
runtime=util_models.RuntimeOptions()
try:
# 复制代码运行请自行打印 API 的返回值awaitclient.interpolate_video_frame_with_options_async(interpolate_video_frame_request, runtime)
exceptExceptionaserror:
# 如有需要,请打印 errorUtilClient.assert_as_string(error.message)
if__name__=='__main__':
Sample.main(sys.argv[1:])

工作流

为实现流程整合,将该部分AI能力以函数计算形式封装为中间件,该函数可以被Serverless工作流掉用,当需要将该中间件加入到工作流时,应当取消OSS触发器。

在Serverless工作流的任务步骤中,异步调用函数计算可以更灵活地适应当前任务场景,避免限流等错误,同时可以简化流程中的错误处理和重试逻辑。

工作流中可以集成其他工作流,也可以整合消息服务,以便与现有的本地或云端的媒体资产管理系统结合。

返回的文件仅能保存30分钟,实现异步消息处理后应立即保存到OSS的结果桶当中,并触发其他函数计算容器或其他工作流。


OSS

在阿里云OSS上搭建科研数据存储系统,与本地NAS进行同步。需要对待上传文件进行哈希校验,并使用断点续传能力。

应当选择华东2的OSS作为该项目存储桶,原因文末解释。


视频插帧

基于深度学习算法,推理出中间帧中物体对象的变化位置,让插帧后的视频更加流畅,且无抖动、顿挫等现象。

视频插帧能力基于深度学习的帧率上变换,通过插帧网络合成任意时刻的视频帧,从而优化解决视频中卡顿、抖动等画质问题。


API 参数详解

输入文件

MP4格式H264编码或序列帧编码,回放帧率30帧或25帧。


帧率

采用高速摄影机拍摄的画面导出时设置为30帧,经过最大4倍帧率可以实现120帧的帧率。如果原始情况下使用6000帧拍摄则可以获得24000帧的高清画面。

回放时依然采用30帧回放,则速度放慢800倍,实现0.1ms的观察窗口。


码率

由于码率越大被压缩的也小,实验场景中的视觉信息变化都是像素级或亚像素级别,特别容易被视频压缩算法忽略或修改,所以码率直接可以设置为200Mbps。


为何使用华东2的OSS

华东2的OSS服务可以直接在阿里云API中调用,其他区域的OSS文件需要进行URL地址转换。


成果分享

完整视场(正常发声)-0001.png

乐器演奏:高功率激光 + 超高速摄影 + 阿里云人工智能插帧 + PIV粒子分析


咳嗽-0002.png

咳嗽气流:大功率LED + 240帧摄影机 + 阿里云人工智能插帧 + BOS背景纹影


写在最后

我会陆续针对在科研场景中的许多应用分享如何利用阿里云的AI能力结合函数计算进行中间件的开发心得与实战总结。不会公布源代码,但从基本原理到架构方式都会做较为细致的介绍。

适合有一定科研领域开发经验的开发者阅读,也非常欢迎具体科研领域的从业者与我交流,无论是否从事开发。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
数据采集 Java API
Crawler4j实例爬取爱奇艺热播剧案例 前言
Crawler4j实例爬取爱奇艺热播剧案例 前言
|
存储 Docker 容器
企业实战(6)修改Harbor镜像仓库默认存储路径
企业实战(6)修改Harbor镜像仓库默认存储路径
803 0
|
缓存 负载均衡 网络协议
自己动手从0开始实现一个分布式RPC框架
如果一个程序员能清楚的了解RPC框架所具备的要素,掌握RPC框架中涉及的服务注册发现、负载均衡、序列化协议、RPC通信协议、Socket通信、异步调用、熔断降级等技术,可以全方位的提升基本素质。虽然也有相关源码,但是只看源码容易眼高手低,动手写一个才是自己真正掌握这门技术的最优路径。
自己动手从0开始实现一个分布式RPC框架
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的咖啡馆管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的咖啡馆管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
189 1
|
JavaScript 前端开发 Java
Github 上 8 个很棒的 Vue 项目
Github 上 8 个很棒的 Vue 项目
623 0
|
监控 Java 测试技术
五步定位性能瓶颈
五步定位性能瓶颈
415 1
|
存储 Linux Docker
在Docker中,本地的镜像文件都存放在哪里?
在Docker中,本地的镜像文件都存放在哪里?
|
Dart 对象存储 Android开发
带你阅读 Flutter Demo(flutter 保姆级入门教程)
带你阅读 Flutter Demo(flutter 保姆级入门教程)
1722 0
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想
分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想
748 0
|
编解码 测试技术
srt推拉流延时性能测试
srt推拉流延时性能测试
738 0
srt推拉流延时性能测试