7步!顶会Paper 复现方法!

【文末查看 论文复现神器】↓↓↓

刚接触论文时,我们常常听到要研究论文就头大,想到论文就排斥。

那问题来了,想找到论文的创新点,必须要吃透经典Paper。但大部分学员一看到论文就....

①研究论文时无法透彻理解paper,不能复现代码

②无法提出创新优化方案,导致论文发不出

③还有无法按照技术演进思路,系统学习深度学习知识

④不知道从哪个论文资源平台找论文

所以,有同学调侃:世上无难事,只要肯放弃。

我从大家在学习paper面临的问题中,从7个角度给一些参考方法,并附赠一个Paper复现神器

1、如何选择论文

2、查找论文的几个常用网址

3、如何筛选优质论文

4、如何精确查找已知论文

5、如何管理论文

6、如何阅读一篇论文

7、论文paper学习路径

8、Paper复现神器(文末查看)

1

如何选择论文

那目前论文每年新出的那么多,如果不会选,耗时耗力。

所以第一点,如何选论文很重要。

我们可以从论文类型角度看:

第一个是综述论文

综述论文是对某一领域的研究历史和现状的相关方法、算法进行汇总,对比分析,同时分析该领域未来发展方向。所以,综述论文是适合入门一个新领域的首选,刚接触一个新领域,首先要读的就是综述类的论文。

第二个是专题论文

就是具体的算法、模型的提出。有了相关基础知识,我们就可以进入具体算法论文当中去学习其设计思路,实验技巧,代码实现等具体技术。

但深度学习技术发展之快,每天都有成千上百的新论文,难免鱼龙混杂。所以需要挑出质量高的论文。读上百篇低质论文,不如精通一篇高质量论文。

所以,如何选择高质量的论文:

选择高质量期刊会议:CVPR、ECCV、ICCV、AAAI、NIPS、ICLR、ICML等

选择高引论文:同行间普遍认可,参考,借鉴的论文高引论文表明了这篇论文中的方法在该领域内非常重要,这也是你在选择论文时一个非常重要的参考要素

选择知名团队:因为知名团队的论文质量相对较高,例如 Yoshua Bengio、Yann LeCun、Geoffrey Hinton、 Andrew Ng等

选择有代码论文:我们都知道 Talk is cheap.Show me the code。这句经典名言。有代码复现的论文,不仅质量有保证的,在你实操复现的过程中,才能得到及时的反馈和收获。毕竟很多论文的实验结果无法复现,那么我们读了可能也没什么作用。

2

如何查找论文

第二,去哪里找到我们要读的论文呢?

首先,推荐一个实用网站:paperwithcode,上面收集了大量论文及其代码实现,大家可以在上面寻找论文去阅读。

问:那对于未知论文题目的论文,如何进行检索?

一般来说,我们只有关键词,想通过关键词来寻找相关论文来阅读,那么我们可以通过以下4种方法:

1、通过知网寻找优质综述,快速入门,并通过参考文献收集大量论文题目

2、通过搜索引擎,这里常用的有百度学术和google scholar,这些搜索引擎上能找到大量的相关论文

3、arXiv,arXiv是预印本平台。现在大多数论文在发表之前都会先公布到arXiv上占坑。这是由于技术发展之快,论文等不到见刊,就需要先公诸于世,让大家先看到这个方法是作者提出来的。

4、到顶会中搜索相关关键词,紧跟技术发展。

3

如何筛选优质论文

通过以上途径可以搜索到成千上万的论文,但是如何筛选优质论文呢?

那需要看论文所在的期刊是否优质,评判期刊优质的方法是看期刊影响因子。期刊影响因子是大家公认的期刊质量评判指标,它的计算方式是

采用期刊前N年发表的论文被引数除以前N年发表的论文数,通常N=2或N=5。

除了看IF,更方便快捷的方法也可以看期刊的分区,一区优于二区,二区优于三区,以此类推。

在这里我们需要知道,分区的方式主要有两种,一种是JCR,一种是中科院。JCR是国际通用的方式,而中科院的方式仅在中国适用。

以上方法是针对未知论文题目,我们应该从哪里找到论文。

4

如何精确查找已知论文

1、这里给大家安利一个能绕过科研论文收费的神奇网站——sci-hub

(注意:由于它这个神奇的功能,所以它的网址经常需要变动。)

打开网站,我们可以搜索URL,PMID,DOI或字符串就可以打开论文,进行阅读,下载。

(PMID是PubMed中收录的文献编号,并且是唯一的。DOI是数字对象标识符,每一篇论文都有这个编号,相当于论文的数字身份证,我们可以通过DOI快速的锁定论文。)

我们可以看一看两篇经典论文的DOI,DOI分为前缀和后缀,后缀是颁发机构。举个栗子,从下面图中我们可以看到,这两篇论文都出自CVPR

2、百度学术的文献互助功能。通过搜索,点击求助文献,等待有资源的朋友上传论文就可以了。这个功能还是比较实用,比较快捷的。

