热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

预处理是怎么实现的_无人驾驶小车的实现也没那么复杂

本文作者:吴东昱,北京钢铁侠科技深度学习算法工程师,主要研究深度学习、无人驾驶等。上边显示的是本文所讲的最终效果,下边来看看
本文作者:吴东昱,北京钢铁侠科技深度学习算法工程师,主要研究深度学习、无人驾驶等。上边显示的是本文所讲的最终效果,下边来看看怎么实现,以及过程中的一些相关技术要点。我在观察历届智能车竞赛以及教学实验中发现,采用传统视觉算法的视觉智能车只能在特定赛道中行驶,一旦赛道环境改变,必须修改大量的代码才能运行。算法适应性差是制约智能车场景化适配的重要因素。而“AI智能车”借助深度学习算法,通过真实数据采集到模型新训练恰恰能够解决这一问题。基于飞桨平台,我们快速研制出了“无人驾驶智能车”,已经实现了道路检测以及交通标识识别(红绿灯/限速牌/人行道/停车位)等功能。在本文中,我将为大家揭秘“基于飞桨的无人驾驶智能车”的具体实现过程和效果。第一步:如图1所示,在智能车硬件配置上,高性能处理器是实现深度学习算法运行的必备条件,目前通用流行的高性能处理器如:intel CPU、NVDIA GPU、百度Edgeboard系列、NXP i.MX8系列,在这里我们选择了基于百度Edgeboard系列的高性能板卡作为智能车的主处理器。cba830c4d41b40814f95806d776b9dba.png图1.智能车硬件框架第二步:在解决了处理器的问题之后,要实现智能车对道路和交通标识的识别就要面临深度学习框架和深度学习算法的选择。目前通用流行的深度学习框架有Tensorflow、飞桨(PaddlePaddle)、Caffe、PyTorch等。我们选择了飞桨,飞桨作为国产化的深度学习框架,配合一站式开发平台AI Studio,为用户提供了优质的开发服务。进一步借助飞桨平台发布的官方支持的工业级模型以及高性能推理引擎Paddle Lite,可以快速实现自然语言处理、计算机视觉、推荐引擎等多个领域应用的开发和部署。在车道线识别上,我们采用的是卷积神经网络CNN。CNN在图像领域有重要的应用价值,结合实际测试经验,我们的智能车采用了5个卷积层加2个全连接层来构成车道线网络模型,智能车整体工作流程可分为数据集创建、数据处理、模型训练和部署预测四步。e8acbef1a005a6f08b16f06f732adade.png数据采集通过手柄遥控智能车在赛道内按照适当速度运行,记录过程中的每一帧图像及对应的转弯角度。采集的图像如图2所示。ff25d6a8960c0cdf7ac7b495f03363fa.png图2 采集的图像集代码解析:运行的程序包括三个进程分别控制:获取手柄数据、保存图像数据以及保存转弯数据;通过创建一个互斥锁,使得图像数据和角度信息一一对应保存下来;最后将转弯数据转成npy文档,便于下一步的调用。fa5abc78dd921ce8f2d4908062502123.png图3 数据采集代码解析图像预处理对获取的图像信息进行预处理,提取出图像中的赛道,并保存处理后的图像。处理后的图像如图4所示。c01317cd9c41cf225f7fc11f6afbc22c.png图4 处理后的数据代码解析:依次读取数据集中的图像,根据颜色阈值限定对每一张图像颜色信息进行二值化处理并另存到特定目录下,如图5所示。59b3f85d48c3a4a1da076d014d6f9e30.png图5 数据处理代码解析模型训练以卷积神经网络为主体搭建深度学习网络框架,并将图像及转弯角度信息放入模型中进行训练,最终得到训练后的模型,搭建的模型如图6所示。d4d271118a55e1b928266027a1f5fc36.png图6 模型训练本过程通过飞桨框架,在其中定义损失函数、优化方案、层数、卷积核大小等参数。具体代码如图7所示。99a89164df33f500346c2f96d20cf853.png2276addfecf56bb87d9cd5739da0be46.png图7 模型训练代码解析部署预测将AI Studio得到的飞桨CNN模型下载到终端,并通过局域网传入智能车的主处理器上,在智能车主处理器上利用Paddle Lite实现模型调用。然后把智能车放置在赛道中,智能车通过调用训练好的模型,根据实时采集的图像信息,输出对应的转弯角度,进而实现自主运行,具体实现代码如图8所示。e648c7171065aa39c3124f87207d3c90.png图8 预测部署代码解析

最后再看一遍效果:

详情可查看项目地址:

https://github.com/PaddlePaddle/Paddle-Lite/tree/develop/mobile

推荐阅读

“我的名片可以运行 Linux”

2019年C++有哪些发展?

IntelliJ平台2020年路线图

Scala路线图:跳过2.14,明年上Scala 3

GNOME操作系统将出现




