Posts from February, 2012
No comment yet
February 23rd, 2012

离家的时候最想家。当离家一年的时候,倒没有感觉的。去Harris Teeters买个西瓜,一块牛排,还有特别软特别软的芝士蛋糕。冰箱里总是积累了不少的MONSTERS或者Red Bull,仿佛显示着自己还是拼命的IT男。Safeway一年四季都有好吃的樱桃,楼下的草坪里总是少年们在和狗狗玩飞盘,而小孩在踢足球和放风筝。饿了的时候就去日本餐馆买个盒饭。想吃好吃的总是有西班牙菜在不远处。冬天有暖气,夏天有冷气。还有Steve Colbert每晚在电视上乱侃。

只有回到家,才记得,南方的中国是没有暖气的,所以那个烤炉才被北方的刘同学误认为是散热风扇。吃遍了本地的火锅和汤锅,发觉也不过如此,特别是在每晚酒精的刺激下,根本就无暇品鉴了。老妈总是说各种买房子的事,老爸决口不提股票了,舅舅天天在说各种升官发财,而最小的侄子总是想跑来玩我的Robosapien。奶奶总是身体不好,也站不得,也走不得,还是想活下去。

从明年开始,我要过我的第二个25岁生日,然后第三个,第四个,到第100个,200个,我不会变老。但是父母会。老爸喝不到半斤50多度的白酒就已经开始说胡话了。一家人曾经一顿喝掉三瓶茅台,现在一瓶五粮液都成问题了。这个冷飕飕的城市,没有一点风情。旧金山有带着海风的港湾,山景城有趣味的小吃,斯坦福有高大的棕榈树。哪怕Charlottesville,也不乏婀娜多姿的姑娘。

但是这里是我的家。可以整天窝在沙发上开开心心写我的博客。不用担心每天吃什么,妈妈总会做出各种美食。早饭稍微单薄,但是甜甜的汤圆怎么能不算好吃呢,它可是甜甜的,甜甜的馅啊!在书桌上泼墨写下“糖分”两个大字。晚上被老爸带去吃各种火锅、汤锅,当然还免不了喝酒。微醺的时候,新西游记又开始了。然后模模糊糊地,在12点准时进入了被窝。

趁着空闲开始读书,每晚的散步却可以醒脑。虽然不像以前那样没两天一篇日志,可是也积攒了不少呢。要看病总是不用担心,医生们都特别亲切,连拔智齿都是乐呵呵的,然后今天拔一颗明天拔一颗。脏兮兮的牙齿终于被弄掉啦。

然后就这么走了。总是没有勇气打破习惯的人哪,原来离开家的时候,才最想家。

No comment yet
February 22nd, 2012

在四年前,我曾经好玩写了一篇预测2012的文章,这种长期的预测总是漏洞百出,在现在2012年看来也是如此。但是也并不影响预测的乐趣。开心的地方总是在于发现自己一大堆的错误里面居然还猜对了一些。然而对于未来四年的预测,难点在于已经无法和2012年的预测类似,建立在经济基础平稳,政治安定的论断之上。未来四年的预测必须考虑到一到两年的经济停滞期和可能的一到两年政治动荡期对技术发展的影响,而与之相对的,还要思考技术发展对于经济基础重构和政治重组的作用。综合这些因素之后,以下判断对于后面的预测是相当重要的。

在未来四年,在量子计算机,人体基因改良,跨太阳系航天旅行,人工智能领域不会有突破性的进展。经济发展会有一到两年的停滞或倒退期,国际政治在接下去的一两年中会进入动荡期。战争的阴影有可能从太平洋上飘来,但是大的战争不会爆发,因此,战争对技术发展的影响可以忽略。那么,从现在开始,四年内到底会发生些什么呢?

家庭的互联网接入速度会有缓慢的提升,平均接入速度将会接近50Mbps,当然,这样的速度和过去4年按百分比相比是缓慢的(5Mbps到25Mbps左右),但是仍然不失为进步。更重要的是,主战场已经从家庭的互联网接入速度变为了随时随地的无线接入。超级WiFi等将会成为提高互联网接入速度的关键。在高速行进的私家车上上网,下载资料,视频通话再也不是幻想,更重要的是,一辆随时接入高速互联网的私家车已经是必须。室内无线网络的带宽和延迟问题终究会被解决,我们常常见到的设备,比如电视、冰箱、投影仪、游戏机、音响都不需要再用连接信号线了。一些新的高档的住宅甚至已经没有了电源线连接口。终于,特斯拉的梦想成为了现实,虽然现在使用了完全不同的科技。

