自动驾驶算法 -撞前预警论文解读与项目应用

这篇具有很好参考价值的文章主要介绍了自动驾驶算法 -撞前预警论文解读与项目应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.1 深度估计应用场景之一(特斯拉撞前预警)

特斯拉自动驾驶

1.2 深度估计概念

深度估计,就是获取图像中场景里的每个点到相机的距离信息,这种距离信息组成的图我们称之为深度图,英文叫Depth map
深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络

1.3 深度估计整体架构

深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络

1.4 深度估计架构流程论文解读

一、backbone提取
深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络

代码实现:

class deepFeatureExtractor_ResNext101(nn.Module):
    def __init__(self,args, lv6 = False):
        super(deepFeatureExtractor_ResNext101, self).__init__()
        self.args = args
        # after passing ReLU   : H/2  x W/2
        # after passing Layer1 : H/4  x W/4
        # after passing Layer2 : H/8  x W/8
        # after passing Layer3 : H/16 x W/16
        self.encoder = models.resnext101_32x8d(pretrained=True)
        self.fixList = ['layer1.0','layer1.1','.bn']
        self.lv6 = lv6

        if lv6 is True:
            self.layerList = ['relu','layer1','layer2','layer3', 'layer4']
            self.dimList = [64, 256, 512, 1024,2048]
        else:
            del self.encoder.layer4
            del self.encoder.fc
            self.layerList = ['relu','layer1','layer2','layer3']
            self.dimList = [64, 256, 512, 1024]

        for name, parameters in self.encoder.named_parameters():
            if name == 'conv1.weight':
                parameters.requires_grad = False
            if any(x in name for x in self.fixList):
                parameters.requires_grad = False
        
    def forward(self, x):
        out_featList = []
        feature = x
        for k, v in self.encoder._modules.items():
            if k == 'avgpool':
                break
            feature = v(feature)
            #feature = v(features[-1])
            #features.append(feature)
            if any(x in k for x in self.layerList):
                out_featList.append(feature)
        return out_featList

二、差异特征提取
深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络

代码实现:

def forward(self, x):
        print(x.shape)
        out_featList = self.encoder(x)
        rgb_down2 = F.interpolate(x, scale_factor = 0.5, mode='bilinear')
        print(rgb_down2.shape)
        rgb_down4 = F.interpolate(rgb_down2, scale_factor = 0.5, mode='bilinear')
        rgb_down8 = F.interpolate(rgb_down4, scale_factor = 0.5, mode='bilinear')
        rgb_down16 = F.interpolate(rgb_down8, scale_factor = 0.5, mode='bilinear')
        rgb_down32 = F.interpolate(rgb_down16, scale_factor = 0.5, mode='bilinear')
        print(rgb_down32.shape)
        rgb_up16 = F.interpolate(rgb_down32, rgb_down16.shape[2:], mode='bilinear')
        print(rgb_up16.shape)
        rgb_up8 = F.interpolate(rgb_down16, rgb_down8.shape[2:], mode='bilinear')
        rgb_up4 = F.interpolate(rgb_down8, rgb_down4.shape[2:], mode='bilinear')
        rgb_up2 = F.interpolate(rgb_down4, rgb_down2.shape[2:], mode='bilinear')
        rgb_up = F.interpolate(rgb_down2, x.shape[2:], mode='bilinear')
        print(rgb_up.shape)
        lap1 = x - rgb_up
        lap2 = rgb_down2 - rgb_up2
        lap3 = rgb_down4 - rgb_up4
        lap4 = rgb_down8 - rgb_up8
        lap5 = rgb_down16 - rgb_up16
        rgb_list = [rgb_down32, lap5, lap4, lap3, lap2, lap1]

        d_res_list, depth = self.decoder(out_featList, rgb_list)
        return d_res_list, depth    

三、权重操作标准化
深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络

代码实现:

def forward(self, x):
        weight = self.weight
        weight_mean = weight.mean(dim=1, keepdim=True).mean(dim=2, keepdim=True).mean(dim=3, keepdim=True)
        weight = weight - weight_mean
        std = weight.view(weight.size(0), -1).std(dim=1).view(-1,1,1,1) + 1e-5
        #std = torch.sqrt(torch.var(weight.view(weight.size(0),-1),dim=1)+1e-12).view(-1,1,1,1)+1e-5
        weight = weight / std.expand_as(weight)
        return F.conv2d(x, weight, self.bias, self.stride, self.padding, self.dilation, self.groups)

