
🔥人工智能
笔记和资料,涉及到深度学习、自动驾驶等领域。
🔥ROS笔记
ROS机器人框架笔记。Beginer Friendly

✅Python教程
从0到1,在深入人工智能的全套Python笔记。

❤️经验经历
过往的感悟和思考。

✨碎片技术
学习工作中遇到的很赞的技术碎片,整理好了。

✨学习积累
相对于碎片技术的,已经沉淀为自己的资本的内容。
【机器人】多传感器融合定位前沿技术小笔记
碎碎念:Hello米娜桑,这里是英国留学中的杨丝儿。我的博客技术点集中在机器人、人工智能可解释性、数学、物理等等,感兴趣地点个关注吧,持续高质量输出中。唠嗑QQ群:兔叽的魔术工房 (942848525)B站账号:杨丝儿今天也在科学修仙(UP主跨站求个关注)
:star:参考
[草稿] X. Zhang, H. Liu, Z. Zou, and M. Zhou, Multi-sensor Fusion for Autonomous Driving.
:star:关键观点
前人的研究把定位和建图任务(SLAM)从实验室带到了现实场景。实验室场景和现实场景最大的区别是灵活度的提升。
自定位任务(self-positioning)现阶段有两个方向:
基于内部传感器(GPS、IMU等)根据车辆的运动信息进行定位的任务,具有累积误差的问题。
基于激光雷达等通过采样环境数据进行定位的SLAM技术,受限于环境,不适宜在低特征环境(如空旷地域)进行定位任务。
:star:关键词整理real-time posioning problems, coarse-and-fine hybrid p ...
【机器人】多传感器标定前沿技术小笔记
碎碎念:Hello米娜桑,这里是英国留学中的杨丝儿。我的博客技术点集中在机器人、人工智能可解释性、数学、物理等等,感兴趣地点个关注吧,持续高质量输出中。唠嗑QQ群:兔叽的魔术工房 (942848525)B站账号:杨丝儿今天也在科学修仙(UP主跨站求个关注)
:star:参考
[草稿] X. Zhang, H. Liu, Z. Zou, and M. Zhou, Multi-sensor Fusion for Autonomous Driving.
:star:关键观点
因为传感器融合可以起到优势互补的作用,所以多传感器标定是不可或缺的一步。
因为使用标定板或者人工标定的传统方法不能解决使用中误差累积等一系列问题,所以一个在线的实时的标定策略是必要的。
激光雷达提取出来的线特征和相机提取出来的线特征可以很好的进行匹配,进而实现标定任务。
虽然线特征是一种很可靠的几何特征,但是实际使用也存在一些问题,例如在行人极多的情况,或者说在复杂环境中,线特征就显得没有那么可靠了。
在大环境信息(像是GPS信号)缺失的情况下进行一个主动的切换,实现自适应感知/定位。(从GF-SL ...
【机器人】ROS消息机制横向对比,到底该如何进行选择?精简解释
每一种消息机制都有自己的应用场景。
类型
使用场景
话题Topic
:star:单工通信,适用于一对多场景(如传感器数据流)。
服务Service
:star:适合同步任务,节点函数调用。:star:可以是简单请求/响应式交互场景,如询问节点当前状态
动作Action
:star:适合异步任务,:star:可以是大量请求/响应式交互场景(如实时通信),:star:尤其是执行过程不能立即完成的(如导航前往某一地点),:star:也可以是后台任务分配的场景下使用。
每一种通信方式都有自己的应用场景。在消息是第一公民的ROS中,我们在设计软件的时候首先就要想到每一种消息采用的通信方式是怎样的,并且通过ROS节点图的方式画出来,以指导软件开发工作。
【机器人】满级码农入门ROS1机器人编程QA
编程思想:消息是ROS程序的一等公民。
碎碎念:Hello米娜桑,这里是英国留学中的杨丝儿。我的博客技术点集中在机器人、人工智能可解释性、数学、物理等等,感兴趣地点个关注吧,持续高质量输出中。唠嗑QQ群:兔叽的魔术工房 (942848525)B站账号:杨丝儿今天也在科学修仙(UP主跨站求个关注)
:star:知识点整理
【机器人】开发系统镜像制作指南
【机器人】ROS1学习笔记:架构部分
【机器人】ROS1工程案例:最简单的信息传递
【机器人】ROS1工程案例:自定义消息类型
【机器人】ROS1程序运行实用技巧
【机器人】ROS1程序中的服务Service:精简解析
【机器人】ROS1工程案例:服务和动作
:question:问:ROS框架的设计理念是怎么样的?
ROS2采用分布式架构,采用自发现的方式进行节点间的通信建立。
ROS1相对就显得不伦不类,因为rosmaster,也就是主节点的存在,ROS1的架构介于分布式系统和客户端/服务端系统之间。
主节点负责命名,起到和地址字典类似的作用。
:o:答:ROS1关键词域graph TB
subgra ...
【随记】内网穿透记录
NatsApp 解决一切,参照手册。
需要注意,使用TCP连接的是远程桌面,使用Web连接的是网页内容。
【机器人】开发系统Docker制作指南 施工中~
接上文: 机器人开发系统镜像制作指南
Docker的优势
【随记】2021年数据收集整理和总结
比起粉丝数和播放数,我更关心的是帮到了多少人,有多少人从我这里受益。如果这个数字是1,我我也会很满足。
:star:自省吾日三省吾身,到了年末,也该是总结一下的时候了,今年还是说了挺多金句的。
:sparkles:关于自省有些人叫做这种自省是内耗,我认为这么想是不对的。思考自己之前的做法是否有差错,是在为未来考虑,避免出现同样的差错。
就算是不断地自省在我现在这个阶段也是正确的。孔子不也说了,三十不惑,00后明天才刚刚22,正是天天烦恼的年纪。
每天把自己的烦恼自己的思考整理下来,慢慢就能够达到那种大人的境界了。
:sparkles:关于内卷卷,都可以卷。但是,要有计划的“摆烂”。不会休息的人,不会学习。
我之前有个访谈,直接给了我个称号,卷王中王,我头都笑掉了。确实,这个时代大伙都在卷,在,用标准一些的定义讲,在把更多的精力投入在没有价值的地方。
但是这里,这个所谓的标准解释其实漏掉了一点,那就是“盲目”。你不能说一个科学家在一个课题上每天比同事拼命就叫做卷,另一个更合适的词叫做敬业。你更不能说以前的防疫志愿者,竞争着每天的在岗时长是卷,那是负责。只有盲目的付出,不知道自己 ...
【随记】怎样阅读一本书-杨丝儿Ver.
书面向的读者群体存在差异,理解这部分群体的问题,洞悉作者的文意,寻找自己的不同。
【研究】论文管理工具调研
详见文末参考链接。
:star:横向比较
索引
名称
可靠性
易用性
云备份
PDF阅读/编辑
跨平台
中文支持
免费
1
EndNote
8
5
:black_circle:
:red_circle:
:black_circle:
:black_circle:
:red_circle:
2
Citavi
5
8
:red_circle:
:black_circle:
:red_circle:
:white_circle:
:black_circle:
3
Mendeley
6
6
:black_circle:
:red_circle:
:black_circle:
:white_circle:
:black_circle:
4
Readcube
:black_circle:
:black_circle:
:white_circle:
:white_circle:
:black_circle:
5
Zotero
:black_circle:
:white_circle:
:black_circle:
:white_circle:
:black ...
【Linux】Source 命令解释
source filename 与 sh filename 及./filename执行脚本的区别:
当shell脚本具有可执行权限时,用sh filename与./filename执行脚本是没有区别得。./filename是因为当前目录没有在PATH中,所有”.”是用来表示当前目录的。
sh filename 重新建立一个子shell,在子shell中执行脚本里面的语句,该子shell继承父shell的环境变量,但子shell新建的、改变的变量不会被带回父shell,除非使用export。
source filename:这个命令其实只是简单地读取脚本里面的语句依次在当前shell里面执行,没有建立新的子shell。那么脚本里面所有新建、改变变量的语句都会保存在当前shell里面。
注:常用的bash属于shell的一种,其他的还包括zsh和byobu。
【JavaScript】 进阶教程 施工中~
一、原型与原先链原型(prototype)1、函数的prototype属性每个函数都有一个prototype属性。它默认指向一个Object空对象(即成为:原型对象)
原型对象中有一个属性constructor,它指向函数对象
2、给原型对象添加属性(一般都是方法)作用:函数的所有实例对象自动拥有原型中的属性(方法)
123456789101112131415161718// 每个函数都有一个prototype属性。它默认指向一个Object空对象(即成为:原型对象)console.log(Date.prototype, typeof Date.prototype);function fun(){ }console.log(fun.prototype);// 默认指向一个object空对象(没有我们定义的属性)// 原型对象中有一个属性constructor,它指向函数对象console.log(Date.prototype.constructor === Date); // trueconsole.log(fun.prototype.constructor ...
【人工智能】面试问题整理
机器学习部分一、特征工程1. 特征归一化1)什么是特征归一化对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。
2)为什么要特征归一化为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化(Normalization)处理,使各指标处于同一数值量级,以便进行分析。
3)特征归一化常用的方法
线性函数归一化(Min-Max Scaling)。它对原始数据进行线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。
零均值归一化(Z-Score Normalization)。它会将原始数据映射到均值为0、标准差为1的分布上。
4)归一化处理适用模型
应用归一化的模型。在实际应用中,通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神 ...
【人工智能】技术总结
一、机器学习1. 基本概念1)机器学习的分类
有监督学习、无监督学习、半监督学习
有监督学习:数据做标注,模型同时接受输入+输出,主要包括回归、分类问题
无监督学习:数据不做标注,模型只接收输入,主要包括聚类
半监督学习:有监督、无监督学习结合
基于模型的学习、基于实例的学习
批量学习、增量学习
2)机器学习的基本问题
回归问题:预测结果是连续的
分类问题:预测结果是离散的
聚类问题:无监督学习,根据样本的相似程度,将相似度高的划分到同一个聚簇中
降维问题:缩小数据的维度、规模
3)机器学习的一般过程
数据收集 → 数据清洗 → 选择模型 → 训练 → 评估 → 测试 → 应用及维护
2. 数据预处理1)标准化:将样本处理为每列均值为0、标准差为1
2)范围缩放:将每列最小值转换为0,最大值转换为1
3)归一化:将数据转换为0~1之间的百分比(按行)
4)二值化:将数据转换为0/1两个值
5)独热编码:将数据转换为一个1和一串0
6)标签编码:字符串转换为数字
3. 回归问题1)线性回归
线性模型:$y = w^T x + b$
线性回归:利用线 ...
【机器人】开发系统镜像制作指南
授之以鱼不如授之以渔
注意:以下的操作均在虚拟机上完成。虚拟机可以使用免费的Virtual Box或者相对高级的VMare。
构建系统镜像使用Ubuntu Server
安装GUI桌面
1234567sudo apt updatesudo apt upgradesudo add-apt-repository universesudo add-apt-repository multiversesudo apt install taskselsudo taskselreboot
软件列表系统必备
apt-fast:替换apt或者apt-get指令,提供高效的多线程并行下载。
ROS软件
ROS1:虽然官方教程中提到,可以更换ROS的国内镜像源,但是因为之后需要使用github的验证,所以就算是换了国内的,还是需要能上github才行。这里还是建议科学上网。
ROS2:一定要确认每一次的安装指令无报错。
测试安装ROS1
1234567# rosrunrosmasterrosrun rospy_tutorials talkerrosrun rospy_tutorials list ...
【机器人】ROS1工程案例:服务和动作
我们这一部分模拟一个低能的阶乘计算器,来比较Service和Action的差异。
碎碎念:Hello米娜桑,这里是英国留学中的杨丝儿。我的博客技术点集中在机器人、人工智能可解释性、数学、物理等等,感兴趣地点个关注吧,持续高质量输出中。唠嗑QQ群:兔叽的魔术工房 (942848525)B站账号:杨丝儿今天也在科学修仙(UP主跨站求个关注)
本系列用时9天,博主也是从零开始,尽力去写的,如果发现了错误一定要私信告诉我呀。这么努力的博主,关注一下吧。
:star:案例目标说明以下问题
ROS中message,action,service的定义方式大同小异。
在消息作为一等公民的ROS软件中,灵活使用面向对象思想。
文件的命名问题,很多文件的命名是很有讲究的,节点名也是。
ROS使用大量多线程并行的思想,需要理解并行与并发、python的主锁以及阻塞和上锁的区别。
:star:准备工作
基础步骤参见:【机器人】ROS程序框架:架构部分
创建factorial_calculator包
:star:服务部分:sparkles:定义文件创建一个名为FactorialService ...
【机器人】ROS1程序中的服务Service:精简解析
基础部分参见:【机器人】ROS程序框架:架构部分
本系列用时8天,博主也是从零开始,尽力去写的,如果发现了错误一定要私信告诉我呀。这么努力的博主,关注一下吧。
作者:杨丝儿座右铭:始于兴趣,源于热爱,成于投入。介绍:爱丁堡大学 人工智能专业。技术兴趣点集中在机器人、人工智能可解释性、数学、物理等等。聊天吹水QQ群:兔叽的魔术工房 (942848525)个人博客:discover304.top个人B站账号:杨丝儿今天也在科学修仙(UP主跨站求个三连加关注)
在ROS中有三个主要的通信方式:话题、服务和动作。我们之前已经完成话题的学习,并且参考工程案例(【机器人】ROS工程案例:基础部分)完成了最简单的ROS程序。
接下来,我们对服务和动作相关的知识点进行整理,包括提出契机,定义方法及其流程,执行方法。
关于代码以及使用部分,参见:【机器人】ROS工程案例:服务和动作。通信方法间的对比,参见:【机器人】ROS消息机制横向对比,到底该如何进行选择?
:star:服务有人说:服务调用非常适合只需要偶尔去做并且会在有限时间完成的事情。确实运行服务的场景是这样的,但是这是表象,服务的价值 ...
【机器人】ROS1程序运行指北:启动、重命名、launch
本案例采用ROS1提供的示例,程序进行演示。
本系列用时7天,博主也是从零开始,尽力去写的,如果发现了错误一定要私信告诉我呀。这么努力的博主,关注一下吧。
作者:杨丝儿座右铭:始于兴趣,源于热爱,成于投入。介绍:爱丁堡大学 人工智能专业。技术兴趣点集中在机器人、人工智能可解释性、数学、物理等等。聊天吹水QQ群:兔叽的魔术工房 (942848525)个人博客:discover304.top个人B站账号:杨丝儿今天也在科学修仙(UP主跨站求个三连加关注)
:star:运行方法
执行$roscore来启动roscore
包下执行运行:$rosrun <包名> <包内可执行程序/python脚本> [<其他参数>]
:star:重命名
本来我以为重命名是个多么困难的任务,实践之后发现,这是个超级简单的小技巧。
一个机器人总会有很多重复的组件,像是两条手臂或者两对轮子,亦或是前后左右四个摄像头。我们可以采用重命名的方式对每一个组件上运行的程序进行整理,便于软件的开发和管理。
ROS中的重命名有三种,修改命名空间、修改节点名、修改主题/消 ...
【机器人】ROS1工程案例:自定义消息类型
本案例在之前的基础上进行扩展,传递一个自定义的复数类消息。
本系列用时7天,博主也是从零开始,尽力去写的,如果发现了错误一定要私信告诉我呀。这么努力的博主,关注一下吧。
作者:杨丝儿座右铭:始于兴趣,源于热爱,成于投入。介绍:爱丁堡大学 人工智能专业。技术兴趣点集中在机器人、人工智能可解释性、数学、物理等等。聊天吹水QQ群:兔叽的魔术工房 (942848525)个人博客:discover304.top个人B站账号:杨丝儿今天也在科学修仙(UP主跨站求个三连加关注)
:sparkles:注意
本文只提供在Linux平台上的代码演示和最基本的注释,不进行逻辑的解释。
相关解释以及需要用到的基础知识参见:【机器人】ROS程序框架:架构部分
本案例的前置任务包括环境搭建,工作区创建,基本软件(消息传递communicate_bot)代码,参见:【机器人】ROS1工程案例:基础部分
:sparkles:定义消息我们设计一个传递复数类型,复数类。
在包下新建msg文件夹,并在文件夹内新建Complex.msg文件
12mkdir msgtouch Complex.msg
编辑Comp ...
【机器人】ROS1工程案例:基础部分
手把手教你搭建一个传递数字消息的机器人程序。
:sparkles:注意本文只提供在Linux平台上的代码演示和最基本的注释,不进行逻辑的解释。
相关解释以及需要用到的基础知识参见:【机器人】ROS程序框架:架构部分
:sparkles:安装ROS1环境需要用到的技术以及流程参见:【机器人】开发系统镜像制作指南
:sparkles:搭建环境12345cd ~/Desktop# 在桌面上新建工作区,方便观看过程mkdir -p rob_dev_ws/srccd rob_dev_ws/srccatkin_init_workspace
:sparkles:创建包在src路径下执行
12# 这里使用python,所以我们依赖 rospycatkin_create_pkg communicate_bot rospy
:sparkles:开始编程包内src路径下放置我们的代码。
首先是发送端,文件名叫做:topic_publisher.py
1234567891011121314151617181920212223242526#!/usr/bin/env python3import r ...
【机器人】ROS1程序框架:架构部分
描述
ROS是一个开发机器人软件的框架,软件被设计成许多互相之间高速传递信息的小程序。
ROS是一个介于典型客户端/服务器系统和完全分布式系统之间,因为有一个处于中央角色的roscore在为点对点信息服务提供命名服务。
ROS节点交换信息的渠道叫做话题(topic),一个定义了类型的消息流。
ROS对大量的底层实现进行了封装,很多网络编程中常见的概念在这里被封装成了高级接口。
ROS图中的节点表示的是独立运行的程序,而图中的边表示数据流。这些数据可以是传感器的数据、执行器的命令、规划器的状态等信息。
辅助工具
介绍:catkin是ROS的构建系统:ROS用于可执行程序、库、脚本和其他代码可以用的接口的一系列工具。
技巧:使用rqt_graph可以清晰看到当前启动节点的ROS图。
技巧:使用rostopic检查当前系统状态。相关帮助使用$rostopic -h进行查看
技巧:可以使用rosmsg来查看是否有已经满足你的需求的类型
软件结构ROS以包括代码、数据和文档在内的包的形式进行管理。
核心结构graph BT
roscore(roscore)
nod ...
【自动驾驶】技术笔记:模拟器专题
如何在无人驾驶的各个模块高速迭代的同时保持整体系统的能够完全应对当前的环境场景?模拟器(又称仿真器)就是为了解决这一问题而诞生的。
模拟器的必要性随着车辆及测试场景的增多,我们得到的一个实际经验是:“No Simulation, No Scalability”(没有模拟仿真,就没有可扩展性)。
模拟器的优势:
极大地提高开发效率
测试和验证极端场景
最大化发挥沉淀数据的作用
孵化人工智能和场景驱动的重要先决条件
模拟器平台将以两种方式处理每个模块的输出数据,一种是进行多方位多角度的显示,便于开发人员对模块的输出结果进行校验和调试。另一种是基于某种评价标准,自动对输出数据进行评判和打分,并且将评判和打分的结果以详细数据报告的形式呈现。
对模拟器系统的要求数据信息在车与外部环境的相互作用中产生了一个闭环。无人车的仿真系统就是寻求在软件环境中重塑这样的一个数据闭环,以测试车上的主要软件算法模块。
模拟器系统有一个比较好的前端,从而更好地与后期的云端大规模模拟兼容。
模拟器后端由四个部分组成:模块调度(调度引擎根据输入数据时序,调用各个软件模块,生成输出的数据包)、打分系统(根据数据 ...
【自动驾驶】技术笔记:ROS系统
要求
软硬件模块数据增加,运行期间难免有些模块会出现异常退出,或者导致系统崩溃。如何为系统提供自我修复能力?
模块之间有很强的联系,如何管理模块间的有效通信?对于关键模块间的通信,信息不可丢失,不可有过大的延时。
每个功能模块间如何进行资源的隔离,如何分配计算与内存资源,当资源不足时如何确认更高的优先级执行?
边缘计算(用户端系统)ROS介绍注意:ROS并不是真正意义上的操作系统,只能算是中间件。
ROS具有很强的代码可复用性和硬件抽象性能,采用分布式架构,通过各功能独立的节点实现消息传递任务的分层次运行,从而减轻实时计算的压力。同时ROS为常用的机器人和传感器提供了硬件驱动接口。
ROS 本身是基于消息机制的,这样的做法使得开发者可以根据软件的功能把软件拆分成各个模块。ROS底层会识别某一个消息的使用者,然后把消息数据分发给他们。
节点:实现运算功能的进程,ROS机器人仿真架构由功能独立的节点组成。
节点管理器:Master 主要用来管理节点,每个节点都需要通过节点管理器实现节点名字的注册,节点之间相互查找也需要在节点管理器内进行。
参数服务器:Parameter Server ...
【自动驾驶】技术笔记:传感器专题
基础设备GPS
使用三角测量法的定位原理,需要3个及以上的卫星位置数据。
GPS精准定位的条件很苛刻,需要精准的时间戳,以及比较空旷的环境。
复杂的城市环境会造成信号的反射与折射,产生多路径问题。同时GPS的更新频率低,不足以满足自动驾驶的需要。
为了提高GPS的准确度,我们引入了差分GPS技术,对误差进行一个修正。
IMU
检测和测量加速度与旋转运动的传感器。
常用的MEMS(Micro Electro-Mechanical Systems)的六轴惯性传感器,使用三个加速度传感器和是三个陀螺仪构成。
无人车上采用的一般是中低级的MEMS,频率高,误差会随着时间累加,所以只可以在很短的时间内依赖惯性传感器进行定位。
因为制作工艺的问题,IMU的测量会有一定的误差。主要是三种:偏移误差(零偏移)、比例误差(输入输出比)和背景白噪声。
LiDAR
激光雷达,准确率很高,计算难度相较于图像要低,作为无人车设计中的主传感器使用。
点云:Point Cloud,收集到的数据是很多点的3维极坐标。基于点云和GPS的定位是采用的是贝叶斯法则,计算汽车所处位置的可能性。
受到空气悬浮物的影响,极限 ...
【数学】到底什么是拓扑?
目录@[TOC]
定义注意:以下内容来自百度百科:拓扑
拓扑(Topology)是研究几何图形或空间在连续改变形状后还能保持不变的一些性质的一个学科。它只考虑物体间的位置关系而不考虑它们的形状和大小。
概念解释注意:以下内容大部分来自知乎:硬核科普:什么是拓扑?
即使这两个对象在几何形状上有所不同,但它们在拓扑上完全等价。我们可以将橡皮泥拉伸成可以想象的任何奇怪形状,但在拓扑结构世界中,所有这些形状都完全相同。也许你对拉伸的形状没有什么概念,但是关于如何拉伸橡皮泥的游戏有一些规则:
不允许在橡皮泥上打洞;
不允许将橡皮泥上的两点捏合在一起(我们没法将球形的橡皮泥做成甜甜圈的形状)。
如果我们在拉伸时违反了这些规则,那么这两个对象在拓扑上将不再等价。拓扑学家称这种不破坏既定规则的拉伸为同胚,这只是一种数学上精确地描述如何让橡皮泥的形状保持相同拓扑性质的方法。因此,如果我们可以得出两个拓扑空间之间的同胚性,则这些空间具有相同的拓扑,这就说到了咖啡杯和甜甜圈动画。
在拓扑上区分三维对象的另一种常用方法是,想象在三维对象上面行走。例如,在球体上行走。假设你从某个点开始,一直绕着球体上 ...
【自动驾驶】技术笔记:概述
后续任务:需要补充,阅读参考书的 6 7 8 / 9 10 / 12 / 13 14 15 / 17 / 18 19 20
基本情况
自动驾驶技术在异常环境中的可靠性一直都没有得到很好的解决。
无人驾驶或者移动机器人包括感知、定位和决策三个技术点,也包括适用于无人驾驶的边缘计算系统和一个无人驾驶云平台提供更高级的训练、统筹规划任务。
完全自动驾驶会比计算机辅助驾驶要更加可靠。
定位卡尔曼滤波可以使用卡尔曼滤波(Kalman Filter)整合GPS和IMU的优势。通过GPS和IMU可以为车辆定位提供既准确有足够实时的位置更新。
但是因为GPS受到环境影响比较大,同时IMU存在累积误差的问题,我们采用摄像头的立体视觉定位作为补充方案。再结合LiDAR对环境的“形状化描述”与高精度地图匹配,进行多传感器融合以达到更准确的定位。
视觉里程计算法用于定位的视觉里程计算法,有两类:一类是基于拓扑与地标的算法,另一类是基于几何的视觉里程计算法。
第一类需要预先把所有的地标(像是某个路口的标志)组成一个精准的拓扑图,当无人车监测到某个地标时, ...
【深度学习】自然语言处理
自然语言处理(NLP)讲义一、NLP概述1. NLP的定义NLP(Nature Language Processing,自然语言处理)是计算机学科及人工智能领域一个重要的子学科,它主要研究计算机如何处理、理解及应用人类语言。所谓自然语言,指人说的话、人写的文章,是人类在长期进化过程中形成的一套复杂的符号系统(类似于C/Java等计算机语言则称为人造语言)。以下是关于自然语言处理常见的定义:
自然语言处理是计算机科学与语言中关于计算机与人类语言转换的领域。——中文维基百科
自然语言处理是人工智能领域中一个重要的方向。它研究实现人与计算机之间用自然语言进行有效沟通的各种理论和方法。——百度百科
自然语言处理研究在人与人交际中及人与计算机交际中的语言问题的一门学科。NLP要研制表示语言能力和语言应用的模型,建立计算机框架来实现这些语言模型,提出相应的方法来不断完善这种模型,并根据语言模型设计各种实用系统,以及对这些系统的评测技术。——Bill Manaris,《从人机交互的角度看自然语言处理》
自然语言处理还有其它一些名称,例如:自然语言理解(Natural Language ...
【深度学习】人脸检测与人脸识别
一、概述1. 基本概念人脸是个人重要的生物特征,业界很早就对人脸图像处理技术进行了研究。人脸图像处理包括人脸检测、人脸识别、人脸检索等。人脸检测是在输入图像中检测人脸的位置、大小;人脸识别是对人脸图像身份进行确认,人脸识别通常会先对人脸进行检测定位,再进行识别;人脸检索是根据输入的人脸图像,从图像库或视频库中检索包含该人脸的其它图像或视频。
2. 人脸检测与识别的应用
实名认证
人脸考勤
刷脸支付、刷脸检票
公共安全:罪犯抓捕、失踪人员寻找
3. 传统人脸检测与人脸识别方法1)人脸检测
基于知识的人脸检测法。它将典型的人脸形成规则库对人脸进行编码。通常, 通过面部特征之间的关系进行人脸定位。
基于模板匹配的人脸检测法。存储几种标准的人脸模式, 用来分别描述整个人脸和面部特征;计算输入图像和存储的模式间的相互关系并用于检测。
基于特征的人脸检测法。是在姿态、视角或光照条件改变的情况下找到存在的结构特征, 然后使用这些特征确定人脸。
基于外观的人脸检测法。与模板匹配方法相反, 从训练图像集中进行学习从而获得模型(或模板) ,并将这些模型用于检测。
2)人脸识别
几何特征分析法。首先, ...
【深度学习】生成对抗网络(GAN)
一、概述生成对抗网络(Generative Adversarial Networks)是一种无监督深度学习模型,用来通过计算机生成数据,由Ian J. Goodfellow等人于2014年提出。模型通过框架中(至少)两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。生成对抗网络被认为是当前最具前景、最具活跃度的模型之一,目前主要应用于样本数据生成、图像生成、图像修复、图像转换、文本生成等方向。
GAN这种全新的技术在生成方向上带给了人工智能领域全新的突破。在之后的几年中生GAN成为深度学习领域中的研究热点,近几年与GAN有关的论文数量也急速上升,目前数量仍然在持续增加中。
GAN论文数量增长示意图
2018年,对抗式神经网络的思想被《麻省理工科技评论》评选为2018年“全球十大突破性技术”(10 Breakthrough Technologies)之一。 Yann LeCun(“深度学习三巨头”之一,纽约大学教授,前Facebook首席人工智能科学家)称赞生成对抗网络是“过去20年中深度学习领域 ...
【深度学习】图像语义分割
一、基本介绍1. 什么是语义分割语义分割(Semantic Segmentation)是图像处理和机器视觉一个重要分支,其目标是精确理解图像场景与内容。语义分割是在像素级别上的分类,属于同一类的像素都要被归为一类,因此语义分割是从像素级别来理解图像的。如下如所示的照片,属于人的像素部分划分成一类,属于摩托车的像素划分成一类,背景像素划分为一类。
语义分割
图像分割级别可以分为语义级分割、实例级分割和全景分割。
语义分割(semantic segmentation):对图像中的每个像素划分到不同的类别;
实例分割(instance segmentation):对图像中每个像素划分到不同的个体(可以理解为目标检测和语义分割的结合);
全景分割(panoptic segmentation):语义分割和实例分割的结合,即要对所有目标都检测出来,又要区分出同个类别中的不同实例。
左上:原图;右上:语义级分割;左下:实例级分割;右下:全景分割
### 2. 应用
1)无人驾驶
2)医学、生物图像分割(如病灶识别)
3)无人机着陆点判断
4)自动抠图
5)遥感图像分割
3. 语义分 ...