TianZerL / Anime4KCPP

A high performance anime upscaler
GNU General Public License v3.0
1.79k stars 137 forks source link

这个框架可以在iOS app上使用么? #57

Open zhengguangkuo opened 3 years ago

zhengguangkuo commented 3 years ago

请教一下,我开发了一款iOS的播放器,是否可以把你这个框架引入进去,实现iOS app上的播放器实时超分画质增强?

TianZerL commented 3 years ago

移动端实时处理性能不一定够,IOS也不一定支持OpenCL。可以考虑基于OpenGL的shader做。

zhengguangkuo commented 3 years ago

OpenGL的shader和filter我有尝试过,效果不太满意。 我有两个疑问,1.我看介绍讲Android上已经实现视频实时处理,Android上性能是否够用?2、iOS目前虽然使用metal渲染,但是目前还是支持OpenCL,如果不考虑以后不支持OpenCL的风险,同时也不考虑处理性能问题,iOS上能否使用您这个库实现超分能力?

TianZerL commented 3 years ago

安卓上只是可以处理视频而已,实时应该还不行,你可以看readme里的跑分,一般50分以上才能实现480p->960p的实时处理,这里有提到。性能的瓶颈我认为出在内存和显存数据传输速度上,除了使用shader,使用GPGPU框架难免需要在显存和内存间拷贝数据,而安卓的OpenCL实现在这方面是比较差的,导致实际速度和GPU的理论算力差距大。 至于IOS能不能用,IOS可以调C++库,有opencv,opencl库就能用,但效果就没法保证了。

TianZerL commented 3 years ago

855的Adreno 640理论算力应该有800G以上了,然而这被2500U这块4C8T的笔记本CPU压一头的跑分实在是让人大跌眼镜,而2500U的vega8算力1.2t,但是配合2400mhz双通道内存,综合下来的实际性能却是Adreno 640的15倍。

zhengguangkuo commented 3 years ago

看来目前移动端的实时超分确实还有困难,感谢您的解答!

TianZerL commented 3 years ago

我尝试加入了腾讯ncnn框架,对arm架构有专门优化,你可以试试。

FrankyCao commented 3 years ago

我尝试加入了腾讯ncnn框架,对arm架构有专门优化,你可以试试。

ncnn对比直接用opencl,在arm架构上面内存和显存交换上性能要更好吗?

TianZerL commented 3 years ago

@FrankyCao 都那样,安卓上GPU跑OpenCL可能还不如CPU跑neon指令集快。而直接用OpenCL比ncnn的vulkan性能在桌面GPU上快3-4倍。我暂时没有测试过Anime4KCPP的ncnn后端在移动端的性能,我猜测会出现CPU比GPU快的情况,并且应该无法实时处理。
在高通骁龙855上,用最新的使用Eigen3库优化过的CPU后端在开启neon指令集编译的情况下,480P->960P能跑到接近6FPS,而855的GPU则是只能到接近4FPS。IOS设备CPU和GPU都更强,估计性能会好不少。