四、网络结构ASPP(空洞卷积)
深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络

代码实现

class Dilated_bottleNeck(nn.Module):
    def __init__(self, norm, act, in_feat):
        super(Dilated_bottleNeck, self).__init__()
        conv = conv_ws
        # in feat = 1024 in ResNext101 and ResNet101
        self.reduction1 = conv(in_feat, in_feat//2, kernel_size=1, stride = 1, bias=False, padding=0)
        self.aspp_d3 = nn.Sequential(myConv(in_feat//2, in_feat//4, kSize=1, stride=1, padding=0, dilation=1,bias=False, norm=norm, act=act, num_groups=(in_feat//2)//16),
                                    myConv(in_feat//4, in_feat//4, kSize=3, stride=1, padding=3, dilation=3,bias=False, norm=norm, act=act, num_groups=(in_feat//4)//16))
        self.aspp_d6 = nn.Sequential(myConv(in_feat//2 + in_feat//4, in_feat//4, kSize=1, stride=1, padding=0, dilation=1,bias=False, norm=norm, act=act, num_groups=(in_feat//2 + in_feat//4)//16),
                                    myConv(in_feat//4, in_feat//4, kSize=3, stride=1, padding=6, dilation=6,bias=False, norm=norm, act=act, num_groups=(in_feat//4)//16))
        self.aspp_d12 = nn.Sequential(myConv(in_feat, in_feat//4, kSize=1, stride=1, padding=0, dilation=1,bias=False, norm=norm, act=act, num_groups=(in_feat)//16),
                                    myConv(in_feat//4, in_feat//4, kSize=3, stride=1, padding=12, dilation=12,bias=False, norm=norm, act=act, num_groups=(in_feat//4)//16))
        self.aspp_d18 = nn.Sequential(myConv(in_feat + in_feat//4, in_feat//4, kSize=1, stride=1, padding=0, dilation=1,bias=False, norm=norm, act=act, num_groups=(in_feat + in_feat//4)//16),
                                    myConv(in_feat//4, in_feat//4, kSize=3, stride=1, padding=18, dilation=18,bias=False, norm=norm, act=act, num_groups=(in_feat//4)//16))
        self.reduction2 = myConv(((in_feat//4)*4) + (in_feat//2), in_feat//2, kSize=3, stride=1, padding=1,bias=False, norm=norm, act=act, num_groups = ((in_feat//4)*4 + (in_feat//2))//16)
    def forward(self, x):
        print(x.shape)
        x = self.reduction1(x)
        print(x.shape)
        d3 = self.aspp_d3(x)
        print(d3.shape)
        cat1 = torch.cat([x, d3],dim=1)
        print(cat1.shape)
        d6 = self.aspp_d6(cat1)
        print(d6.shape)
        cat2 = torch.cat([cat1, d6],dim=1)
        print(cat2.shape)
        d12 = self.aspp_d12(cat2)
        print(d12.shape)
        cat3 = torch.cat([cat2, d12],dim=1)
        print(cat3.shape)
        d18 = self.aspp_d18(cat3)
        print(d18.shape)
        out = self.reduction2(torch.cat([x,d3,d6,d12,d18], dim=1))
        print(out.shape)
        return out      # 512 x H/16 x W/16

五、coarst-to-fine特征拼接
实现代码:

 # decoder 1 - Pyramid level 5
        lap_lv5 = torch.sigmoid(self.decoder1(dense_feat))#R5
        print(lap_lv5.shape) 
        lap_lv5_up = self.upscale(lap_lv5, scale_factor = 2, mode='bilinear')
        print(lap_lv5_up.shape) 

        # decoder 2 - Pyramid level 4
        dec2 = self.decoder2_up1(dense_feat)
        print(dec2.shape)
        dec2 = self.decoder2_reduc1(torch.cat([dec2,cat3],dim=1))#252
        print(dec2.shape)
        dec2_up = self.decoder2_1(torch.cat([dec2,lap_lv5_up,rgb_lv4],dim=1))
        print(dec2_up.shape)
        dec2 = self.decoder2_2(dec2_up)
        print(dec2.shape)
        dec2 = self.decoder2_3(dec2)
        print(dec2.shape)
        lap_lv4 = torch.tanh(self.decoder2_4(dec2) + (0.1*rgb_lv4.mean(dim=1,keepdim=True)))
        print(lap_lv4.shape)                 
        # if depth range is (0,1), laplacian of image range is (-1,1)
        lap_lv4_up = self.upscale(lap_lv4, scale_factor = 2, mode='bilinear')
        print(lap_lv4_up.shape)
        
        # decoder 2 - Pyramid level 3
        dec3 = self.decoder2_1_up2(dec2_up)
        dec3 = self.decoder2_1_reduc2(torch.cat([dec3,cat2],dim=1))
        dec3_up = self.decoder2_1_1(torch.cat([dec3,lap_lv4_up,rgb_lv3],dim=1))
        dec3 = self.decoder2_1_2(dec3_up)
        lap_lv3 = torch.tanh(self.decoder2_1_3(dec3) + (0.1*rgb_lv3.mean(dim=1,keepdim=True)))                 
        # if depth range is (0,1), laplacian of image range is (-1,1)
        lap_lv3_up = self.upscale(lap_lv3, scale_factor = 2, mode='bilinear')
        # decoder 2 - Pyramid level 2
        dec4 = self.decoder2_1_1_up3(dec3_up)
        dec4 = self.decoder2_1_1_reduc3(torch.cat([dec4,cat1],dim=1))
        dec4_up = self.decoder2_1_1_1(torch.cat([dec4,lap_lv3_up,rgb_lv2],dim=1))

        lap_lv2 = torch.tanh(self.decoder2_1_1_2(dec4_up) + (0.1*rgb_lv2.mean(dim=1,keepdim=True)))                  
        # if depth range is (0,1), laplacian of image range is (-1,1)
        lap_lv2_up = self.upscale(lap_lv2, scale_factor = 2, mode='bilinear')
        # decoder 2 - Pyramid level 1
        dec5 = self.decoder2_1_1_1_up4(dec4_up)
        dec5 = self.decoder2_1_1_1_1(torch.cat([dec5,lap_lv2_up,rgb_lv1],dim=1))
        dec5 = self.decoder2_1_1_1_2(dec5)
        lap_lv1 = torch.tanh(self.decoder2_1_1_1_3(dec5) + (0.1*rgb_lv1.mean(dim=1,keepdim=True)))
        # if depth range is (0,1), laplacian of image range is (-1,1)
        
        # Laplacian restoration
        lap_lv4_img = lap_lv4 + lap_lv5_up
        lap_lv3_img = lap_lv3 + self.upscale(lap_lv4_img, scale_factor = 2, mode = 'bilinear')
        lap_lv2_img = lap_lv2 + self.upscale(lap_lv3_img, scale_factor = 2, mode = 'bilinear')
        final_depth = lap_lv1 + self.upscale(lap_lv2_img, scale_factor = 2, mode = 'bilinear')
        final_depth = torch.sigmoid(final_depth)
        print(final_depth.shape)
        return [(lap_lv5)*self.max_depth, (lap_lv4)*self.max_depth, (lap_lv3)*self.max_depth, (lap_lv2)*self.max_depth, (lap_lv1)*self.max_depth], final_depth*self.max_depth
        # fit laplacian image range (-80,80), depth image range(0,80)

六、损失计算代码实现(正则化):
深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络
代码实现

def scale_invariant_loss(valid_out, valid_gt):
    logdiff = torch.log(valid_out) - torch.log(valid_gt)
    scale_inv_loss = torch.sqrt((logdiff ** 2).mean() - 0.85*(logdiff.mean() ** 2))*10.0
    return scale_inv_loss

1.5 深度估计项目应用

深度估计应用场景,自动驾驶,自动驾驶,人工智能,深度学习,算法,神经网络
如果需要本文完整项目代码,以上算法论文或者点数据集资源的小伙伴可以私信我哦!文章来源地址https://www.toymoban.com/news/detail-690326.html

到了这里,关于自动驾驶算法 -撞前预警论文解读与项目应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI大模型应用入门实战与进阶:22. AI大模型的实战项目:自动驾驶

    自动驾驶技术是人工智能领域的一个重要分支,它涉及到计算机视觉、机器学习、深度学习、路径规划、控制理论等多个领域的知识和技术。自动驾驶的目标是让汽车在人类的指导下或者无人指导下自主地完成驾驶任务,从而提高交通安全和效率。 自动驾驶技术的发展历程可

    2024年02月19日
    浏览(33)
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv4算法的自动驾驶场景 目标检测

    目录 前言 国内外目标检测算法研究现状  传统目标检测算法的发展现状 

    2024年02月06日
    浏览(37)
  • GaussDB技术解读系列:运维自动驾驶探索

    近日,在第14届中国数据库技术大会(DTCC2023)的 GaussDB“五高两易”核心技术,给世界一个更优选 择 专场,华为云数据库运维研发总监李东详细解读了GaussDB运维系统自动驾驶探索和实践。 随着企业数字化转型进入深水区,数据库系统越来越复杂,运维团队维护的数据库规模

    2024年02月07日
    浏览(36)
  • 解读 | 自动驾驶系统中的多视点三维目标检测网络

    原创 | 文 BFT机器人  01 背景 多视角三维物体检测网络,用于实现自动驾驶场景高精度三维目标检测,该网络使用激光雷达点云和RGB图像进行感知融合,以预测定向的三维边界框,相比于现有技术,取得了显著的精度提升。同时现代自动驾驶汽车通常配备多个传感器,如雷达

    2024年02月07日
    浏览(28)
  • 51-2 万字长文,深度解读端到端自动驾驶的挑战和前沿

    去年初,我曾打算撰写一篇关于端到端自动驾驶的文章,发现大模型在自动驾驶领域的尝试案例并不多。遂把议题扩散了一点,即 从大模型开始,逐渐向自动驾驶垂直领域靠近,最后落地到端到端。 这样需要阐述的内容就变成LLM基础模型、LLM+自动驾驶以及端到端自动驾驶核

    2024年02月20日
    浏览(29)
  • 自动驾驶车辆运动规划方法综述 - 论文阅读

    本文旨在对自己的研究方向做一些记录,方便日后自己回顾。论文里面有关其他方向的讲解读者自行阅读。 参考论文:自动驾驶车辆运动规划方法综述 1 摘要 规划决策模块中的运动规划环节负责生成车辆的 局部运动轨迹 ,决定车辆行驶质量的决定因素 未来关注的重点: (

    2024年01月17日
    浏览(49)
  • 【论文阅读】自动驾驶安全的研究现状与挑战

    论文题目: Autonomous Driving Security: State of the Art and Challenges(自动驾驶安全的研究现状与挑战) 发表年份: 2022-IoTJ(IEEE Internet of Things Journal) 作者信息: Cong Gao(西安邮电大学), Geng Wang(西安邮电大学), Weisong Shi(美国韦恩州立大学), Zhongmin Wang(西安邮电大学), Yanpi

    2024年02月11日
    浏览(34)
  • 【自动驾驶】【零基础】基础自动驾驶控制算法笔记

    本文接近25000字 从理论到实践,全部零基础开始,一步一步完成自动驾驶车辆控制基础 感谢:忠厚老实的老王 下面是他的主页:忠厚老实的老王的个人空间_哔哩哔哩_bilibili 目录 第一讲  绪论 第二讲  三个坐标系与运动学方程 一、控制原理 二、三个坐标系 三、左手系与右

    2023年04月21日
    浏览(35)
  • 自动驾驶技术综述1:自动驾驶算法软件架构介绍

    前言: 自动驾驶技术是一个庞大的工程体系,软件架构、功能算法、控制规划、感知识别、建图定位、电气架构、车载控制器、验证体系等等,有太多的角度可以去切入。对于自动驾驶功能与算法开发,自动驾驶功能的分级是很重要的,自动驾驶的功能衍变就是随着自动驾驶

    2024年02月06日
    浏览(32)
  • 【论文阅读】自动驾驶中车道检测系统的物理后门攻击

    论文题目: Physical Backdoor Attacks to Lane Detection Systems in Autonomous Driving(自动驾驶中车道检测系统的物理后门攻击) 发表年份: 2022-MM(ACM International Conference on Multimedia, CCF-A) 作者信息: Xingshuo Han(南洋理工大学), Guowen Xu(南洋理工大学), Yuan Zhou* (南洋理工大学), Xuehu

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包