百度自动驾驶系统Apollo源码分析
百度自动驾驶系统 Apollo
源码分析
Apollo(阿波罗)是百度今年发布的汽车自动驾驶系统,它是不是可以无人驾驶?安全性又如何保证?下面我们就来看看自动驾驶指的是什么,以及它是如何实现的.
##自动驾驶评级
先来看看什么是自动驾驶,2014 年,SAE
International(国际汽车工程师协会)制订了一套自动驾驶汽车分级标准,其对自动化的描述分为
5 个等级。
自动驾驶评级
从辅助驾驶到全自动驾驶,都属于自动驾驶,只是级别不同,现在有很多车已经配置了定速巡航,自动泊车,这是从
L1 走向 L2 阶段;而 L3
是说人可以不进行主动驾驶,但需要时刻保持注意力;据说 Google 的 Waymo
自动驾驶系统已达到 L4
水平,它能在特定地理区域和条件下,完成整个动态驾驶任务.大家离 L5
还都有一段很长的路要走.百度的目标是 2019 年量产 L3 的汽车.
同样是自动,但是程度不同,具体要看:设计运行范围(operational
design domain,简称
ODD),它包括地理位置、道路类型、速度范围、天气、时间、国家和地方性交通法律法规等等.
硬 ...
AlphaGoZero与增强学习
AlphaGo Zero 与增强学习
2017 年 10 月 19 日凌晨,DeepMind
在《自然》杂志上发表了一篇论文,正式推出人工智能围棋程序的最新版本——AlphaGo
Zero.
AlphaGo Zero 成长史
最初 AlphaGo Zero
除了围棋的基本规则以外,没有任何关于围棋的知识;
3 个小时之后,它通过自学入门围棋,成为人类初学者水平;
19
个小时之后,它自已总结出了一些"套路",比如死活,打劫,先占边角等等;
自学第三天后,它战胜了 AlphaGo Lee(当初击败李世石的 AlphaGo
版本);
自学第四十天后,它战胜了 AlphaGo Master(今年击败柯洁的 AlphaGo
版本)
与之前的 AlphaGo 版本相对,它不但提高了水平,而且节约了算力.
这还不是最重要的,最重要的是它只使用了增强学习,因此它的意义就不仅仅是赢得棋类比较这么简单了.
增强学习
先来看看什么是增强学习(Reinforcement
Learning),我们知道机器学习分为有监督学习和无监督学习,增强学习介于它们两个之间,它关注的是智能 ...
深度学习_总结篇
深度学习 _ 总结篇
前篇总结
深度学习 _ 简介及相关概念
http://blog.csdn.net/xieyan0811/article/details/78401473
深度学习 _ 工具
http://blog.csdn.net/xieyan0811/article/details/78411882
深度学习 _BP 神经网络
http://blog.csdn.net/xieyan0811/article/details/78425453
深度学习 _ 卷积神经网络 CNN
http://blog.csdn.net/xieyan0811/article/details/78438329
深度学习 _ 循环神经网络 RNN 与 LSTM
http://blog.csdn.net/xieyan0811/article/details/78462982
朋友反馈说,看不懂 CNN 和 RNN
篇.文章确实因为篇幅原因,有点跳步了.不过我觉得主要原因还是跳过了前面的基础部分.我们很多时候喜欢直击重点,跳过过程,但是有的过程确实跳不过去.
数据挖掘,机器学习,机器视觉,语言处理这些背 ...
深度学习_循环神经网络RNN与LSTM
深度学习 _ 循环神经网络 RNN
与 LSTM
1. 循环神经网络 RNN
1) 什么是 RNN?
循环神经网络(RNN)是一种节点定向连接成环的人工神经网络。具体应用有语音识别,手写识别,翻译等.
2) 什么时候使用 RNN?
FNN(前馈神经网络,如 BP,CNN 等)效果已经不错了,RNN
还需要更大量的计算,为什么要用 RNN 呢?如果训练 N
次,每次和每次都没什么关系,那就不需要
RNN,但如果每个后一次都可能和前一次训练相关,比如说翻译:一个句子里面N个词,一个词为一次训练(train
instance),一个词的意思很可能依赖它的上下文,也就是其前次或后次训练,这个时候就需要
RNN.
3) RNN 与 FNN 有何不同?
如图所示,左边的是前馈神经网络,数据按黑箭头方向从输入层经过隐藏层流入输出层,向前流动,因此叫做前馈网络.右图中,隐藏层中的数据除了传向输出层,还和下次输入一起训练后续的隐藏层,不再是单向,而是包含了循环,则构成了循环神经网络.下图是将各个时间点画在同一图上,左边前馈
FNN 的展开图,右边是 RNN 的展开图.
简单地说,它只是在隐藏层处加了 ...
深度学习_卷积神经网络CNN
深度学习 _ 卷积神经网络 CNN
1. 引入
卷积神经网络(CNN)是一种专门用来处理具有网格结构数据的神经网络.它属于前馈神经网络,它被定义为:至少在某一层用卷积代替了矩阵乘法的神经网络.最常见的应用场景是图像识别.
前篇我们自己动手,用 Python 实现了一个 BP 神经网络,本篇我们在 Keras
框架之下实现卷积神经网络(Keras 框架详见《深度学习 _ 工具》篇).Keras
几乎是搭建 CNN
最简单的工具了,然而原理并不简单:除了基本的神经网络中用的误差函数,激活函数等概念以外(具体详见《深度学习
_BP 神经网络》),CNN 还用到了卷积,池化,DropOut
等方法.将在本文中逐一介绍.
2. 原理
1) 图像识别
先来看看图形学中的图像识别是如何实现的.
图片.png
我们拿到了原图(图上左),一般先将其转换成灰度图(图上中).然后进行边缘检测,图像处理中常使用计算梯度方法(判断某像素与它相邻像素的差值)检测边缘.在
CNN 中我们用卷积来检测:先设计一个卷积核计算相邻像素的差值,然后用
ReLU(f(x)=max(0,x)) 激活函数将那些差值小的置为 ...
深度学习_BP神经网络
深度学习 _BP 神经网络
1. 说明
现在使用深度学习算法都以调库为主,但在使用库之前,先用 python
写一个最基本的神经网络的程序,也非常必要,它让我们对一些关键参数:学习率,批尺寸,激活函数,代价函数的功能和用法有一个直观的了解。
2. 原理
1) BP 神经网络
BP
神经网络是一种按照误差逆向传播算法训练的多层前馈神经网络.这又前馈又逆向的把人绕晕了.先看看什么是前馈神经网络,回顾一下《深度学习
_ 简介》中的图示:
图片.png
这是一个典型的前馈神经网络,数据按箭头方向数据从输入层经过隐藏层流入输出层,因此叫做前馈.前馈网络在模型的输出和模型之间没有反馈,如果也包含反馈,则是循环神经网络,将在后续的
RNN 部分介绍.
前向网络和循环网络的用途不同,举个例子,比如做玩具狗,前馈是用不同材料和规格训练N次,各次训练之间都没什么关系,只是随着训练,工人越来越熟练.而循环网络中,要求每次做出来的狗都是前次的加强版,因此前次的结果也作为一种输入参与到本次的训练之中.可把循环网络理解成前馈网络的升级版.本篇讲到的
BP
神经网络,以及处理图像常用的卷积神经网络都是前馈网络 ...
深度学习_工具
深度学习 _ 工具
1. 引入
深度学习的工具有很多 Tensorflow, Theano, Caffe, Keras, MXNet,
Scikit-learn…有用 c++ 写的,有用 Python 写的,还有R的,Java
的,从哪里入手呢?
先看看最热门的
Tensorflow,它是谷歌研发的人工智能学习系统,主要优点是分布式计算,特别是在多
GPU 的环境中。Theano
也是比较低级的库,一般单机使用.什么是低级库?就像炒回锅肉不用从杀猪开始,杀猪就是比较低级的工作,已经有人帮你做好了,像
Keras 这种较上层的工具,它把 Theano 和 TensorFlow 包装成了更具人性化的
API。至于是选择低级工具,还是上层工具,主要取决于您的目标是开肉联厂还是开饭馆.
图片.png
2. 工具简介
Caffe 是 c++
写的库,是较低层级的库,它是个老牌的工具,工作稳定,性能也好,还提供绑定到
Python 上的编程语言,但相对没有 Python 类工具灵活.
Theano 是一个低级库,透明地使用 GPU
来完成数学计算.也是一个老牌的工具,工作比较稳定,只支持单机 ...
深度学习_简介及相关概念
深度学习 _ 简介及相关概念
1. 传说
传说深度神经非常神奇,把那些浅层学习都给甩出十万八千里去了!还需要什么特征工程?卷积神经网络的特征都是自动识别的!只要用正确的条件和结果训练得足够多,以后给条件就能自动出结果了,比教人还简单!它模拟的可是人类的大脑,现在的运算量已经赶上猫狗的脑了,只要运算足够大足够快,机器人分分钟就消灭人类!
这些只是传说,它夸大的事实的一部分,而故意忽略了另一部分.不过,树立的典型不都这样么?看
2010 年以来最热门的卷积神经网络(CNN)的发展,从 AlexNet 到
RssNet,就可以看到,它主要解决了什么问题,具体怎么用,离强人工智能还有多远。
其实,神经网络就是机器学习的一种,机器学习又是人工智能的一种。现在一说人工智能就说深度学习,不懂这个就太
out
了。环境就是这样,也只好花时间来了解一下了,此专题大致分为:简介,入门工具,BP
实现,CNN,RNN,技巧这几部分来介绍一下。
2. 引入
简单地举个例子:有一家玩具工厂,想通过试生产的方式培养员工的生产玩具的能力.具体过程是提供
3 种材料(输入),和 1
种成品(输出),让工人们练手(此例 ...
比特币挖矿——集群矿池btcpool
比特币挖矿——集群矿池 btcpool
#区块链
1. 介绍
btcpool 一个集群的解决方案,它使用了 mysql 数据库,web
服务,kafka,zooKeeper,据说可以控制 100000
矿机。代码中逻辑和安装说明都比较完整,但还需要一些编写一些 web 界面做 UI
支持。配好之后就和其它大矿池差不多了。
挖矿的哈希碰撞需要大量计算,由矿机实现。而拆分集成运算量,分配任务,在矿机多的情况下也需要大量的算力支持。Btcpool
是一个去中心化集群的解决方案(矿池内部去中心,对外自成体系)。N
个矿机连一个控制板,控制板接入网络,通过端口连服务器,服务器再把拆分运算量的工作分担给矿池内的多台服务器同时计算。
它的主旨就是整套系统切分成功能块,块与块之间用使用 kafka
传递数据和信息,后台由 zooKeeper
负载均衡,从而使不同的功能块运行在不同的服务器上。像钱包和 mysql
这种频率使用的公用数据放在另外的服务器上,各功能块通过 rpc,zmp
等方式访问它们。
其中最核心的程序是 sserver,矿机控制板连接的就是该程序。它支持
Stratum
协议。现在一般 ...
比特币挖矿——建立Kafka&ZooKeeper集群
比特币挖矿——建立
Kafka&ZooKeeper 集群
#区块链
1. 介绍
采用 ZooKeeper+Kafka
的方式建立集群,主要支持了消息传递和负载均衡,常见的一些文档,有的是概念较多,没有实际操作;有的只有命令,不知其原理。这里就结合集群矿池来说说它的具体应用场景,原理,以及具体实现。
图片.png
2. 举例
先举个例子,比如一个理发店:
一开始只有一个理发师,洗剪吹都由他一个人负责,那么只能一个客人做完全套(同一台机器上操作各个步骤),再给下一个客人服务。
之后,
又来了几个理发师,每个人负责接待一个客人(多台服务器,每台负责单个流程)。
再后来理发店又扩大,人多了(多台不同用途的机器),老板发现如果把工作细分为:洗
(A) 剪 (B) 吹 (C)
三部分,这三部分的工作量和难度都不同,可以安排专人专职,以节约人力成本。三个模块工作量不同,需要的人数也不同,如上图所示,洗
2 人 (2 台机器),剪 3 人 (3 台机器),吹 2 人 (2 台机器)。Data 为库房
(数据服务器),每个人都可能去库房存取工具。
显然,A 与 B
并不是一一对应的关系。洗 ...