# rgbface-reconstruction **Repository Path**: Talking-Face-Project/rgbface-reconstruction ## Basic Information - **Project Name**: rgbface-reconstruction - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-13 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RGB Face Reconstruction Project ## TODO list - [ ] 支持infer one file - [x] 支持infer batch files - [x] support VidTMIT dataset - [x] 修改manifest的生成,增加landmark,并且修改demo中的manifest,让其跑起来 ## 项目使用STEPS: ### (1) 安装环境 #### 1. 安装虚拟环境 ``` # use cuda 10.1, maybe 10.2 is also ok conda install pytorch torchvision cudatoolkit=10.1 -c pytorch conda install pillow opencv-python openmesh scipy ``` #### 2. 编译cuda_extension ``` cd src/utils/cuda_extensions python setup.py install (可能需要输入两遍) ``` ### (2) 处理数据 以数据集GRID为例, - 数据处理的代码在`../dataset/GRID/`文件夹下 - 在 [项目](https://gitee.com/Talking-Face-Project/audio-driven-talkingface-project]的`dataset`文件中 - 数据manifest的文件在 `data/GRID`文件夹下 - 原始数据在 `\mnt\data\DATA\GRID`文件夹下,(一般不与项目在一起) #### 0. 预处理数据集 ``` # 预处理数据集 bash ../dataset/GRID/run-10-preprocess.py # 提取每一个video的frame bash ../dataset/GRID/run-20-extract-frames.py ``` #### 1. 提取出landmark (使用dlib) ``` python ../dataset/GRID/run-21-extract-landmark.py ``` - 使用dlib对video中的每一个frame提取face rect + face landmark (68个点) - 分别存储在两个文件夹中 `landmk` 和 `landmk_bbox` - 在算法运行时,landmk_bbox 没有使用,而是对landmk重新计算了一个bbox - 这个bbox是三维的,分别是左上角坐标(x,y),以及rect的边长, - NOTE:这是个正方形rect,所以只需要一个边长 #### 2. 创建manifest文件(用于infer/train/validataion) ``` python examples/GRID/run-10-generate-manifest.py ``` - 由于数据较多,只生成了每个video的所有frame的path - 而对应的landmark path,则由程序中生成。 ### (3) infer 人脸重建 ``` bash examples/GRID/demo-10-infer.sh ``` in `src/infer.py` parameters: - dataroot表示数据存放路径, - name表示模型存放位置(model_save中), - test_batch_size表示测试时每个batch的大小, - num_threads表示线程, - epoch表示模型名称, - gpu_ids表示测试时用的GPU的ids, - 屏幕打印的内容会存放于log/log_test.txt。 infer之后的结果(代码见:src/rgb_face_learn.forward_backward()) - 在`rgbface/landmark_proj` 存储每一帧的render image的landmark - 在`rgbface/landmark_crop` 存储每一帧的crop image的landmrk - 在`rgbface/coeff` 存储重建之后的identity coeff 和 expression coeff - 在`rgbface/texture` 存储重建之后的texture ### (4)train xxxx ### (5)train xxxxx ### (6) 渲染 (TODO: 目前还没有check,先做参考) ``` bash examples/GRID/run-20-reconstruct-mesh.py ``` 将Coeff参数重建到ICT-FACE-model上 - 输入 是infer部分得到的coeff和texture - 输出 是头部模型 + 前脸纹理 --------------------------------------------------------------------------------------------