利用视觉和语言的知识蒸馏提取来学习开放词汇目标检测,提出了一种从开放词汇图像分类模型中知识蒸馏的开放词汇检测方法ViLD,ViLD是第一个在具有挑战性的LVIS数据集上评估的开放式词汇检测方法。在lvis数据集的测试效果中达到16.1 APr,在相同的推理速度下超过了其他监督模型。
该模型可用于任意类别的物体检测
推荐基于ModelScope官方镜像使用,获取地址。
在此基础上需要安装tensorflow>=2.9。暂不支持cpu。
pip install tensorflow==2.9.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
import os
os.system('pip install tensorflow==2.9.2 -i https://pypi.tuna.tsinghua.edu.cn/simple')
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from modelscope.outputs import OutputKeys
vild_pipeline = pipeline(Tasks.open_vocabulary_detection, model='damo/cv_resnet152_open-vocabulary-detection_vild')
image_path = 'https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/image_open_vocabulary_detection.jpg'
# 检测类别名输入为一个字符串,多个类别时用 “;” 间隔开
category_names = ';'.join([
'flipflop', 'street sign', 'bracelet', 'necklace', 'shorts',
'floral camisole', 'orange shirt', 'purple dress', 'yellow tee',
'green umbrella', 'pink striped umbrella', 'transparent umbrella',
'plain pink umbrella', 'blue patterned umbrella', 'koala',
'electric box', 'car', 'pole'
])
input_dict = {'img':image_path, 'category_names':category_names}
result = vild_pipeline(input_dict)
print(result[OutputKeys.BOXES])
对于一些特殊的物体,检出的类别可能不准确,置信度较低等,这与Clip的数据与lvis基础训练数据有关
本模型是基于以下开源数据集训练得到:
Method | Backbone | Distillation weight | APr | APc | APf | AP |
---|---|---|---|---|---|---|
ViLD-ensemble | ResNet-152 | 2.0 | 19.2 | 24.8 | 30.8 | 26.2 |
@article{gu2021open,
title={Open-Vocabulary Detection via Vision and Language Knowledge Distillation},
author={Gu, Xiuye and Lin, Tsung-Yi and Kuo, Weicheng and Cui, Yin},
journal={arXiv preprint arXiv:2104.13921},
year={2021}
}