PaddlePaddle / PaddleDetection

Object Detection toolkit based on PaddlePaddle. It supports object detection, instance segmentation, multiple object tracking and real-time multi-person keypoint detection.
Apache License 2.0
12.57k stars 2.86k forks source link

jetson nano 部署 路标检测 模型 :GPU显示没有目标,CPU则正确显示目标。 #2348

Closed GZHUZhao closed 2 years ago

GZHUZhao commented 3 years ago

paddlepaddle - gpu 版本2.0.0 PaddleDetection版本release 2.0 rc 硬件:jetson nano jetpack4.3 场景: 1、使用tools/train.py 对 路标检测模型(yolov3_mobilenet_v1_roadsign.yml)进行训练,得到best_model。 2、使用tools/export_model.py进行导出模型。 python tools/export_model.py -c configs/yolov3_mobilenet_v1_roadsign.yml \ --output_dir=./export_model \ -o weights=./output/yolov3_mobilenet_v1_roadsign/best_model TestReader,input_def.image_shape=[3,320,320] 3、使用deploy/python/infer.py在jetson nano下进行部署。 (1)使用gpu预测: gpu (2)使用cpu预测正常显示。 cpu

麻烦跟进一下,后续需要提供什么信息请告知我就行,谢谢!

qingqing01 commented 3 years ago

@GZHUZhao

我在Linux V100上测试了下,是可以的。

-----------  Running Arguments -----------
camera_id: -1
image_file: road52.png
model_dir: export_model/yolov3_mobilenet_v1_roadsign/
output_dir: output
run_benchmark: False
run_mode: fluid
threshold: 0.5
use_gpu: 1
video_file:
------------------------------------------
-----------  Model Configuration -----------
Model Arch: YOLO
Use Paddle Executor: False
Transform Order:
--transform op: Resize
--transform op: Normalize
--transform op: Permute
--------------------------------------------
W0315 03:15:42.721149 62707 analysis_predictor.cc:1059] Deprecated. Please use CreatePredictor instead.
Inference: 9.780168533325195 ms per batch image
class_id:3, confidence:0.8269,left_top:[33.29,142.56], right_bottom:[258.45,380.97]
save result to: output/road52.png

您这个问题,是roadsign的原始数据的话,可以给一个模型,我们进一步查下问题。

GZHUZhao commented 3 years ago

@qingqing01 链接:https://pan.baidu.com/s/18vnPHQ2KJO7Q4zg-r_Nv6g 提取码:x256 您好,用的是原始数据,模型是由tools/train.py生成的best_model,且由export_model.py导出的。 使用环境; paddlepaddle-gpu 2.0(whl用的官网提供的nv_jetson_cp36_all) 系统:ubuntu 18.04 谢谢您!

GZHUZhao commented 3 years ago

@qingqing01 cpu检测出来的class_id也是错的 road52

qingqing01 commented 3 years ago

@GZHUZhao 我用的你模型在Linux GPU/CPU上测试有输出,Jetson NANO的问题,可能需要排查下,是否软件包问题,您开启了TensorRT,还是没有没有?

-----------  Running Arguments -----------
camera_id: -1
image_file: road52.png
model_dir: tmp/yolov3_mobilenet_v1_roadsign
output_dir: output
run_benchmark: False
run_mode: fluid
threshold: 0.5
use_gpu: 1
video_file:
------------------------------------------
-----------  Model Configuration -----------
Model Arch: YOLO
Use Paddle Executor: True
Transform Order:
--transform op: Resize
--transform op: Normalize
--transform op: Permute
--------------------------------------------
W0315 05:32:30.124871 63810 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0315 05:32:30.142894 63810 device_context.cc:372] device: 0, cuDNN Version: 7.6.
Inference: 30.387401580810547 ms per batch image
class_id:0, confidence:0.5586,left_top:[40.02,201.51], right_bottom:[252.06,327.50]
save result to: output/road52.png

不知道您是否训练充分,可以使用下面,我训练的模型试下,下面模型,我在Linux V100上测试正确:

链接: https://pan.baidu.com/s/15F_HrxXU_CwYLvVtmSLH8A 密码: dc1i

liuhuiCNN commented 3 years ago

