摘要: 为了不便小伙伴们进行视频场景的 AI 利用开发,Modelarts 推理平台将视频推理场景中一些通用的流程抽取进去预置在根底镜像中,小伙伴们只须要简略地编写预处理及后处理脚本,便能够像开发图片类型的 AI 服务一样开发视频类型的 AI 服务了。
本文分享自华为云社区《在 Modelarts 平台上进行视频推理》,原文作者:HW007。
相熟 Modelarts 推理的小伙伴都晓得,在 Modelarts 平台上能够通过简略地定制模型的预处理、推理及后处理脚本,就能够轻松的部署一个 AI 服务,对图片、文本、音视频等输出进行推理。然而对于视频类型的推理,之前须要用户在本人的脚本中进行视频文件下载、视频解码、并本人将解决后的文件传到 OBS 中。为了不便小伙伴们进行视频场景的 AI 利用开发,Modelarts 推理平台将视频推理场景中一些通用的流程抽取进去预置在根底镜像中,小伙伴们只须要简略地编写预处理及后处理脚本,便能够像开发图片类型的 AI 服务一样开发视频类型的 AI 服务了。
一、总体设计阐明
提取视频场景的通用推理流程如下:
如上图,视频解决场景的流程可分为“视频源输出”、“视频解码”、“预处理”、“模型推理”、“后处理”、“推理后果输入”六个局部。其中“视频源输出”、“视频解码”、“推理后果输入”三个灰色的局部 Modelarts 曾经提前准备好。“预处理”、“模型推理”、“后处理”三个局部可由用户自在定制,具体定制办法如下:
1)定制模型:Modelarts 曾经提供好模型加载的办法,用户只须要将本人“saved_model”格局的模型搁置到指定的 model 目录即可。
2)定制预处理:Modelarts 会将解码后的视频帧数据提供给用户,用户只需通过重写“customize_service.py”中“VideoService”类的静态方法“_preprocess”便好,“_preprocess”函数的入参以及对出参的束缚如下:
3)定制后处理:Modelarts 会将模型推理后的输入及解码后的视频帧数据提供给用户,用户只需通过重写“customize_service.py”中“VideoService”类的静态方法“_postprocess”便好,“_postprocess”函数的入参以及对出参的束缚如下:
二、Demo 体验
1)下载本文附件,如下图,附件提供了一个已调试 OK 的视频推理模型包“model”文件夹,同时也提供了基于 tox 框架写好的验证用例,供用户线下调试本人模型包是否 OK。
2)将附件包中的“model”文件夹传到华为云 OBS 中。
将附件包中的“test/test_data/input”、“test/test_data/output”文件夹放到华为云 OBS 与之前“model”文件夹搁置同级的目录下。
3)导入模型:在 Modelarts 导入模型界面,抉择从 OBS 导入,抉择方才传到 OBS 中的 model 目录。如下图所示:
按上面操作配置好模型的各个配置后点击创立模型:
能够看到模型创立胜利:
4). 部署服务,将上述模型部署为在线服务,部署中要抉择有 GPU 的资源节点(公共池和专属池都能够):
能够看到服务曾经部署胜利:
5)创立作业:在服务界面抉择创立作业
抉择输出视频,选到步骤 2)中上传到 OBS 中的 input 文件夹中的视频文件如下:
抉择输入门路,选到步骤 2)中上传到 OBS 中的 output 文件夹如下:
6)期待视频解决实现:
查看 OBS 中的 output 文件夹,可看到视频已被拆成图片后的推理后果了。
7)用户依据本人须要,更换 model 文件夹下的“saved_model”格局的模型文件,并批改“customize_service.py”中的“_preprocess”和“_postprocess”函数来实现本人的业务逻辑。批改完后能够先运行“test/run_test.sh”来提前验证下批改后的模型包是否能失常推理,待线下调试好,可失常推理后再按上述步骤将模型包提交到 OBS 中部署成 Modelarts 服务。
其中,视频推理的模型包要求如下:
模型包构造要求:
└── model
├── config.json(必须,Modelarts 推理相干的配置文件)
├── customize_service.py(必须,推理文件)
├── saved_model.pb(必须,SavedModel 格局的模型文件)
└── variables(必须,SavedModel 格局的模型文件)
├── variables.data-00000-of-00001
└── variables.index
其中 config.json 文件的格局遵循 Modelarts 的标准,https://support.huaweicloud.c…
目前,只有 tensorflow 的“tf1.13-python3.7-gpu-async”runtime 反对视频推理,即 config.json 文件中的 ”model_type” 字段必须为 ”TensorFlow”, “runtime” 字段必须为 “tf1.13-python3.7-gpu-async”。
“customize_service.py”文中必须有一个“VideoService”类,“VideoService”类必须有两个静态方法“_preprocess”和“_postprocess”,相应的函数签名束缚如下:
点击关注,第一工夫理解华为云陈腐技术~