【算法介绍】
YOLOv5最引人注目的增强技术之一是马赛克增强,它将四张不同的图像拼接成一张图像。
思路:首先,从数据集中随机选择四张图像,然后将它们缩放、随机裁剪,并按马赛克模式拼接在一起。这种方式允许模型看到多尺度的目标,并且增强了目标的背景多样性。
步骤:
- 初始化整个背景图, 大小为(2 × image_size, 2 × image_size, 3)
- 随机取一个中心点
- 基于中心点分别将4个图放到左上,右上,左下,右下,,此部分可能会由于中心点小于4张图片的宽高
- 所以拼接的时候可能会进行裁剪重新将打标边框的偏移量计算上
mosaic增强被认为是在传统增强算法最能提升模型性能的增强手段之一,因此研究了一下如何在已有数据集和标注情况下通过这个增强扩充自己的数据集,数据集扩展后,自动生成图片和对应标注,这样无需重新标注大大加快数据集集成能力。因此我实现了这个功能,而且效果很不错。
【效果展示】
标注情况:
【使用方法】
安装好opencv-python和pillow模块后,执行python main.py即可,main.py里面路径需要提前修改为自己对应路径
from voc_mosaic_firc import *
if __name__ == '__main__':
image_dir = r'E:\VOC2012\JPEGImages' # 图片目录必须是.jpg格式
xml_dir = r'E:\VOC2012\Annotations' # 标注目录,里面有对应xml文件,voc格式
save_dir = r'C:\Users\Administrator\Desktop\dataset' # 保存目录
generate_count = 5 # 生成数
mm = MosaicManager() # 构建对象
mm.start(image_dir, xml_dir, save_dir, generate_count) # 开始生成
【完整实现源码下载】