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

简介: 阿里云提供的线上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能力结合函数计算进行中间件的开发心得与实战总结。不会公布源代码,但从基本原理到架构方式都会做较为细致的介绍。

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

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
存储 Docker 容器
企业实战(6)修改Harbor镜像仓库默认存储路径
企业实战(6)修改Harbor镜像仓库默认存储路径
1170 0
|
存储 SQL Cloud Native
深入了解云原生数据库CockroachDB的概念与实践
作为一种全球领先的分布式SQL数据库,CockroachDB以其高可用性、强一致性和灵活性等特点备受关注。本文将深入探讨CockroachDB的概念、设计思想以及实践应用,并结合实例演示其在云原生环境下的优越表现。
|
9月前
|
Java 关系型数据库 MySQL
基于springboot的二手物品交易系统
本研究聚焦二手交易平台的网络化转型,探讨其在社会经济快速发展背景下的必要性与意义。结合SpringBoot、Java、MySQL等技术,分析系统设计与实现路径,旨在提升平台管理效率、降低成本,推动二手交易向规范化、信息化发展,助力现代化服务体系建设。
|
6月前
|
SQL 关系型数据库 MySQL
击穿 MySQL 事务隔离级别:底层实现原理 + 生产级架构选型避坑指南
本文深度解析MySQL事务隔离级别,从SQL标准定义出发,结合InnoDB底层的MVCC、undo log、Read View与锁机制,详解脏读、不可重复读、幻读三大异常及4种隔离级别的实现差异,辅以可复现SQL示例与Spring Boot实战代码,提供生产环境选型指南与避坑方案。
423 1
|
6月前
|
消息中间件 关系型数据库 Java
击穿分布式事务痛点:BASE 理论全解,从最终一致性到柔性事务落地全指南
本文深入解析分布式事务核心理论BASE(基本可用、软状态、最终一致性),对比ACID差异,详解五大最终一致性模型,并结合本地消息表、TCC、SAGA等四种柔性事务方案,提供可落地的代码实例与避坑指南,助你平衡一致性与可用性。
995 1
|
5月前
|
人工智能 Linux 开发工具
AI写作为何一眼被识破?实战破解指南
AI写作常因破折号、学术套话、“总而言之”等痕迹被一眼识破。本文介绍两种去痕方案:一是ChatGPT专用提示词,强制主动语态、短句、具体案例,禁用AI高频词;二是Humanizer-zh技能,专为Claude等Agent设计,可识别21类AI特征,去除套路并注入人性与个性,附质量评分系统。(239字)
|
运维 数据挖掘 Windows
服务器数据恢复—服务器硬盘指示灯亮黄灯的数据恢复案例
服务器硬盘指示灯闪烁黄灯是一种警示,意味着服务器硬盘出现故障即将下线。发现这种情况建议及时更换硬盘。 一旦服务器上有大量数据频繁读写,硬盘指示灯会快速闪烁。服务器上某个硬盘的指示灯只有黄灯亮着,而其他颜色的灯没有亮的话,通常表示这块硬盘出现故障,这时候更换新硬盘同步数据即可。 如果没有及时发现硬盘损坏或者更换硬盘失败导致服务器崩溃,应该如何恢复数据呢?下面通过一个真实案例讲解一下服务器硬盘指示灯亮黄色的数据恢复案例。
1257 1
|
小程序 Java 关系型数据库
weixin049校园外卖平台设计与实现+ssm(文档+源码)_kaic
本文介绍了一款校园外卖平台的设计与实现过程。该平台采用Java的SSM框架进行后台管理开发,使用MySQL作为本地数据库,并通过微信小程序为用户提供便捷的操作界面。系统包括管理员、用户和商家三个角色,功能涵盖个人中心、用户及商家管理、菜品分类与信息管理、订单处理等。管理员可在浏览器上登录管理后台数据,用户与商家则通过微信小程序注册登录,分别实现订餐与菜品管理功能。此平台具备界面清晰、操作简单、功能齐全的特点,有助于提升校园外卖管理的效率与规范性。
|
XML 机器学习/深度学习 数据可视化
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
这篇文章介绍了如何通过界面化操作YOLOv5来完成数据集的自动标注,包括修改源码、自动标注的前期准备、开始自动标注、可视化标注效果以及将XML文件转换为YOLO训练所需的TXT格式。
1413 1
目标检测笔记(六):如何通过界面化操作YOLOv5完成数据集的自动标注
|
机器学习/深度学习 人工智能 运维
智能化运维:从传统到AIOps的转型之路####
本文探讨了智能化运维(AIOps)的兴起背景、核心价值及其对现代IT运维模式的深刻影响。通过分析传统运维面临的挑战,阐述了AIOps如何利用大数据、机器学习技术实现故障预测、自动化处理与决策支持,进而提升运维效率和服务质量。文章还概述了实施AIOps的关键步骤与面临的主要挑战,为组织向智能化运维转型提供参考路径。 ####