智慧城市建成,生活从此畅通

我平时就住在公司附近,走路上班的。今早外出办了点事,回来时是8点左右,正是早高峰。没想到这个时候家门附近的交通状况如此糟糕,害我差点回不了家,在路上浪费时间和精力。我画个图示意一下:

公司位于半岛上,深青色的那个楼。我从北往南驾车,理论上在三岔路口左转,几分钟就到达公司,见绿色的路线。三岔路口是图上有个红叉示意的位置。

但是,三岔路口从北往南排了一长队的车,都在等着左拐。而左拐的绿灯时间很短,20秒左右,过不了几辆车。于是我不等了,右拐,拐到图里黄色示意的水平路上,并掉头,打算从西往东过三岔路口。

拐过去一看,晕倒,从西往东的直行道上,又堵了一长排车,大家都等着过马路。

我懒得在这消耗时间,继续走右拐道,拐到南边的主道上,在主道掉了个头,往北走回三叉路口。见蓝色示意道路。

再次回到三岔路口,我又晕倒。右拐道上堵满了车,没有十几分钟是拐不过去的。

我只好跟着红绿灯直行,沿着主道继续往北走,在半岛北部的另一个入口驶入,然后走环岛公路,绕了一大圈,回到公司。如图里蓝色路线所示。

也就是说,不管从北、从西、从南,走正常路线都驶不进半岛,路口堵满了车。

虽然最终到达目的地,但浪费了很多时间,做了好几次错误选择。例如,从北边拐到西边,再从西边拐到南边,在南边掉了个头又回到北边,最后走北边绕行。

这就是智慧城市、智慧交通应该解决的问题。

现在每个城市里车的保有量都大增,车是人的腿,扩大了生活空间,缩短了活动距离。虽然过多的车辆带来一些问题,比如环保与交通压力,但是在公共交通能力有限的前提下,私家车对社会经济提升是有帮助的。

城市虽然也有一些控制措施,比如限号限行、外地人限购等,但这些措施难免流于形式。要解决交通拥塞问题,一方面是加强城市建设,比如修路修桥,建设地铁等。这相当于增大资源容量。另一方面就是引入智慧交通,通过AI来调度车辆通行,准确导向,合理分流,把关键道路密集的车流量,分散到其他相对宽松的路段。这相当于提高资源利用效率。

以我的案例为例,如果一开始就有交通信号提示我三岔路口堵塞,我就不会跑到这个路口折腾半天。更合理的是,基于实时大数据计算与智能模型驱动的交通信号,引导我一开始就走半岛的北部入口。虽然这样多行驶了7、8公里,但不堵车,一路通畅,我想绝大部分人愿意这样选择。

参考这篇文档,阿里、百度、腾讯、华为、京东,都在布局智慧城市,我觉得这是非常好的事情,利国利民。智慧城市首先要解决,也容易落地的,应该是智慧交通。未来无人驾驶,跟智慧交通结合,真正实现城市里的无忧通行、畅行无阻,这才是美好生活的开始。

Outlook邮箱,发信都不可靠

最近试了下Outlook邮箱,真是失望。除了花里胡俏的UI界面外,基本收发信功能都不稳定,真够差的。

昨晚要发几张家装照片给朋友参考,三张图片,用iphone拍摄,每张不到2M。用微软自家的手机outlook客户端和outlook.com邮箱发送。结果,不管是4G网络还是家里的wifi,死活发不出去,一会儿在草稿箱,一会在发件箱,就是发送不出去。

今天来到办公室一看,还是没发出去。于是我把这封邮件删了,另创建三封新邮件,每封里就带一张照片。因为我的照片都在手机上,所以还是从手机outlook发送。

结果一个鬼样,每封都发不出去。在web打开outlook.com邮箱,如下截图:

三封邮件都位于草稿箱,附件的图片也不见了。由于没有图片,我也无法在web端发送。

重试了很多遍,最后我也没有发出去这几封邮件。不是网络的问题,也不是手机的问题。我的办公室网络直连HK,速度飞快,没有墙存在。手机也是新买的。

