# WeDetect
**Repository Path**: Mamatjan1920/WeDetect
## Basic Information
- **Project Name**: WeDetect
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-26
- **Last Updated**: 2026-04-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# WeDetect: 以检索来实现快速开放词汇目标检测
## 👀 WeDetect家族介绍
开放词汇检测旨在利用文本描述来检测任意的物体,现有的不利用跨模态交互的方案把识别任务类比成一种检索任务,即在一个统一的特征空间中匹配区域特征和文本特征。在这个项目中,我们进一步探索了这种检索的思想,并展示其在高效性和多功能性方面的优势,并提出了一个模型家族WeDetect:
- **领先的开放词汇性能。** **WeDetect** 是一个实时检测器,其具有双塔结构。我们发现,在精心收集的数据和充分的训练下,没有使用跨模态交互的WeDetect模型的性能超过了其他采用融合层的模型,使得WeDetect成为一个超强的检测基础模型。
- **高效的历史数据检索**。 **WeDetect-Uni** 是一个基于WeDetect的通用区域候选框生成器。我们冻结整个检测器,仅对目标性提示(prompt)进行微调。重要的是,候选框的特征是类别有关的,因此能够支持一种新的应用,即**目标检索**,支持在历史数据中检索目标。
- **与多模态大模型结合来完成复杂指代理解任务 (REC)**。 **WeDetect-Ref**是一个基于多模态大模型的物体分类模型,它能在给定的候选框中,检索出与给定文本相关的框。该模型不再采用逐词预测(next-token prediction)的形式,能够在一次模型推理中完成对所有物体的分类,因此具有极高的推理效率。
综上,WeDetect模型家族统一了目标检测、候选框生成、物体检索、指代表达式理解等区域感知与理解任务,并在15个公开数据集上取得领先性能。
## 📈 实验结果
#### 📍 模型库
- 请将下列模型下载并放置在 `checkpoints`文件夹中.
- WeDetect
- [WeDetect-Tiny](https://huggingface.co/fushh7/WeDetect)
- [WeDetect-Base](https://huggingface.co/fushh7/WeDetect)
- [WeDetect-Large](https://huggingface.co/fushh7/WeDetect)
- WeDetect-Uni
- [WeDetect-Base-Uni](https://huggingface.co/fushh7/WeDetect)
- [WeDetect-Large-Uni](https://huggingface.co/fushh7/WeDetect)
- WeDetect-Ref
- [WeDetect-Ref 2B](https://huggingface.co/fushh7/WeDetect-Ref-2B)
- [WeDetect-Ref 4B](https://huggingface.co/fushh7/WeDetect-Ref-4B)
#### 📍 结果
## 🔧 安装环境
#### 基本库
```
pytorch==2.5.1+cu124
transformers==4.57.1
trl==0.17.0
accelerate==1.10.0
mmcv==2.1.0
mmdet==3.3.0
mmengine==0.10.7
```
- WeDetect-Ref用户无需安装MMCV系列第三方库
- 请按照下列的指令安装环境
```
pip install transformers==4.57.1 trl==0.17.0 accelerate==1.10.0 -i https://mirrors.cloud.tencent.com/pypi/simple
pip install pycocotools terminaltables jsonlines tabulate lvis supervision==0.19.0 webdataset ddd-dataset albumentations -i https://mirrors.cloud.tencent.com/pypi/simple
pip install openmim -i https://mirrors.cloud.tencent.com/pypi/simple
mim install mmcv==2.1.0
mim install mmdet==3.3.0
```
## ⭐ Demo
#### 📍 WeDetect
```
python3 infer_wedetect.py --config config/wedetect_large.py --checkpoint checkpoints/wedetect_large.pth --image assets/demo.jpeg --text '鞋,床' --threshold 0.3
```
- 请注意:WeDetect是一个中文模型,请传入中文类名。同时该模型支持同时检测多个类别,每个类名用**英文**逗号隔开,命令中所有字符均为英文字符,包括引号(除了中文的类名)。
#### 📍 WeDetect-Uni
```
# output the prediction higher than the threshold
python generate_proposal.py --wedetect_uni_checkpoint /PATH/TO/WEDETECT_UNI --image assets/demo.jpeg --visualize --score_thre 0.2
```
#### 📍 WeDetect-Ref
```
# output the top1 prediction
python infer_wedetect_ref.py --wedetect_ref_checkpoint /PATH/TO/WEDETECT_REF --wedetect_uni_checkpoint /PATH/TO/WEDETECT_UNI --image assets/demo.jpeg --query "a photo of trees and a river" --visualize
# output the prediction higher than the threshold
python infer_wedetect_ref.py --wedetect_ref_checkpoint /PATH/TO/WEDETECT_REF --wedetect_uni_checkpoint /PATH/TO/WEDETECT_UNI --image assets/demo.jpeg --query "a photo of trees and a river" --visualize --score_thre 0.3
```
- WeDetect-Ref是一个多语言模型,您可以使用中文或者英文表达式进行测试,但是每次仅能传入一个表达式。
## 📏 评测
#### 📍 WeDetect
```
# Evaluating WeDetect-Base on COCO
bash dist_test.sh config/wedetect_base.py /PATH/TO/WEDETECT 8
```
- 请您修改config中的数据路径
#### 📍 WeDetect-Uni
```
# Evaluating recall on COCO
cd eval_recall
torchrun --nproc-per-node=8 --nnodes=1 --node_rank=0 --master_addr="127.0.0.1" --master_port=29500 eval_recall.py --wedetect_uni_checkpoint wedetect_base_uni.pth --dataset coco
```
- 请您修改`eval_recall/eval_recall.py`中第10行的数据路径
- Dataset的选项可为`coco`,`lvis`和`paco`
```
# Evaluating the object retrieval task on COCO
cd eval_retrieval
# extract embedding
torchrun --nproc-per-node=8 --nnodes=1 --node_rank=0 --master_addr="127.0.0.1" --master_port=29500 extract_embedding.py --model wedetect --wedetect_checkpoint wedetect_base.pth --wedetect_uni_checkpoint wedetect_base_uni.pth --dataset coco
# retrieval
python3 retrieval_metric.py --model wedetect --dataset coco --thre 0.2
```
- 请您修改`eval_retrieval/extract_embedding.py`中第1323行的数据路径、`eval_retrieval/retrieval_metric.py`中第61行的数据路径、以及`eval_retrieval/retrieval_metric.py`中第82行的数据路径
- Dataset可以是`coco`和`lvis`
#### 📍 WeDetect-Ref
- 请您参见`wedetect_ref`文件夹
## 在下游数据集上微调WeDetect
- 请将数据集整理成coco格式,并且提供一个类似于`data/texts/coco_zh_class_texts.json`的类别名称文件,需要是中文。
- 下面我们以coco2017数据集为例,展示如何微调。我们采用WeDetect-Base模型,并且使用8张GPU(24G及以下即可),每张GPU 4张图片,训练12个epoch。
- `Mask Refine`表示利用mask来修正bbox
#### 📍 开放词汇微调
```
# original box annotations
bash dist_train.sh config/wedetect_base_coco_full_tuning_8xbs4_2e-5.py 8
# mask refine
bash dist_train.sh config/wedetect_base_coco_full_tuning_8xbs4_2e-5_mask_refine.py 8
```
- 在开放词汇微调中,我们保留语言模型,并且其参数会随着训练更新。
#### 📍 闭集微调
```
# Step 1: extract class embeddings
python3 generate_class_embedding.py --wedetect_checkpoint wedetect_base.pth --classname_file data/texts/coco_zh_class_texts.json
# Step 2: training wedetect vision encoder
bash dist_train.sh config/wedetect_base_coco_vision_encoder_8xbs4_2e-5.py 8
```
- 在闭集检测中,我们丢弃了语言模型。
- 用户需要首先提取类别文本向量来初始化分类器。运行上述的代码会产生一个`npy`文件,您需要替换config中的路径。
| 模型 | AP | AP50 | AP75 | APs | APm | APl |
| ----------------------------- | ----------------- | -------------- | -------------- | -------------- | ---------------- | ---------------- |
| WeDetect-Base (zero-shot) | 52.1 | 69.4 | 57.0 | 34.8 | 57.1 | 69.2 |
| WeDetect-Base (OV-finetuning) | 55.7 | 73.3 | 60.8 | 38.0 | 61.1 | 72.8 |
| WeDetect-Base (OV-finetuning mask refine) | 55.8 | 73.4 | 61.0 | 38.5 | 61.0 | 72.8 |
| WeDetect-Base (CS-finetuning) | 56.2 | 73.9 | 61.6 | 39.1 | 61.7 | 73.7 |
## 🙏 致谢
- 本项目基于[mmdetection](https://github.com/open-mmlab/mmdetection/)、[YOLO-World](https://github.com/AILab-CVC/YOLO-World)、[transformers](https://github.com/huggingface/transformers)、[Qwen3-VL](https://github.com/QwenLM/Qwen3-VL) 等项目开发,感谢这些优秀的开源项目。
## ✒️ 引用
如果您觉得我们的工作对您的研究有帮助,请您引用我们的工作:
```bibtex
@article{fu2025wedetect,
title={WeDetect: Fast Open-Vocabulary Object Detection as Retrieval},
author={Fu, Shenghao and Su, Yukun and Rao, Fengyun and LYU, Jing and Xie, Xiaohua and Zheng, Wei-Shi},
journal={arXiv preprint arXiv:2512.12309},
year={2025}
}
```
## 📜 协议
- 我们的模型和代码在GPL-v3协议下开源。