将source image中的人脸换到target image上。
-
roop pipeline概述
首先用人脸检测模型检测source image和target image中的人脸,并分析人脸特征;然后抠出source人脸和target人脸,给到inswapper完成换脸再贴到target image上。人脸修复是一项可选的后处理,本仓库中使用的是codeformer模型。
cd roop_face
- 安装必要的包:
pip3 install torch torchvision opencv-python-headless flask==2.2.2 insightface onnxruntime gradio
- 下载tpu-perf包, 并安装
pip3 install tpu-perf*.whl
。 - [下载bmodel文件](链接:https://pan.baidu.com/s/10wUMZdAb23bHsSbP9dCNDw?pwd=670n 提取码:670n),然后在项目根目录建立
bmodel_files
,解压(tar xzvf bmodel_files.tar.gz
)并把bmodel文件放进去。 - [下载权重文件](链接:链接:https://pan.baidu.com/s/1NQDbE-O2VWVUCo0aUNC4sQ?pwd=hppi 提取码:hppi ),解压后的onnx文件放roop_face/weights/models/buffalo_l/下。
python demo_app.py
,启动完成后终端会显示端口号,浏览器访问盒子ip:端口号
即可。
python3 app_roop.py
,启动完成后服务在7019端口。
- 请求方法:POST
- 请求体
- source_img (必填): 源图片的Base64编码字符串。
- target_img (必填): 目标图片的Base64编码字符串。
- payload (可选): 额外的参数,具体内容待定。
- 请求示例
{ "source_img": "base64_encoded_source_image", "target_img": "base64_encoded_target_image", "payload": "additional_parameters_if_needed" }
- 响应
- ret_img: 包含target_image换脸后图片的Base64编码字符串。
- message: 操作成功或失败的提示信息。
- 响应示例
{ "ret_img": ["base64_encoded_face_swapped_image"], "message": "success" }
- 请求方法:POST
- 请求体
- image (必填): 待增强图片的Base64编码字符串。
- restorer_visibility (可选): 增强效果的可见度,默认值为1.0。
- payload (可选): 额外的参数,具体内容待定。
- 请求示例
{ "image": "base64_encoded_image", "restorer_visibility": 0.5, // 可选,调整增强效果的可见度 "payload": "additional_parameters_if_needed" // 可选 }
- 响应
- ret_img: 包含增强后图片的Base64编码字符串。
- message: 操作成功或失败的提示信息。
- 响应示例
{ "ret_img": ["base64_encoded_enhanced_image"], "message": "success" }