outlook邮箱,让用户情何以堪。微软做出这样的垃圾产品,不觉得丢人吗?

仍然改用Gmail,在手机app上,几张照片秒发出去了。

这就是技术的差距。我坚信所有不重视技术的互联网公司,终究会玩完。体验自在人心,技术付出背后的价值回报,是长远体现的。

对AI人的一点思考

假期跟久未见面的朋友聊天,我说我在搞深度学习、迁移学习、增强学习…

他有点不理解,问:哥,你是不是又进去了?学习改造呢?

我无语:哥什么时候进去过呢?

好吧,在AI领域,的确是各种学习的概念太多了。

目前的AI主要集中在机器学习上,机器学习的重要分支又是深度学习。

所谓终身学习,对AI人来说更是如此。每年冒出的新技术太多了,不管是理论研究还是实践经验,各种会议上的paper如雪片般飞出,让人应接不暇。在视觉领域,今年的两大顶会(CVPR, ECCV),就有1000多篇论文产出。就算搞CV的人,也只能挑着论文看。

AI人虽然拿着高薪,但却在工作中顶着巨大的精神压力。一方面要跟进新技术、新思想,另一方面,要研究AI的产出,即如何落地。

AI研究的成果,要真正取得落地,并不容易。算法解决一切的时代还未远来临,与之相关的工程、环境、硬件、生态一系列问题,随时影响着算法落地的可行性和效率。

我在企业工作,企业搞前沿性技术研究,有好也有坏。好的地方在于,经费充足,比如能开出高薪吸引人才,能购买昂贵的设备支持科研。坏的地方在于,企业往往是短视的,这是生存的要求。高校可以花费数年乃至数十年研究一项基础技术,但企业是绝无可能的。企业的研究部门,哪怕是腾讯的AI lab这样的部门,也有着巨大的KPI压力。

工业界用到的前沿技术,往往是在高校完成前期的学术积累,比如深度学习、量子通信。这个研究过程可能是漫长的、苦逼的,而研究者对自己的方向,甚至也是不确认的。数年如一日的投入在一个前途不明的研究方向,能支撑下去的,只有信念。

上图是Geoffrey Hinton,被尊称为“神经网络之父”,他将神经网络带入到研究与应用的热潮,将“深度学习”从边缘课题变成了谷歌等互联网巨头仰赖的核心技术。

在牛人的指路下,一大批研究人员、工程人员前仆后继,将深度学习应用在科技与生活的各个领域,比如图像、语音、自然语言。学术界的成果是决定性的,企业界的落地是关键性的,两者相辅相成。没有学术界的研究创新,不会有工业界的技术进步。而工业领域的技术落地,又反过来验证和推动了学术进步。

我们的AI同学人手几台开发设备,眼前不同的显示屏上,是各种模型运行的动态效果,而手头还有一堆的打印论文随时用于翻阅。在模型结果不满意时,他们苦思冥想,头发都抓断几根;在调出满意效果时,他们手舞足蹈,有如着魔。他们沉浸在深度神经网络幽深暗黑的海洋里,在虔诚的信念支持下,日以继夜的努力,试图找到暗黑背后的光明。

哪怕睡觉前,眼前飘过的也是公式;哪怕吃饭时,嘴里吸收的也是符号。AI无处不在,而AI人的思考与奋斗,也无时不在。

感谢一代代投身AI领域的人们,不管是学术界的大牛,还是工业界的小兵。有了你们的努力,才有现在美好的科技生活,未来才有更美好的憧憬。

一文教你创建免费的图像识别App

背景描述

在AI大行其道的今天,你是不是也很好奇它是怎么应用的?比如,你拍一张照片,上传到App,它就能自动识别出照片中的物体,这是一只猫,还是一只狗。这里就用到了计算机视觉里,最简单的图像分类技术。

