本文主要是介绍CBGS(类别平衡分组采样)技术与mmdetection3d中的实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1. CBGS(类别平衡分组采样)
CBGS是针对自动驾驶场景中类别分布不平衡的问题而提出的,被广泛用于3D目标检测中。CBGS将训练集中包含每个类别的帧进行分组,并从各组种随机选择相同数量的帧构建新的数据集,以保证在训练时,每个类别的数据被选择的机会相同。
2. mmdetection3d中CBGS数据集的构建算法
设数据集共 N N N帧数据,共考虑数据集中的 C C C类物体,含第 c c c类物体的帧数为 n c n_c nc,则CBGS的算法会构建一个大小约为 ∑ c n c \sum_cn_c ∑cnc的类平衡的新数据集(注意通常情况下 ∑ c n c ≫ N \sum_cn_c\gg N ∑cnc≫N)。
mmdetection3d中,构建CBGS数据集具体的算法流程如下:
- 对每一类,计算 p c = n c ∑ c N c p_c=\frac{n_c}{\sum_c N_c} pc=∑cNcnc;
- 计算 f = 1 / C f=1/C f=1/C;
- 对每一类,计算 r c = f / p c r_c=f/p_c rc=f/pc; # r c = ∑ c n c C ⋅ n c r_c=\frac{\sum_cn_c}{C\cdot n_c} rc=C⋅nc∑cnc
- 初始化列表
L=[]
; - 对每一类,从 n c n_c nc帧中随机挑选 m c = n c r c m_c=n_cr_c mc=ncrc帧,将帧序号加入到列表中。 # m c = ∑ c n c C m_c=\frac{\sum_c n_c}{C} mc=C∑cnc
- 得到的列表
L
即为类平衡数据集到原始数据集的帧序号映射:若要取类平衡数据集的第i
帧,实际上就是取原始数据集的第L[i]
帧。
这篇关于CBGS(类别平衡分组采样)技术与mmdetection3d中的实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!