3D电视的推广仍然困难重重,经过挣扎,大部分电视生产厂商放弃了给LCD电视加上3D功能的想法,而是集中精力给电视装上了各种定制的Android系统,否则,他们的市场要被Apple TV一口一口吃掉了。相反,如果家里要购买投影仪,不买个3D的实在说不过去。但是这仍然不是裸眼的3D,幸运的是,网上租借的电影只要有3D的,每个月之需要多花10块钱就可以和2D电影一样无限观看了。而逐碟租借的价格几乎和2D电影是一样的。或许还有电视的存在让某些人觉得不爽,但是由于网速的增加,打开电视看到的已经不再是每周按时播出的电视剧了。要么是24小时的直播,要么是随时随地的点播,定时守在电视机前看某集电视剧的过去已经一去不复返了。但是,至少我们还是可以编制自己的Playlist,把那些还没有发布的新剧都列上,谁叫他们提前6个月就开始宣传呢,不就是为了上我们自定义的Playlist么。

除了可怜的程序员,大部分人已经不用笔记本了。各种Pads已经成为许多人的第一台电脑,为什么不呢,主流的办公软件都有Pad Version了,而且还可以配键盘,和一台笔记本没有任何区别了,况且更加便携了,还可以无线地连接上液晶电视和投影仪。那么多的古董级行业软件也早该过时了,由于移动系统的普及,和当时的Windows一样,移动版本的行业软件不仅仅可以赚钱,而且比现在所使用的各类行业软件更加人性化(利润率更高,更面向终端用户的缘故)。诺基亚承认了自己的宿命,经过几轮裁员,成为了一家还不错的终端设备生产商。WP,Android和iOS仍然在厮杀,幸好我们有HTML5。由于各个平台上浏览器的进化比想像的还来得快,虽然还是有各种各样的本地程序做各种异想天开的应用,也有大量的程序只是HTML5打个包而已。

所有的文件都在云端了,除了少数的设计师和电影发烧友,已经很少有人在家里部署一个媒体存储中心了。当所有文件都在云端的时候,我们才发现,所有的文件,无非是图片,视频,音乐和文本罢了。既然如此,干吗乱糟糟地在一起存呢?我们所需要的,只是跨域的搜索,而不是在一起的存储。

很可惜,全电动车仍然没有成为主流。而自动驾驶系统,也只是刚刚起步而已。勇敢的尝鲜者已经用上了价格便宜的自动驾驶系统(40k左右),即使在复杂路况下,这些系统的表现已经非常令人惊喜了。只是很可惜,对于大多数人,这仍然太贵了些。不过,将他们的Pad插到汽车里已经不是新鲜事了。拜超级WiFi所赐,各种辅助驾驶软件层出不穷。他们可以根据实时路况修改路线,自动升级地图加入道路维修的提示信息,前方的车祸,乃至朋友的车辆位置和预估到达时间都可以通过Faebook Messenger来分享。可惜的是,大部分传统汽车厂商处于安全性的考虑都不愿意深度整合Pad,否则自动泊车这样的功能早就是50块钱就可以下载的软件了。

还记得Concorde么?新一代的Concorde在最后的最后终于投入商用了,从美国飞到中东只需要8个小时,到北京也只需要5个小时。虽然有这样快捷的方式,但是大多数的机票价格仍然上涨了。经济危机的阴影挥之不去,国与国之间发展的差距并没有由于互联网而得到缩小,相比于四年前,反而拉大了。那些依靠科技提升生产力,进而产生更多的工作被证明不过是大家都愿意相信的泡泡,失业率已经远远超过了警戒线(15%),不得已,各个国家提出了更苛刻的税收,并有一批的再教育计划提案在国会/议会/人民代表大会被辩论着。但是也得幸于生产力的提升,大家都还有饭吃,只是不满于不平均而已,以极端方式更改社会架构的运动并没有成为主流。

