最近需要构建属于自己的YOLO训练数据集,如果手动标注2k张图片这工作量太大了,于是就寻找有什么可以自动标注的方法。碰巧的是, 知乎正好推荐了一篇相关的文章,里面介绍了Grounding DINO这个项目完美符合我的需求。那就不用多说了,直接修改他来实现我所需的功能。
# 需求
首先要明确一下我的需求:
- 能根据prompt实现画框标注
- 能对文件夹内的数据进行批量处理
- 能将识别的结果保存为YOLO TXT格式
这个项目可以实现第一个功能,但对于第二和第三个功能就需要我自己来实现了。
# 实现
Grounding DINO可以在CPU上运行,不过为了效率考虑,最好还是运行在GPU上,为此我所有的代码都在Colab上实现。
首先是环境配置,我们要挂载Google云盘以及安装Grounding DINO。
|
|
通过上面这些代码,我们就成功配置好Grounding DINO并载入了模型。
下面就是我自己实现的训练集自动标注代码。
|
|
我们的代码会自动遍历文件夹下面所有的.png
格式的文件,并调用Grounding DINO进行标注。在这段代码中,face
的class_id
为0
,phone
的class_id
为1
。
特别的,参考这篇issue,我们的prompt使用了.
分割,这是为了避免不同顺序对结果的影响。
# 测试
由于拿到的数据是txt格式,人类很难识别,所以我们可以借助cv2
将识别的结果在图片中框出,直接写个小脚本。
|
|
这个模型识别的效果还是不错的,不过还是有些多余的识别需要手工去除。