微软的梦工场-第33部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
,教练员必须要保持耐心。
五.2007年:科学研究中的猜想
研究院是一个智商密度很高的地方,不仅有许多聪明员工和实习生在这里工作,而且有很多世界一流的科学家络绎不绝地到这里交流访问,形成了一个非常宽松而活跃的学术交流平台。在与这些海内外知名学者的交流中,我总能在研究方法和思路上深受启发。比如每次和前任院长沈向洋的交谈都让我受益匪浅。他会经常鼓励我思考一些视觉和图形学交叉领域的研究问题。与另外一位理论组的访问学者滕尚华 教授的交流也极大地帮助我开拓了研究思路。
2005年尚华第一次来研究院访问的时候,我们一起做了一个网格形变的项目,尚华对这个项目中涉及到一些非线性优化算法的稳定性和收敛性做出了重要贡献。我们合作的论文也发表在SIGGRAPH 2006上。此后,每次尚华来研究院我们都会在一起聊天。尽管尚华是一个计算机理论科学家,他对应用领域的很多研究问题却有着浓厚的兴趣。有一次在闲聊时候,他提到在做研究的过程中直觉很重要,有的时候对一些没有把握的方向需要做出猜想(conjecture)。他还提到了自己的一个非常好的研究工作就是这样做出来的。当时理论界已经证明单纯形法 在最坏情况下具有指数复杂度。按照常理这样一个高复杂度的算法应当很难被应用,可是单纯形法却在工业界被广泛应用。尚华和他的合作者就猜想既然实践已经证明了单纯形法的实用性,那么一定存在着某种限定条件使得单纯形法的复杂度远远低于指数复杂度。沿着这一思路,他们最终证明了在大量的工业应用中单纯形法只是多项式复杂度。这一研究工作在理论界和工业界都产生了深刻的影响,相对于传统的最坏情况分析(worst case analysis),这一工作开创了光滑分析(smoothed analysis)。他们的论文也在2008年获得了计算机理论学界享有盛名的G?del奖。
当时,我在做一个关于动态散射媒体/烟雾的实时绘制项目,但是却碰到很多困难。烟雾的数据表达是一个包含有很多高频特性的体数据,我们尝试用一些数学模型去近似表达烟雾的数据,然后在这个数学模型上进行有效绘制计算。但是根据这些数学模型得到的绘制效果却不让人满意,因为原始数据在数学函数的逼近下会丢失掉一些细节,所以烟雾绘制出来的效果总是太过光滑,真实感颇为欠缺。另一方面,直接采用烟雾的原始数据会极大地降低绘制效率并且增加存储开销。这时候我们的项目基本上陷入了停顿。而尚华的关于科研猜想的一番谈话如醍醐灌顶般激发了我的灵感——是不是可以尝试不要丢掉残差(原始数据减去函数逼近而剩下的即为残差),在绘制过程中通过某种途径把残差补偿进去(当时完全不知道该如何补偿)。有了这个思路,我马上找任重一起讨论如何利用残差。很快我们就解决了残差数据的有效存储和绘制算法,实验结果表明这个猜想非常完美地把富有真实感的细节表现出来了。这项研究成果也发表在2008年的SIGGRAPH上。就是这样,一个利用早期被我们丢弃的残差数据的算法成为了这整个项目中最核心的部分,而大胆猜想为我们在穷途末路中找到了重新开路的明灯。
第82节:大侠是怎样练成的(3)
六.2008年: 从计算机图形学到计算机科学
如果说过去5年的目标是对计算机图形学有一个透彻的了解,那么从2008年开始我把研究范畴扩展到计算机科学中的一些更基础的领域:数据结构和编程语言。
近年来多核技术(包括多核CPU和GPU)的发展已经成为趋势,如何在多核环境下进行有效的算法设计和程序开发成为整个计算机科学的一个热点研究方向。这对我们图形学研究人员来说也是一个难得的机遇,因为没有人比我们更了解GPU,?。2007年年初我们就计划在 GPU上开发一些基本数据结构的构建算法,并在暑假的时候确定了要设计一个全新的GPU编程语言的目标。到目前为止我们已经开发了包括八叉树,KD树在内的多个基本数据结构,这些数据结构被应用到图形学和视觉等多个领域。
另外我的学生侯启明和我设计开发的BSGP编程语言使得程序员可以象编写串行C语言程序一样在GPU上进行并行程序设计,大大提高了GPU程序的可读性、可写性和可维护性,使得编程效率提高2~3倍。而我们的BSGP编译器生成的代码可以达到与现有的编程语言相似甚至更高的运行性能。这项成果已经被2008年的SIGGRAPH大会录用。目前我们正在努力把这个新的编程语言产品化。我梦想着有一天我们在数据结构和编程语言上的这些研究工作和成果会为并行计算时代的计算机科学奠定基础。
科学研究是一个没有止境的、艰苦的历程,如果你能保持耐心,并学会享受这一历程,你就能达到自己想象不到的高度。我希望这篇短文中提到一些的科研经历能对刚开始进行计算机图形学研究工作的新手们有所帮助。请你们相信,也许目前你觉得要成为一名计算机图形学专家是一件遥不可及的事情,但是只要你不断努力,你一定会被学术界所认可;也许你还会觉得成为计算机科学家是遥不可及的,那么只要你坚持,你同样可以证明自己可以成为一流的计算机科学家。就象Harry经常和我们说的,the sky is the only limit(天空是唯一的局限,引申为永无止境)!
作者介绍:
周昆,2002年从浙江大学计算机学院获得工学博士学位,同年加入微软亚洲研究院,历任副研究员、研究员和项目负责人。2008年受聘教育部长江学者特聘教授,回到浙江大学计算机学院工作。在微软工作6年期间曾在国际计算机图形学大会ACM SIGGRAPH上发表17篇论文,其中多项技术被应用在Windows图形系统DirectX,XBOX游戏Halo 3,以及三维电影特技制作软件中。
第83节:歌曲大搜索之哼哼也可以(1)
歌曲大搜索之哼哼也可以
作者:芦烈
通过这几年的工作,我逐渐从一个对研究所知甚少的学生逐渐成长为一个在音频分析领域略有成绩的研究员。哼唱搜索,作为其中我曾经负责的一个项目,也从起初的一个练手项目发展成为技术转让项目。从中其实也能看到我成长的点点滴滴。
先打点儿基础吧!
研究院的光环是夺目的。她总是与世界级专家、领先的学术成果、自由的学术氛围等令人向往的词联系在一起。当我得知自己被研究院录取的时候,心中的兴奋之情可想而知(后来我还得知我是研究院录取的第一批硕士生之一,而且还很有可能是第一个,而以前研究院是只招收博士生的)。我其实并没有对此抱有很高的希望。因为我在大学时期拥有的专业知识(我是电路与系统专业)和一些基本的项目经验,与计算机科学的学术研究相比,还真有些隔行如隔山的感觉。
当我怀着兴奋的心情来到位于北京中关村的希格玛大厦,见到了众多世界级专家和当代佼佼的青年学者及同事时,我更加意识到自己其实对研究几乎一无所知。就连一些基本的算法,像模式识别和机器学习,也没有系统地学过。我知道自己必须恶补更多的知识,积累更多的经验。这对我来说既是挑战更是巨大的机会,因为我即将步入令人兴奋的多媒体研究的殿堂。
当时我们组叫媒体计算组,主要从事多媒体计算,包括图像、视频、及音频的内容分析和检索。我们组的学术领头人是张宏江博士,多媒体分析的先驱之一。由于我还具有一些信号处理和语音处理的背景,而且对音频信号颇感兴趣,于是音频和音乐内容分析及检索便成为我的主要研究方向。
在另一个研究员江灏的工作基础上,我开展了音频分类分割的工作。其主要目标是将一个音频片断(比如影片中的音轨),按照其内容分为语音、音乐、背景声音等等。这是音频分析的第一步。这个项目帮助我很快地熟悉了机器学习和模式识别的算法。
好玩的哼唱搜索
经过一段时间的学习和工作,我逐渐熟悉了研究的方法论。哼唱搜索(query…by…humming)便成为我第一个独立研究项目。在传统的搜索引擎中,大家都习惯于用文本或关键字去搜索歌曲,比如用歌手或者歌名。但是在很多情况下,你有可能忘记了或者根本不知道一首歌的歌手和歌名。那么,还有什么办法把那首歌找出来呢?哼唱搜索便提供了另外一种搜索方式:哼一段旋律,通过旋律匹配把歌找出来。
这个项目的起因其实就是张宏江的一个问话:“能不能简单哼一下就把一首歌给找出来?”“ 挺好玩。”当时第一个感觉就是这个问题很好玩。仔细一想,其实这也是一个现实的问题。比如说我自己(不少人也是)经常记不清歌名,但还能哼两句主旋律。如果我们真能有一个哼唱搜歌的系统,说不定真可能派上用场。同时,这还是一个独立、完整的系统,设计开发这样一个系统对我也是一个有益的锻炼。于是,我和一个实习生由红开始了这个项目。
我们首先翻阅了资料,发现哼唱搜索其实在1995年的ACM多媒体大会上就由Asif Ghias博士(康奈尔大学)等提出并给出了一个解决方法。以后又有些研究员陆续提出了一些改进方法。但是,我们发现以前的方法还是有不少的局限性。比如,旋律本来是一个音符序列,包括每个音符的音高和时长;但在很多方法中,旋律被简化为只包含反映下一个音符相对于上个音符上升、持平、下降的字符串。有些方法为了加快搜索速度,要求只能哼唱歌曲的起始部分。还有些则为了避免哼唱节奏的影响,要求用户使用一个节拍器。这都限制了这些方法的可应用性。我们觉得里面还有许多方面可以提高。
我们把系统分成了三个部分:数据库处理(从音乐中提取旋律),哼唱处理(从哼唱中提取旋律)和旋律匹配。其中的关键问题是旋律表征、旋律提取、和旋律匹配算法。鉴于以前对旋律表征过于简化,除了以前使用的上升下降等量化数据,我们还保持了旋律中每个音符的音高和时长作为更精确的表征。在旋律匹配过程中,我们采用了两步法以加快搜索速度:先用简化旋律作一初选,然后再用音高和时长,通过音高匹配模型和节奏匹配模型,来更精确地寻找相似的音乐。
经过半年时间的努力,我们终于完成了算法,建立了一个演示系统。算法在测试集上的性能也挺不错:在搜索结果中,前五位内能找到正确歌曲的比率(hit rate)达到了80%。然而,虽然算法取得了不错的结果,回想起来,还是有不少地方可以提高。比如我们所用的开发集及测试集都比较小,这样可能并不能完全反映算法的性能。我们还发现我们在分析哼唱数据将其转化为旋律时,使用了不少启发式规则,一些参数的设置过于局限于开发集而失去了通用性,使得这个系统对某些人工作很好,但对另一些人却不好。而且,要成为一个真正能为大众使用的产品,我们还缺少一个关键触发点:一个好的应用场景。对于最重要的一个应用场景——网络音