YOLOv5的Mosaic数据增强原理详解
创作时间:
作者:
@小白创作中心
YOLOv5的Mosaic数据增强原理详解
引用
CSDN
1.
https://blog.csdn.net/qq_40243750/article/details/136174191
Mosaic数据增强是YOLOv5中的一项重要技术,通过将四张图片拼接成一张大图,可以有效提升模型的泛化能力。本文将深入解析Mosaic增强的原理、实现细节以及最后的数据增强步骤,帮助读者更好地理解和优化YOLOv5模型。
1、Mosaic原理解析
Mosaic增强的原理可以用一张图来解释:
1.1 图的注释
首先,高亮区域(红色实线框)就是最后产生的Mosaic图片(即4张图片拼凑而成),高亮区域尺寸为20482048,而花朵图片的尺寸为10241024(每个任务的尺寸不一致,但是倍数关系一致)。高亮区域以中心点为4张图片的交汇点,刚好能够填装4个图片。
黄色虚线框是代码中规定了在该区域内随机产生图像交汇点,黄色虚线框的范围为单边1/4长度到3/4长度。
红色虚线是随机产生的图像交汇点,后续图像的拼凑都和这个点位置相关。
当然这个高亮区还有白色区域,这是因为没有图片填充。但是从源码def load_mosaic(self, index)可以看到,它定义了:
img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8)
即整个高亮区都使用114像素值填充,然后再copy花朵图片替换。所以在训练时空白区域的像素值为114。
1.2 图像填充
当在高亮区域(Mosaic)中随机确定一个图像交汇点后,依次将4张图片复制到高亮区域中。但是必然存在以下两种情况:
- 1)某些图像的尺寸>高亮区域(Mosaic)分配的块面积(如左上角图像),此时只有图像部分能够复制到Mosaic图像中;
- 2)某些图像的尺寸<高亮区域(Mosaic)分配的块面积(如右下角图像),此时图像能够完全复制到Mosaic中,空余的部分默认是114像素值;
现在我们以代码为例:
if i == 0: # top left
img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles
x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image)
x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image)
elif i == 1: # top right
x1a, y1a, x2a, y2a = xc, max(yc - h, 0), min(xc + w, s * 2), yc
x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h
elif i == 2: # bottom left
x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h)
x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, w, min(y2a - y1a, h)
elif i == 3: # bottom right
x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h)
x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h)
i==0即第一张图(左上角),第一次所以先创建一个2048*2048的矩阵(即Mosaic图)。- 然后计算Mosaic图中多大的区域是给花朵图像用的,在这里
x1a, y1a, x2a, y2a分别为0,0,xc,xy,即整个区块都用来复制花朵图像了。 - 最后计算需要从原图中复制哪块数据给Mosaic左上角区域。已知左上角全部都可以用来复制图片,但是这个区块面积比花朵图要小,通过计算只有花朵图中
y1b:y2b, x1b:x2b这个区域的数据和Mosaic分配的块区域一样大(4个方向上的图片都有一个角和图像交汇点对齐,所以以此为基准在原图花朵图中计算需要复制的size)。 - 最后通过
img4[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b]将花朵图img中部分数据复制到Mosaic的img4。
1.3 最后的数据增强
通过上述的Mosaic增强后,获得4张图拼凑的图像,最后还进行了两次数据增强:
# Augment
# 目标随机复制到其他位置,需要segments4标注信息,实际上没有所有这个增强没有任何操作
img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp["copy_paste"])
# 一系列增强,img4输入是2048*2048,输出是1024*1024(也是我任务的输入尺寸)
img4, labels4 = random_perspective(img4, labels4, ...)
上面一系列增强的源码见random_perspective,可以看到是一些常规的图像变化。
热门推荐
2025西北20所名校最新排名:陕西占12席,兰大列第4
车内光线如何合理调整?合理调整光线对驾驶有何帮助?
如何理解黄金价格、美债利率和美元汇率同涨的逻辑和影响?
昆明至武汉高铁G1526次列车全程7小时12分钟,平均时速208公里
道家修心秘籍《冰心诀》,短短114字,却能清净内心,消除烦恼!
宋亚轩自曝体重引热议,真相竟是这样?
宋亚轩加盟《现在就出发》第二季,与沈腾再续“黄金搭档”!
烟酰胺:维生素B3的正确补充法
烟酰胺治疗痤疮新方法:最新研究进展与临床应用
烟酰胺:心血管保护还是风险增加?
老年夫妻分床睡,感情还能保得住吗?
老年夫妻分床睡:是改善睡眠还是疏离感情?
国庆出游“上山下海”?这些急救技能要掌握!
户外徒步十大必备装备推荐
揭秘柴油十六烷值:如何提升燃油性能?
油价飙升!柴油十六烷值测定影响几何?
商标侵权:地方经济的隐形杀手
重庆江北机场停车收费标准与省钱攻略解析:每天仅需15元左右即可
从70岁双学位到神经图形艺术:老年人的多彩生活指南
《住在住宅区的两人》启示:如何让老年生活更精彩?
刘耀文《One More Night》引爆热搜,揭秘创作背后的故事
刘耀文《第二十条》:从演员到角色的双重成长
我在县城干不动充电桩生意
《熊出没:重启未来》遭遇滑铁卢,票房预测降至8.2亿
云南自驾游攻略:12条精华路线全解析
跟着赛事去旅行 | 来芒市体验有一种叫云南的生活
幽门螺杆菌 (HP) ——知“幽”理、解“幽”愁
幽门螺杆菌有什么危害,需要根除吗?
《蛟龙行动》首波测评出炉!网友:春节档最大惊喜!远超预期
智能充电模式:让手机电池更耐用