本期我们很荣幸地邀请到了中国科学院自动化研究所的博士生Zhu Lingjie来为我们分享他的GSoC体会。Lingjie的研究方向为计算机视觉中的三维重建技术,即通过多幅图像恢复一个场景的三维几何结构并进行后期处理。
2017 年,Lingjie入选了GSoC中的CGAL项目(一款用C++语言编写的开源计算几何算法库 [1])并成功地在CGAL库中实现了3D建模中的经典算法 -- Variational Shape Approximation(简称VSA,主要用于对真实世界中的复杂3D模型进行逼近,减少计算量)[2,3]。
从阅读专业文献中偶然得知GSoC,到自己主动向CGAL组织提出子项目题目,再到后来受邀参加CGAL开发者大会,我们看到了GSoC在学术研究层面上所展现出的积极影响力。
*谈博士生的工程能力*
博士生科研压力可能会比较大,一般而言大家对工程能力并不十分强调(导师不会去教,paper也不会说算法的具体实现方法)。
但实际上个人感觉工学博士的科研与工程结合得非常紧密,拥有合格的工程水平才能把纸面上的算法真正地实现出来,提出改进和新思路。参加 GSoC 即能提升工程实力,也可以在科研之外增添一份工程上的宝贵经历。
在GSoC中,很多开源项目其实就是一个算法库,如计算几何中的CGAL、机器学习中的mlpack以及C++扩展库Boost。这些开源库实现了各自领域中的大量经典算法,提升了人们的研究效率。
而像GSoC这种开源实习活动能够为我们提供一个很好的平台,使大家有机会近距离地接触这些国际开源组织,提高实践能力。
▲CGAL中的VSR效果图
从左到右依次为输入稠密三角网格
相邻区域边界近似和稀疏三角网格
(Zhu Lingjie供图)
*谈GSoC对个人学术圈的帮助*
在 GSoC之后我抱着回馈社区的想法继续为CGAL组织贡献代码。但没想到一年之后社区邀请我去法国国家信息与自动化研究所( INRIA) 参加 CGAL开发者大会。
在大会上,我接触到了领域内的前沿课题组和做同样课题的研究人员,见到那些邮件列表里素未谋面的人,让我感到即惊喜又温暖,同时也拓展了研究思路和学术圈人脉。
在GSoC中,很多开源项目都会邀请入选学生去参加该组织的国际会议,如CGAL、GNOME等。平日里分散在全球各地的开发者可以面对面的交流技术。
▲CGAL开发者大会中的Zhu Lingjie
*谈博士生对GSoC项目的选择*
我的研究课题需要大量使用到CGAL库。申请该项目前我就对它有比较深入的了解。因此选择CGAL更像是自然而然的决定。
而我完成的子项目实际上也是我博士研究课题中一种对比方法的实现。对我而言就是一个取之于CGAL,用之于CGAL的关系。
同时CGAL对我的帮助之大,让我非常感激和敬佩贡献开源项目的个人和组织。前人的工作使我不用重复造轮子,如果没有他们,我恐怕会陷入无边无尽的细节之中。
选择那些与自己研究课题相契合的开源项目可以视为对课题本身的一种补充。而这种研究与工程同向而行的做法也会节省很多的开发时间。
项目过程中我还在同时投稿论文,用在GSoC的时间一开始会多一些,随着熟悉程度的增加会慢慢减少,平均下来一周 2 至 3 天。
▲大会讨论
(Zhu Lingjie摄)
*谈利用GSoC推广科研成果*
Lingjie的项目题目是他自己向CGAL组织提出的。这是从事课题研究的学生申请GSoC的一个特点。他/她们自己在日常的研究中已经实现了一些经典算法的核心部分。这时可以主动将这些算法做为一个子项目向开源组织申请。
这是除了发表高质量学术期刊以外,对自身科研成果推广的另一种高效途径。
只要是对社区有意义(如有用户群体、功能完整等)以及可以在GSoC规定的 3 个月内完成,我相信一般的组织不会拒绝申请人提出的题目。
▲位于北京中关村的中科院自动化所大楼
(图片来源:自动化所主页)
自己提出项目应该注意以下两点:
选择那些已被同行认可的算法。因为 GSoC 更偏向于开发,因此在算法本身上应该不能有太多的不确定性。
开发上难度适中。在提出项目前最好能熟悉算法流程,细节等,如果不能自己实现一遍,能找到其他人的实现读一读也是可以的。当然,如果社区里有懂这一方面算法的导师,当然更好了。
这里大家可能会有一个误区:既然自己已经实现了核心功能,是否就意味着GSoC项目的难度变低?
其实,尽管这些算法实现用在自己的研究中已经足够,但要做到可以大规模推广还需要做很多工作。
我还需要将自己的代码完善以符合CGAL社区的编码规范,需要采用C++ template来实现更好的通用性,还要编写文档,添加测试用例,编写示例程序以及做出可视化的demo等。
可以看出,CGAL组织对项目的完整度要求是非常高的。这也是GSoC的一个特点:追求项目本身的完整性、可用性。而非单纯的实现功能多少。
我参加过一些短期的实习,感觉他们无论从代码质量要求和独立完成性上都会比CGAL差不少。
其实,除了推广个人项目,GSoC对实验室的研究成果也有同样的帮助作用。
编程之夏公众号鼓励中国大学的课题组将研究结果按照开源项目的形式进行发布和管理,然后通过参与GSoC等开源实习活动来扩大项目国际影响力,从全球吸引开发者,形成一个良性循环。
GSoC中目前已经有很多这样的组织,如日本东京大学从事机器人研究的JSK实验室和德国不来梅大学的人工智能研究所等。
▲2018 年东京大学JSK实验室
研发的飞龙机器人(JSK实验室摄)
编程之夏将会在 2019 年推出多期专栏对一些知名大学实验室的开源项目与管理模式做深度报道。敬请关注!
最后,再次感谢Zhu Lingjie接受我们的访谈邀请!我们预祝他在未来的科研道路上取得更多的优秀成果!
*** 完***
访谈时间:2018 年 10 月 6 日
访谈形式:邮件采访
版权形式:编程之夏与受访者共享版权(平均分配)
本期访谈由编程之夏负责整理。回复内容仅代表受访者观点
参考文献:
[1] CGAL项目主页,
https://www.cgal.org/
[2] Zhu Lingjie的GSoC 2017 项目结题报告,
https://github.com/CGAL/cgal/issues/2368
[3] C. David, P. Alliez, and M. Desbrun."Variational shape approximation." ACM Transactions on Graphics (ToG). Vol. 23. No. 3. ACM, 2004.
上期访谈
下期预告
GSoC 2018 NumFOCUS项目入选者
加州大学圣迭戈分校
机械与航天工程专业博士生蒋元洁专访
想向我们的受访者提问吗?
关注底部二维码并直接回复公众号
或通过
发来你的问题吧
GSoC项目详细介绍请参考
编程之夏原创文章
本文为编程之夏报道,转载请联系本公众号获取授权。
联系与投稿信箱:
领取专属 10元无门槛券
私享最新 技术干货