yolo-world踩坑指南
官方源码: https://github.com/AILab-CVC/YOLO-World
1 安装
安装这一块的坑很多,这一块的安装指导非常混乱,很容易把环境搞崩, 建议conda 新建一个环境。
pip install -e . 直接安装的话, 会报各种版本的错。 另外还有一些依赖未包含, 运行时会报错。
索性手动安装了所需要的依赖包。
最终安装的可以使用的版本:
torch 1.13.1+cu117
torchvision 0.14.1+cu117
transformers 4.40.0
openmim 0.3.9
openmim 0.3.9
mmcv-lite 2.2.0
mmdet 3.0.0
mmengine 0.10.3
mmcv 2.1.0
mmcv-lite 2.2.0
mmyolo 0.6.0
lvis 0.5.3
注意。 上面安装的mmcv的版本不满足要求,会报错, 具体报错如下:
File "/data/joyiot/leo/codes/YOLO-World/yolo_world/__init__.py", line 10, in <module>from .models import * # noqaFile "/data/joyiot/leo/codes/YOLO-World/yolo_world/models/__init__.py", line 2, in <module>from .backbones import * # noqaFile "/data/joyiot/leo/codes/YOLO-World/yolo_world/models/backbones/__init__.py", line 5, in <module>from .mm_backbone import (File "/data/joyiot/leo/codes/YOLO-World/yolo_world/models/backbones/mm_backbone.py", line 8, in <module>from mmyolo.registry import MODELSFile "/home/pinefield/anaconda3/envs/leo_py38/lib/python3.8/site-packages/mmyolo/__init__.py", line 22, in <module>assert (mmcv_version >= digit_version(mmcv_minimum_version)
AssertionError: MMCV==2.2.0 is used but incompatible. Please install mmcv>=2.0.0rc4, <2.1.0.
是因为版本不满足要求, 目标版本装了好久没装上, 最后的解决办法简单粗暴, 直接吧报错的版本检查部分删除, 实测没什么问题。
手动安装好依赖后, 把pyproject.toml
文件中的依赖部分都删除, 然后再运行pip install -e .
如果不执行pip install -e .
的话, yolo-world就不是一个python包,代码中的很多路径需要修改, 比较麻烦。
2 运行
运行image_demo.py
config 文件用 configs/pretrain/yolo_world_v2_x_vlpan_bn_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py
checkpoint 用checkpoints/yolo_world_v2_x_obj365v1_goldg_cc3mlite_pretrain_1280ft-14996a36.pth
这一点比较坑, demo中没有给出示例, 也没有给出下载地址。我是通过issue中其他人的指导找到的。checkpoint 可以在https://huggingface.co/wondervictor/YOLO-World/tree/main 下载。
另外, clip 模型名字是openai/clip-vit-base-patch32
,代码中给的有误。
对应代码是:
text_model_name = 'openai/clip-vit-base-patch32'
这会在huggingface上下载对应模型权重, 如果无法访问, 可以修改为国内源。
export HF_ENDPOINT=https://hf-mirror.com
还有lvis_v1_minival_inserted_image_name.json
这个文件依赖, 需要自行下载, 直接google 搜索即可找到。
最后就是configs/pretrain/yolo_world_v2_x_vlpan_bn_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py 中的一些文件地址, 需要根据实际情况修改。
最后终于成功运行:
(leo_py38) pinefield@edge-gpu-01:/data/joyiot/leo/codes/YOLO-World/demo$ python3 image_demo.py --image ./sample_images/bus.jpg --config ../configs/pretrain/yolo_world_v2_x_vlpan_bn_2e-3_100e_4x8gpus_obj365v1_goldg_train_lvis_minival.py --checkpoint ../checkpoints/yolo_world_v2_x_obj365v1_goldg_cc3mlite_pretrain_1280ft-14996a36.pth
SupervisionWarnings: BoundingBoxAnnotator is deprecated: `BoundingBoxAnnotator` is deprecated and has been renamed to `BoxAnnotator`. `BoundingBoxAnnotator` will be removed in supervision-0.26.0.
Loads checkpoint by local backend from path: ../checkpoints/yolo_world_v2_x_obj365v1_goldg_cc3mlite_pretrain_1280ft-14996a36.pth
[ ] 0/1, elapsed: 0s, ETA:UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at ../aten/src/ATen/native/TensorShape.cpp:3190.)
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 1/1, 1.8 task/s, elapsed: 1s, ETA: 0s