(1)cpu classid 问题如qingqing01回复,请确认训练是否正常; (2)jetson nano python预测时,请检查使用的python paddle包是否跟硬件平台一致。 您可以从这里下载预先编译好的nano 上paddle安装包:https://www.paddlepaddle.org.cn/documentation/docs/zh/install/Tables.html。您也可以自行编译paddle安装包。 (3)您也可以通过cpp预测看下是否正常。

GZHUZhao commented 3 years ago

@GZHUZhao 我用的你模型在Linux GPU/CPU上测试有输出,Jetson NANO的问题,可能需要排查下,是否软件包问题,您开启了TensorRT,还是没有没有?

-----------  Running Arguments -----------
camera_id: -1
image_file: road52.png
model_dir: tmp/yolov3_mobilenet_v1_roadsign
output_dir: output
run_benchmark: False
run_mode: fluid
threshold: 0.5
use_gpu: 1
video_file:
------------------------------------------
-----------  Model Configuration -----------
Model Arch: YOLO
Use Paddle Executor: True
Transform Order:
--transform op: Resize
--transform op: Normalize
--transform op: Permute
--------------------------------------------
W0315 05:32:30.124871 63810 device_context.cc:362] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 10.1, Runtime API Version: 10.1
W0315 05:32:30.142894 63810 device_context.cc:372] device: 0, cuDNN Version: 7.6.
Inference: 30.387401580810547 ms per batch image
class_id:0, confidence:0.5586,left_top:[40.02,201.51], right_bottom:[252.06,327.50]
save result to: output/road52.png

不知道您是否训练充分,可以使用下面,我训练的模型试下,下面模型,我在Linux V100上测试正确:

链接: https://pan.baidu.com/s/15F_HrxXU_CwYLvVtmSLH8A 密码: dc1i

谢谢您! (1)您的模型在我的win10电脑上 gpu能用,结果和您的一样,但是在jetson nano 上gpu仍然是没有检测到目标。 (2)检测时,run_mode是默认的fluid,我的jetson 上有tensorRT,但是whl是官网的,应该是没有开启tensorRT的。 (3)我训练的模型在win10-gpu上也是有结果的,但是class_id不对,模型是基于预训练参数的基础上进行的,按照模型配置文件,训练3600个迭代结束。如下图: 模型

GZHUZhao commented 3 years ago

(1)cpu classid 问题如qingqing01回复,请确认训练是否正常; (2)jetson nano python预测时,请检查使用的python paddle包是否跟硬件平台一致。 您可以从这里下载预先编译好的nano 上paddle安装包:https://www.paddlepaddle.org.cn/documentation/docs/zh/install/Tables.html。您也可以自行编译paddle安装包。 (3)您也可以通过cpp预测看下是否正常。

谢谢您! (1)安装的whl是官网的whl安装包:如下图 whl (2)我的jetson nano的python版本为3.6.9,jetpack4.3,应该和官网下载的是一致的。如下图: python jetpack (3)关于源码编译: 我尝试过多次进行源码编译,但是由于可能是网络等原因编译不了。

wangye707 commented 3 years ago

@GZHUZhao 你好,目前Jetson上的tx2和nano设备在开启GPU后会出现程序直接终止且不报错的情况,经过我们测试,agx xavier, nx设备下,该模型可以正常预测。如果您有其他jetson设备,可以暂时先用其他的设备,我们会尽快定位修复这个问题。这是参考回答:https://github.com/PaddlePaddle/Paddle/issues/31687。yolov3在其他设备上的推理请参考:https://github.com/PaddlePaddle/Paddle-Inference-Demo/tree/master/python/yolov3

DragonGongY commented 3 years ago

Jetson Nano上使用cpu能够正常运行,并给出目标框,但是gpu的话就没有框,这是为何?

wangye707 commented 3 years ago

@DragonGongY nano和tx2目前存在开启gpu后预测结果错误导致目标框无法标注的情况,所以看起来是没有框

DragonGongY commented 3 years ago

但是cpu预测又有结果输出,都是用的同一个模型

DragonGongY commented 3 years ago

@DragonGongY nano和tx2目前存在开启gpu后预测结果错误导致目标框无法标注的情况,所以看起来是没有框

用源码编译paddle的推理库,是否能解决这个问题?

wangye707 commented 3 years ago

@DragonGongY 目前这个bug还没有修复,源码编译也暂时不行,您可以更换为nx和agx这两款jetson设备,我们尽快修复这个bug。

