GPU加速型ECS的使用
因为在试用一个抠图Matting的应用的时候,在Modelarts里面有些不太对劲,生成的图像上好像是蒙了一层灰,而生成的视频有一些颜色的闪烁。所以自己使用ECS试一下。
购买了一个比较便宜在售的按需每小时三元五
购买时却说资源已售罄,所以选了一个六块多的。
看一下GPU:
第一步是yum安装python3。很不幸centos8官方源被下线了,所以得先小小的处理一下。python3-devel也安装上,免得安装av python模块时报python.h没有。
第二步是pip3安装Python需求库,先改一下镜像。
其中torch是比较大的有800多M
安装av出错了,因为这里对于ffmpeg是有一个依赖的。
yum里没有,所以编译安装ffmpeg,要加上enable-shared编译选项,还有要支持h264编码。所以先从gitee下载编译x264安装到/data/lib。
在此之前yum先安装好nasm,然后x264 lib安装好后,
export PKG_CONFIG_PATH=/data/lib/lib/pkgconfig/
然后配置ffmpeg,后编译安装
./configure --prefix=/data/ffmpeg --enable-shared --enable-libx264 --enable-gpl
安装好后
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/data/ffmpeg/lib/pkgconfig/
再pip3单独安装av试试,一起安装怕了,一个小包坏了一批包要重新安装
至此,安装pillow时又报错了:
The headers or library files could not be found for jpeg,
a required dependency when compiling Pillow from source.
安装开发库吧:yum install libjpeg-turbo-devel zlib-devel
至此是Python库都可以安装成功了。
哎,这时回过头去看了一下modelarts里的代码,
model = MattingNetwork('mobilenetv3').eval().cuda() # 或 "resnet50"(比较大)
#model.load_state_dict(torch.load('rvm_mobilenetv3.pth')) #这一行不知道什么时候被自己注释了
将第二行注释去掉,得出的抠图视频就很完美(运行前不用升级conda环境里的ffmpeg库)
一天忙到晚,总是会有这种顾头不顾腚的事情发生…惭愧,要反思啊
不过既然ECS都有了,就做到底吧
因为自己安装的FFMEPG库和x264库,运行之前,设置一下库路径,不然import av就要报错
export LD_LIBRARY_PATH=/data/ffmpeg/lib/:/data/lib/lib
运行成功,生成的mp4完美
代码:
import torch
from model import MattingNetwork
model = MattingNetwork('mobilenetv3').eval().cuda() # 或 "resnet50"
model.load_state_dict(torch.load('rvm_mobilenetv3.pth'))
from inference import convert_video
convert_video(
model, # 模型,可以加载到任何设备(cpu 或 cuda)
input_source='t1.mp4', # 视频文件,或图片序列文件夹
output_type='video', # 可选 "video"(视频)或 "png_sequence"(PNG 序列)
output_composition='t2.mp4', # 若导出视频,提供文件路径。若导出 PNG 序列,提供文件夹路径
output_video_mbps=4, # 若导出视频,提供视频码率
downsample_ratio=None, # 下采样比,可根据具体视频调节,或 None 选择自动
seq_chunk=2, # 设置多帧并行计算 默认为12
)
最后,总结一下操作:
- yum安装系统库:python38 python3-devel libjpeg-turbo-devel zlib-devel
- 手工配置编译安装x264, ffmpeg. 注意配置选项、环境变量PKG_CONFIG_PATH的设置
- pip3安装python库
- 运行前配置环境变量LD_LIBRARY_PATH
- 点赞
- 收藏
- 关注作者
评论(0)