gpt4 book ai didi

python - 用于多类对象检测的分层 K 折?

转载 作者:行者123 更新时间:2023-12-03 22:40:26 26 4
gpt4 key购买 nike

更新
我上传了一个虚拟数据集,链接 here . df.head() :
enter image description here
它有 4类总共和df.object.value_counts() :

human    23
car 13
cat 5
dog 3

我要做好 K-Fold验证拆分到多类对象检测数据集。
初始方法
为了实现正确的 k 折验证拆分,我采用了 object countsbounding box的数量考虑到。我明白了, K-fold拆分策略主要取决于数据集(元信息)。但是现在有了这些数据集,我已经尝试了如下:
skf = StratifiedKFold(n_splits=3, shuffle=True, random_state=101)
df_folds = main_df[['image_id']].copy()

df_folds.loc[:, 'bbox_count'] = 1
df_folds = df_folds.groupby('image_id').count()
df_folds.loc[:, 'object_count'] = main_df.groupby('image_id')['object'].nunique()

df_folds.loc[:, 'stratify_group'] = np.char.add(
df_folds['object_count'].values.astype(str),
df_folds['bbox_count'].apply(lambda x: f'_{x // 15}').values.astype(str)
)

df_folds.loc[:, 'fold'] = 0
for fold_number, (train_index, val_index) in enumerate(skf.split(X=df_folds.index, y=df_folds['stratify_group'])):
df_folds.loc[df_folds.iloc[val_index].index, 'fold'] = fold_number

拆分后,我已检查以确保它是否正常工作。到目前为止似乎还可以。
enter image description here
所有的褶皱都包含分层 k-fold sample , len(df_folds[df_folds['fold'] == fold_number].index)并且彼此没有交集, set(A).intersection(B)哪里 AB是两倍的索引值 ( image_id )。但问题似乎是:
Fold 0 has total: 18 + 2 + 3 = 23 bbox
Fold 1 has total: 2 + 11 = 13 bbox
Fold 2 has total: 5 + 3 = 8 bbox
忧虑
但是,我无法确定这是否是此类任务的正确方法。我想要一些建议。上面的方法可以吗?或任何问题?或者有一些更好的方法!任何类型的建议将不胜感激。谢谢。

最佳答案

在创建交叉验证拆分时,我们关心的是创建折叠,这些折叠对数据中遇到的各种“案例”具有良好的分布。
在您的情况下,您决定根据汽车的数量和边界框的数量进行折叠,这是一个不错但有限的选择。因此,如果您可以使用数据/元数据识别特定情况,则可以尝试使用它创建更智能的折叠。
最明显的选择是平衡折叠中的对象类型(类),但您可以更进一步。
这是主要思想,假设您的图像大多在法国遇到汽车,而其他汽车主要在美国遇到,它可以用来创建良好的折叠,每个折叠中都有平衡数量的法国和美国汽车。天气条件等也可以这样做。因此,每个折叠都将包含可供学习的代表性数据,以便您的网络不会对您的任务产生偏见。因此,您的模型将对数据中此类潜在的现实生活变化更加稳健。
那么,您能否在交叉验证策略中添加一些元数据以创建更好的简历?如果不是这种情况,您能否使用数据集的 x、y、w、h 列获取有关潜在极端情况的信息?
然后,您应该尝试在样本方面进行平衡的折叠,以便在相同的样本量上评估您的分数,这将减少方差并在最后提供更好的评​​估。

关于python - 用于多类对象检测的分层 K 折?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64164932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com