背景
在开发深度学习模型的时候,总有一些图像会造成误检,这时候就需要将这些误检的图像不进行标注加入训练,让模型知道这里是一个不需要检测的“背景”,减少模型的误检率。
而在网上搜了一大堆之后,发现并没有单独介绍这方面的文章,因此在这里做一个简单的文章进行介绍。
1、yolov8的数据集加载逻辑
第一步:首先通过图像路径得到所有图像的绝对文件路径列表
第二步:再通过img2label_paths
这个函数将图像路径转换为标签文件路径,感兴趣的可以再去看看这个函数,所以这里需要划重点!!!,yolov8不是靠给定的标签文件路径去寻找标签文件,而是将图像文件路径转换为标签路径
第三步:通过一个进程池和verify_image_label
函数将所有的标签文件加载到内存里
点进这个函数,我把标签文件存在的加载代码折叠了,只看标签文件不存在时的的代码,可以发现这里将nm置为了1.,也就是不存在标签,这个只作为一个计数使用。重点是下面这一行。对于没有标签的图像,yolov8生成了一个空白的标签,并且将这个空白标签作为真实的标签进行训练
总结
yolov8将背景图像加入训练,不是生成一个空白的标签文件,而是将背景图像直接放入训练集即可