谈CV,其实只需要从著名的Image Net Challenge说起就已经足够了。
多年前, CV的data set都非常非常小,几百个category几万张image已经顶天了,使得无法设计complex vision model。否则由于模型复杂度太高,data set太小,最终只能Overfitting。
2012年的时候,有个叫Feifei Li的女士人发起了巨型数据库ImageNet。如今ImageNet上已经有了接近1500W张图片了。每张图都是人工记录图片中物体的名字,并向全世界宣布:同学们,你们谁开发出了新的Object recognition算法,就在这个数据库跑跑看吧。 所以,2012年的时候,就有了 Large Scale Visual Recognition Challenge,而比赛的结果会放在每年年底的NIPS公布。 当时大多数“科研工作者"还在用传统的computer vision算法时,DL大牛Hinton放出大招——DeepNet。
差距是这样的:
- 第一名DeepNet的error rate是0.16422
- 第二名是日本东京大学,error rate是0.2617
- 第三名是牛津大学,error rate是0.2679
其实仔细对比第二三名的具体实现,他们使用的技术框架都非常接近,基本上就是传统的local descriptor+feature compression这一套。而在这套实现上,两者的差距几乎是可以忽略的——看看DeepNet的error rate就知道了。
当时Hinton大神就放话了:“你要是没有参加前十几年的NIPS,没有关系,因为DeepNet今年才开始真正的work了”。虽然DeepNet如此牛逼的效果,但是很多的“业内人士”就觉得很不爽了,觉得这玩意儿简直就是扯淡。我觉得可能有下面几个原因:
- DeepNet很可能只是Overfitting,因为参数实在是太多了…6KW+
- DeepNet实际上是一个黑箱,还不能从理论上详细分析里面到底在干嘛,对CV的贡献可能很有限。
- DeepNet只能解决Object recognition这一个问题,而想要做到Object detection、segmentation这些基本问题,基本上也就残废了。
其实,在0.5个百分点的performance提升都可以被顶级会议收录为“major contribution”这样的一个时代,被一个和最近十年computer vision尤其是object recognition领域的进展几乎没有任何交集的方法超过了十个左右的百分点,难免出现大众不接受的情况。但是,一场“革命”却已经开始了。
一年后,2013年,新一轮的large scale visual recognition challenge又开始了,这时候,DeepNet却已经统一江湖了:排名第一的算法,在没有额外的traning data的情况下,跑到了error rate 0.1174这样的成绩。
这个成绩是这样的:随机挑选一张图片,扔给算法去跑,算法返回五个结果。如果有一个结果猜对了,那么就算作正确。也就是说,如果允许瞎猜五次,第一名已经能够拿到90%的准确率。注意,这里的object category有两万多种,几乎覆盖了所有类别。
那么,DeepNet的瓶颈在什么地方呢?看看CVPR14paper的title and abstract,CV圈子里在两个方面做improvement,但是却没有push。最终搞得DeepNet越来越像一门具有浓烈性质的实验学科,大概就是这个样子:
- 如果对2012年Hinton大神的架构修改太多,将会出现各种惨不忍睹,各种毁于一旦。
- 很少人有强劲的数学功底能够从理论上分析DeepLearning到底在干嘛,而即便是有强劲数学功底的那些人估计也看不上这套理论。
可惜,图片数量实在是太过庞大,从工程上来看,在几周或者几天时间内完成百万级甚至千万级的Image data,真的是太难太难了。 这样的话我更有理由去相信:只要愿意花时间,一个本科学生train出来的DeepNet和那些在Google百度工作了积累了十几年经验的工程师、教授train出来的,没有太大区别。
不知今年的结果不知道怎么样,得等到12月份的NIPS14了。也不知学术界什么时候能够找对方向,结束这个目前以实验报告为成果展示的探索阶段,从理论上,从根本上解释这个被“炒”得“伟大”的理论究竟为什么如此奏效。
参考与进一步阅读
- ImageNet Large Scale Visual Recognition Competition 2012
- ImageNet Large Scale Visual Recognition Competition 2013
- Conference on Computer Vision and Pattern Recognition 2014
- https://code.google.com/p/cuda-convnet/
- https://githubcom/BVLC/caffe
- http://clarifai.com/#demo