浅谈如何基于人像照片生成2D、3D虚拟形象(Photo-to-Avatar)
为什么写这样一篇文章?
近年来,元宇宙概念已经从娱乐、工作、文旅等多个方面偷偷溜进我们的生活,关于元宇宙的概念这里不做普及,相信看过《头号玩家》、《失控玩家》之类的电影,会让我们对元宇宙有了一些自己的想法,但首先都需要存在一个可以代替自己在元宇宙的虚拟形象。那么如何生成一个可以代表自己的虚拟形象就是一个问题。在已有的一些角色扮演等类型的游戏,或多或少能给我们一些答案,比如,先是仔细的“捏脸”,再选择发型、肤色、服饰等,没错,通过这些手段确实可以轻松地构建一个自己喜欢的虚拟形象,但如何能让角色有特点,或者说,如何能让角色更能代表自己呢?当然,通过上述的方法也是可以的,但是这往往是比较耗时耗力的,我们更希望这系统可以为我们自动、快速地生成具有自己特色虚拟形象。
从技术上如何实现——自动生成虚拟形象?
目前市场上已经有一些相关的应用,可以通过一张自己的照片自动地生成虚拟形象,并且用户可以在生成好的虚拟形象上进行修改,比如换个发型、配个喜欢的眼镜。接下来将简单分析一款应用,从而解析背后可能会用到的解决方案。
上图是一款应用官网宣传图,从图中我们可以发现女孩的一些特征:
- 性别:女
- 发型/发色:沙宣/黑色
- 服装:水手服
- 眼镜:未带眼镜
- ……
如果我们对目前市场上常见的人工智能应用比较了解,我们会知道通过机器学习、深度学习等手段是可以比较容易地把图片上的这些特征提取出来的。
从图二中左一形象我们可以看出,从发型和面部构造上看,她与图一是明显不同的虚拟形象,但是她们却穿了件一模一样的水手服(角度是不同的,但水手服的细节完全一模一样)
综上,我们可以大致总结出一个答案——她们都穿了一件来自系统的同一件水手服。从技术层面讲,虚拟形象自动创建的流程可能大致如下:
- 提取图片中人物特征,判断他的发型、脸型、是否带眼镜、眼镜是方的还是圆的……
- 基于人物特征进行匹配细节,比如,将光头、方眼镜、格子衬衫……组合起来(这前提需要系统中存在设计师们已经做好的,大量的衣服、发型、脸型等模型)
可能用到的技术、工具有哪些?
- web前端(用于用户上传图片,最终虚拟形象的展示及编辑,和其他的一些登陆交互操作)
- python+flask等服务框架(用于接受前端接收的图片并对其进行特征提取)
- sql(用户存放用户日志和创建好的模型参数,比如:光头、方眼镜、格子衬衫等)
- 建模工具(用于设计师们不断丰富更多的发型、服饰等模型)
结语
以上内容主要基于个人的理解和猜测,欢迎大家围观、讨论