图像分类,换成容易理解的词语,就是图像识别。比如识别图像里是否有一个人,还是有一辆车,还是一个动物什么的。前几年在CV界有一项著名的图像分类挑战赛,由Image-Net组织,每年产生的模型,在分类准确率上不断提升。如下图所示:

在top 1准确率上,最新的Inception-v4已高达80分。也就是说,在数千个分类里,你随机上传一张狗的照片,App有80%的把握确认这就是一只狗。详细的技术对比分析,有兴趣的话,请阅读此论文

上述图里的各种Net(深度神经网络),对不熟悉的人来说,是很难上手应用的。前几天我看到一篇新闻,百度公司推出一个神器,叫easyDL,轻松的解决了图像分类模型的落地问题。

如果你仔细阅读这篇新闻,就会发现easyDL背后关键的技术是自动模型搜索与迁移学习。所谓自动模型搜索,是指自动搜索多个经典的分类模型和它的超参数,并同时训练,从结果里挑选最好的一个模型。所谓迁移学习,是指各种基础模型在已有的大规模数据集上进行预训练,并将从中学习到的知识(Knowledge)运用到用户提交的小规模训练数据集上,从而实现出色的模型效果和快速的模型训练。

有了这两项技术,用户实际不用关心分类背后跑的什么模型,什么ResNet、Inception你完全可以不用管了。你只要明确自己目标就好,比如我要识别上传图片里的动物,是猫还是狗,这就是一个二分类的问题。

数据准备

虽然不用管模型,但训练数据还是要准备的。有了迁移学习,你不用准备非常完整的训练数据集。世界上的猫狗可能有几千种,我们不可能收集那么全。在迁移学习的帮助下,每类准备几十张样本就可以了。

训练数据按一定的目录进行组织,是这种结构:

分类1、分类2是两个子目录,代表分类的标准,子目录下面就是各分类的样本图片。

还是以猫狗分类为例,分类1的目录名就是dogs(代表狗,不能是中文目录),分类2的目录名就是cats(代表猫,同样不能是中文)。dogs下面放的是狗的图片,cats下面放的是猫的图片。然后把这2个目录,打包成一个压缩文件,这就是easyDL要的训练文件。

为了方便大家测试,我在本博上传这个训练文件,在dogs和cats目录里,各有200张狗和猫的图片。点击下载

在线模型训练

访问百度的easyDL,地址是:http://ai.baidu.com/easydl/

当然你需要一个百度账号,并登录。登录进去后,选择顶部“定制模型”里的“图像分类”,页面情况如下:

左侧那一排是功能栏,包括模型和数据两个大栏目。首先你要上传训练数据,在“创建数据集”那里,上传你的训练样本,也即是刚才下载的那个包含猫和狗图片的压缩文件。

上传完后,在“数据集管理”那里,可以看到数据上传和解压的情况:

上传了训练数据,就可以创建模型了。点左侧的“创建模型”,出来如下页面:

填写相应字段,点下一步就创建好了。

然后在“我的模型”里,可以看到你刚创建的模型。点“训练模型”,出来如下页面:

点“添加训练数据”,这里很关键,勾选上你刚上传好的训练数据:

注意:增加一个“其他”的默认分类,在分类时,如果模型既不确认是猫,又不确认是狗,就分类为其他。然后点“开始训练”即进入训练阶段。

这个过程会持续数分钟,在“我的模型”里,可看到模型的状态:

模型训练完后,是这个结果:

你可以查看“完整评估结果”,是模型的评估报告,如下图所示:

可以看到各项评估数据,准召率、F1-Score等,都是98以上,这很NB了!

top1的准确率也高达98分,远超Image-Net的通用分类模型,我想这是百度的迁移学习的结果。

点左侧的“校验模型”,启动模型校验服务后,上传猫或狗的图片进行测试,比如:

这个图片识别为狗,置信度是99.92%,几乎零差错。

最后点“发布模型”,填写相应字段后,即可进行发布:

请注意,发布是需要百度后台审核的,可能会打电话进行人工确认。发布完后,你就获得了一个在线API地址,在你的App里,上传图片访问这个API,就可以自动识别啦。