3、其他领域

知网:寻找优质综述,快入入门

google scholar:scholar.google.com 构建知识体系

arXiv:arxiv.org 论文预印本(preprint)平台

关注顶会:CVPR、ECCV、ICCV、AAAI、NIPS、ICLR、ICML等

5

如何管理论文

我们学习的论文太多,所以需要论文的管理:

1、PDF格式论文通过命名进行管理。推荐两种命名格式:

时间-作者-题名的方式, 或者时间-关键词-题名的方式。

将同一个作者的同一个研究进行归类,可以清晰的看出这个研究的发展。除了规范的命名,我们还需要将同类的论文放到同一个文件夹中,方便我们查找。

2、论文管理软件:如果涉及成百上千的论文管理,那么推荐使用论文管理软件

常用的有endnote,mendeley,Zotero等等,大家可以根据需要自行下载安装管理软件。【这里提醒大家,endnote是收费的,mendeley是免费的,下面就是mendeley的界面,我们可以看到它可以很好的管理大量的论文。】

6

如何阅读一篇论文

【本节敲重点】首先,不同的人看论文侧重点不同:

① 刚入门的学员,这一类同学主要目的是学习论文中的知识点,所以要求面面俱到,尽量每个细枝末节都要学。

② 对于工业界中的工程师,则需要注重算法实现部分,要快速的从论文中知道如何复现算法,应用到自己的项目当中。

那么推荐的论文阅读方法是分为三步,首先 泛读,再精读,最后总结。再加上验证。

1、泛读

这里泛读的作用就是快速浏览,把握概要,如同吃火锅一样,一大桌菜,我们先看看桌上有哪些菜,哪些菜是要吃的,哪些是不吃的。比如,火锅底料我们就是不吃的啦~

泛读阶段,我们重点读标题、摘要、结论以及所有的小标题和图标。

下面我们举个例子,对论文进行快速浏览,

这是一篇CV领域非常经典的论文Alexnet,我们先看题目,题目是Imagenet classification with deep convolutional neural networks,从题目我们知道这论文用深度卷积神经网络来做图像分类任务。

接着阅读摘要,我们可以了解论文的概要,清楚论文采用什么方法,解决什么问题,达到什么效果。接着我们要把论文所有的小标题给列出来,将论文大卸八块,了解论文都有哪些内容,就像前面那一桌子火锅,我们要先浏览每一个盘子里装的是什么菜。

接着还要把论文的结论,所有的图片和表格进行浏览,更近一步了解论文中有哪些论证,举例,内容说明。

通过以上几个步骤,这时对论文有了一个大概的认识。在泛读之后,我们要达到的水平就是能回答以下这三个问题,这样才能算泛读完成。

第一问题,论文要解决什么问题?回想摘要我们就知道它是像要解决ILSVRC挑战赛中的分类任务。

第二个问题,论文采用了什么方法?那么这篇论文采用了什么方法呢?其实在题目中就告诉我们了,采用的是深度卷积神经网络。

第三个问题,论文达到什么效果?从摘要我们也能知道,论文在ILSVRC2012比赛中以15.3%的top5 error夺冠 这就是对泛读之后进行自我评测的三个问题。

2、精读

泛读完成之后,对论文总体有了把握,接下来就是挑选精华部分进行阅读。

前面提到在校生与工程师读论文之间是有差异的,更具体地就体现在精读部分:

① 对于学员来说,要学习更多知识,做到面面俱到,那么论文中的所有内容都是你的精华,都需要仔细阅读,仔细去品。

② 对于工程师而言,目标就是找到算法实施部分,了解算法如何实现,以及其中有哪些技巧,更偏工程的看待论文。对于精读完成后,我们要能够对所读段落了如指掌。这样才算完成精读。

3、总结

经过泛读精读,最后需要对论文进行总结。

总结是对论文的创新点、关键点和启发点进行摘抄记录。对于有写论文发论文需要的同学来说,这一步是至关重要的,对论文的总结是为课题提出创新点打下基础。 总结部分也是仁者见仁,在校生需要总结一切与写论文发论文有关的信息句子,对于工程师,可能更多的是总结算法实现的参数,步骤,实验细节等

4、验证

完成论文三步曲之后,我们需要对阅读效果进行一个验证。

验证的方法其实很简单,就是回答三个终极问题,你是谁,从哪里来,到哪里去 最后也要知道这篇论文有哪些是可以借鉴的。

最后,我们来看看论文结构,要知道论文都有哪些内容构成,每一部分会有什么信息。

这里总结为6个主要部分:

1. 摘要,摘要主要讲论文简介,阐述工作内容,创新点,效果

2. 引言部分介绍研究背景,研究意义,发展历程,提出问题

3. 相关工作相关研究算法简介,分析存在的缺点

4. 本文工作论文主要方法,实现细节

5. 实验部分,介绍算法实现步骤及结果分析 

