发布研究论文代码的小技巧

极市平台

共 3541字,需浏览 8分钟

 ·

2020-10-17 07:33

↑ 点击蓝字 关注极市平台

译者丨白小鱼
来源丨https://zhuanlan.zhihu.com/p/263069345
编辑丨极市平台

极市导读

 

在分析了200多个优质机器学习项目代码库后,本文总结出了一份NeurlPS 2020会议代码提交的模板,现已成为大会官方指南,快来看看吧。>>加入极市CV技术交流群,走在计算机视觉的最前沿




整理了最受欢迎的ML研究论文代码库中的最佳做法,现在这已是 NeurIPS 2020 会议的官方指南
为了促进项目的可重复性,基于对 200 多个机器学习项目代码库的分析 和 GitHub Stars 数目 ,我们总结了如下建议。
有关更多详细信息,请参见:
https://medium.com/paperswithcode/ml-code-completeness-checklist-e9127b168501
对于 NeurIPS 2020 会议的代码提交,建议(但不是强制性的)使用“用前须知.md”模板,并根据 ML代码完整性清单(如下所述)核对所有项目。

用前须知.md 模板

我们提供了一个模板,可用于发布 ML 研究项目代码库。
模板链接:https://github.com/datawhalechina/releasing-research-code/blob/master/templates/README.md
模板中的各节是通过查看在社区中最受欢迎的代码库,然后查看与受欢迎程度相关联的共同组件而得出的。

ML代码完整性检查清单

我们通过查看最受欢迎的 ML 研究项目代码库的共同点来编制此清单。此外,我们优先考虑了可重复性高的项目,使得其他项目更容易基于此研究代码库构建。
ML代码完整性检查清单包含五个要素:
  1. 依赖说明
  2. 训练代码
  3. 评估代码
  4. 预训练模型
  5. 自述文件,包括结果表格以及运行/产生这些结果的精确命令代码
我们验证了满足检查清单中更多要素的代码库,也倾向于拥有更多的 GitHub Stars。通过分析官方 NeurIPS 2019 代码库已验证了这一点。我们还提供数据和笔记,以从帖子中复现此分析。
进一步的,满足所有这五个要素的 NeurIPS 2019 代码库,具有最高数量的 GitHub Stars(中位数196星,平均2664星)。
我们会针对检查清单上的每个要素进行详细说明。

1. 依赖说明

如果您使用的是Python,则意味着需要提供 requirements.txt文件(如果使用 pipvirtualenv ),或者提供 environment.yml 文件(如果使用 anaconda ),或者提供 setup.py(如果您使用代码是一个库)。
优秀的做法是用前须知.md 中安排一个小节,说明如何安装这些依赖项。假定用户需要掌握最少的背景知识,并且要清楚而全面了解项目——如果用户无法设置您的依赖项,那么他们很可能也会放弃其余的代码。
如果您希望提供整个可复现模型的环境,则可能要考虑使用 Docker 并将您环境的 Docker映像 上载到 Dockerhub 。

2. 训练代码

您的代码应当包含一个训练脚本,该脚本可用于获取本文所述的主要结果。这意味着脚本中应该包括模型超参数以及在获取结果的过程中使用的所有技巧。为了最大程度地发挥作用,在编写此代码时,最好考虑到可扩展性:如果您的用户希望在自己的数据集上使用相同的训练脚本,该怎么办?
您可以提供打包好的文档化的命令行程序(例如 train.py )作为用户的使用入口。

3. 评估代码

模型评估和实验通常取决于细微的细节,而这些细微的细节并不总是能在论文中得到解释。这就是为什么包含用于评估或运行实验的精确代码,将有助于对实验过程进行完整描述的原因。反过来,这可以帮助用户信任和理解您的研究工作,并以您的研究为基础。
您可以提供打包好的文档化的命令行程序(例如 eval.py )作为用户的使用入口。

4. 预训练模型

从头开始训练模型可能既耗时又昂贵。一种增加对结果的可信度的方法是提供预训练模型,从而让社区可以使用该模型获得最终结果并进行评估。这意味着用户无需重新模型训练,就可以看到可信的结果。
另一个常见使用场景是对下游任务进行微调,在此情况下,发布预训练模型非常有用,以便其他人可以在其基础上构建模型以应用于自己的数据集。
最后,一些用户可能想尝试一下您的模型,看看它是否适用于某些示例数据。提供预训练模型可以使您的用户随心所欲地玩转您的工作,并有助于理解您相关研究论文的成就。

5. 自述文件,包括结果表格以及运行/产生这些结果的精确命令代码

用前须知.md 中添加结果表格,可让您的用户快速了解代码库中的内容(有关示例,请参见模板)。有关如何复现这些结果的说明(带有任何相关脚本的链接,预训练的模型等)可以为用户提供另一个使用入口,并直接促进复现性。在某些情况下,一篇论文的主要结果是一个图表,但对于用户而言,如果不阅读该论文,可能会难以理解该结果。
您可以进一步的链接到包含其他论文的最新结果的完整指标排行榜,从而进一步帮助用户理解您的结果并将其关联起来,有多个排行榜服务可以存储该信息。

用于发布研究论文代码的其他优质资源

注:尚未根据国内情况推荐相关工具。

托管预训练模型文件

  1. Zenodo - 支持版本管理,50GB,带宽免费,DOI,可长期保存
  2. GitHub Releases - 支持版本管理,2GB 文件大小限制,带宽免费
  3. OneDrive - 支持版本管理,2GB(免费 )/ 1TB (需要Office 365套装),带宽免费
  4. Google Drive - 支持版本管理,15GB,带宽免费
  5. Dropbox - 支持版本管理,2GB(付费无限容量),带宽免费
  6. AWS S3 - 支持版本管理,仅付费使用,带宽需付费

管理模型文档

  1. RClone - 针对众多不同的云存储提供商,提供统一访问方案

标准化模型接口

  1. PyTorch Hub
  2. Tensorflow Hub
  3. Hugging Face NLP models
  4. ONNX

指标排行榜

  1. Papers with Code leaderboards - with 2500+ leaderboards
  2. CodaLab - with 450+ leaderboards
  3. NLP Progress - with 90+ leaderboards
  4. EvalAI - with 50+ leaderboards
  5. Collective Knowledge - with 40+ leaderboards
  6. Weights & Biases - Benchmarks - with 9+ leaderboards

制作项目页面

  1. GitHub pages
  2. Fastpages

制作示例和指南

  1. Google Colab
  2. Binder
  3. Streamlit

贡献

如果您想做出贡献或对这些指南有任何建议,可以通过 im.young@foxmail.com 与本中文界面维护者取得联系(或者通过 hello@paperswithcode.com 与 Paper with Code 联系 ),亦可在此 GitHub 项目中提出问题(open an issue)。
任何贡献都是受到欢迎的!此项目中的所有内容均遵照 MIT许可 进行许可授权。
内容出处:
datawhalechina/releasing-research-code
接下来需要做的事情:
将该文章内涉及的工具添加中国化的内容。

推荐阅读



 ACCV 2020国际细粒度网络图像识别竞赛正式开赛!



添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳),即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群:月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~

△长按添加极市小助手

△长按关注极市平台,获取最新CV干货

觉得有用麻烦给个在看啦~  
浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报