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

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
函数计算FC,每月15万CU 3个月
简介: 阿里云提供的线上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 架构模式
目录
相关文章
|
11月前
|
前端开发 芯片
【芯片前端】保持代码手感——不重叠序列检测
【芯片前端】保持代码手感——不重叠序列检测
|
IDE 开发工具 C语言
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)
756 0
|
存储 安全 数据安全/隐私保护
骚操作:隐藏代码到数据区,函数指针【滴水逆向三期37笔记】
骚操作:隐藏代码到数据区,函数指针【滴水逆向三期37笔记】
|
数据采集 定位技术
巧用千寻位置GNSS软件| 一文教会横断面测量
选择目标线路,点击【确定】,如图 5.8-4所示,设置是否自动选择断面、计算方式、 放样间隔和横断面法线长度(道路中线到横断面边点的距离)。点击【确定】进入放样界 面,如图 5.8-5所示。当线路垂距小于 3米时,在横断面两侧生成平行线,进入精准定位。 根据箭头方向提示和下状态栏中垂距和平距提示移动当前点,当当前点位于横断面上时,根 据工程要求进行横断面数据采集和放样。也可以通过上下键切换到相邻的横断面。
巧用千寻位置GNSS软件| 一文教会横断面测量
|
机器学习/深度学习 算法
【OpenVI—视觉生产系列之视频插帧实战篇】几行代码,尽享流畅丝滑的视频观感
随着网络电视、手机等新媒体领域的快速发展,用户对于观看视频质量的要求也越来越高。当前市面上所广为传播的视频帧率大多仍然处于20~30fps,已经无法满足用户对于高清、流畅的体验追求。而视频插帧算法,能够有效实现多倍率的帧率提升,有效消除低帧率视频的卡顿感,让视频变得丝滑流畅。配合其它的视频增强算法,更是能够让低质量视频焕然一新,让观众享受到极致的播放和观看体验。
575 0
【OpenVI—视觉生产系列之视频插帧实战篇】几行代码,尽享流畅丝滑的视频观感
|
存储 定位技术 数据格式
巧用千寻位置GNSS软件| 电力线勘测如何实现?
正如大家所知,电力线勘测是在做电力线路设计之前对设计线路沿途自然环境进行勘察测量,最后把手簿测量数据在电脑端经过转换输出为电力软件专用格式数据的专用功能。 那么在千寻位置GNSS软件中该如何操作完成电力线的勘察测量呢?
|
算法 安全 C++
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
264 0
科学家小蓝来到了一个荒岛,准备对这个荒岛进行探测考察。 小蓝使用了一个超声定位设备来对自己进行定位。为了使用这个设备,小蓝需要在不同的点分别安装一个固定的发射器和一个固定的接收器。小蓝手中还有一个移
|
芯片
点阵---点亮一个点(内含硬件设计+软件编程+思路)
点阵---点亮一个点(内含硬件设计+软件编程+思路)
123 0
点阵---点亮一个点(内含硬件设计+软件编程+思路)
|
计算机视觉 开发者
程序人生 - 游戏帧数很高,为什么还是会卡顿?(二)
程序人生 - 游戏帧数很高,为什么还是会卡顿?(二)
275 0
程序人生 - 游戏帧数很高,为什么还是会卡顿?(二)