PaddlePaddle / PaddleX

All-in-One Development Tool based on PaddlePaddle(飞桨低代码开发工具)
Apache License 2.0
4.92k stars 961 forks source link

单例脚本推理测试运行报错 #2448

Closed XzxtX closed 1 week ago

XzxtX commented 1 week ago

Checklist:

  1. 查找历史相关issue寻求解答
  2. 翻阅FAQ常见问题汇总和答疑
  3. 确认bug是否在新版本里还未修复
  4. 翻阅PaddleX 使用文档

描述问题

代码报错 ---------------------------------------------------------------------------ImportError Traceback (most recent call last)Cell In[1], line 1 ----> 1 from paddlex import PaddleInferenceOption, create_model 2 from PIL import Image 3 import numpy as np ImportError: cannot import name 'PaddleInferenceOption' from 'paddlex' (/home/aistudio/PaddleX/paddlex/init.py)

复现

屏幕截图 2024-11-08 172357 前面的推理测试已经完成 屏幕截图 2024-11-10 154903 单例脚本推理测试运行代码报错

  1. 您是否已经正常运行我们提供的教程

  2. 您是否在教程的基础上修改代码内容?还请您提供运行的代码 from paddlex import PaddleInferenceOption, create_model from PIL import Image import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches

实例化 PaddleInferenceOption 设置推理配置

model_name = "RT-DETR-H" kernel_option = PaddleInferenceOption() kernel_option.set_device("gpu:0")

调用 create_model 函数实例化预测模型

model = create_model(model_name=model_name, model_dir="/home/aistudio/PaddleX/output/best_model/", kernel_option=kernel_option)

调用预测模型 model 的 predict 方法进行预测

result = model.predict({'input_path': "/home/aistudio/work/COCODetDataset/images/image_0036.jpg"})

加载原始图像

image_path = result['input_path'] original_image = Image.open(image_path)

创建一个图形和轴

fig, ax = plt.subplots(1)

显示原始图像

ax.imshow(original_image)

设置置信度阈值

confidence_threshold = 0.5

遍历边界框并绘制它们

for box in result['boxes']:

解包边界框坐标和类别、概率

class_id,score, x1, y1, x2, y2 = box
if score > confidence_threshold:
    # 根据 class_id 映射到类别名称
    label = "tas"
    # 创建一个矩形并添加到轴上
    rect = patches.Rectangle((x1, y1), x2 - x1, y2 - y1, linewidth=0.5, edgecolor='r', facecolor='none')
    ax.add_patch(rect)
    # 在图像上标注类别和概率
    ax.text(x1, y1, f"{label} ({score:.2f})", color='white', fontsize=5, bbox=dict(facecolor='red', alpha=0.5))

移除坐标轴

ax.axis('off')

显示图形

plt.show()

  1. 您使用的数据集是? 玉米雄穗识别 【智识雄蕊】基于PaddleX3.0的农业玉米雄蕊精准定位系统
  2. 请提供您出现的报错信息及相关log

环境

BML Codelab JupyterLab 3.0.0beta1 Python3

cuicheng01 commented 1 week ago

paddlex beta1版本中没有相关的方法了,把 PaddleInferenceOption去掉即可。

XzxtX commented 1 week ago

paddlex beta1版本中没有相关的方法了,把 去掉即可。PaddleInferenceOption 好的问题已经解决产靠这个修改了代码

2.2.2 Python脚本方式集成 几行代码即可完成产线的快速推理,以通用目标检测产线为例:

from paddlex import create_pipeline

pipeline = create_pipeline(pipeline="object_detection")

output = pipeline.predict("general_object_detection_002.png") for res in output: res.print() ## 打印预测的结构化输出 res.save_to_img("./output/") ## 保存结果可视化图像 res.save_to_json("./output/") ## 保存预测的结构化输出