唯一稳定的朋友就是一直提升的计算机性能了。由于各种不同的架构提出,虽然编写程序更困难,但是性能的提升仍然让人目眩。虽然普通人已经被各种Pads隔绝在了追求性能的目标之外,但是这些提升仍然带给了我们各种花样繁多的智能软件。记住所有Facebook Friends的长相再也不是侵权,而是普通需求。谁都可以后期修复出赏心悦目的照片,即使原图各种模糊和曝光不清。重要的是随时随地都可以拍照和分享,而不是拿着单反去摆Pose。现实和虚幻已经因为家用的全身捕捉软件而变得模糊不清了。打开投影仪和Kinect,一晃眼,就是另一个时间地点,天啊,这些实时渲染和真实的有什么区别呢!可惜这并不是我们期待的立体电视会议,只是游戏罢了。电视会议,是打开Pad上的一个10块钱的软件就随时随地多方召开了,无线连上大屏幕,还怕不够清楚么。

由于仍然没有完全解决好传统电器生产商的惰性,我们的冰箱仍然不能自动下单去补充吃的。幸好还可以上网,订购各种Groceries,而第二天新鲜的有机蔬菜肉类鸡蛋就送到了门口。生活更加方便了,可惜只是对那部分越来越少的中产阶级而言。

谈过了各种用和行,也该谈谈吃住了。虽然有越来越多对解决饥饿做出贡献的转基因食品,由于媒体的误导,仍然有许多人愿意付更高的价格去买非转基因食品。改变这方面的习惯证明不是4~5年的事。即使全球来看,住房价格仍然没有崩溃,虽然大家都没有钱,但是看到自己的房子值钱,总是让人开心的。

或许就是这样,在经济危机和战争的威胁下,仍然享有短暂欢愉的2016,你喜欢么?

No comment yet
February 19th, 2012

The Not-so-slow JavaScript face detector was written two years ago. Initially, it is a one-day-hacking to see if the state-of-art face detector technology is implementable at tolerable speed with JavaScript. That one day's hack lived up years with many extensions and applications spreading on the web: a JQuery plug-in, a video face detector and a mustache demo. One interesting finding over years is that the JavaScript speed increased dramatically on both Google Chrome and Mozilla Firefox. When I was writing the face detector, a 800x600 image usually took more than 6 seconds on Firefox 3, but now with Firefox 10, it takes about 1 second. At around the same time, Google Chrome is improved from about 2 seconds to 1 second. This script alone witnessed the armed race between browsers and it is a good thing. But over years, although the source code is out there, how this worked is never explained. I did little comment in the source code, and the algorithm is not as well-known as HAAR classifier used in OpenCV.

The very basic instrument used in my implementation is called control-point feature (renamed to brightness binary feature to reflect that the implementation in ccv works only on brightness value). For a given WxH image region, one feature consists of two sets of control points, a[1], a[2], ... a[n] and b[1], b[2], ... , b[m]. To classify the given image region, a feature examines the pixel values at control points in group a and group b in relevant images (at original size, half-size and quarter-size). The feature only answers "yes" if all pixel values in group a is greater / less than any pixel values in group b. The details can be found in the original paper YEF: Real-time Object Detection and a follow-up High-Performance Rotation Invariant Multiview Face Detection. Long story short, the training program bbfcreate will create several strong linear classifiers from control-point features using AdaBoost.

The control-point feature is simple enough that after the generation of the image pyramid (a series of images that downsized from original WxH size image to W/2xH/2, W/4xH/4 ...), there is no further image processing required. If the computation to generate such image pyramid can be negligible, for each control-point feature, it accesses fewer memory locations (n + m <= 5) than HAAR-like features (the one implemented in OpenCV, requires 6~9 memory accesses). This turns out to be a good improvement, and the ccv implementation in C achieved similar accuracy (82.97% with 12 false alarms V.S. 86.69% with 15 false alarms) comparing with OpenCV default face detector but 3 times faster (as a side note, this is still far from proprietary implementation which achieves ~90% with ~3 false alarms on the same data set, read more details). This is an even better news for the JavaScript implementation since the downsizing operation can be offloaded natively with HTML5 canvas' drawing method. That's the secret sauce in my not-so-slow face detector (implemented in line 200).

Once the image pyramid is generated, the detection process is just following the paper. The algorithm sweep over the whole image at different resolutions to check if a face exists there with control-point feature (line 290). I have no other tricks to improve speed-wise beyond this point. At the end of this process, it merges detected areas and returns that with confidence score.

