(10-3-05)智能行为决策算法:基于自动驾驶大模型的车辆轨迹预测系统(5)数据增强

10.3.6  数据增强

到现在为止,似乎训练损失和验证损失之间存在很大的差距。这主要是因为一些图像非常相似,例如代理车辆在红灯下的帧与其以最高速度行驶时的帧相比基本相同。这个时候,可以考虑通过引入诸如CutOut、CourseDropout等增强来减小帧之间的相似性。

(1)通过引入Albumentations库的别名A,并更改了配置字典中的raster_size和pixel_size,将其设置为[500, 500]和[0.25, 0.25],以便进行更好的可视化。

import albumentations as A
 
cfg['raster_params']['raster_size'] = [500, 500]
cfg['raster_params']['pixle_size'] = [.25, .25]

(2)定义函数show_images(aug_cfg),该函数接受一个包含数据增强配置的字典aug_cfg。使用l5kit库中的AgentDataset和build_rasterizer函数创建了两个数据集sat_ds和sem_ds,分别对应卫星图像和语义地图。接着,函数从这两个数据集中随机选择一个样本,显示了原始图像以及应用数据增强后的图像。最终,通过matplotlib库在两列中显示了原始和增强后的卫星图像以及语义地图。

def show_images(aug_cfg):
    dm = LocalDataManager()
    train_zarr = ChunkedDataset(dm.require(cfg["train_data_loader"]["key"])).open()
    cfg["raster_params"]["map_type"] = 'py_semantic'
    rasterizer = build_rasterizer(cfg, dm)
    sem_ds = AgentDataset(cfg, train_zarr, rasterizer)
    cfg["raster_params"]["map_type"] = 'py_satellite'
    rasterizer = build_rasterizer(cfg, dm)
    sat_ds = AgentDataset(cfg, train_zarr, rasterizer)
 
    #get a random sample
    random_index = int(np.random.random()*len(AV_ds))
    sat_sample = sat_ds[random_index]
    sem_sample = sem_ds[random_index]
 
    sat_im = sat_sample["image"].transpose(1, 2, 0)
    sat_im = sat_ds.rasterizer.to_rgb(sat_im)
    sem_im = sem_sample["image"].transpose(1, 2, 0)
    sem_im = sem_ds.rasterizer.to_rgb(sem_im)
    
    fig, ax = plt.subplots(len(aug_cfg), 2, figsize=(15,15))
    
    for i, (key, aug) in enumerate(aug_cfg.items()):
        if aug is None:
            ax[i, 0].imshow(sat_im[::-1])
            ax[i, 0].set_title(key)
        else:
            sat_im_ = aug(image=sat_im)['image']
            ax[i, 0].imshow(sat_im_[::-1])
            ax[i, 0].set_title(key)
            
    for i, (key, aug) in enumerate(aug_cfg.items()):
        if aug is None:
            ax[i, 1].imshow(sem_im[::-1])
            ax[i, 1].set_title(key)
        else:
            sem_im_ = aug(image=sem_im)['image']
            ax[i, 1].imshow(sem_im_[::-1])
            ax[i, 1].set_title(key)
 
    plt.tight_layout();

(3)创建了一个包含不同数据增强配置的字典aug_dict,其中包括'Original'(原始图像)、'Cutout'(遮挡法)、'CoarseDropout'(粗放法遮挡)和'GridDropout'(网格法遮挡)。然后,通过调用show_images函数,展示了应用这些数据增强配置后的卫星图像和语义地图的效果,如图10-11所示。

aug_dict = {'Original': None,
            
            'Cutout':A.Cutout(num_holes=10, max_h_size=20, max_w_size=20, fill_value=0, 
                              always_apply=False, p=1),
            
            'CoarseDropout': A.CoarseDropout(max_holes=10, max_height=20, max_width=20, 
                                             min_holes=None, min_height=None, min_width=None,
                                             fill_value=0, always_apply=False, p=1),
            
            'GridDropout': A.GridDropout(ratio=.4, unit_size_min=None, unit_size_max=None,
                                         holes_number_x=None, holes_number_y=None,
                                         shift_x=0, shift_y=0, p=1)}
 
show_images(aug_dict)

图10-11  数据增强配置后的图像

(4)使用库albumentations添加一些天气增强效果,包括随机雨、随机雾和随机雪,如图10-12所示。这些增强效果可提高模型在处理栅格图像时的鲁棒性。

aug_dict = {'Original': None,
            
            'RandomRain': A.RandomRain(slant_lower=-10, slant_upper=10, drop_length=20,
                                      drop_width=1,blur_value=7, brightness_coefficient=0.7,
                                      rain_type=None, always_apply=False, p=1),
            
            'RandomFog': A.RandomFog(fog_coef_lower=0.3, fog_coef_upper=1, alpha_coef=0.08,
                                     always_apply=False, p=1),
            
            'RandomSnow': A.RandomSnow(snow_point_lower=0.1, snow_point_upper=0.3,
                                        brightness_coeff=2.5, always_apply=False, p=1)}
 
show_images(aug_dict)

图10-12  添加天气增强效果

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农三叔

感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值