PaddlePaddle / PaddleHub

Awesome pre-trained models toolkit based on PaddlePaddle. (400+ models including Image, Text, Audio, Video and Cross-Modal with Easy Inference & Serving)【安全加固,暂停交互,请耐心等待】
https://www.paddlepaddle.org.cn/hub
Apache License 2.0
12.69k stars 2.08k forks source link

CPU/GPU不同环境下输出字段异常 #1742

Open WilliamKyle opened 2 years ago

WilliamKyle commented 2 years ago

欢迎您反馈PaddleHub使用问题,非常感谢您对PaddleHub的贡献! 在留下您的问题时,辛苦您同步提供如下信息:

paddlehub 2.1.1 paddlepaddle-gpu 2.2.1

使用环境为Docker镜像: registry.baidubce.com/paddlepaddle/paddle:2.2.1-gpu-cuda10.2-cudnn7

测试代码来源于 https://www.paddlepaddle.org.cn/hubdetail?name=chinese_ocr_db_crnn_server&en_category=TextRecognition

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/chinese_ocr_db_crnn_server"
r = requests.post(url=url, headers=headers, data=json.dumps(data))

# 打印预测结果
print(r.json()["results"])

复现步骤:

  1. hub install chinese_ocr_db_crnn_server==1.1.2
  2. 使用CPU推理 hub serving start -m chinese_ocr_db_crnn_server
  3. python test.py
  4. 使用GPU推理 hub serving start -m chinese_ocr_db_crnn_server --use_gpu
  5. python test.py

会发现GPU推理的时候没结果,检查输出的json发现结果不在 results 字段里面而在 msg 字段下面。

查看源码可能是这一部分代码 package_result函数的参数写反了

https://github.com/PaddlePaddle/PaddleHub/blob/release/v2.1/paddlehub/serving/http_server.py#L132-L161

haoyuying commented 2 years ago

您好,非常感谢您的建议,可否提一个pr给paddlehub,帮助我们共建开源生态,感谢您的帮助。