新芽经验分享:南开24级柯云超
经验分享
柯云超 | 南开大学24级计算机卓越班
大家好,我是柯云超。在这里和大家分享我大一下参加“新芽计划”的这段经历,它是我科研入门的开始,期间遇到了不少困难,但也学到了很多东西。希望我的实际经历,能给同样对科研感兴趣的你,带来一些参考。
第一阶段 (2月 - 5月):理论学习
一切始于大一下的寒假学院发的推送。二月初的选题宣讲上,面对众多方向,我选了相对基础的“通用目标检测”。现在回头看,这个选择是合适的,它给像我这样的初学者提供了一个循序渐进的学习过程,不像一些选择大模型方向的同学,一开始就要面对Transformer这样的复杂模型。
然而,挑战很快就来了。我原以为入门科研就是读论文,可当我开始直接阅读那些经典的英文文献时,很快就发现完全跟不上。满眼的专业术语和复杂的模型结构,让我看得非常困惑,效率特别低。
于是,我决定停下来,先系统地学习深度学习的基础。我最先看的是《深度学习》(花书)。书的前几章全是数学,跟着公式一步步推导,很有收获,但对我来说,过程也略显枯燥,看不到收获。看完数学基础部分就放弃了(1~2周)
到了三月份我开始看CS231N这门经典课程。这门课把很多概念讲得既直观又清楚,非常适合新手。我花了一个多月的时间,结合知乎上的优质笔记和博客,终于对这个领域有了一个相对系统和全面的认识。当时也考虑过《动手学深度学习》(d2l),但因为第一节课就要安装环境,有些劝退,现在想来有点可惜。(2~8周)
四月份我再次开始读论文时,尽管理解能力提高了,但一篇论文还是要花近一周时间。看的太少了,就只看了RCNN那几篇论文,也没有动手进行实验(8~12周)
五月,是第一阶段的结业汇报。得益于之前记下的笔记,我准备得还算充分,顺利地完成了分享,通过了考核。总结第一阶段,我觉得主要有两个可以改进的地方:一是起步太慢,初期学习新知识或许应该广度优先,多看经典论文来快速建立认识;二是我跳过了CS231N的编程作业,现在觉得很可惜,如果做了,不仅能更早地锻炼代码能力,对很多概念的理解也会深刻得多。
第二阶段 (6月 - 8月):动手实践
六月份,挑战更大的第二阶段考核开始了:用Jittor框架复现一篇论文,时限三个月。
没想到,我遇到的第一个难题,竟然是安装开发环境。那会儿正值期末周,我作为一名Linux新手,第一次面对命令行、版本冲突和显卡驱动等问题,足足花了三天才解决。这段经历虽然很耗时,但也让我对开发环境有了非常深入和全面的了解。后来,我把这段经历整理成了一篇指南发在了知乎,希望能让后来的同学少遇到些麻烦。
七月初,我正式开始写代码,然后就遇到了第二个主要困难:选题。
我最初选了RT-DETR,写了两周,发现它对数据量的要求很高,以我当时的资源难以完成有效的训练。之后,我换了Gold-YOLO,又花了十天,也发现在训练时存在困难。在连续尝试失败后,我分析了原因。最后选择了一个轻量级的模型NanoDet。这次非常顺利,一周就完成了代码编写,并留出了一周时间进行实验和准备汇报材料。
这段经历让我深刻体会到,选择一个合适的项目非常重要。一定要评估自己的资源和能力,选择一个能够完成训练和验证的模型。
从七月到八月中旬,这一个半月的实践,不仅让我熟悉了Jittor框架和一整套科研工具,更重要的是,锻炼了我在遇到未知问题时,分析并解决它的能力。
总结和感想
现在回头看“新芽计划”的这几个月,它让我完整地体验了科研从理论到实践的过程。如果让我给未来的参与者提一些建议:
- 理论结合实践: 读完论文后,亲手把代码跑一遍,这是深化理解的最快路径。
- 把问题当机遇: 读不懂的论文、调不通的Bug,正是你能力提升最快的时候。
- 借鉴他人经验: 多看知乎和技术博客上的优质总结,可以帮你开阔视野,少走弯路。
最后,祝愿每一位参与“新芽计划”的同学都能学有所获,一切顺利!