YOLOV4-Mosaic数据增强详解

本文深入解析Mosaic数据增强方法,此方法源自YOLOV4论文,通过随机裁剪并拼接四张图片来丰富训练数据背景,提高batch_size效率。详细介绍了裁剪与粘贴过程,以及标签框处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mosaic数据增强

Mosaic数据增强方法是YOLOV4论文中提出来的,主要思想是将四张图片进行随机裁剪,再拼接到一张图上作为训练数据。这样做的好处是丰富了图片的背景,并且四张图片拼接在一起变相地提高了batch_size,在进行batch normalization的时候也会计算四张图片,所以对本身batch_size不是很依赖,单块GPU就可以训练YOLOV4。
以下是我根据pytorch YOLOV4的代码对Mosaic数据增强进行的整理。

在这里插入图片描述

图1

部分代码展示:

oh, ow, oc = img.shape    # img为读取的图片数据      
# self.cfg.jitter为cfg文件中的参数,默认给的是0.2                                              
dh, dw, dc = np.array(np.array([oh, ow, oc]) * self.cfg.jitter, dtype=np.int)  
# 首先生成一些随机偏移的坐标,分别代表左右上下                                    
pleft = random.randint(-dw, dw)   
pright = random.randint(-dw, dw)  
ptop = random.randint(-dh, dh)    
pbot = random.randint(-dh, dh) 
# 裁剪部分的长和宽
swidth = ow - pleft - pright
sheight = oh - ptop - pbot     

整个Mosaic过程如图一所示,图一展示的是pleft,pright,ptop,pbot都大于0时的情况,首先在原图上找到以(pleft,pright)为左上角,swidth,sheight为宽和长的矩形,然后取这个矩形和原图的交集(也就是深绿色的部分)。

注意:图1中(2)这里不是直接取的交集出来,而是先创建一个宽为swidth,长为sheight的矩形,再将矩形赋值为原图RGB三个通道的均值,然后再将上面说的交集部分根据计算的坐标放在这个矩形上面,只不过图一是基于pleft,pright,ptop,pbot都大于0时的情况,所以正好放在(0, 0)坐标上。具体可以参考一以下代码。

# new_src_rect也就是上面说的交集的坐标(x1, y1, x2, y2)
 new_src_rect = rect_intersection(src_rect, img_rect)                                                                                                                        
 dst_rect = [max(0, -pleft), max(0, -ptop), max(0, -pleft) + new_src_rect[2
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值