6. 探讨部分,论文结论及未来可研究方向

7

Paper学习路径

最后,如何更高效地阅读论文,并通过论文熟悉某个方向领域呢?

学习论文是一个系统性的工程,如何更高效地阅读论文,并通过论文熟悉某个方向领域呢?这就需要合理的学习路径。

第一点,基础必不可少。这里总结了必备的基础知识,我们来看一下

1、Python基础:这是毋庸置疑的必备基础,我们后边代码实现就是基于python语言。

2、数学基础:包含矩阵计算、概率论和信息论,矩阵计算在CV领域是必备知识,概率论与信息论在NLP中也是常见的概念。

3、神经网络基础:由于深度学习属于神经网络,因此神经网络的内容必须要了解,特别地,对于CV领域CNN是很重要的,大多数CV任务已经被CNN统治,对于NLP领域而言,RNN是必不可少的知识。

4、深度学习框架PyTorch:除了理论基础,实践的基础就是现在最热门的深度学习框架PyTorch,我们需要了解如何利用pytorch实现数据读取,数据增强,如何构建模型,如何设置损失函数优化器等等。而且PyTorch是现在最适合新手入门的框架,代码简洁易读懂,并且目前最前沿的技术,论文,大多数都有pytorch的实现,学会pytorch可以快速的紧跟前沿技术。

第二点,有了理论和实践的基础,就要针对CV和NLP两个方向进行选择,CV和NLP有着各自领域基础,大家要根据自己方向进行基础知识的巩固学习。对于CV领域,我们需要知道图像基础知识,图像的基本处理方法等等内容 对于NLP方向,我们需要了解什么是词袋,分布特征是什么,tfidf权重,等基础知识。

第三点,那我们巩固好理论、实践、方向领域上的基础之后,就可以进入论文的baseline cv方向,你应该选择领域内引用高,同行间普遍熟知的论文,包含alexnet vggnet googlenet resnet等等。NLP方向的baseline,你应该选择开创性、引用高和应用到实际业务的论文,主要覆盖词向量、nlp深度学习主流框架和应用,预训练模型等主流方向,做到兼顾科研和工业应用平衡。

第四点,熟悉了baseline论文,就算是入了门,就可以根据自己研究方向及感兴趣的方向选择性的学习专题论文。对于CV常见的有OCR、GAN、知识蒸馏、目标检测、图像分割等等。对于NLP有文本分类,句子匹配,关系抽取等等。

从中找到你想要研究的专题是很重要的,如果你在初期阶段,对细分专题没什么概念,你也可以初步都学习了解一下,找到自己感兴趣的专题,针对特定研究方向,深入学习。

8

Paper复现神器

学习之路总结的经验,望对大家有所帮助。

不过经验未经实践,很难成为自己的技能。所以我在这里推荐深度之眼与阿里云天池合作的:

3天带你 复现CV、NLP经典开山之作:

Alexnet 和 Word2vec

从泛读 到 精读,从算法模型 到 代码复现

现仅 50个免费名额

↓ 扫描上方二维码加小姐姐 ↓

↓回复:baseline  领取课程 ↓

参加即曾《AI研究生必读AI经典Paper篇目》、

和价值298元的《算法工程师面试锦囊》。

  • 10
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Java 中,Paper 对象代表了打印纸张的属性,其中包括纸张的大小、方向、边距等信息。如果需要设置打印纸张的边距,可以通过以下骤实现: 1. 创建一个 Paper 对象,并设置纸张的大小和方向,例如: ``` Paper paper = new Paper(); paper.setSize(595, 842); // 设置纸张尺寸为 A4 大小 paper.setOrientation(Paper.PORTRAIT); // 设置纸张方向为纵向 ``` 2. 设置纸张的边距,例如: ``` double leftMargin = 36; // 左边距为 36 磅 double rightMargin = 36; // 右边距为 36 磅 double topMargin = 36; // 上边距为 36 磅 double bottomMargin = 36; // 下边距为 36 磅 paper.setImageableArea(leftMargin, topMargin, paper.getWidth() - leftMargin - rightMargin, paper.getHeight() - topMargin - bottomMargin); ``` 其中,setImageableArea() 方法用于设置纸张的可打印区域,其参数依次为左边距、上边距、可打印区域的宽度和高度。在这个例子中,可打印区域的宽度为纸张宽度减去左右两边距的和,高度为纸张高度减去上下两边距的和。 3. 将设置好的 Paper 对象应用到打印作业中,例如: ``` PrinterJob job = PrinterJob.getPrinterJob(); PageFormat pageFormat = job.defaultPage(); pageFormat.setPaper(paper); job.setPrintable(printable, pageFormat); ``` 在这个例子中,PrinterJob 对象代表了打印作业,PageFormat 对象代表了打印页面的格式,而 printable 对象代表了需要打印的内容。通过将设置好的 Paper 对象应用到 PageFormat 对象中,我们就可以在打印时使用这个纸张属性了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值