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

本文涉及的产品
对象存储 OSS,20GB 3个月
函数计算FC,每月15万CU 3个月
对象存储 OSS,内容安全 1000次 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能力结合函数计算进行中间件的开发心得与实战总结。不会公布源代码,但从基本原理到架构方式都会做较为细致的介绍。

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

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
6月前
|
C++ 内存技术
【期末不挂科-单片机考前速过系列P8】(第八章:21题速过AT89S51单片机的内部硬件结构)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P8】(第八章:21题速过AT89S51单片机的内部硬件结构)经典例题盘点(带图解析)
|
6月前
|
传感器 Linux 编译器
不同平台下的点灯代码,你在点灯的哪个段位?
不同平台下的点灯代码,你在点灯的哪个段位?
|
6月前
|
传感器 监控 测试技术
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计与实现
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计与实现
|
6月前
|
传感器 人工智能 Java
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计
教师常年在课堂上上课,粉笔的灰尘会对学生的健康造成很大的危害,很多教师都会患上肺部疾病。教师在课堂教学中,如何有效地消除粉尘对教师的身体造成的不良影响,是一个亟待解决的问题。本文以51单片机为核心,实现并设计一种全自动黑板檫粉尘清除装置。由黑板擦上的压力传感器进行检测,由51单片机来控制吸尘器(吸尘风机),以完成清理。本系统的主要功能包括:压力检测、按键控制、灯光显示、电扇除尘等。本文在对国内外有关文献进行整理和归纳的基础上,首先介绍了全自动黑板檫粉尘清除装置的研制背景和研究意义,并结合国内外的研究情况,提出了本文的主要研究内容和系统的设计思路。接着,对系统的硬件电路进行了详细的设计,并编写了
|
前端开发 芯片
【芯片前端】保持代码手感——不重叠序列检测
【芯片前端】保持代码手感——不重叠序列检测
|
传感器 监控 测试技术
单片机开发|基于51单片机的全自动黑板檫粉尘清除装置设计与实现
教师常年在课堂上上课,粉笔的灰尘会对学生的健康造成很大的危害,很多教师都会患上肺部疾病。教师在课堂教学中,如何有效地消除粉尘对教师的身体造成的不良影响,是一个亟待解决的问题。本文以51单片机为核心,实现并设计一种全自动黑板檫粉尘清除装置。由黑板擦上的压力传感器进行检测,由51单片机来控制吸尘器(吸尘风机),以完成清理。本系统的主要功能包括:压力检测、按键控制、灯光显示、电扇除尘等。本文在对国内外有关文献进行整理和归纳的基础上,首先介绍了全自动黑板檫粉尘清除装置的研制背景和研究意义,并结合国内外的研究情况,提出了本文的主要研究内容和系统的设计思路。接着,对系统的硬件电路进行了详细的设计,并编写了
187 0
|
API 数据处理
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
2022年十月份电赛OpenMV巡线方案(2)---主控代码详细分析
172 0
|
数据采集 定位技术
巧用千寻位置GNSS软件| 一文教会横断面测量
选择目标线路,点击【确定】,如图 5.8-4所示,设置是否自动选择断面、计算方式、 放样间隔和横断面法线长度(道路中线到横断面边点的距离)。点击【确定】进入放样界 面,如图 5.8-5所示。当线路垂距小于 3米时,在横断面两侧生成平行线,进入精准定位。 根据箭头方向提示和下状态栏中垂距和平距提示移动当前点,当当前点位于横断面上时,根 据工程要求进行横断面数据采集和放样。也可以通过上下键切换到相邻的横断面。
巧用千寻位置GNSS软件| 一文教会横断面测量
|
算法 安全 C++
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
279 0
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
|
芯片
复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
211 0
复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)