• Stars
    star
    473
  • Rank 92,832 (Top 2 %)
  • Language HLSL
  • License
    MIT License
  • Created about 5 years ago
  • Updated almost 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

游戏捏脸,基于神经风格迁移框架生成逼真人脸

基于神经网络捏脸

Reinferences

1.  Unity-2019.2.1f1
2.  python-3.5
3.  dlib-19.18
4.  numpy-1.15.4
5.  torch-1.1.0
6.  opencv-contrib-python 3.4.0.12
7.  tqdm-4.23.4
8.  argparse-1.4.0
9.  scipy-1.0.1
10. tensorboardX

论文

网易的研究者提出了一种游戏角色自动创建方法,利用 Face-to-Parameter 的转换快速创建游戏角色,用户还可以自行基于模型结果再次进行修改,直到得到自己满意的人物。此项目按照论文里的描述建立。

Face-to-ParameterTranslationforGameCharacterAuto-Creation

引擎预览

打开Unity, 点击菜单栏Tools->Preview, 通过此工具可以手动去捏脸。当然, 此项目是通过神经网络生成参数params。

Database

打开Unity, 点击菜单栏Tools->GenerateDatabase

点击generate按钮之后,在export目录会生成两个文件夹trainset和testset, 分别用作训练集和测试集。 勾选trainset noise之后,trainset随机生成的噪点大概是1/95。

这里引擎最大随机生成10000张图片, 其中80%用作训练集。同时在图片同目录会生成二进制文件db_description,记录捏脸相关的参数,作为imitator输入的参数。

生成图片分辨率:512x512, 不同的是使用Unity引擎代替论文里的Justice引擎。

脸部对齐 - Face alignment

对于输入图片,通过此工具dlib进行脸部截取。

pip3 install dlib

或者使用conda安装

conda install -c menpo dlib

dlib 引用模型下载地址:

http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2

LightCNN

light_cnn出自2016 cvpr吴翔A Light CNN for Deep Face Representation with Noisy Labels,light_cnn优势在于一个很小的模型和一个非常不错的识别率。论文里使用LightCNN用于生成256 demonsion 信息,进而得到Loss函数L1, 即Discriminative Loss, 衡量引擎生成的图片和Imitator生成的图片差异。

训练好的模型下载连接:

google driver: LightCNN-29 v2

baidu yun: LightCNN-29 v2

人脸分割

论文里使用人脸分割,提取局部面部特征, 从而计算Facial Content Loss, 下面列出了我网上找到相关的人脸分割的相关介绍和数据集。

  1. 介绍

    图像解析与编辑[中国科学院信息工程研究所网络空间技术实验室ppt]: https://pan.baidu.com/s/1FYznfGG914pPaU5bs0-4dw

  2. 数据集

    helen_small4seg

    https://share.weiyun.com/5Q9ST03 密码:ndks4g

不同于论文里使用的resnet50,此项目引用的模型是BiSeNet

预训练model: https://pan.baidu.com/s/1AEc7CJGirsdxOouD3boRBQ

下载后存放在face-parsing.PyTorch/res/cp 目录下

最后的效果如图:

Operation

训练 train

进入git 下载目录, 按照下面命令就可以train, 训练的时候每隔100步会生成preview 图片,实时查看训练结果; 每隔500步就会保存下当前模型, 保存在model文件夹下

cd /path/to/workdir

cd neural/

mkdir dat/

# 这里需要将下载的lightcnn, dlib等模型拷贝过来
copy yours_download_model_path data/

python3 main.py \
	--phase=train_imitator \
	--batch_size=4 \
	--learning_rate=0.01 \
	--total_steps=30000	\
	--prev_freq=100	\
	--save_freq=500	\
	--path_to_dataset="../export/trainset_female/"

# 开启tensorboard 查看graph运行情况
tensorboard --logdir logs

最后训练得到的效果如下图:

(上图是左上角是参考图,右上角是imitator生成图,左下角是生成图的脸部语义切割图, 右下角是部位边缘图)

reinference

如果因为中间因为偶然因素(比如说断电)退出了训练, 又想从之前保存的model中恢复出来, 这时候可以先把model里的模型文件copy到reinference目录, 然后执行下面命令:

python3 main.py \
	--phase=inference_imitator	\
	--total_steps=30000	\
	--path_to_dataset="../export/trainset_female/" \
	--imitator_model="model_imitator_100000.pth"
imitator pretrained model:

https://pan.baidu.com/s/1qDRPAzn3m9VxX2Z-oENBWQ

train中的效果参考视频:

https://youtu.be/FKJ-rvXS39U

https://www.bilibili.com/video/av76020308/

preview

效果预览, 生成捏脸参数二进制文件

python3 main.py \
	--phase=evaluate \
	--total_eval_steps=1000 \
	--imitator_model="model_imitator_100000.pth" \
	--eval_image='../export/testset_female/db_0000_4.jpg'

运行脚本后, 会在output/eval目录生成一个eval.bytes, 然后打开unity, 菜单栏tools->SelectModel, 即可在引擎预览到效果

More Repositories

1

knead_proj

游戏中捏脸的实现
C#
443
star
2

LipSync

LipSync for Unity3D 根据语音生成口型动画 支持fmod
CMake
380
star
3

seqence

剧情-技能编辑器
C#
223
star
4

terrain_proj

unity 大地形切割、加载、AB
C#
211
star
5

unity_pose3D

Unity中还原抖音视频的动作
Python
175
star
6

pbr_proj

Shader of PBR for Unity
C#
113
star
7

lod

unity中lod分级减面工具SimplyGon, lod预览工具
C#
81
star
8

game_net

Unity游戏和C++服务器 socket通信demo, 数据格式采用google protobuf
C++
65
star
9

hud

游戏血条
C#
62
star
10

timeline

timeline of unity2019
C#
55
star
11

OpenGLEngine

基于OpenGL实现的渲染引擎
C++
52
star
12

batch_build

shell 自动化出包&补丁持续集成工具 适用于unity平台 Jenkins依赖脚本
CMake
37
star
13

Parabola

游戏中用于生成抛物线的编辑器, 如炮弹等投射物的轨迹, 不到100行代码
C#
33
star
14

MultipeerConnectivity

集成wifi、蓝牙直连的端对端unity的sdk, 类似于苹果设备上的airdrop,不需要中转服务器通信
Java
32
star
15

ai_bird

强化学习-游戏AI Trainning
C#
30
star
16

game_sdk

Unity游戏接入外部sdk框架
C#
29
star
17

ConnectPy

unity 和 Python TCP/UDP 通信
Python
24
star
18

ulua_proj

为你的游戏定制lua, 升级ulua底层库到lua53, 彻底地解决你的烦恼
C
23
star
19

nnStyle

a neural network style transfer for video game
Python
21
star
20

ibl_proj

在Unity中实现 LearnOpenGL中公式实现的 PBR 渲染, 包含生成辐射度贴图、预滤波环境贴图、镜面brdf积分贴图
HLSL
18
star
21

watermark

去除抖音、微视水印的脚本工具
Python
17
star
22

ray_tracing

gpu-ray-tracing-in-unity implements by three-eyed-games
C#
17
star
23

Astc

unity 使用原生astc兼容性和性能测试
CMake
15
star
24

video-face-recognition

视频人脸识别
Python
12
star
25

Variants_Proj

Unity 中Shader 和ShaderVariantCollection 生成 Assetbundle 案例测试
C#
10
star
26

game_pb

unity 集成c++ protobuf
C++
10
star
27

Vertex-Animation

C#
9
star
28

WebCam

支持Unity中的WebCameraTexture访问Android原生层Camera2的能力, 比如说变焦、曝光度、ISO等参数
Java
9
star
29

AREngineDemo

AREngine background rendering for URP
C#
8
star
30

swig

自动化导出c++各个平台库
C#
7
star
31

reverse-onepiece

破解《航海王燃烧之血》
Python
4
star
32

wx

微信小程序
JavaScript
2
star
33

SideScroll

使用UE5复现类似马里奥效果小游戏-youtube
2
star
34

huailiang.github.io

huailiang blog
JavaScript
1
star
35

lgRenderEngine

soft render engine based on SDL2
C
1
star