推荐阅读
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
  • 本文详细介绍了如何在Linux系统中搭建51单片机的开发与编程环境,重点讲解了使用Makefile进行项目管理的方法。首先,文章指导读者安装SDCC(Small Device C Compiler),这是一个专为小型设备设计的C语言编译器,适合用于51单片机的开发。随后,通过具体的实例演示了如何配置Makefile文件,以实现代码的自动化编译与链接过程,从而提高开发效率。此外,还提供了常见问题的解决方案及优化建议,帮助开发者快速上手并解决实际开发中可能遇到的技术难题。 ... [详细]
  • 利用PaddleSharp模块在C#中实现图像文字识别功能测试
    PaddleSharp 是 PaddleInferenceCAPI 的 C# 封装库,适用于 Windows (x64)、NVIDIA GPU 和 Linux (Ubuntu 20.04) 等平台。本文详细介绍了如何使用 PaddleSharp 在 C# 环境中实现图像文字识别功能,并进行了全面的功能测试,验证了其在多种硬件配置下的稳定性和准确性。 ... [详细]
  • 点云技术初探(三):PCL基础知识与学习路径指南本文首先介绍了点云库(PCL)的基本概念,PCL是一个在前人点云研究成果基础上发展而来的大型跨平台开源C++编程库,旨在为点云数据处理提供全面的支持。文章详细阐述了PCL的核心功能及其在三维数据处理、特征提取、分割与配准等方面的应用,并为初学者提供了系统的学习路径和资源推荐,帮助读者快速掌握PCL的使用方法。 ... [详细]
  • 2019年斯坦福大学CS224n课程笔记:深度学习在自然语言处理中的应用——Word2Vec与GloVe模型解析
    本文详细解析了2019年斯坦福大学CS224n课程中关于深度学习在自然语言处理(NLP)领域的应用,重点探讨了Word2Vec和GloVe两种词嵌入模型的原理与实现方法。通过具体案例分析,深入阐述了这两种模型在提升NLP任务性能方面的优势与应用场景。 ... [详细]
  • 表面缺陷检测数据集综述及GitHub开源项目推荐
    本文综述了表面缺陷检测领域的数据集,并推荐了多个GitHub上的开源项目。通过对现有文献和数据集的系统整理,为研究人员提供了全面的资源参考,有助于推动该领域的发展和技术进步。 ... [详细]
  • 本文提供了PyTorch框架中常用的预训练模型的下载链接及详细使用指南,涵盖ResNet、Inception、DenseNet、AlexNet、VGGNet等六大分类模型。每种模型的预训练参数均经过精心调优,适用于多种计算机视觉任务。文章不仅介绍了模型的下载方式,还详细说明了如何在实际项目中高效地加载和使用这些模型,为开发者提供全面的技术支持。 ... [详细]
  • 基于TensorFlow的鸢尾花数据集神经网络模型深度解析
    基于TensorFlow的鸢尾花数据集神经网络模型深度解析 ... [详细]
  • 计算 n 叉树中各节点子树的叶节点数量分析 ... [详细]
  • 在处理大规模并发请求时,传统的多线程或多进程模型往往无法有效解决性能瓶颈问题。尽管它们在处理小规模任务时能提升效率,但在高并发场景下,系统资源的过度消耗和上下文切换的开销会显著降低整体性能。相比之下,Python 的 `asyncio` 模块通过协程提供了一种轻量级且高效的并发解决方案。本文将深入解析 `asyncio` 模块的原理及其在实际应用中的优化技巧,帮助开发者更好地利用协程技术提升程序性能。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 图像分割技术在人工智能领域中扮演着关键角色,其中语义分割、实例分割和全景分割是三种主要的方法。本文对这三种分割技术进行了详细的对比分析,探讨了它们在不同应用场景中的优缺点和适用范围,为研究人员和从业者提供了有价值的参考。 ... [详细]
  • 数据科学笔记26:深入解析随机森林分类算法及其在Python和R中的应用
    ### 摘要随机森林是一种在集成学习领域备受推崇的算法,被誉为“集成学习技术的典范”。该方法因其简洁性、易实现性和较低的计算成本而被广泛应用。本文将深入探讨随机森林的工作原理,特别是其在Python和R中的具体应用。随机森林通过结合多个决策树和Bagging技术,有效提高了模型的准确性和鲁棒性。我们将详细解析其核心机制,并通过实际案例展示如何在不同编程环境中高效实现这一强大的分类算法。 ... [详细]
  • 全球计算机视觉顶会CVPR2018(ConferenceonComputerVisionandPatternRecognition,即IEEE国际计算机 ... [详细]
  • TensorFlow基础知识深化讲解
    批标准化批标准化(batchnormalization,BN)是为了克服神经网络层数加深导致难以训练而诞生的。深度神经网络随着深度加深,收 ... [详细]
author-avatar
我系懒懒懒猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有