成功发布后,在“我的模型”里,点模型的“服务详情”,看到如下信息:

点“查看接口地址”,可以获取在线API的服务地址,是一个基于HTTP协议的URL。

在使用此接口前,你要绑定一个APP ID,点上述图示的“APPID状态管理”,添加APP ID。这个APP ID是用来进行认证的。

如何获取APP ID呢?请到这个地址,点“应用列表”,创建一个应用:

创建后,你就获得了自己的APP ID,以及API Key和Secret Key。回到前面的步骤,将APP ID与我的模型绑定。

至此,所有服务端配置完成了,现在进行客户端编程。

编写客户端

访问百度的在线服务接口,首先需要拿到access_token用于认证。access_token是基于上述API Key和Secret Key获取到的。访问这个URL,得到这个脚本:

client_id就是前述API Key,client_secret就是前述Secret Key。代入这两个变量,执行这个bash脚本,就得到了你的access_token。是一串长达70个字符的由数字、字母、标点组成的字串。

然后编写客户端程序。我随手写了个perl脚本,内容如下:

脚本很简单,使用HTTP客户端上传dog.3234.jpg这张图片(base64编码),到服务接口API进行识别,并带上access_token进行认证。

服务端返回的结果如下:

服务端:我99.99%确认你是一只狗,别想欺骗我,:-)

好了,一个图像识别App就搞好了。看着图文有点多,实际操作并不复杂。照着来一遍吧,有问题可以联系我

Linux最好用的网盘 – Yandex Disk

我是比较懂云计算的,主导开发过私有云平台。

现在公有云大行其道,的确带来了方便,但质量也堪忧。

尤其是国内,不管阿里云、腾讯云,时不时听到某个配置失误,导致全局不可用的消息。轻则服务宕机,重则数据丢失。

一旦数据丢失,对创业公司,或个人博主来说,是致命一击。

所以,在这个行业,有句俗话:备份不做,万劫不复。

我的博客,当前主要备份方式是快照(snapshot)。云主机提供商Vultr支持快照备份,每天自动生成一份快照即可。一旦当前VM挂掉,可以从快照再启动一个新的。

但是,我突然想到,万一主机商冻结了我的账号怎么办?

这是充分有可能的,比如VM被DDoS攻击,主机商很可能把你账号给hold住了。到时登录不进系统和管理面板,数据取不出来,就欲哭无泪了。

想到这点,我顿时心头发冷,赶紧找第三方备份网盘去了。

找了一圈,发现Yandex Disk真是良心作品,有Linux原生客户端,容量10G,而且资源占用很小。

作为对比,Dropbox虽然也有原生Linux客户端,但容量只有2G,而且在备份时,内存占用剧增,十分影响系统资源。

于是,我在VM里装上了Yandex Disk客户端。实际使用发现很好,速度飞快,同步质量高,备份完后可以通过web地址查看和管理文件。

我的Linux OS是ubuntu,安装Yandex Disk十分方便,执行命令如下:

 echo "deb http://repo.yandex.ru/yandex-disk/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/yandex.list > /dev/null && wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | sudo apt-key add - && sudo apt-get update && sudo apt-get install -y yandex-disk 

这是ubuntu的一系列管理命令,我就不详述了,执行它就自动安装好了客户端。详情你可以阅读官方文档

安装完后启动它,就一个命令:

 $ yandex-disk setup 

前面几步提示你输入一些配置,本地路径、代理服务器、是否自启动等,不用管它,一路回车。

最后输入你在Yandex注册的用户名和密码,如果没有,你要先去注册。

Yandex挺好用的,号称俄罗斯的Google。除了搜索外,还有邮箱、网盘、音乐等服务,干净无广告,比度娘强多了。

启动后,在用户的家目录里生成一个名为Yandex.Disk的文件夹。把要备份的文件,放到这个文件夹即可,会自动上传到服务器进行备份。

然后,就没有然后了。祝大家使用愉快。