V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jtacm
V2EX  ›  Unreal Development Kit

有 UE4 大神没,想问个问题。

  •  
  •   jtacm · 2021-09-05 16:41:11 +08:00 · 2004 次点击
    这是一个创建于 1203 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在有这样一个需求,在 UE4 中有一个人脸,想通过程序代码获取人脸信息,然后调用 opencv/pytorch 模型,为此人脸添加滤镜。此滤镜为普通 2D 滤镜,即输入是 2D 图片,输出也是 2D 图片,比如我们手机自拍里常见的美白滤镜,眼镜变大滤镜等。

    现在此滤镜已经 ready,使用的是 opencv/pytorch,用 python 编写(当然也可以改为 c++),请问通过怎么样一种方式集成到 UE4 中去?由于滤镜是 2D 滤镜,所以仅要求贴完滤镜后的的人脸只对某一个特定 camera 投影 OK 就行。

    想询问下实现思路,感激不尽。 请大神们可以给点建议,即使不是 end to end solution 也行。

    第 1 条附言  ·  2021-09-05 20:06:39 +08:00
    其实我们想做的就是,把现成在手机自拍 app 里那种美白、大眼的各种滤镜,应用到 UE4 里的人物上。但是这种滤镜以往都是针对手机自拍 2D 图片的,作用到 UE4 里的 3D 人物上的话,只需要对其正对 camera 的摄像头投影生效就可以。
    12 条回复    2021-09-06 07:29:29 +08:00
    hs0000t
        1
    hs0000t  
       2021-09-05 16:50:15 +08:00 via Android
    不懂 UE4,感觉可以走 tcp 或者 http,给 py 模型套一层 web 服务器,监听本地高位端口
    jtacm
        2
    jtacm  
    OP
       2021-09-05 17:13:56 +08:00
    @hs0000t 感谢建议。
    走 web 服务有些额外开销,特别是近实时的场景,我更想把 opencv/pytorch 更 native 的集成到 UE4 中去贴脸。
    LifStge
        3
    LifStge  
       2021-09-05 17:39:46 +08:00
    需求有点模糊啊 不都是建模 shader 处理的么 啥应用场景呢 是采集摄像机 然后整合到 ue4 的场景里么 这样的话 跟 UE4 的东西关系也不大啊 不就是影视处理的那套流程么 对摄像机采集的图片直接处理 处理完后 贴进场景 还是说想对 UE4 里渲染的人物做处理呢 不用 shader 的方式的话 不也是将模型渲染到纹理 然后 2d 处理么 处理完后再帖进去
    loveour
        4
    loveour  
       2021-09-05 18:00:05 +08:00
    没太懂,如果是 C++,直接写个插件把代码集成进去不就可以了吗?或者直接集成在 UE4 的工程里也可以,但是这样不方便以后用在别的 UE4 项目里面。就是普通的 C++包含头文件调用接口呀,需要什么思路?
    jtacm
        5
    jtacm  
    OP
       2021-09-05 20:03:22 +08:00
    @LifStge 感谢。 我们是想对 UE4 里渲染好的人物做处理,人物已经在 UE4 里弄好,然后想用 opencv/pytorch 加一些效滤镜果上去。这些滤镜效果,是以人脸作为输入,然后输出大眼、美白后的人脸。就和我们在各类手机自拍 app 里的效果差不多,只不过是作用在 UE4 里的人物里,可能和 2D 纹理贴图还不同。请问还有啥思路?
    jtacm
        6
    jtacm  
    OP
       2021-09-05 20:06:09 +08:00
    @loveour 有这类插件的例子吗?其实我们想做的就是,把现成在手机自拍 app 里那种美白、大眼的各种滤镜,应用到 UE4 里的人物上。但是这种滤镜以往都是针对手机自拍 2D 图片的,作用到 UE4 里的 3D 人物上的话,只需要对其正对 camera 的摄像头投影生效就可以。
    YuriX
        7
    YuriX  
       2021-09-05 21:49:26 +08:00
    听起来滤镜像是 CPU 上的?那么只能从 RenderTarget 读回像素,然后转发到滤镜上了。处理完再传回来,写到纹理里面。弄个 postprocess 画到屏幕上。过程快不了,隔帧弄吧
    jtacm
        8
    jtacm  
    OP
       2021-09-05 22:16:58 +08:00
    @YuriX 滤镜需要过 pytorch 模型,是在 GPU 上跑。
    如果在 GPU 上,有什么特别的吗?
    lightjiao
        9
    lightjiao  
       2021-09-06 00:17:47 +08:00 via iPhone
    美颜滤镜这种需求在游戏开发中被称作相机后处理呀(虽然我不会写后处理
    future0906
        10
    future0906  
       2021-09-06 01:23:00 +08:00
    1.集成的话,opencv 可能简单点,直接当成一个插件一起编译到 UE4 就行。Pytorch 不确定集成方式,不知道有没有 C++接口。可以看看商城有没现成成的插件,没有的话可能要自己做。

    2.生成出来的图片主要看你要怎么用。直接在界面上显示平面图的话,用 slate 就行;如果要放在 3D 场景的话,要看你想怎么放;是作为纹理绑定到模型上还是直接作为一个面片(公告板)放到场景
    paopjian
        11
    paopjian  
       2021-09-06 02:11:52 +08:00 via Android
    opencv 好像自带神经网络了,不考虑把模型改成原生的吗
    root99527
        12
    root99527  
       2021-09-06 07:29:29 +08:00 via iPhone
    改成 c++的 inference 库即可,可以考虑使用 tensorrt,mnn,ncnn 等等
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2404 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.