title | date | index_img | categories | tags | ||||
---|---|---|---|---|---|---|---|---|
拿来主义演说|送给师妹师妹的毕业分享 |
2022-06-16 12:00:00 -0700 |
|
|
转换系统是需要成本的,但同时也是现实中经常遇到的。
-
建议使用系统级云盘多端同步、保存和恢复多版本文件。比如坚果云。
-
Window、Linux和macOS系统平时没事都可以自己琢磨着玩,这样不至于换了系统就捉瞎。
- 一些轻量的在线服务器会有学生优惠,可以薅羊毛来练手,比如腾讯云之类的,建议入门的时候跟一个小项目,我选的是搭建个人博客。
- Linux实操就玩实验室服务器,玩坏了老老实实为大家重装,学超多。
- 多系统远程连接和传输建议使用向日葵(手机可用)、XShell+XFtp,并前了解ssh相关知识。
-
不要过分依赖只有某个平台才有的软件,比如Visio。最麻烦就是转换毕业文档了。
-
发送的重要文件尽量使用格式兼容性高的pdf格式,如有特殊字体记得嵌入或打包。那么换个角度想,找别人要材料的时候也尽量要一份pdf导出的,确保自己拿到的材料跟对方看到的一致。
如果你的大脑空空如也,总是处于一切就绪的状态,那么他就会向一切事情敞开大门。——铃木俊隆
为开阔心境,变得open,我平日里的桌面是空的,只有正在处理的时候会将需要使用的文件放在桌面,使用过后也会进行归档。比如我现在正在写这份《拿来主义演说》,所以桌面上会有一份文档。
建立项目为主题的意识。
这个意识在事情少的时候可能没啥感觉,当很多事情集中出现在某段时间里面,如何整理规划好自己的主次、时间和下一步计划就显得尤为重要。关于这部分的理论,可以参考GTD。
大家在研究生期间会有几个重要事件:科研、工作和学校事务;
而对于事件又会分成重要事件节点:小论文(按学位要求)、开题、中期、盲审、预答辩、正式答辩、毕业材料。
可以为每个节点创建一个「文件夹」进行项目、子项目的归档和整理。比起按年份和时间,以项目为主题会令知识关联和文件检索都变得容易。
师弟师妹们如果想确定选题,不知道该从何下手,也可以先建立一个文件夹,起名「开题」。做一下心理准备。
关于选题,可以多参加知名讲座,多在一些公开库里复现一些好玩的工作:
- 推荐线上讲座:VALSE_Webinar、商汤科技SenseTime
- 推荐公开代码库:OpenMMLab、飞浆 AI Studio
- 推荐公众号:CVer、我爱计算机视觉、计算机视觉研究所
- 实验室项目、公司实习、继承师哥师姐
- 观察一下喜欢的公司、喜欢的岗位要求
考虑到重要文件留痕、对比参考和版本恢复等各类问题,可以使用云同步,比如微软官方的OneDrive、坚果云,这种自动保存、恢复文档版本的工具;除此之外,强烈建议手动编号和保存几份本地文件。
这里埋个伏笔,说到了版本和备份,除了文档,其实代码也是一样的。后面说后面说。
推荐
- ==Markdown标记语言。==任何编辑器可用,图片上云,文件体积小,迁移平台方便,无格式忧虑。自用Typora,测试版免费。比如大家Github上面看的ReadMe文件也是使用md写的。
- 平时写的技术文章可以上传笔记平台,比如知乎、CSDN(支持评论)。开启专栏和tag功能便于作知识分区。另外技术博客一般都支持md编辑。
- MS Office全家桶。其实不太建议使用WPS进行重要的文件书写,比如论文独创性声明里的某些字体无法显示会自动转。绝大部分的企业、个人都在用,必备工具,但是需要注意不同语言/地区版本之间,域代码容易失效。
- 图:Visio(仅Windows可用,小心跨平台)、ProcessOn 在线流程图、PPT(调色、加字、简单组合、作图);
- 表:Excel整理、Word论文三线表;
- 公式:LaTeX公式输入
重要文件或专题文章集合建议使用本地链接。比如阅读笔记类,需要不断索引、归纳和总结类似的文章和书籍。理解力增强的同时,阅读和写作的水平走到主题阅读,也就是咱们说的科研,这时候就需要一些数据库工具来帮助我们进行知识关联。
建议使用数据库工具进行文献的整理,但是不建议在数据库里进行文献的阅读、标注和笔记等操作。不是说工具不好,只是说这方面的总结和归纳其实是一个非常提升个人能力的部分,并且个性化很强,自定义会更好!
- 文献数据库工具有很多,比如EndNote(自用)、NoteExpress(图书馆资源)、Zetoro(免费)等;
- 线上知识管理,Notion、OneNote;
- 本地知识双链,Obsidian。
谁还不知道GitHub!都给我玩起来!申请学生版专业账号玩飞!
学生邮箱会过期,大家申请的时候注意时限,或者给你的GitHub账号写封遗嘱,指定继承人。
主要推荐大家使用GitHub去检索一些优秀的开源项目,然后克隆下来==学习、模仿==,最后能做出贡献就更好了!
这里先说两个概念:
- Git是一种版本控制工具;
- GitHub是一个代码开源社区。
GitHub介绍与检索
见我实操,或者大家网上检索。
这里推荐2个视频,同时两位up主的其他视频也相当优秀,建议关注。
学习良好的代码规范和路径,从而产生对自己代码的修改思路。
或者你们会疑惑,咋找好的项目,咋找跟自己关联性很大的代码呀?这里提供几个途径:
- 假如跟着师哥师姐做,可以问问师哥师姐(拿来吧你);
- 关键词检索,先泛读论文找到关键词的中英,分别去百度/谷歌(相关讲解和总结)、GitHub(源码)上检索。
- 前沿工作的开源项目,一般在文章里就有提供,或者参考这个网站paperswithcode;
- 知名的代码平台:商汤mmlab、百度paddlepaddlle等。但建议使用基于PyTorch等广用深度学习框架搭建的代码库,不然学习成本和修改难度成倍增加,容易放弃。
优秀的开源项目会提供很多编程的灵感,如果基础稍微薄弱一些,这里也提供一些可以对着代码参照的,好玩、幽默、通俗易懂的书籍:
下载还需要教?
谁还直接点Download ZIP
,我会笑你。
从克隆代码的第一步开始。修改完就提交一款版本。发布线上团队协作。
看我操作,或者自己上网看看。
我觉得这个光看视频没用,自己实操学的最快!这里提供几个教程网站,可以先上去了解一下,具体要用再搜索。
更建议大家平时手边放个小本子,把常用的命令都记在上面,随用随翻。
复现 👉 火拼 👉 设计 👉 闭环。
1. 我们需要通过复现多款 Baseline 并深度解析模型。
有多深呢?就是你可以通过代码调试,输出模型每一块的特征,可视化到每一层的参数变化。知道整个代码的走向、怎么修改输出。
这里推荐使用VSCode来打开整个项目,做调试;然后自己整理模型和流向。==论文语言跟代码语言是不一样的。==有时候论文里写了半页纸,代码就一行。所以看到喜欢的论文就扒拉他代码看,直接点!
2. 我们尝试修改、拼接代码,但是注意一定要保留修改痕迹和训练数据。
如果你想问从哪里获得修改的灵感?
- 第一个建议就是多看别人的工作,多复现优秀的代码。可以直接去搜索这个团队,或者查查谁引用了这篇Baseline,看看现在的改进趋势。
- 第二个建议就是组会的时候,如果有权有势,让师弟师妹去读跟自己领域相关的文章,安排。如果没权没势,就听师哥师姐分享,然后找跟自己工作关联的地方仔细地问他们,榨干。
- 第三个建议就是现在就去干!!!!!厚积薄发,今年广东高考作文题目就是围棋的本手、妙手和俗手,看看祖国花朵们的领悟,这下你肯定知道该怎么努力了。
如何开始我们的代码cv工程?干之前先停下来想一想!
我是说当面前有很多选择的时候,大家就停下来想一下。但如果有一个灵感突然蹦哒,还是立即抓住马上实现,后续再进行整理也是可以的。
我在这方面的资料保存不是很好,参考性较低,但是现在回头看,觉得有几个值得注意的改进之处,与大家共勉。如果有其他经验分享,我后续会补充进文章里:
最开始按照自己现有材料和思路总结出改进点分别是哪些,比如我有4个改进方向:(按照难度和重点排序)
-
udp mmpose (较易)同数据、模型;现成参考、复现;修改部分代码。
-
dcn mmdetection (难)同数据、不同领域模型;现成代码、模块化;拼接、改装特定模块;修改核心代码。
-
nam (较易)不同数据、不同模型;现成代码、模块化;拼接特定模块;不修改核心代码。
-
adaptive HRNet团队 (较难)同数据、模型;不同代码库;现成代码,非模块化;修改核心代码。
我大概会通过这些分析,来判断下一步计划和执行时间。
改进点 | 难度 | 相似度 | 类型 | 核心代码 |
---|---|---|---|---|
udp-mmpose | 较易 | 同数据、模型 | 模块化 | 否 |
dcn-mmdetection | 困难 | 同数据、不同模型 | 模块化 | 是 |
nam | 容易 | 不同数据、不同模型 | 模块化 | 否 |
adaptive-HRNet团队 | 较难 | 同数据、模型 | 网络设计 | 是 |
比如说我自己,主要关心的部分是:
第一,这个修改涉不涉及“核心代码”。
第二,他们是否属于同一个代码库?如果是,拼接工作相对简单。事先保证挑选的代码都是Python、PyTorch系列的。最好都在mmlab里面,这样可以参考库之间模块化的修改方式,使用代码对比来观察怎么拼接更具拓展性。
第三,硕士毕业要到达一定的难度,不能都选简单的拼接代码工作,不然工作量和设计理念没办法写好,也没办法串联进逻辑闭环。
没有良好的代码习惯,我突然就忘记改了哪些地方了?
然后就到了代码修改的部分,大家可能会关心,每一次修改后的代码,我改动了哪些部分?以防万一我多说一句,大家修改代码的时候不要直接在源代码上动手,复制一份,然后再链接回去,不然改到一半跑不通就懵逼了。
-
如果改动相对集中,思路非常统一,强烈建议大家使用纸笔记录,然后再电子化文档。
-
但是如果大家面对的是一个庞大的代码库,修改是全贯穿的;或者说为了实现一个功能需要动核心代码,一下子联动多个部分的模块修改,非常细枝末节,即使是粘贴、复写了之前的文件,加入了注释,还是很难记忆。
==那就需要用到代码版本管理的思想了!==
这里我默认大家都知道「终端Terminal」、「命令行」这些概念;然后也能相对熟练地在Windows、Linux或者macOS系统上进行文件操作等。如果这方面有不熟悉的,建议提前阅读鳥哥私房菜这个博客或者书本,写的非常好!
1. 使用插件管理
可视化界面、简单清晰,需要提前关联GitHub账号。
- 代码编辑器:VSCode(自用,打开速度快)、PyCharm(升级学生专业版可以配置远程ssh)
- VSCode编辑器插件:GitLens、Rainbow Brackets
使用这个插件,能够在本地可视化修改后细节和文件对比,帮助我们回忆和定位具体的方案。如果修改后满意了,可以将它暂存、提交并更新到仓库。回退版本之类的操作也可以通过插件进行。
- Chrome浏览器辅助插件:Enhanced GitHub、Open in VS Code (github1s.com)
2. 命令行控制
自己手敲命令,可以更慎重地进行每一次代码提交和管理,同时也能熟悉Git操作。(这里只提供个人常用的,建议大家私下多了解团队协作方面)
# 将代码克隆到本地
git clone git@github.com:c-yatyat/SSR-Pose.git
# 初始化
git init
# 检查文件状态,可以经常输入这个命令查看现状
git status
# 跟踪、暂存某个文件or所有文件
git add [file]
# 提交更新
git commit -m "balabala"
# 远程仓库、推送到仓库某分支
git remote -v
git remote add [shortname] [url]
git pull origin master # 抓取
git push origin master # 推送
这个命令可以在自己电脑的「终端」里操作,也可以在「git bash」操作,也可以在「编辑器的终端界面」操作。比如我在自己的电脑上操作一下。
然后就可以在github上面查看各种版本的代码和修改记录了。
这就相当于保存了修改路径,如果需要多版本推送,比如修改了第一个改进点的代码,专门用来做误差分析的代码。可以按照需要分别推送到不同的分支,或者打上一个tag标签。
这里我举的例子是个人用途,比较随意,但按道理来说学习期间,花点时间按照最严格的规范来做,受益匪浅。如果大家需要团队合作or想在开源社区做贡献的话,建议详细阅读一下代码规范。
这里提供一些了解版本管理、开源社区约束的视频和网站,按需参考:
-
git、github 保姆级教程入门(这个up把版本管理讲的非常通俗易懂)
-
git闯关式学习(如果不想用本地玩,可以试试这个线上教程)
3. 我们记录和设计各类实验,验证自己改进的模型效果。
为什么记录写在设计的前面呢,因为说实话,我的才华并不能在开端就设计好整个模型,前期很大部分是在碰运气,看看哪个点效果好,就往哪里走走拼拼。
因此最好在一开始就养成良好的实验记录和修改路径的习惯。(别单用纸记录!就算要用也要电子化一份!)
比如在我的表格里只有「+nam」和「+adaptive」的表单是保留训练记录的,其余的或多或少存在数据丢失的风险。而且完成好的实验就没有记录过程。
建议记录的重点:
- 一份修改计划:我要调整里面的哪些超参数,比如lr、config;这里需要较详细的记录和备注。以便后续实验微调。
- 日期、训练时间:方便观察时间成本,确定后续训练计划。
- 改进的方法用+表示拼接内容,先不要另起名字。比如「UDP+adaptive」就是在udp的基础上拼adaptive方法,lr和config另外备注。
- 代码修改的时候,尽量多保存几个checkpoint、log和可视化文件。
- 提升明显的所有数值需要摘抄记录,不要偷懒保存!全部写进表格里!
- 最后,==表格不要全靠自己设计==!参考大佬们都列出什么参数,参考个3、4篇文章,然后往多了写,别人有的我们全都要有,后面写进论文里再删除也可以!
4. 逻辑闭环
咱们做实验到开始写论文的这个交叉阶段,不要着急下笔,花几天、几周甚至一个月时间来做逻辑闭环,一定要做!
目的是让自己的模型服务于设计理念,为所有的实验都找到动机,为所有的数据都定性,为所有的分析都产生唯一的主题高光,为所有的文字都进行逻辑串联。没人能在我的逻辑闭环里打败我!
怎么将师哥师姐的论文拿来,变成我的?
看我实操。
- 首先制作自己的逻辑闭环,然后找伙伴、老师深度交流和讨论:推荐使用幕布或者XMind此类大纲、思维导图app先组织思路。
- 论文写作的思路:文段的组织结构,在大纲里进一步细化!
- 编写格式:写完大纲后,其实就可以找到师哥师姐做好的毕业论文模版文件,然后按照自己的脉络填充。
彩蛋:关于这方面的资料,可编辑的大纲-幕布(密码我名),限时1天的毕业论文(文档+演示)嘿嘿。
盲审阶段专家拿到论文,专业度是一方面,格式也是很大的一方面,提交的时候确保跟自己的伙伴们格式比对,及时交流,不要有过大的信息差出现。可以互相看看整体结构、行文语句和图表公式有没有明显疏漏。
小蓝平时安排我们看本科毕设,除了累和糟心之外,其实可以学到的一些关于论文编写的格式和组织方法,至少可以看出来哪里不对劲,比起完全自己从零开始会更有抓手。
值得注意的一些格式细节:
- 图、表、公式的制作、统一和引用规范。
- 行文段落和图表之间的排布,做到图文并茂。
- 分节符、分页符、页码、页边距等制作细节。
- 中英文、段落、编号格式统一与规范。
- 目录生成的一些细枝末节。
关于论文格式部分,此处留下两位优秀博主的视频,亲测无论Windows还是macOS都可以跟着做,不踩雷!
-
冰冷的希望123 - Word论文排版教程(Windows)
-
大啊好我r中之 - 优雅搞定Word论文排版 (macOS)
大论文的每一个章节其实都可以按照小论文的思路来写。
应某师弟要求,这里提供一下,我自用的英语学习资源(科研相关的英文读写)。
1. 关于源码网站、官方文档和文章的阅读。
- 翻译它!这里提供除了谷歌一键翻译页面外,翻译网页内文章好用的插件彩云小译,自用屏幕取词工具欧路词典。
- 多看你就熟练了,其实技术类文章生词也就这么几个。
- 不建议对英文文献进行翻译,英文paper写作套路固定,直接阅读可以培养语感,有助于论文写作。如果实在要翻译,也要先通读一遍啃完了(自我训练),再去翻译软件上比对,增强理解。
2. 关于英文小论文写作
- 平时阅读文献的时候注意梳理段落内容,最好用英文概括性总结,保留英文关键词在段落旁边,做好重点文段和语句积累。
- 梳理工作时候,尽量不要使用完整的中文语句。中文和英文写作思维不同,如果直接翻译成英文会不流畅。建议使用中文「主谓宾」结构,重点方法配合重点「动词+名词」记录,然后短翻成英文,再连成长句。
- 这里提供一些自用的写作参考网站:Linggle用来查词语搭配、让自己语言更地道;WantWords可以用来查近义词、反义词,让文章语言更丰富。
如果还想更进一步了解关于英文写作的技巧和学习英语的知识,我留下几个日常会看的公众号和参考书籍:
- 公众号:LearnAndRecord(持续更新,内容热门)、BABBLER(文章地道、喜欢关联)
- 参考书籍:《中式英语之鉴》
这部分可以交给小蓝分享
- 个人规划
- 时间管理
- 情绪管理
这里其实推荐一个时间轴系列的时间管理记录。当然生活不是任何时间都需要这么精细化的管理的,不过这种让自己掌握每一小时的记录方法,可以很好的在赶论文ddl的时候把控好整个节奏。
我自用几种时间管理工具:
- 「日历」:记录固定时间的事件,比如面试、笔试、考试。
- 「时间轴」:用于了解自己在某项工作中的节奏,比如阅读文献、写作、画图和coding大概需要花费多少时间,从而更好的规划每项工作的用时。也可以了解自己早上、下午哪些时间更适合进行困难的工作。
- 「月进度表」:用于跟踪自己并行的项目进度,比如我同时实习+秋招+国考+论文的时候,我就很大程度依赖进度表来取舍各项目层次的重要性。有一些进入平稳阶段的项目我就暂时放一下,然后主力攻破紧急而重要的。
- 「清单」:每日清单的话就只写今天需要干的具体的事情,比如写“第三章的编码部分的标准方法”,采用子弹笔记形式符号。如果是某些读书/观影清单,就可以按照类别进行整理。
这些都是灵活变通的,不一定对所有的项目都采用这种方法,时间轴也不是每天都满满的,会有很多大片空白的时候。
我必须说,时间管理不一定会令科研或者生活变得轻松,但一定会让我们更加==了解自己==,从而找到适合自己的处理方式去应对复杂多变的事务。相当于一种方法论,会有私人订制的成分,但是优秀的人都会有共同的优良品质,这是值得学习和借鉴的地方。
最后推荐一个我最喜欢的环节,成功日记!这个概念是我在《小狗钱钱》这本书里get到的,会令大家充满自信、活力满满!
我喜欢使用五年日记的形式来记,可以顺便看看自己前几年在干嘛。我有一本从大四开始写的日记,今年有钱了,开了一本新的,回头看发现了很有趣的事情,比如每年的部分时间,我都在空白;有一些月在emo,一些时间打满鸡血;感觉像从年的维度看自己的变化,更长跨度的时间去观察自己的成长,我在变得更了解、更宽容和更爱自己。另外,一页里需要写5年的内容,所以每一天都只能写3-5句,就很省时间!比较容易坚持!
-
平面设计:好的设计可以让人更加想要了解你
-
演讲能力:好的演讲可以形成个人吸引力
-
职业规划 👉 小琰