OK, let's reconfirm how fast it is:

http://liuliu.me/ccv/js/nss/#http%3A%2F%2Fmtlweb.mit.edu%2Fresearchgroups%2Ficsystems%2Fphotos%2Fpeople%2Flarge%2Fgroup_dec2011_large.jpg

This 2808x1805 image takes 6 seconds on Firefox with Web Worker off, and 10 seconds with Web Worker on. It takes 4 seconds on Google Chrome (Web Worker doesn't work as smooth in Google Chrome).

Please let me know what else in this implementation you want to be explained in the comments.

No comment yet
February 2nd, 2012

如果韩寒是个女的,我立马抛家弃子就去追了。

90年代的时候,特别喜欢读各种作文选。出生在一个小城镇里,读别人的作文仿佛就是经历了别人的生活,比自己的更加热闹有趣。当时书店还是闭架售书,小姨在书店上班,于是可以在晚上的时候跑进去找书读。记得还曾经在角落里找到一本图集,有趣极了,快速翻动起来就可以看到书上的小猪跑来跑去。先是读二年级的作文选,又读四年级的,读一读便觉出了门道,八股文而已。既然知道是八股文,还不如真开始读古文呢!于是就翻起了史记,果然看不懂,只是强记了黄帝本纪,好和同级的炫耀。到小学快毕业的时候,同一个柜台又卖起了电子辞典。那段时间很少读书,全是打电子辞典上的游戏了,还和柜台的漂亮大姐姐比谁打的分数高。

大概就是在那个时候,才知道中学生也是可以出版小说的,比如《花季雨季》。那些中学生活对于小学的我好新奇,不过,不过也就那样了,因为后来还有《十七岁不哭》这样的电视剧,他们居然可以放学后约女同学一起看演唱会!大概就是在同一时候看到了《新概念作文选》。回忆起来那里面的主要内容也无非主要是中学生用各种不可能的方式谈恋爱。小资、奇幻、穿越这样的文风大概是从那个时候开始就逐渐成型的。唯有《书店》和《看病》觉得十分有趣,发现还是同一个人写的,那人叫韩寒。一直记得《杯中窥人》是二等奖,大概是因为个人就觉得这文章也就一般般,韩学长还真是不大适合写应试作文啊。

《三重门》是在很久后才看的了。到初中的时候养成了看无营养畅销书的习惯,就是讲什么老鼠啊,系鞋带啊,奶酪啊,卖鱼啊,推销员啊,花花公子啊,阁楼啊诸如此类的,反而是小说看得少了。大概当时读的《三重门》还是一本盗版,挺俏皮得,总之文章内容就是在意淫一个穿白色长裙的姑娘吧。《像少年啦飞驰》是在高中读的,当时读的小说还有诸如《第一次亲密接触》《榭寄生》什么的。对了,还有关于什么穿越的打星际战争的盗墓的打粽子的给出租房装摄像头末了还把自己指纹烫没的。唯一有营养的值得称道的阅读在高中时大概就是阿西莫夫的《I, Robot》,基地三部曲和《男人装》了。《像少年啦飞驰》是写一个枪手的吧。

到《长安乱》的时候就成铁杆粉丝了。在体制内长大,却冒险逃脱了几次。先是没中考跑到了上海,后来没高考又跑到了五道口技工,总觉得韩寒会是知音,虽然总找不到人介绍和偶像认识,而且自己还是一路读最好的中学和大学过来得。为了读《长安乱》,还特意买了几期的《萌芽》,等得眼珠子都快掉了。结果韩学长又虎头蛇尾了一会,开头特别有劲,结尾又仓促了。这样说,还是《兄弟》好看啊。想来是开赛车已经没什么时间好好思考写什么了,就跟我现在没空思考怎么写BLOG一样。本来还抱着希望韩学长在小说界好好耕耘,出人头地,结果看到《光荣日》之后,就彻底明白这家伙现在就是靠出书来补贴家用,在博客上牢骚了两句,还引来了高中时暗恋的姑娘的赞同。谁叫他是韩寒呢,我就喜欢他,出什么破书也得买。

真羡慕郭敬明啊,至少还有《上海绝恋》。