GZHUZhao commented 3 years ago

@DragonGongY 目前这个bug还没有修复,源码编译也暂时不行,您可以更换为nx和agx这两款jetson设备,我们尽快修复这个bug。

ssd_mobilenet_v1_voc的GPU和CPU都可以,就是这个yolo框架的不行。

GZHUZhao commented 3 years ago

我们测试,agx xavier, nx设备下,该模型可以正常预测。如果您有其他jetson设备,可以暂时先用其他的设备,我们会尽快定位修复这个问题。这是参考回答:https://github.com/PaddlePaddle/Paddle/issues/31687。yolov3在其他设备上的推理请参考:

好的,我这边暂时只有nano一个设备,bug修复后麻烦给一下链接,谢谢您!

DragonGongY commented 3 years ago

我们测试,agx xavier, nx设备下,该模型可以正常预测。如果您有其他jetson设备,可以暂时先用其他的设备,我们会尽快定位修复这个问题。这是参考回答:https://github.com/PaddlePaddle/Paddle/issues/31687。yolov3在其他设备上的推理请参考:

好的,我这边暂时只有nano一个设备,bug修复后麻烦给一下链接,谢谢您!

https://zhuanlan.zhihu.com/p/319371293这个是知乎上的一个教程,也是paddledetection推荐的部署方案,用的是tensorrt的部署方案,这个是否有验证过,是否可行

DragonGongY commented 3 years ago

我们测试,agx xavier, nx设备下,该模型可以正常预测。如果您有其他jetson设备,可以暂时先用其他的设备,我们会尽快定位修复这个问题。这是参考回答:https://github.com/PaddlePaddle/Paddle/issues/31687。yolov3在其他设备上的推理请参考:

好的,我这边暂时只有nano一个设备,bug修复后麻烦给一下链接,谢谢您!

https://zhuanlan.zhihu.com/p/319371293这个是知乎上的一个教程,也是paddledetection推荐的部署方案,用的是tensorrt的部署方案,这个是否有验证过,是否可行

gsdust commented 3 years ago

我们测试,agx xavier, nx设备下,该模型可以正常预测。如果您有其他jetson设备,可以暂时先用其他的设备,我们会尽快定位修复这个问题。这是参考回答:https://github.com/PaddlePaddle/Paddle/issues/31687。yolov3在其他设备上的推理请参考:

好的,我这边暂时只有nano一个设备,bug修复后麻烦给一下链接,谢谢您!

https://zhuanlan.zhihu.com/p/319371293这个是知乎上的一个教程,也是paddledetection推荐的部署方案,用的是tensorrt的部署方案,这个是否有验证过,是否可行?

我也按这个尝试了,目前还是不可以的。。。我也是放进去推出来为0

lleesg commented 3 years ago

@DragonGongY 目前这个bug还没有修复,源码编译也暂时不行,您可以更换为nx和agx这两款jetson设备,我们尽快修复这个bug。

请问该bug修复了么?

DragonGongY commented 3 years ago

Nano上一直都有这个问题,建议使用pytorch->onnx,再转到tensorrt部署

lleesg commented 3 years ago

Nano上一直都有这个问题,建议使用pytorch->onnx,再转到tensorrt部署

TX2上也一样,paddledetection更新到2.0问题依旧

wwqgtxx commented 2 years ago

https://github.com/PaddlePaddle/Paddle/pull/33442 这个提交后,Nano和TX2的检测应该是正常了

wangye707 commented 2 years ago

@LLeeSG @gsdust @GZHUZhao @DragonGongY 你好,这问题之前在v2.1.0版本已经修复了,现在最新已经到了v2.1.2版本。下载链接:https://paddle-inference-lib.bj.bcebos.com/2.1.2/nv-jetson-jetpack4.4-all/paddlepaddle_gpu-2.1.2-cp36-cp36m-linux_aarch64.whl

paddle-bot-old[bot] commented 2 years ago

Since this issue has not been updated for more than three months, it will be closed, if it is not solved or there is a follow-up one, please reopen it at any time and we will continue to follow up. It is recommended to pull and try the latest code first. 由于该问题超过三个月未更新,将会被关闭,若问题未解决或有后续问题,请随时重新打开(建议先拉取最新代码进行尝试),我们会继续跟进。