目录
一、写在前面的废话
二、先看看效果
三、核心原理(用人话讲)
四、环境配置(血的教训)
五、完整代码实现
5.1 模型定义 models/clip_yolov10.py
5.2 训练脚本 train_clip_yolo.py
5.3 推理脚本 inference.py
5.4 快速测试脚本 quick_test.py
六、推荐的数据集
1. COCO-O (COCO with Out-of-vocabulary)
2. LVIS (Large Vocabulary Instance Segmentation)
3. OVAD (Open Vocabulary Attribute Detection)
4. 自制数据集方案(最推荐)
一、写在前面的废话
老铁们,好久不见。最近后台一堆人问我:“大佬,YOLOv10都出来了,能不能搞个开放词汇检测?就是那种不用固定类别,想检测啥就说啥的那种?”
说实话,我之前一直在忙项目,没时间折腾。这不,前两天刚把手头的活交完,赶紧抽时间把这套东西搞出来了。传统的YOLO系列模型有个硬伤——你训练的时候定好了80类,推理的时候就只能检测这80类,想加个新类别?对不起,重新训练吧。
今天要说的这个CLIP-YOLOv10,就是把CLIP那套牛逼的图文匹配能力嫁接到YOLOv10上。简单来说,你现在可以对着模型说“我要检测红色的杯子”,它还真就能给你框出来。不用重新训练,不用准备数据集,就是这么神奇。
整个代码我已经在COCO和自定义数据集上调通跑过了,效果怎么说呢,比我想象的要好,但也没好到能直接上生产(后面会分析原因)。这篇文章,我尽量把踩过的坑都填上,让你直接用就能跑通。
二、先看看效果
先说结论:在COCO验证集上,用同样的文本描述(比如“person”、“car”这些),CLIP-YOLOv1