通用目标检测产线中包含了目标检测模块,如您更考虑模型精度,请选择精度较高的模型,如您更考虑模型推理速度,请选择推理速度较快的模型,如您更考虑模型存储大小,请选择存储大小较小的模型。
❗ 以上列出的是目标检测模块重点支持的6个核心模型,该模块总共支持37个模型,完整的模型列表如下:
PaddleX 所提供的预训练的模型产线均可以快速体验效果,你可以在线体验通用目标检测产线的效果,也可以在本地使用命令行或 Python 体验通用目标检测产线的效果。
2.1 在线体验
您可以在线体验通用目标检测产线的效果,用官方提供的 demo 图片进行识别,例如:

如果您对产线运行的效果满意,可以直接对产线进行集成部署,如果不满意,您也可以利用私有数据对产线中的模型进行在线微调。
2.2 本地体验
在本地使用通用目标检测产线前,请确保您已经按照PaddleX本地安装教程完成了PaddleX的wheel包安装。如果您希望选择性安装依赖,请参考安装教程中的相关说明。该产线对应的依赖分组为 cv。
2.2.1 命令行方式体验
一行命令即可快速体验目标检测产线效果,使用 测试文件,并将 --input 替换为本地路径,进行预测
paddlex --pipeline object_detection --input general_object_detection_002.png --threshold 0.5 --save_path ./output/ --device gpu:0
相关参数和运行结果说明可以参考
2.2.2 Python脚本方式集成
中的参数说明和结果解释。支持同时指定多个设备以进行并行推理,详情请参考
产线并行推理
。
可视化结果保存至save_path,如下所示:

2.2.2 Python脚本方式集成
通过上述命令行方式可快速体验查看效果,在项目中往往需要代码集成,您可以通过如下几行代码完成产线的快速推理:
from paddlex import create_pipeline pipeline = create_pipeline(pipeline="object_detection") output = pipeline.predict("general_object_detection_002.png", threshold=0.5) for res in output: res.print() res.save_to_img("./output/") res.save_to_json("./output/")
在上述 Python 脚本中,执行了如下几个步骤:
(1)调用 create_pipeline 实例化产线对象:具体参数说明如下:
pipeline 产线名称或是产线配置文件路径。如为产线名称,则必须为 PaddleX 所支持的产线。
str
None
config 产线具体的配置信息(如果和
pipeline同时设置,优先级高于
pipeline,且要求产线名和
pipeline一致)。
dict[str, Any]
None
device 产线推理设备。支持指定GPU具体卡号,如“gpu:0”,其他硬件具体卡号,如“npu:0”,CPU如“cpu”。支持同时指定多个设备以进行并行推理,详情请参考产线并行推理文档。
str
gpu:0
use_hpip 是否启用高性能推理插件。如果为
None,则使用配置文件或
config 中的配置。
bool
None 无
hpi_config 高性能推理配置
dict
None 无
2)调用通用目标检测产线对象的 predict() 方法进行推理预测。该方法将返回一个 generator。以下是 predict() 方法的参数及其说明:
input 待预测数据,支持多种输入类型,必填 `Python Var str list`
threshold 用于过滤掉低置信度预测结果的阈值;如果不指定,则默认使用PaddleX官方模型配置
float/dict/None
float,如 0.2, 表示过滤掉所有阈值小于0.2的目标框
字典,字典的key为
int类型,代表
cls_id,val为
float类型阈值。如
{0: 0.45, 2: 0.48, 7: 0.4},表示对cls_id为0的类别应用阈值0.45、cls_id为1的类别应用阈值0.48、cls_id为7的类别应用阈值0.4
None
(3)对预测结果进行处理,每个样本的预测结果均为对应的Result对象,且支持打印、保存为图片、保存为json文件的操作:
print() 打印结果到终端
format_json
bool 是否对输出内容进行使用
JSON 缩进格式化
True
indent
int 指定缩进级别,以美化输出的
JSON 数据,使其更具可读性,仅当
format_json 为
True 时有效 4
ensure_ascii
bool 控制是否将非
ASCII 字符转义为
Unicode。设置为
True 时,所有非
ASCII 字符将被转义;
False 则保留原始字符,仅当
format_json为
True时有效
False
save_to_json() 将结果保存为json格式的文件
save_path
str 保存的文件路径,当为目录时,保存文件命名与输入文件类型命名一致 无
indent
int 指定缩进级别,以美化输出的
JSON 数据,使其更具可读性,仅当
format_json 为
True 时有效 4
ensure_ascii
bool 控制是否将非
ASCII 字符转义为
Unicode。设置为
True 时,所有非
ASCII 字符将被转义;
False 则保留原始字符,仅当
format_json为
True时有效
False
save_to_img() 将结果保存为图像格式的文件
save_path
str 保存的文件路径,支持目录或文件路径 无
- 调用
print()方法会将如下结果打印到终端:
{'res': {'input_path': 'general_object_detection_002.png', 'page_index': None, 'boxes': [{'cls_id': 49, 'label': 'orange', 'score': 0.29431, 'coordinate': [661.3518, 93.05823, 870.75903, 305.93713]}, {'cls_id': 47, 'label': 'apple', 'score': 0.62317, 'coordinate': [76.80911, 274.74905, 330.5422, 520.0428]}, {'cls_id': 47, 'label': 'apple', 'score': 0.23328, 'coordinate': [285.32645, 94.3175, 469.73645, 297.40344]}, {'cls_id': 46, 'label': 'banana', 'score': 0.59875, 'coordinate': [310.8041, 361.43625, 685.1869, 712.59155]}, {'cls_id': 47, 'label': 'apple', 'score': 0.90784, 'coordinate': [764.6252, 285.76096, 924.8153, 440.92892]}, {'cls_id': 47, 'label': 'apple', 'score': 0.3114, 'coordinate': [853.9831, 169.41423, 987.803, 303.58615]}, {'cls_id': 60, 'label': 'dining table', 'score': 0.1073, 'coordinate': [0., 0., 1072.9534, 720]}, {'cls_id': 47, 'label': 'apple', 'score': 0.2782, 'coordinate': [57., 23., 213.39601, 176.45612]}]}}
- 输出结果参数含义如下:
input_path:表示输入图像的路径page_index:如果输入是PDF文件,则表示当前是PDF的第几页,否则为None- :预测的目标框信息,一个字典列表。每个字典代表一个检出的目标,包含以下信息:
boxescls_id:类别ID,一个整数label:类别标签,一个字符串score:目标框置信度,一个浮点数coordinate:目标框坐标,一个浮点数列表,格式为[xmin, ymin, xmax, ymax]
- 调用
save_to_json()方法会将上述内容保存到指定的save_path中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_res.json,如果指定为文件,则直接保存到该文件中。由于json文件不支持保存numpy数组,因此会将其中的numpy.array类型转换为列表形式。 - 调用
save_to_img()方法会将可视化结果保存到指定的save_path中,如果指定为目录,则保存的路径为save_path/{your_img_basename}_res.{your_img_extension},如果指定为文件,则直接保存到该文件中。(产线通常包含较多结果图片,不建议直接指定为具体的文件路径,否则多张图会被覆盖,仅保留最后一张图) - 此外,也支持通过属性获取带结果的可视化图像和预测结果,具体如下:
json 获取预测的
json 格式的结果
img 获取格式为
dict 的可视化图像
json属性获取的预测结果为dict类型的数据,相关内容与调用save_to_json()方法保存的内容一致。img属性返回的预测结果是一个字典类型的数据。键为res,对应的值是一个用于可视化目标检测结果的Image.Image对象。
上述Python脚本集成方式默认使用 PaddleX 官方配置文件中的参数设置,若您需要自定义配置文件,可先执行如下命令获取官方配置文件,并保存在 my_path 中:
paddlex --get_pipeline_config object_detection --save_path ./my_path
若您获取了配置文件,即可对目标检测产线各项配置进行自定义。只需要修改 create_pipeline 方法中的 pipeline 参数值为自定义产线配置文件路径即可。
例如,若您的自定义配置文件保存在 ./my_path/object_detection.yaml ,则只需执行:
from paddlex import create_pipeline pipeline = create_pipeline(pipeline="./my_path/object_detection.yaml") output = pipeline.predict("general_object_detection_002.png") for res in output: res.print() res.save_to_img("./output/") res.save_to_json("./output/")
注:
配置文件中的参数为产线初始化参数,如果希望更改通用目标检测产线初始化参数,可以直接修改配置文件中的参数,并加载配置文件进行预测。
如果产线可以达到您对产线推理速度和精度的要求,您可以直接进行开发集成/部署。
若您需要将产线直接应用在您的Python项目中,可以参考 2.2.2 Python脚本方式中的示例代码。
此外,PaddleX 也提供了其他三种部署方式,详细说明如下:
高性能推理:在实际生产环境中,许多应用对部署策略的性能指标(尤其是响应速度)有着较严苛的标准,以确保系统的高效运行与用户体验的流畅性。为此,PaddleX 提供高性能推理插件,旨在对模型推理及前后处理进行深度性能优化,实现端到端流程的显著提速,详细的高性能推理流程请参考PaddleX高性能推理指南。
☁️ 服务化部署:服务化部署是实际生产环境中常见的一种部署形式。通过将推理功能封装为服务,客户端可以通过网络请求来访问这些服务,以获取推理结果。PaddleX 支持多种产线服务化部署方案,详细的产线服务化部署流程请参考PaddleX服务化部署指南。
以下是基础服务化部署的API参考与多语言服务调用示例:
API参考对于服务提供的主要操作:HTTP请求方法为POST。请求体和响应体均为JSON数据(JSON对象)。当请求处理成功时,响应状态码为200,响应体的属性如下:名称类型含义logId``string请求的UUID。errorCode``integer错误码。固定为0。errorMsg``string错误说明。固定为"Success"。result``object操作结果。当请求处理未成功时,响应体的属性如下:名称类型含义logId``string请求的UUID。errorCode``integer错误码。与响应状态码相同。errorMsg``string错误说明。服务提供的主要操作如下:infer对图像进行目标检测。POST /object-detection请求体的属性如下:名称类型含义是否必填image``string服务器可访问的图像文件的URL或图像文件内容的Base64编码结果。是threshold``number | object | null请参阅产线对象中 predict 方法的 threshold 参数相关说明。否visualize``boolean | null是否返回可视化结果图以及处理过程中的中间图像等。传入 true:返回图像。传入 false:不返回图像。若请求体中未提供该参数或传入 null:遵循产线配置文件Serving.visualize 的设置。
例如,在产线配置文件中添加如下字段:
Serving: visualize: False 将默认不返回图像,通过请求体中的visualize参数可以覆盖默认行为。如果请求体和配置文件中均未设置(或请求体传入null、配置文件中未设置),则默认返回图像。否请求处理成功时,响应体的result具有如下属性:名称类型含义detectedObjects``array目标的位置、类别等信息。image``string | null目标检测结果图。图像为JPEG格式,使用Base64编码。detectedObjects中的每个元素为一个object,具有如下属性:名称类型含义bbox``array目标位置。数组中元素依次为边界框左上角x坐标、左上角y坐标、右下角x坐标以及右下角y坐标。categoryId``integer目标类别ID。categoryName``string目标类别名称。score``number目标得分。result示例如下:{ "detectedObjects": [ { "bbox": [ 404.69, 90.547, 506.19, 285.31 ], "categoryId": 0, "categoryName": "oranage", "score": 0.27563 }, { "bbox": [ 155.562, 81.969, 199.375, 167.78 ], "categoryId": 1, "categoryName": "banana", "score": 0.12488 } ], "image": "xxxxxx" }
端侧部署:端侧部署是一种将计算和数据处理功能放在用户设备本身上的方式,设备可以直接处理数据,而不需要依赖远程的服务器。PaddleX 支持将模型部署在 Android 等端侧设备上,详细的端侧部署流程请参考PaddleX端侧部署指南。 您可以根据需要选择合适的方式部署模型产线,进而进行后续的 AI 应用集成。
如果通用目标检测产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用您自己拥有的特定领域或应用场景的数据对现有模型进行进一步的微调,以提升通用目标检测产线的在您的场景中的识别效果。
4.1 模型微调
由于通用目标检测产线包含目标检测模块,如果模型产线的效果不及预期,那么您需要参考目标检测模块开发教程中的二次开发章节,使用您的私有数据集对目标检测模型进行微调。
4.2 模型应用
当您使用私有数据集完成微调训练后,可获得本地模型权重文件。
若您需要使用微调后的模型权重,只需对产线配置文件做修改,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可:
pipeline_name: object_detection SubModules: ObjectDetection: module_name: object_detection model_name: PicoDet-S model_dir: null #可修改为微调后模型的本地路径 batch_size: 1 img_size: null threshold: null
随后, 参考本地体验中的命令行方式或 Python 脚本方式,加载修改后的产线配置文件即可。
PaddleX 支持英伟达 GPU、昆仑芯 XPU、昇腾 NPU 和寒武纪 MLU 等多种主流硬件设备,仅需修改 –device 参数即可完成不同硬件之间的无缝切换。
例如,使用昇腾 NPU 进行目标检测产线快速推理:
paddlex –pipeline object_detection
--input general_object_detection_002.png --threshold 0.5 --save_path ./output/ --device npu:0
当然,您也可以在 Python 脚本中 create_pipeline() 时或者 predict() 时指定硬件设备。
若您想在更多种类的硬件上使用通用目标检测产线,请参考PaddleX多硬件使用指南。
https://paddlepaddle.github.io/PaddleX/3.1/pipeline_usage/tutorials/cv_pipelines/object_detection.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/260069.html