YOLOv7 icon indicating copy to clipboard operation
YOLOv7 copied to clipboard

请问大佬,我照你流程遇到问题

Open jia0511 opened this issue 3 years ago • 18 comments

我修改完yolo.py后生成onnx后用你的后处理脚本遇到了一个bug,流程截图如下,通过netron查看是有个红箭头,请问如何解决?

2022-07-27 23-27-21屏幕截图

2022-07-27 23-27-59屏幕截图

2022-07-27 23-29-22屏幕截图

2022-07-27 23-30-08屏幕截图

jia0511 avatar Jul 27 '22 15:07 jia0511

查看一下你的onnx中的“Concat_318”结点存不存在

DataXujing avatar Jul 28 '22 08:07 DataXujing

看了,没有,只有下面这些concat: 2022-07-28 16-08-58屏幕截图

jia0511 avatar Jul 28 '22 08:07 jia0511

我的类别为5为,输出改为Concat_722,修改代码如下,但是我在转TRT时还是过不去(找不到Mul_380): 2022-07-28 16-56-44屏幕截图

2022-07-28 17-04-25屏幕截图 2022-07-28 17-04-45屏幕截图 2022-07-28 17-04-59屏幕截图 2022-07-28 17-08-13屏幕截图 2022-07-28 17-01-41屏幕截图

2022-07-28 16-59-23屏幕截图

jia0511 avatar Jul 28 '22 09:07 jia0511

不好意思,我的readme中对yolo.py的修改的截图是有问题的,正确的修改是这样的: 1659003551(1)

wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i].view(1,self.na,1,1,2)

还有一个view操作我没写,具体的参考https://github.com/DataXujing/YOLOv7/blob/main/models/yolo.py#:~:text=wh%20%3D%20(y%5B...%2C%202%3A4%5D%20*%202)%20**%202%20*%20self.anchor_grid%5Bi%5D.view(1%2Cself.na%2C1%2C1%2C2)

这个是导致你 mul结点报错的原因

DataXujing avatar Jul 28 '22 10:07 DataXujing

why通过你的源码export出来后的模型结尾部分都是断的? python3 ./models/export.py --weights ./weights/yolov7.pt --img-size 640 640 --grid

2022-07-30 09-09-38屏幕截图

链接: https://pan.baidu.com/s/1zE9ULAflecAwSDd1CiX54g 提取码: 0o5b

jia0511 avatar Jul 30 '22 01:07 jia0511

正常逐步按照README和上述过程修改是完全可以的。我的代码是基于v0.1的, 如果你下载了最新的YOLOv7的代码,请按照上述过程修改自己的代码,也是完全可以正常工作的。我看了你导出的模型,应该不是按照我的export.py导出的,很可能是你的yolo.py没有修改正确,如果修改正确,output输出节点就1个,不会像原来会输出4个 image

DataXujing avatar Jul 30 '22 08:07 DataXujing

正常逐步按照README和上述过程修改是完全可以的。我的代码是基于v0.1的, 如果你下载了最新的YOLOv7的代码,请按照上述过程修改自己的代码,也是完全可以正常工作的。我看了你导出的模型,应该不是按照我的export.py导出的,很可能是你的yolo.py没有修改正确,如果修改正确,output输出节点就1个,不会像原来会输出4个 image

DataXujing avatar Jul 30 '22 08:07 DataXujing

我建议检查上述过程,这个过程肯定是work的,我们在YOLOv5, YOLOv6, YOLOX和YOLOv7均验证了,上述操作是可以正常工作的

DataXujing avatar Jul 30 '22 08:07 DataXujing

谢谢大佬,我用了官方的预训练模型是正常可以生成fp32格式的engine,但是在用你的cpp代码推理过程中预测不到box,我改了代码中四个标签部分,还需要做什么修改的?

jia0511 avatar Jul 31 '22 04:07 jia0511

没有什么需要修改的了。

DataXujing avatar Aug 01 '22 01:08 DataXujing

我还修改了nms部分类别目前可以正常推理,但是用同样的方法尝试yolov7-wd模型却在转trt模型时,同样报了mul380问题,想问下有没有尝试过1280的模型?

