婆罗门
精华
|
战斗力 鹅
|
回帖 0
注册时间 2015-1-15
|
楼主 |
发表于 2019-11-29 22:33
|
显示全部楼层
本帖最后由 Sza 于 2019-12-5 03:08 编辑
先下结论吧,这个程序还有些痛点似乎可以优化。解决的话,这个项目可以做到之前有人提到的 “4K分辨率+插帧+10bit”的视频离线输出,当然也可以配合madvr。
光流法给动画插帧效果可能没那么好,但是配真人电影之类的应该没问题。
可是视频预处理时间会很恐怖,现在batch_size设置为1时,1080p24fps格式的21秒视频把帧数提高为为48fps大概要11分30秒*。而且作者似乎忙别的项目去了,菜鸡我看别人教程折腾了几天还是没搞定
*注:这个时间是我修改过video_to_slomo.py后运行的结果,把原程序生成的jpg格式改为了生成png格式。
痛点1:目前推理时的batch_size设置似乎不起作用
下面的是我记录的视频处理时间
- #推理
- “测试视频信息:saga_test.mp4 h.264 8bit 1080p 24fps视频 码率10mb/s 时长21秒”
- 设备 batch_size大小 计算中间帧用时* 显存占用
- 本地计算机(2060super*1 & SATA SSD硬盘) 1 11分30秒 4.2GB
- 本地计算机(2060super*1 & SATA SSD硬盘) 2 11分25秒 6.8GB
- 本地计算机(2060super*1 & 虚拟内存盘) 1 11分22秒 4.2GB
- 云服务器(V100*1 & 云硬盘SSD) 1 10分23秒 4.2GB
- 云服务器(V100*1 & 云硬盘SSD) 2 10分29秒 7.2GB
- 云服务器(V100*1 & 云硬盘SSD) 3 10分35秒 10.1GB
- 云服务器(V100*1 & 云硬盘SSD) 4 10分41秒 12.1GB
- 云服务器(V100*1 & 云硬盘SSD) 8 11分06秒 22.9GB
- 云服务器(Tesla T4*1 & 云硬盘增强型SSD) 1 13分20秒 3.7GB
- *注:只计算GPU计算中间帧用时,不计算视频提取帧图像和图像合成视频的时间
复制代码 batch_size怎么改,速度都没区别。可能原因是虽然同时计算AB两个中间帧,但新生成的文件A其实是重复计算前一个流程的文件B的时间点(不确定)
而且修改了batch_size即使能输出中间帧,但到了99%左右就会报错(用未修改过的video_to_slomo.py也会出现):
- File "video_to_slomo_10bit.py", line 213, in <module>
- main()
- File "video_to_slomo_10bit.py", line 168, in main
- (TP(frame0[batchIndex].detach())).resize(videoFrames.origDim, Image.BILINEAR).save(os.path.join(outputPath, str(frameCounter + args.sf * batchIndex) + ".png"))
- IndexError: index 1 is out of bounds for dimension 0 with size 1
复制代码 我还不清楚为什么,慢慢找原因(会不会因为是我测试环境都用的是pytorch1.3和cuda10.1,和作者版本不同……不过下午折腾好久都没搞定旧版本环境
痛点2:训练数据集时GPU利用率不高
GPU云的V100的利用率就是忽上忽下,0%~100%波动,整体使用率大概在45%左右。就像是 https://zhuanlan.zhihu.com/p/53345706 中所说的现象,似乎是作者没有优化预加载和cpu多线程。我的本地计算机倒是CPU i5 8500负载78%,GPU负载65%~72%浮动,不知道哪里出的差别。我这种外行都不知道怎么去读代码,不知道什么时候能优化了。
大体上这两个痛点就是程序优化,一个是训练部分一个是推理部分。
其他还有些要注意的地方,比如说默认程序输出的是jpg,自己可以改png,输出视频的格式可以修改成x265 10bit,看别人反馈的帖子里train.py里的vgg16 = torchvision.models.vgg16() 那里似乎也可以补段代码,变为vgg16 = torchvision.models.vgg16(pretrained=True) 我不太确定
不过开源项目可能都只是提供想法实现吧,优化靠自己和雷锋了
还有个用10bit输出有颜色偏差的问题,我再查查原因。
生成的png图片转换成视频时,用yuv420、yuv422、yuv444采样都会有颜色偏差。是不是因为本身字幕组的视频就是压过的,再压一遍就……也不对,别的插帧软件至少8bit没问题吧
====================
2019/11/30:试了一下,可能是png不支持yuv,input和output全部设置为.jpg时,输出yuv420p10le的图像色彩才正确。如果想用png格式的话得搭配ffvhuff编码器,色彩空间是RGB_8bit,而不是x264或x265。。
- Stream #0:0: Video: hevc (libx265), yuv420p10le, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 120 fps, 1k tbn, 120 tbc
复制代码 上面的参数就当搞笑好了,因为我不会细调压制参数所以杂色不少,只是说可以输出这个规格了。
|
|