十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PaddleFormers 实战指南:使用 PaddleHub 部署 ultra_light_fast_generic_face_detector_1mb_320 超轻量人脸检测模块

PaddleFormers 实战指南:使用 PaddleHub 部署 ultra_light_fast_generic_face_detector_1mb_320 超轻量人脸检测模块 人工智能大模型微调模型推理服务【免费下载链接】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 仓库中的人脸检测模块ultra_light_fast_generic_face_detector_1mb_320系统讲解基于 Ultra-Light-Fast-Generic-Face-Detector-1MB 网络的超轻量实时人脸检测方案从环境安装、命令行与 Python API 预测、结果解析到基于 PaddleHub Serving 的在线服务部署并深入对应源码剖析预处理、推理与后处理的完整调用链。读完本文你将掌握如何在低算力设备如 ARM 端场景下用 2.6MB 的轻量模型快速完成人脸检测与线上化部署。一、模块基本信息项目内容模块名称ultra_light_fast_generic_face_detector_1mb_320类别图像 - 人脸检测网络Ultra-Light-Fast-Generic-Face-Detector-1MB数据集WIDER FACE 数据集是否支持 Fine-tuning否模型大小2.6MB最新更新日期2021-02-26数据指标-该模块面向边缘计算设备或低算力设备如使用 ARM 进行推理设计是一款实时、超轻量级的通用人脸检测模型可在低算力设备上实现通用场景的人脸检测推理。模型预训练数据集为 WIDER FACE支持直接预测预测时会将输入图片统一缩放为320 × 240这也是模块名中320的由来。由于是纯粹的检测模型而非分类网络该模块不支持 Fine-tuning。模块元信息定义在源码 module.py 中通过moduleinfo装饰器注册moduleinfo( nameultra_light_fast_generic_face_detector_1mb_320, typeCV/face_detection, authorpaddlepaddle, author_emailpaddle-devbaidu.com, summaryUltra-Light-Fast-Generic-Face-Detector-1MB is a high-performance object detection model ..., version1.2.0) class FaceDetector320: ...二、环境依赖与模块安装1. 环境依赖paddlepaddle 1.6.2底层深度学习框架负责模型推理执行paddlehub 1.6.0模块管理与预测框架提供hub命令行工具。PaddleHub 的安装方式可参考仓库文档 安装指南。不同平台的基础环境搭建参见 Windows 快速开始、Linux 快速开始 与 Mac 快速开始。2. 安装模块$ hub install ultra_light_fast_generic_face_detector_1mb_320hub install会从 PaddleHub 模型仓库下载模块并完成本地注册。如需安装指定历史版本可显式指定版本号$ hub install ultra_light_fast_generic_face_detector_1mb_3201.2.0三、模块 API 预测1. 命令行预测使用hub run命令通过--input_path指定输入图片路径即可完成单张图片的人脸检测$ hub run ultra_light_fast_generic_face_detector_1mb_320 --input_path /PATH/TO/IMAGE命令行模式下支持的配置参数定义于 module.py 的add_module_config_arg包括参数默认值说明--use_gpuFalse是否使用 GPU 推理--output_dirface_detector_320_predict_output输出图片的保存目录--visualizationFalse是否将检测结果绘制并保存为图片--batch_size1批大小更多hub run的用法参见 PaddleHub 命令行指令。2. 预测代码示例import paddlehub as hub import cv2 face_detector hub.Module(nameultra_light_fast_generic_face_detector_1mb_320) result face_detector.face_detection(images[cv2.imread(/PATH/TO/IMAGE)]) # or # result face_detector.face_detection(paths[/PATH/TO/IMAGE])images与paths两种数据传入方式二选一前者直接传入numpy.ndarray列表BGR 格式后者传入图片路径字符串列表。3. 核心 API 详解face_detection是模块的主预测接口其完整签名含源码中的iou_threshold参数为def face_detection(imagesNone, pathsNone, dataNone, batch_size1, use_gpuFalse, output_dirface_detector_320_predict_output, visualizationFalse, confs_threshold0.5, iou_threshold0.5)参数说明参数类型默认值说明imageslist[numpy.ndarray]None图片数据列表每个元素 shape 为[H, W, C]BGR 格式pathslist[str]None图片路径列表datadictNone兼容旧版本接口若包含image键会合并进pathsbatch_sizeint1批大小use_gpuboolFalse是否使用 GPU使用前必须设置CUDA_VISIBLE_DEVICES环境变量output_dirstrface_detector_320_predict_output可视化结果图片保存路径visualizationboolFalse是否将结果绘制框并保存为图片文件confs_thresholdfloat0.5置信度阈值低于该值的检测框将被过滤iou_thresholdfloat0.5NMS 去重时的 IoU 阈值返回值结构返回res (list[dict])每个元素对应一张输入图片字段如下path(str)输入图片路径通过images传入时为Nonedata(list)检测结果列表每个元素为 dictconfidence(float)检测置信度left/top(int)边界框左上角 x / y 坐标right/bottom(int)边界框右下角 x / y 坐标save_path(str)可视化图片的保存路径仅当visualizationTrue时存在。save_inference_model接口用于将模块导出为 Paddle Inference 格式的模型文件def save_inference_model(dirname)参数dirname为模型保存路径。该接口的通用实现定义于 paddlehub/module/module.py导出后会生成.pdmodel与.pdiparams文件模块测试 test.py 中通过断言验证了这两个文件的存在。4. 从源码看完整推理链路在 module.py 中face_detection的执行流程可以拆解为四个阶段数据读取与预处理data_feed.pyreader对每条输入调用preprocess先cvtColor将 BGR 转 RGB再resize到 320×240随后减均值[127,127,127]并除以 128 归一化最后转置为[C, H, W]布局同时保留orig_im、orig_im_shape、orig_im_path供后处理恢复原始坐标与可视化使用。推理执行通过create_predictor创建 CPU/GPU 预测器模型路径为模块目录下的model.pdmodel/model.pdiparams将归一化后的 batch 数据写入输入句柄并执行predictor.run()得到两个输出confidences与boxes。后处理processor.py按confs_threshold过滤低置信度候选框调用自实现的hard_nms基于iou_of计算交并比进行非极大值抑制消除重叠框将归一化坐标乘回原始图片尺寸orig_im_shape得到像素坐标若visualizationTrue用 OpenCVcv2.rectangle绘制检测框BGR 颜色(255, 255, 0)并保存到output_dir。结果封装按上述返回结构组装path、data、save_path字段。GPU 使用前提源码在use_gpuTrue时会校验环境变量CUDA_VISIBLE_DEVICES是否被正确设置首字符须为数字否则抛出RuntimeError提示模块初始化时也会读取该环境变量决定是否创建 GPU 预测器。5. 测试用例验证仓库为该模块提供了完整单元测试 test.py覆盖了以下场景可作为使用范本paths方式调用test_face_detection1images方式调用test_face_detection2visualizationTrue可视化输出test_face_detection3use_gpuTrueGPU 推理test_face_detection4非法路径触发AssertionErrortest_face_detection5非 ndarray 输入触发AttributeErrortest_face_detection6save_inference_model导出model.pdmodel与model.pdiparamstest_save_inference_model。测试中对置信度阈值0.5与检测框坐标范围left/right 在 1000~4000、top/bottom 在 0~2000的断言可帮助你理解正常检测结果的量级范围。四、基于 PaddleHub Serving 的在线服务部署PaddleHub Serving 提供一键式模型服务化部署能力可以在不关注网络框架选型与实现的前提下将人脸检测模型快速发布为在线预测服务。整体架构为前端通过 Flask 与 Gunicorn 处理网络请求后台直接调用 PaddleHub 预测接口并支持多进程并发以利用多核 CPU 提升吞吐。相关机制可参考 PaddleHub Serving 部署文档。第一步启动 PaddleHub Serving$ hub serving start -m ultra_light_fast_generic_face_detector_1mb_320执行后即在默认端口8866上完成人脸检测服务化 API 的部署。注意事项如使用 GPU 预测需要在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量并确保安装了 paddlepaddle-gpu否则无需设置。hub serving start的常用参数还包括参数默认值说明--modules/-m-需要部署的模块可多个ModuleVersion形式--port/-p8866服务端口--use_gpu-是否使用 GPU不可与--use_multiprocess同时使用--use_multiprocess单进程是否开启并发模式Windows 仅支持单进程--workers2*cpu_count-1并发模式下的任务数--gpu0指定使用的 GPU 卡号如1,2第二步发送预测请求服务端就绪后通过 HTTP POST 请求即可完成预测请求地址格式为http://127.0.0.1:8866/predict/MODULEimport requests import json import cv2 import base64 def cv2_to_base64(image): data cv2.imencode(.jpg, image)[1] return base64.b64encode(data.tostring()).decode(utf8) # 发送HTTP请求 data {images:[cv2_to_base64(cv2.imread(/PATH/TO/IMAGE))]} headers {Content-type: application/json} url http://127.0.0.1:8866/predict/ultra_light_fast_generic_face_detector_1mb_320 r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 打印预测结果 print(r.json()[results])服务端收到请求后会经由模块中的serving_method见 module.py完成 base64 解码、face_detection推理与结果回传。请求体中的images字段为图片 base64 字符串列表也可额外传入batch_size、use_gpu、visualization、confs_threshold等预测参数。停止服务使用$ hub serving stop --port 8866不指定端口时默认关闭 8866 端口上的服务。五、更新历史版本说明1.0.0初始发布1.1.3移除 fluid API1.2.0修复无法导出推理模型的问题save_inference_model需要回退到指定版本时$ hub install ultra_light_fast_generic_face_detector_1mb_3201.2.0六、总结与适用场景ultra_light_fast_generic_face_detector_1mb_320是 PaddleFormers 中极具代表性的超轻量人脸检测模块模型仅 2.6MB输入统一缩放至 320×240天然面向 ARM 等低算力设备上的实时推理。通过本文介绍的安装、命令行/代码预测与 Serving 部署三步走你可以快速将人脸检测能力集成进本地脚本或线上服务。相关源码与测试位于 modules/image/face_detection/ultra_light_fast_generic_face_detector_1mb_320仓库中的中文版说明见 README.md。赞分享人工智能大模型微调模型推理服务【免费下载链接】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 实战使用 PaddleHub pyramidbox_lite_server_mask 实现人脸口罩检测PaddleFormers 实战使用 PaddleHub pyramidbox_lite_server_mask 实现人脸口罩检测 导读 本文围绕 Paddl人工智能大模型微调模型推理服务PaddleFormers 图像分类实战使用 PaddleHub 部署与微调 RepVGG-B1repvgg_b1_imagenet模块PaddleFormers 图像分类实战使用 PaddleHub 部署与微调 RepVGG B1repvgg_b1_imagenet模块 本篇技术指南以人工智能大模型微调模型推理服务PaddleHub 人脸关键点检测实战face_landmark_localization 模块的安装、预测与服务化部署PaddleHub 人脸关键点检测实战face_landmark_localization 模块的安装、预测与服务化部署 本篇技术指南以 PaddleForm人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表