
人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载导读本文以 PaddleFormers 仓库中 prnet 模块 的官方文档为主体系统讲解如何通过 PaddleHub 使用 PRNPosition Map Regression Network完成 3D 人脸重建、密集人脸对齐以及脸部纹理编辑含局部纹理替换与全脸换脸两种模式。读完本文你将掌握hub install、hub run、Python API 调用与服务化部署的完整链路并理解该模块从人脸检测、位置图回归到纹理渲染的底层实现原理。一、模型基本信息prnet 模块的基础信息如下表所示模型名称prnet类别图像 - 图像生成网络PRN数据集300W-LP是否支持 Fine-tuning否模型大小154MB最新更新日期2021-11-20数据指标-PRNetJoint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network提出了一种同时重建 3D 人脸结构并完成人脸对齐的方法可应用于人脸对齐、3D 人脸重建、脸部纹理编辑等任务。该模块在此基础上引入了脸部纹理编辑能力将参考图像ref的脸部纹理转移到原图像source上例如把参考图中的人脸贴到原图对应位置或仅替换眼部等局部区域的纹理。该模块的完整说明与源码位于 modules/image/image_processing/prnet/其中 module.py 定义了对外 APIapi.py 实现了 PRN 网络封装。二、安装与环境准备1. 环境依赖prnet 模块依赖两个核心 Python 库见 requirements.txtdlib用于人脸检测。在 api.py 中模块通过dlib.cnn_face_detection_model_v1加载mmod_human_face_detector.dat模型完成人脸检测这也是调用PRN(is_dlibTrue)的前提。scikit-image用于图像读取与仿射变换warp、estimate_transform等。2. 安装模块在已安装 PaddlePaddle 与 PaddleHub 的环境中执行$ hub install prnet如安装过程中遇到问题可参考仓库内的零基础安装文档零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装三、模型 API 预测1. 命令行预测安装完成后可通过命令行直接完成脸部纹理编辑$ hub run prnet --source /PATH/TO/IMAGE1 --ref /PATH/TO/IMAGE2--source待转换的原图像路径--ref提供脸部纹理的参考图像路径。命令行参数的完整定义与解析逻辑见 module.py除上述两个必填输入外还支持--mode0 表示局部纹理1 表示整个脸默认 0、--use_gpu、--output_dir默认swapping_result、--visualization等配置项。关于 PaddleHub 命令行指令的通用说明可参考 PaddleHub 命令行指令文档。2. 预测代码示例import paddlehub as hub module hub.Module(nameprnet) source_path /PATH/TO/IMAGE1 ref_path /PATH/TO/IMAGE2 module.face_swap( paths[{source: source_path, ref: ref_path}], mode0, output_dir./swapping_result/, use_gpuTrue, visualizationTrue)执行后结果以output_0.png形式保存到output_dir目录可同时传入多组source/ref输出依次命名为output_0.png、output_1.png……。3. face_swap API 详解def face_swap(self, imagesNone, pathsNone, mode0, output_dir./swapping_result/, use_gpuFalse, visualizationTrue):功能脸部纹理编辑 API将参考图像的脸部纹理转移到原图像上。参数说明images (list[dict])图像数据列表每个元素是一个 dict包含source (numpy.ndarray)待转换的图像shape 为[H, W, C]BGR 格式ref (numpy.ndarray)参考图像shape 为[H, W, C]BGR 格式。paths (list[dict])图像路径列表每个元素是一个 dict包含source (str)待转换图像的路径ref (str)参考图像的路径。mode (int)可选参数0 表示改变局部纹理1 表示改变整个脸output_dir (str)结果保存路径use_gpu (bool)是否使用 GPU 进行推理visualization (bool)是否将结果保存到本地文件夹。从 module.py 的实现可以看到几个关键细节方法内部会先执行paddle.disable_static()并根据use_gpu通过paddle.set_device选择gpu:0或cpu作为计算设备传入images或paths任一即可两者都为空时会提示并直接返回两者同时传入时按images优先处理BGR 输入会先做通道反转[:, :, ::-1]转为 RGB 送入网络输出时再反转回 BGR 后写盘。四、两种纹理编辑模式的工作原理mode参数决定了纹理编辑的粒度其核心逻辑实现在 module.py 的texture_editing方法中整体流程可分为三步3D 重建提取纹理 → 纹理编辑 → 渲染回原图。1. 3D 重建位置图回归与顶点提取对输入图像调用prn.process(image)得到 3D 位置图position mappos再通过prn.get_vertices(pos)得到稠密顶点云。其中PRN.process在 api.py 中实现先使用 dlib 检测人脸边界框若检测不到人脸会打印warning: no detected face并返回None随后通过相似变换将人脸区域裁剪缩放至256 × 256送入网络回归位置图最后再仿射变换回原始图像坐标系位置图回归由 predictor.py 中的PosPrediction完成其底层网络为 pd_model/x2paddle_code.py 中由 X2Paddle 转换得到的TFModelResNet 风格残差卷积网络模型参数从pd_model/model.pdparams加载输出乘以MaxPos resolution_inp * 1.1还原真实坐标UV 相关数据uv_kpt_ind.txt、face_ind.txt、triangles.txt在 api.py 中加载face_ind对应位置图中的有效顶点索引triangles定义了网格三角面片。2. 纹理编辑mode0 局部 / mode1 全脸mode0局部纹理加载Data/uv-data/uv_face_eyes.png与uv_face.png做差得到眼部掩膜eye_mask然后仅将参考图像的眼部纹理融合到原纹理上new_texture texture * (1 - eye_mask) ref_texture * eye_mask。这一模式适合数据增强、自拍编辑等只改动局部五官的场景mode1全脸换脸直接用参考图像的纹理作为新纹理new_texture ref_texture实现整张脸部的纹理替换。3. 渲染与无缝融合编辑后的纹理通过 utils/render.py 中的render_texture函数渲染回原图像该函数基于 z-buffer 算法逐三角形计算深度并做遮挡判断将顶点颜色光栅化到二维图像。随后使用cv2.seamlessClone进行 Poisson 无缝克隆cv2.NORMAL_CLONE保证编辑区域与原图在光照、肤色过渡上自然融合避免明显的拼接痕迹。五、服务化部署PaddleHub Serving 可以将 prnet 部署为一个在线图像处理服务默认端口8866。第一步启动 PaddleHub Serving$ hub serving start -m prnetNOTE如需使用 GPU 预测请在启动服务前设置CUDA_VISIBLE_DEVICES环境变量仅使用 CPU 时无需设置。第二步发送预测请求服务启动后通过 HTTP POST 请求即可完成在线推理。服务端收到请求后会由 module.py 中标注serving的serving_method处理先将 base64 编码的图像通过base64_to_cv2解码见 util.py再调用face_swap完成纹理编辑。import requests import json import base64 import cv2 def cv2_to_base64(image): data cv2.imencode(.jpg, image)[1] return base64.b64encode(data.tostring()).decode(utf8) # 发送 HTTP 请求 data { images: [{ source: cv2_to_base64(cv2.imread(/PATH/TO/IMAGE1)), ref: cv2_to_base64(cv2.imread(/PATH/TO/IMAGE2)) }] } headers {Content-type: application/json} url http://127.0.0.1:8866/predict/prnet/ r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 打印预测结果 print(r.json()[results])说明原文档的请求示例中遗漏了cv2的导入本文示例已补齐import cv2确保代码可直接复制运行。请求体中的images列表结构与face_swap的images参数一一对应即每个元素为包含source、ref两个关键字均为 base64 编码图像的 dict。六、更新历史1.0.0初始发布$ hub install prnet1.0.0七、常见问题与使用提示多人脸图像在 api.py 中process只取 dlib 检测到的第一张人脸注释明确假设每张输入图像只包含一张脸。因此对多人合照进行纹理编辑时只会处理检测到的第一张人脸建议先裁剪出单张人脸再调用。人脸检测失败若图像中检测不到人脸process返回None后续顶点提取与渲染会受影响请确保输入图像包含清晰、正对镜头的人脸。GPU 使用无论是命令行、Python API 还是 Serving 部署都可以通过use_gpu参数或CUDA_VISIBLE_DEVICES环境变量启用 GPU 推理以显著加速 dlib 检测与网络前向计算。图像格式通过 Python API 传入 ndarray 时需注意 BGR 格式约定与 OpenCV 一致通过paths传入文件路径时模块内部会自动读取并处理。模型不支持 Fine-tuningprnet 仅提供推理能力若需在自有数据上训练 3D 人脸重建模型需参考 PRN 原论文Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network自行实现训练流程。结语prnet 模块以 PRN 网络为核心将 3D 人脸重建、密集对齐与纹理编辑整合为一个开箱即用的 PaddleHub 模块。借助命令行、Python API 与 Serving 三种调用方式开发者可以在几行代码内实现局部五官替换、全脸换脸等实用功能其源码中的位置图回归、z-buffer 渲染与 Poisson 无缝融合实现也为深入理解基于 3D 人脸的图像编辑技术提供了完整参考。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleHub 人脸属性编辑实战基于 AttGAN 的 attgan_celeba 模块使用指南PaddleHub 人脸属性编辑实战基于 AttGAN 的 attgan_celeba 模块使用指南 本指南以 PaddleFormers 仓库中的 attg人工智能大模型微调模型推理服务PaddleFormers 中的 stargan_celeba 人脸属性编辑 PaddleHub 模块STGAN 原理、安装与推理实战PaddleFormers 中的 stargan_celeba 人脸属性编辑 PaddleHub 模块STGAN 原理、安装与推理实战 导读 stargan_人工智能大模型微调模型推理服务PaddleHub stgan_bald 模块实战基于 STGAN 与 CelebA 的人脸秃头效果生成指南PaddleHub stgan_bald 模块实战基于 STGAN 与 CelebA 的人脸秃头效果生成指南 导读 stgan_bald 是 PaddleHu人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考