AILab-CVC / YOLO-World

[CVPR 2024] Real-Time Open-Vocabulary Object Detection
https://www.yoloworld.cc
GNU General Public License v3.0
4.4k stars 426 forks source link

关于昨晚上最新提交的easydeploy中的export_onnx #151

Open xiyangyang99 opened 6 months ago

xiyangyang99 commented 6 months ago

我本地的环境: torch=2.0.1+cu118 mmdet=3.0 mmcv=2.0.1 mmyolo=0.6.0

运行python export_onnx.py,报错的日志如下: Traceback (most recent call last): File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/easydeploy/tools/export_onnx.py", line 157, in main() File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/easydeploy/tools/export_onnx.py", line 116, in main deploy_model(fake_input) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl return forward_call(*args, *kwargs) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/easydeploy/model/model.py", line 166, in forward neck_outputs = self.baseModel(inputs) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl return forward_call(args, **kwargs) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/mmdetection-3.0.0/mmdet/models/detectors/base.py", line 96, in forward return self._forward(inputs, data_samples) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/yolo_world/models/detectors/yolo_world.py", line 70, in _forward img_feats, txt_feats = self.extract_feat(batch_inputs, File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/yolo_world/models/detectors/yolo_world.py", line 81, in extract_feat texts = self.texts File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1614, in getattr raise AttributeError("'{}' object has no attribute '{}'".format( AttributeError: 'YOLOWorldDetector' object has no attribute 'texts'

运行demo.py报错的日志如下: Traceback (most recent call last): File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/demo.py", line 237, in export_model(runner,text='/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/data/texts/coco_class_texts.json',max_num_boxes=1000, score_thr=0.8, nms_thr=0.25) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/demo.py", line 133, in export_model torch.onnx.export(deploy_model, File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/utils.py", line 506, in export _export( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/utils.py", line 1548, in _export graph, params_dict, torch_out = _model_to_graph( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/utils.py", line 1117, in _model_to_graph graph = _optimize_graph( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/utils.py", line 665, in _optimize_graph graph = _C._jit_pass_onnx(graph, operator_export_type) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/utils.py", line 1891, in _run_symbolic_function return symbolic_fn(graph_context, *inputs, *attrs) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/symbolic_helper.py", line 392, in wrapper return fn(g, args, **kwargs) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/symbolic_opset9.py", line 1836, in symbolic_fn return symbolic_helper._unimplemented( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/symbolic_helper.py", line 607, in _unimplemented _onnx_unsupported(f"{op}, {msg}", value) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/onnx/symbolic_helper.py", line 618, in _onnx_unsupported raise errors.SymbolicValueError( torch.onnx.errors.SymbolicValueError: Unsupported: ONNX export of operator adaptive_max_pool2d, output size that are not factor of input size. Please feel free to request support or submit a pull request on PyTorch GitHub: https://github.com/pytorch/pytorch/issues [Caused by the value '1303 defined in (%1303 : Long(2, strides=[1], device=cpu) = onnx::Constant[value= 3 3 [ CPULongType{2} ]]() )' (type 'Tensor') in the TorchScript graph. The containing node has kind 'onnx::Constant'.]

Inputs:
    Empty
Outputs:
    #0: 1303 defined in (%1303 : Long(2, strides=[1], device=cpu) = onnx::Constant[value= 3  3 [ CPULongType{2} ]]()
)  (type 'Tensor')

在之前代码版本中,都有类似的报错,onnx导出的时候,有算子不支持。

taofuyu commented 6 months ago

AttributeError: 'YOLOWorldDetector' object has no attribute 'texts' 报错很明显嘛可以打个断点单步调试看看为什么。应该是export_onnx.py需要你自己加一句model.reparameterize(), 这个函数里把self.texts的值给赋上

xiyangyang99 commented 6 months ago

就在刚刚你发给我的时候,我恰好断点debug完! ------------------ 原始邮件 ------------------ 发件人: "AILab-CVC/YOLO-World" @.>; 发送时间: 2024年3月19日(星期二) 上午10:44 @.>; @.**@.>; 主题: Re: [AILab-CVC/YOLO-World] 关于昨晚上最新提交的easydeploy中的export_onnx (Issue #151)

AttributeError: 'YOLOWorldDetector' object has no attribute 'texts' 报错很明显嘛可以打个断点单步调试看看为什么。应该是export_onnx.py需要你自己加一句model.reparameterize(), 这个函数里把self.texts的值给赋上

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

xiyangyang99 commented 6 months ago

兄台,我给text赋值之后还是遇到了torch.onnx.errors.SymbolicValueError: Unsupported: ONNX export of operator adaptive_max_pool2d, output size that are not factor of input size. Please feel free to request support or submit a pull request on PyTorch GitHub: https://github.com/pytorch/pytorch/issues  [Caused by the value '1303 defined in (%1303 : Long(2, strides=[1], device=cpu) = onnx::Constant[value= 3  3 [ CPULongType{2} ]]() )' (type 'Tensor') in the TorchScript graph. The containing node has kind 'onnx::Constant'.] 

    Inputs:         Empty     Outputs:         #0: 1303 defined in (%1303 : Long(2, strides=[1], device=cpu) = onnx::Constant[value= 3  3 [ CPULongType{2} ]]()     )  (type 'Tensor')‍

这个问题?你遇到了嘛?

------------------ 原始邮件 ------------------ 发件人: "AILab-CVC/YOLO-World" @.>; 发送时间: 2024年3月19日(星期二) 上午10:44 @.>; @.**@.>; 主题: Re: [AILab-CVC/YOLO-World] 关于昨晚上最新提交的easydeploy中的export_onnx (Issue #151)

AttributeError: 'YOLOWorldDetector' object has no attribute 'texts' 报错很明显嘛可以打个断点单步调试看看为什么。应该是export_onnx.py需要你自己加一句model.reparameterize(), 这个函数里把self.texts的值给赋上

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

wondervictor commented 6 months ago

@xiyangyang99 使用最新的code吧,目前我更新了deploy/export_onnx.py

xiyangyang99 commented 6 months ago

@xiyangyang99 使用最新的code吧,目前我更新了deploy/export_onnx.py

这是使用最新的export_onnx.py导出的时候输出如下: Traceback (most recent call last): File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/export_onnx.py", line 168, in main() File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/export_onnx.py", line 127, in main deploy_model(fake_input) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl return forward_call(*args, *kwargs) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/easydeploy/model/model.py", line 168, in forward return self.pred_by_feat(neck_outputs) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World-master/deploy/easydeploy/model/model.py", line 145, in pred_by_feat bboxes = bbox_decoder(flatten_priors[None], flatten_bbox_preds, File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmyolo/models/task_modules/coders/distance_point_bbox_coder.py", line 45, in decode assert points.size(-2) == pred_bboxes.size(-2) AssertionError 备注: config和weights 都是之前版本的fintue_coco里面的训练的。export是最新的版本。

wondervictor commented 6 months ago

麻烦提供一下调用的脚本吧

xiyangyang99 commented 6 months ago

红色框里面的config。

------------------ 原始邮件 ------------------ 发件人: "AILab-CVC/YOLO-World" @.>; 发送时间: 2024年3月19日(星期二) 下午2:24 @.>; @.**@.>; 主题: Re: [AILab-CVC/YOLO-World] 关于昨晚上最新提交的easydeploy中的export_onnx (Issue #151)

麻烦提供一下调用的脚本吧

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

xiyangyang99 commented 6 months ago

用绿色的config训练之后的模型可转onnx,红色的暂时不行。 ------------------ 原始邮件 ------------------ 发件人: "AILab-CVC/YOLO-World" @.>; 发送时间: 2024年3月19日(星期二) 下午2:24 @.>; @.**@.>; 主题: Re: [AILab-CVC/YOLO-World] 关于昨晚上最新提交的easydeploy中的export_onnx (Issue #151)

麻烦提供一下调用的脚本吧

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

wondervictor commented 6 months ago

@xiyangyang99 目前看不到您提供的信息。

xiyangyang99 commented 6 months ago

@xiyangyang99 目前看不到您提供的信息。

{AZXMGTR%ZSAI8RBA 0O6OV 红色不能转onnx,绿色可以。现在转tensorrt还有点问题。onnx精度能对其。

wondervictor commented 6 months ago

我们目前支持v2的模型和efficientneck的模型转换,后期将不会再支持v1的模型了

xiyangyang99 commented 6 months ago

后面会分割支持coco数据集格式的吗?

------------------ 原始邮件 ------------------ 发件人: "AILab-CVC/YOLO-World" @.>; 发送时间: 2024年3月19日(星期二) 晚上6:06 @.>; @.**@.>; 主题: Re: [AILab-CVC/YOLO-World] 关于昨晚上最新提交的easydeploy中的export_onnx (Issue #151)

我们目前支持v2的模型和efficientneck的模型转换,后期将不会再支持v1的模型了

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

wondervictor commented 6 months ago

目前分割已经支持COCO的格式了,但是ONNX目前还不支持分割

xiyangyang99 commented 6 months ago

有些小bug,在debug

------------------ 原始邮件 ------------------ 发件人: "AILab-CVC/YOLO-World" @.>; 发送时间: 2024年3月20日(星期三) 上午10:58 @.>; @.**@.>; 主题: Re: [AILab-CVC/YOLO-World] 关于昨晚上最新提交的easydeploy中的export_onnx (Issue #151)

目前分割已经支持COCO的格式了,但是ONNX目前还不支持分割

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

xiyangyang99 commented 6 months ago

目前分割已经支持COCO的格式了,但是ONNX目前还不支持分割

Traceback (most recent call last): File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World/tools/train.py", line 120, in main() File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World/tools/train.py", line 116, in main runner.train() File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/runner/runner.py", line 1728, in train self._train_loop = self.build_train_loop( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/runner/runner.py", line 1520, in build_train_loop loop = LOOPS.build( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/runner/loops.py", line 44, in init super().init(runner, dataloader) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/runner/base_loop.py", line 26, in init self.dataloader = runner.build_dataloader( File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/runner/runner.py", line 1370, in build_dataloader dataset = DATASETS.build(dataset_cfg) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/yolo-world-v2/YOLO-World/yolo_world/datasets/mm_dataset.py", line 25, in init self.dataset = DATASETS.build(dataset) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/registry/registry.py", line 570, in build return self.build_func(cfg, args, kwargs, registry=self) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/registry/build_functions.py", line 121, in build_from_cfg obj = obj_cls(args) # type: ignore File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmyolo/datasets/yolov5_coco.py", line 19, in init super().init(args, *kwargs) File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/mmdetection-3.0.0/mmdet/datasets/base_det_dataset.py", line 40, in init super().init(args, **kwargs) File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmengine/dataset/base_dataset.py", line 247, in init self.full_init() File "/home/bowen/anaconda3/envs/mmdet/lib/python3.9/site-packages/mmyolo/datasets/yolov5_coco.py", line 27, in full_init self.data_list = self.load_data_list() File "/media/bowen/6202c499-4f0a-4280-af7e-d2ab4b6c74dd/home/bowen/mmdetection-3.0.0/mmdet/datasets/lvis.py", line 619, in load_data_list raw_img_info['file_name'] = raw_img_info['coco_url'].replace( KeyError: 'coco_url'

Process finished with exit code 1

这是用segment里面的config作为配置文件,python train.pyd 的报错。不知道你们那边有这个没有。修改datasetstype为yolov5cocodatasets之后也是同样的问题。