场景说明
为什么需要使用插帧来进行流体力学分析
高速摄影可以用于流体力学的视觉分析,涉及的研究领域包括PIV粒子分析、BOS背景纹影等领域。
高速摄影机在使用超高速拍摄时,视场会急剧缩小或者分辨率降至最高状态的八分之一。为研究大视场超小时间窗口的影像分析带来极大的不便。
基本概念介绍
纹影拍摄
利用面镜和透镜,纹影摄影技术可以拍到平时肉眼看不到的气流形态。它的原理是利用气体密度的变化,导致折射率变化,使光的传播受到扰动,进而将不可看见的气流变化,转化成可以被看见的图像。
这项技术最初被应用于风洞的气流研究,特别是高速激波的研究,但这项技术稍加改变,就可以应用于探测隐身飞机。利用纹影摄影术还可以将有机气体逸散特性影像化,进而评估局部排气设施气罩捕集有机溶剂蒸汽的真实过程,保证劳工作业安全。
BOS背景纹影拍摄
背景纹影技术是一种基于图像的大视场、非接触的定量流场测试技术,在流场测量中有着广阔的应用前景。详细介绍了背景纹影技术的基本原理,并从理论上对系统灵敏度以及空间分辨率进行了深入分析。根据背景纹影技术原理,深入设计了背景斑点图案,搭建了密度场测量系统,基于火焰流场和喷流流场开展了定量测量研究,并给出了流场密度和温度分布测量结果。结果表明,背景纹影技术可以便捷、有效地实现流场密度测量和温度测量,为实现大视场定量的流场密度测量提供了一种简洁有效的方法。
传统方式
低分辨率超高速摄影机
普通高速摄影机在1080p模式下仅可提供1000~2000帧的速度。特殊型号可实现8000帧速度,但收到贸易限制大部分高校实验室无法获得。
小视场
超大视场800mm口径纹影仪(非常难找图,来自网络搜索)
传统光学纹影系统视场非常小,常规大小230mm以内。超过1000mm的纹影仪几乎只能在国防相关的单位才能找到。对于高校的流体力学科研带来了极大限制。
准备工作
背景板
采用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,用于经过阿里云人工智能插帧后的数据分析。
如何搭建视频插帧中间件
函数计算
选择指定存储桶作为绿幕分割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): passdefcreate_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) defmain( 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) asyncdefmain_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地址转换。
成果分享
乐器演奏:高功率激光 + 超高速摄影 + 阿里云人工智能插帧 + PIV粒子分析
咳嗽气流:大功率LED + 240帧摄影机 + 阿里云人工智能插帧 + BOS背景纹影
写在最后
我会陆续针对在科研场景中的许多应用分享如何利用阿里云的AI能力结合函数计算进行中间件的开发心得与实战总结。不会公布源代码,但从基本原理到架构方式都会做较为细致的介绍。
适合有一定科研领域开发经验的开发者阅读,也非常欢迎具体科研领域的从业者与我交流,无论是否从事开发。