jia0511 avatar Aug 01 '22 14:08 jia0511

已经按照流程修改,使用你开源的源码进行export: 2022-08-02 09-18-47屏幕截图 python3 ./models/export.py --weights ./weights/yolov7-w6.pt --img-size 1280 1280 --grid

[08/02/2022-09:24:37] [E] [TRT] ModelImporter.cpp:721: --- Begin node --- [08/02/2022-09:24:37] [E] [TRT] ModelImporter.cpp:722: input: "711" input: "1380" output: "714" name: "Mul_460" op_type: "Mul"

[08/02/2022-09:24:37] [E] [TRT] ModelImporter.cpp:723: --- End node --- [08/02/2022-09:24:37] [E] [TRT] ModelImporter.cpp:726: ERROR: ModelImporter.cpp:179 In function parseGraph: [6] Invalid Node - Mul_460 [graphShapeAnalyzer.cpp::throwIfError::1306] Error Code 9: Internal Error (Mul_460: broadcast dimensions must be conformable ) [08/02/2022-09:24:37] [E] Failed to parse onnx file [08/02/2022-09:24:37] [I] Finish parsing network model [08/02/2022-09:24:37] [E] Parsing model failed [08/02/2022-09:24:37] [E] Engine creation failed [08/02/2022-09:24:37] [E] Engine set up failed &&&& FAILED TensorRT.trtexec [TensorRT v8001] # trtexec --onnx=last_1_nms.onnx --saveEngine=yolov7_wd_fp16.engine --fp16 --workspace=3000 --verbose

jia0511 avatar Aug 02 '22 01:08 jia0511

我修改了yolov7_add_postprocess.py中的所有box部分25200->102000,还尝试了只修改了box和score的个数,还是遇到同样的问题: [08/04/2022-07:05:01] [V] [TRT] Mul_462 [Mul] inputs: [737 -> (1, 3, 160, 160, 2)[FLOAT]], [1412 -> (3, 2)[FLOAT]], [08/04/2022-07:05:01] [V] [TRT] Registering layer: 1412 for ONNX node: 1412 [08/04/2022-07:05:01] [V] [TRT] Registering layer: Mul_462 for ONNX node: Mul_462 [08/04/2022-07:05:01] [E] Error[9]: [graphShapeAnalyzer.cpp::throwIfError::1306] Error Code 9: Internal Error (Mul_462: broadcast dimensions must be conformable ) [08/04/2022-07:05:01] [E] [TRT] ModelImporter.cpp:720: While parsing node number 782 [Mul -> "740"]: [08/04/2022-07:05:01] [E] [TRT] ModelImporter.cpp:721: --- Begin node --- [08/04/2022-07:05:01] [E] [TRT] ModelImporter.cpp:722: input: "737" input: "1412" output: "740" name: "Mul_462" op_type: "Mul"

[08/04/2022-07:05:01] [E] [TRT] ModelImporter.cpp:723: --- End node --- [08/04/2022-07:05:01] [E] [TRT] ModelImporter.cpp:726: ERROR: ModelImporter.cpp:179 In function parseGraph: [6] Invalid Node - Mul_462 [graphShapeAnalyzer.cpp::throwIfError::1306] Error Code 9: Internal Error (Mul_462: broadcast dimensions must be conformable ) [08/04/2022-07:05:01] [E] Failed to parse onnx file [08/04/2022-07:05:01] [I] Finish parsing network model [08/04/2022-07:05:01] [E] Parsing model failed [08/04/2022-07:05:01] [E] Engine creation failed [08/04/2022-07:05:01] [E] Engine set up failed &&&& FAILED TensorRT.trtexec [TensorRT v8001] # trtexec --onnx=last_1_nms.onnx --saveEngine=yolov7_wd_nms_fp16.engine --fp16 --workspace=3000 --verbose

jia0511 avatar Aug 03 '22 23:08 jia0511

好的,我down模型试一下,看看有没有问题。

DataXujing avatar Aug 04 '22 01:08 DataXujing

大佬想问1280p测试结果怎么样?

jia0511 avatar Aug 07 '22 00:08 jia0511