ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PaddleHub pyramidbox_lite_mobile 人脸检测模型实战指南:安装、API 预测与服务化部署

PaddleHub pyramidbox_lite_mobile 人脸检测模型实战指南:安装、API 预测与服务化部署 人工智能大模型微调模型推理服务【免费下载链接】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 中的pyramidbox_lite_mobile轻量级人脸检测模块覆盖模型基本信息、环境依赖与安装、命令行与 Python API 预测、PaddleHub Serving 在线服务部署以及 Gradio APP 可视化交互的完整流程并结合当前仓库内该模块的源码实现module.py、data_feed.py、processor.py、test.py深入讲解其内部预测链路与参数含义。读完本文你将能够在移动端或边缘算力受限的设备上独立完成人脸检测模型的安装、调用、结果可视化与服务化部署。一、模型基本信息1.1 模型简介pyramidbox_lite_mobile是基于 2018 年百度发表于计算机视觉顶级会议 ECCV 2018 的论文PyramidBox研发的轻量级人脸检测模型模型以 FaceBoxes 为主干网络。该模块针对移动端进行了专门优化适合部署于移动端或边缘检测等算力受限的设备上。根据官方 README 说明该模型对光照变化、口罩遮挡、表情变化、尺度变化等常见干扰具有很强的鲁棒性模型基于 WIDER FACE 数据集与百度自采人脸数据集训练而成支持预测可用于人脸检测。1.2 模型规格一览模型名称pyramidbox_lite_mobile类别图像 - 人脸检测网络PyramidBox数据集WIDER FACE 数据集 百度自采人脸数据集是否支持 Fine-tuning否模型大小7.3MB最新更新日期2021-02-26数据指标-需要特别说明的是该模块不支持 Fine-tuning其定位是开箱即用的推理模型。若需要训练/微调人脸检测模型应选用支持 Fine-tuning 的 PaddleX 等其他方案本模块只提供预测与服务化能力。二、环境依赖与安装2.1 环境依赖安装前请确认环境满足以下版本要求paddlepaddle 1.6.2PaddlePaddle 深度学习框架paddlehub 1.6.0模型管理与推理框架。PaddleHub 的安装方式可参考 PaddleHub 安装文档。针对不同操作系统仓库还提供了零基础快速上手指南可参阅零基础 Windows 安装零基础 Linux 安装零基础 MacOS 安装2.2 安装模块在满足上述依赖的前提下执行以下命令即可安装该模块$ hub install pyramidbox_lite_mobile如需安装指定版本例如带 Gradio APP 支持的 1.4.0 版本可使用带版本号的安装命令$ hub install pyramidbox_lite_mobile1.4.0三、模型 API 预测3.1 命令行预测安装完成后可以通过hub run命令直接进行人脸检测$ hub run pyramidbox_lite_mobile --input_path /PATH/TO/IMAGE其中--input_path指定待检测图片路径。命令行方式还支持以下可选参数默认值与含义见下文 API 详解--use_gpu、--output_dir、--visualization、--shrink、--confs_threshold。关于 PaddleHub 命令行指令的完整说明可参考 PaddleHub 命令行指令文档。从源码看命令行入口由 module.py 中的run_cmd方法实现它通过argparse构建参数解析器其中add_module_config_arg注册--use_gpu默认 False、--output_dir默认detection_result、--visualization默认 Falseadd_module_input_arg注册--input_path、--shrink默认 0.5、--confs_threshold默认 0.6。最终统一调用face_detection完成推理。3.2 Python 代码预测在 Python 环境中通过hub.Module加载模型并调用face_detection接口import paddlehub as hub import cv2 face_detector hub.Module(namepyramidbox_lite_mobile) result face_detector.face_detection(images[cv2.imread(/PATH/TO/IMAGE)]) # or # result face_detector.face_detection(paths[/PATH/TO/IMAGE])images与paths两种传参方式二选一即可前者直接传入解码后的 BGR 图像数组后者传入图片路径列表由模块内部读取。3.3 face_detection API 详解模块的核心 API 签名如下def face_detection(imagesNone, pathsNone, use_gpuFalse, output_dirdetection_result, visualizationFalse, shrink0.5, confs_threshold0.6)功能检测输入图片中的所有人物脸部位置。参数说明参数类型默认值说明imageslist[numpy.ndarray]None图片数据每个 ndarray 的 shape 为 [H, W, C]BGR 格式pathslist[str]None图片的路径列表use_gpuboolFalse是否使用 GPU 进行预测output_dirstrdetection_result可视化结果图片的保存路径visualizationboolFalse是否将识别结果保存为图片文件shrinkfloat0.5输入图片的缩放比例。该值越大输入网络的图片越大对输入图片中的小尺寸人脸有更好的检测效果但模型计算成本越高反之则对大尺寸人脸有更好的检测效果confs_thresholdfloat0.6检测框置信度阈值低于该阈值的检测框会被过滤注意paths与images两个参数只需提供其中一个作为数据来源。返回值reslist[dict]识别结果列表每个元素为 dict包含字段pathstr原输入图片的路径datalist检测结果列表每个元素为 dict字段包括confidencefloat识别置信度leftint边界框左上角 x 坐标topint边界框左上角 y 坐标rightint边界框右下角 x 坐标bottomint边界框右下角 y 坐标。使用 GPU 的前提use_gpuTrue时必须在调用前正确设置CUDA_VISIBLE_DEVICES环境变量如export CUDA_VISIBLE_DEVICES0。从 module.py 的源码可以看到模块会读取该环境变量进行 GPU 可用性检查若未正确设置会抛出RuntimeError提示用户配置同时模块初始化时会分别构建 CPU 与 GPU 两套 Paddle Inference predictor运行时根据use_gpu参数选择对应的 predictor 执行推理。3.4 save_inference_model导出推理模型def save_inference_model(dirname)将模型保存到指定路径参数dirname为模型保存目录。该接口用于将模块内置模型导出为独立的 Paddle Inference 模型文件便于脱离 PaddleHub 在其他推理环境中加载。根据 test.py 中的test_save_inference_model测试用例导出成功后会在目标目录下生成model.pdmodel与model.pdiparams两个文件分别对应推理网络结构与参数。3.5 源码级预测链路解析为了帮助读者深入理解参数如何影响推理这里梳理 module.py、data_feed.py 与 processor.py 构成的完整预测链路预处理data_feed.pyreader函数逐个读取images/paths提供的图像preprocess函数首先按shrink比例对原图进行cv2.resize缩放插值方式为cv2.INTER_NEAREST再将 HWC 布局转换为 CHW 布局最后按均值[104., 117., 123.]与缩放系数0.007843做归一化。这正是shrink影响小脸检测效果的底层机制——缩放比例越大送入网络的人脸区域像素越多小脸越容易被检出同时计算量也越大。网络推理module.py将预处理结果np.expand_dims(..., axis0)扩展为 batch 维度拷贝到 Paddle Inference predictor 的输入 handle调用predictor.run()完成推理并从输出 handle 取回检测结果。后处理processor.pypostprocess对每个检测框执行置信度过滤each_data[1] confs_threshold由于网络输出的是缩放后图像坐标系下的归一化坐标需通过image_width * each_data[i] / shrink还原到原图坐标系并经clip_bbox裁剪到图像边界内当visualizationTrue时调用check_dir创建输出目录使用cv2.rectangle在原图上绘制黄色BGR: 255, 255, 0检测框并保存输出文件命名规则见get_save_image_name按原图文件名自动推断.jpg或.png扩展名重名时追加时间戳。四、服务部署PaddleHub Serving 可以将该人脸检测模块部署为在线服务对外提供 HTTP 接口。4.1 第一步启动 PaddleHub Serving执行以下命令启动服务$ hub serving start -m pyramidbox_lite_mobile命令执行完成后即完成了一个人脸检测服务化 API 的部署默认端口号为8866。注意如需使用 GPU 预测必须在启动服务之前设置CUDA_VISIBLE_DEVICES环境变量若使用 CPU 预测则无需设置。4.2 第二步发送预测请求服务端配置完成后以下代码即可发送预测请求并获取结果import 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/pyramidbox_lite_mobile r requests.post(urlurl, headersheaders, datajson.dumps(data)) # 打印预测结果 print(r.json()[results])请求将图片以 Base64 编码后放入 JSON 的images字段POST 到/predict/pyramidbox_lite_mobile路径。从服务端源码看app_compat.py 中注册了/predict/module_name路由服务端会调用模块的serving_method见 module.py其内部通过base64_to_cv2见 processor.py将 Base64 字符串解码回 BGR 图像再交给face_detection推理最终将结果以 JSON 形式返回。4.3 Gradio APP 支持从PaddleHub 2.3.1开始该模块支持通过浏览器访问 Gradio 可视化交互界面http://127.0.0.1:8866/gradio/pyramidbox_lite_mobile启动 Serving 后直接访问上述地址即可使用。其实现位于 module.py 的create_gradio_app方法使用gr.Interface构建交互界面提供图片上传控件、shrink滑动条范围 0.01.0默认 0.5与confs_threshold滑动条范围 0.01.0默认 0.6推理结果直接以绘制了检测框的图片形式展示方便快速体验参数调节效果。服务端则通过 app_compat.py 中的/gradio/module_name路由将请求代理到独立的 Gradio 服务进程。五、测试与验证仓库为该模块提供了完整的单元测试 test.py可以作为验证环境配置与模块功能的参考test_face_detection1通过paths传入图片路径进行检测校验置信度大于 0.5 且边界框坐标落在合理区间test_face_detection2通过images传入cv2.imread解码的图像进行检测test_face_detection3开启visualizationTrue验证可视化输出流程test_face_detection4设置use_gpuTrue的 GPU 推理路径test_face_detection5传入不存在的文件路径验证AssertionError异常抛出对应 data_feed.py 中对文件合法性的断言test_face_detection6非法传参场景的异常校验test_save_inference_model验证模型导出后生成model.pdmodel与model.pdiparams文件。这些测试用例同时印证了 README 中images/paths二选一、文件路径校验、GPU 环境变量要求等使用约定可作为自行验证模块可用性的快捷入口。六、版本更新历史版本更新内容1.0.0初始发布1.2.1移除 fluid API1.3.0修复无法导出推理模型的问题1.4.0添加 Gradio APP 支持当前仓库中 module.py 的moduleinfo装饰器标记的版本即为 1.4.0可通过hub install pyramidbox_lite_mobile1.4.0安装对应版本。总结pyramidbox_lite_mobile是一个体积仅 7.3MB、面向移动端与边缘设备优化的轻量级人脸检测模块基于 PyramidBox 网络并在 WIDER FACE 与百度自采人脸数据集上训练。本文从模型规格、安装配置、命令行与 Python API 预测、服务化部署到 Gradio 可视化交互完整覆盖了其开箱即用的全流程同时结合仓库内 module.py、data_feed.py、processor.py 等源码剖析了shrink、confs_threshold等核心参数在预处理、推理与后处理链路中的实际作用机制帮助开发者在实际项目中更精准地调节检测效果。如需英文版模块说明可参阅 README_en.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点击查看免费下载相关推荐PaddleHub 超轻量人脸检测实战ultra_light_fast_generic_face_detector_1mb_320 安装、预测与服务化部署指南PaddleHub 超轻量人脸检测实战ultra_light_fast_generic_face_detector_1mb_320 安装、预测与服务化部署指南人工智能大模型微调模型推理服务PaddleHub 行人检测实战指南yolov3_darknet53_pedestrian 模块的安装、API 预测与服务化部署PaddleHub 行人检测实战指南yolov3_darknet53_pedestrian 模块的安装、API 预测与服务化部署 本文以 PaddleHub人工智能大模型微调模型推理服务PaddleHub pixel2style2pixel 人脸转正模型实战安装、预测与服务部署全指南PaddleHub pixel2style2pixel 人脸转正模型实战安装、预测与服务部署全指南 导读 本文聚焦 PaddleHub 中的 pixel2st人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表