淘优惠

淘优惠

EasyNLP带你玩转CLIP图文检索

热门文章 0

淘宝搜:【天降红包222】领超级红包,京东搜:【天降红包222】
淘宝互助,淘宝双11微信互助群关注公众号 【淘姐妹】

clipchart

作者:熊兮、章捷、岑鸣、临在

随着自媒体的不断发展,多种模态数据例如图像、文本、语音、视频等不断增长,创造了互联网上丰富多彩的世界。为了准确建模用户的多模态内容,跨模态检索是跨模态理解的重要任务,采用一种模态的数据作为数据,检索另一种模态的数据。其中,图文检索是跨模态检索的一种主流任务,广泛应用于各种网络应用中,其难点在于跨模态的表示鸿沟(Representation Gap)。具体来说,文本和图像的数据处于不同的向量空间,无法直接去度量他们的相似性。OpenAI提出了CLIP(Contrastive Language-Image Pre-training)模型,在大规模图文数据集上进行了对比学习训练,在多个数据集上的准确度表明,CLIP优于各种基于ImageNet的模型,也具有良好的零样本学习(Zero-shot Learning)能力。

EasyNLP是阿里云机器学习PAI 团队基于 PyTorch 开发的易用且丰富的中文NLP算法框架,支持常用的中文预训练模型和大模型落地技术,并且提供了从训练到部署的一站式 NLP 开发体验。EasyNLP 提供了简洁的接口供用户开发 NLP 模型,包括NLP应用 AppZoo 和预训练 ModelZoo,同时提供技术帮助用户高效的落地超大预训练模型到业务。由于跨模态理解需求的不断增加,EasyNLP也将支持各种跨模态模型,特别是中文领域的跨模态模型,推向开源社区,希望能够服务更多的 NLP 和多模态算法开发者和研究者,也希望和社区一起推动 NLP /多模态技术的发展和模型落地。

本文简要介绍CLIP的技术解读,以及如何在EasyNLP框架中玩转CLIP模型。

CLIP的模型结构相对比较简单,体现了“大道至简”的设计原则,其模型框架图如下图所示:

为了建立图像和文本的关联性,CLIP首先分别构建了图像和文本的Encoder,分别对图像和文本进行特征抽取。对于图像而言,CLIP使用的Backbone可以是经典的ResNet系列模型,也可以是更先进的Transfomer类模型,例如VIT等;对于文本,CLIP一般使用BERT类模型进行特征抽取,也包括RoBERTa等。在特征抽取之后,CLIP分别对提取的向量进行Normalization,从而可以直接进行内积相似度计算。在模型Loss Function层面,由于图像和文本向量都进行了Normalization,我们直接使用相乘来计算余弦距离,使得同一图文对的结果趋近于1,不同图文对的结果趋近于0;并且使用对比学习损失InfoNCE进行损失计算。

当模型预训练结束后,我们可以直接使用CLIP进行图文的检索,因为CLIP已经将图文的表示映射到同一个向量空间。CLIP的另一个优势在于可以进行Zero-shot Classification。如下图所示,我们设计输入文本“A photo of a {object}.”,并且使用目标图像作为输出。如果文本“A photo of a dog.”于当前图像最匹配(余弦相似度最高),我们可以说明,当前图像的物体是“dog”。由此可见,预训练后的CLIP模型可以直接用于图像分类,而不需要额外的训练。

CLIP模型的训练过程也可以直接参考原作者给出的伪代码实现:

在EasyNLP框架中,我们在模型层构建了CLIP模型的Backbone,核心代码如下所示:

其中,CLIPTextTransformer和CLIPVisionTransformer分别是基于BERT和VIT的特征提取器。前向传播的过程也比较简洁:

此外,由于CLIP模型本身具备文本和图像的编码器,我们直接调用他们的前向推理函数就可以实现特征的提取。对于文本我们有:

此外,我们在多个公开数据集上验证了EasyNLP框架中CLIP模型在各种任务上的精度。以零样本学习为例,我们使用EasyNLP加载了开源的openai/clip-vit-large-patch14模型,对比了Top-1精度和CLIP官方论文的结果,如下所示:

数据集Top-1 Accuracy (复现结果)CLIP 论文汇报结果
Food10190.992.9
CIFAR10078.677.9
EuroSAT60.159.9
Oxford Pets93.093.5
Fllickr30k-TR85,388.0
Fllickr30k-IR65,068,7

我们的实验也说明,如果采用特定数据集的数据对CLIP进行进一步Fine-tune,CLIP能取得更好的效果。以Fllickr30k数据集为例,CLIP模型在零样本学习和Fine-tune对比结果如下:

img2txt (r1/r5/r10)img2txt meantxt2img (r1/r5/r10)txt2img mean
CLIP Fine-tune91.0/99.0/99.795.5776.38/94.06/97.2889.24
CLIP Zero-shot85.3/97.40/99.294.065.02/87.2/92.081.41

我们也在中文数据集上进行了预训练,并且评测了模型在COCO-CN和Fllickr30k-CN数据集上的效果。模型的设置与WukongViT对齐(详见参考文献),进行了复现,结果如下所示:

由上述结果可见,EasyNLP框架训练的CLIP模型在下游任务的Finetune结果与WukongViT基本对齐。结果少量差异性的原因在于:1. MindSpore与PyTorch的内部实现差异性(WukongViT作者采用MindSpore实现)以及2. 超参数和随机种子的选择。

为了方便用户的使用,EasyNLP进一步提供了AppZoo层面的接口,使得用户可以在不实现任何代码的情况下调用CLIP模型,这一部分内容在下一节介绍。

以下简要介绍在EasyNLP框架使用CLIP模型。由于用户数据一般于CLIP预训练数据在分布上存在差距。我们提供CLIP模型的训练和向量提取功能

用户可以直接参考链接的说明安装EasyNLP算法框架。

首先准备训练数据与验证数据,为tsv文件。这一文件包含以制表符 分隔的两列,第一列为文本,第二列为图片的base64编码。用于提取向量接入向量检索系统的输入文件为单列,仅包含文本或图片的base64编码。为了方便开发者,我们也提供了转换图片到base64编码的示例代码:

下列文件已经完成预处理,可用于测试:

我们采用以下命令对CLIP模型进行fine-tune:

训练完成后模型被保存到https://segmentfault.com/a/clip_model/。训练结束后,我们可以对模型进行评估:

模型训练完毕后,我们可以将其用于文本或图片的特征提取,示例如下:

  1. 提取文本特征

  2. 提取图片特征

    提取出的特征存储在一个tsv文件中,每行对应输入中的一个文本或一个图片,维度之间采用制表符 分隔。

    在未来,我们计划在EasyNLP框架中公开以PyTorch实现的CLIP模型,覆盖各个常见中文领域,敬请期待。我们也将在EasyNLP框架中集成更多SOTA模型(特别是中文模型),来支持各种NLP和多模态任务。此外,阿里云机器学习PAI团队也在持续推进中文多模态模型的自研工作,欢迎用户持续关注我们,也欢迎加入我们的开源社区,共建中文NLP和多模态算法库!

Github地址:

  1. Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, Gretchen Krueger. Ilya Sutskever. Learning transferable visual models from natural language supervision. arXiv
  2. Chengyu Wang, Minghui Qiu, Taolin Zhang, Tingting Liu, Lei Li, Jianing Wang, Ming Wang, Jun Huang, Wei Lin. EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing. arXiv
  3. Jiaxi Gu, Xiaojun Meng, Guansong Lu, Lu Hou, Minzhe Niu, Xiaodan Liang, Lewei Yao, Runhui Huang, Wei Zhang, Xin Jiang, Chunjing Xu, Hang Xu. Wukong: 100 Million Large-scale Chinese Cross-modal Pre-training Dataset and A Foundation Framework. arXiv

    ? 阿里灵杰:阿里云机器学习PAI开源中文NLP算法框架EasyNLP,助力NLP大模型落地? 阿里灵杰:预训练知识度量比赛夺冠!阿里云PAI发布知识预训练工具



EasyNLP玩转文本摘要(新闻标题)生成

新闻摘要自动生成,怎么做新闻摘要,新闻标签提取,新闻摘要模板

作者:王明、黄俊

文本生成是自然语言处理领域的一个重要研究方向,具有丰富的实际应用场景以及研究价值。其中,生成式文本摘要作为文本生成的一个重要子任务,在实际应用场景中,包括新闻标题生成、摘要生成、关键词生成等任务形式。预训练语言模型,如BERT、MASS、uniLM等虽然在NLU场景中取得了令人瞩目的性能,但模型采用的单词、子词遮盖语言模型并不适用于文本生成场景中,特别是生成式文本摘要场景。其原因是,生成式文本摘要任务往往要求模型具有更粗粒度的语义理解,如句子、段落语义理解,以此进行摘要生成。为了解决上述问题,PEGASUS模型(PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization)针对文本摘要任务设计了无监督预训练任务(Gap Sentence Generation,简称GSG),即随机遮盖文档中的几个完整句子,让模型生成被遮盖的句子。该预训练任务能够很好地与实际地文本摘要任务匹配,从而使得预训练后的模型经过简单的微调后达到较好的摘要生成效果。因此,我们在EasyNLP框架中集成了PEGASUS算法和模型,使用户能够方便地使用该模型进行文本摘要生成相关任务的训练和预测。

EasyNLP()是阿?云机器学习PAI 团队基于 PyTorch 开发的易?且丰富的中?NLP算法框架,?持常?的中?预训练模型和?模型落地技术,并且提供了从训练到部署的?站式 NLP 开发体验。EasyNLP 提供了简洁的接?供?户开发 NLP 模型,包括NLP应? AppZoo 和预训练 ModelZoo,同时提供技术帮助?户?效的落地超?预训练模型到业务。文本生成作为自然语言处理的一大子任务,具有众多的实际应用,包括标题生成、文本摘要、机器翻译、问答系统、对话系统等等。因此,EasyNLP也在逐步增加对文本生成子任务的支持,希望能够服务更多的NLP以及NLG算法开发者和研究者,也希望和社区一起推动NLG技术的发展和落地。

本?将提供关于PEGASUS的技术解读,以及如何在EasyNLP框架中使?与PEGASUS相关的文本摘要(新闻标题)生成模型。

在此之前,文本生成预训练模型T5、BART等模型虽然在众多文本生成任务中取得了明显的性能增益,但是在文本摘要任务中,模型的预训练目标与文本摘要目标还是存在较大的差异。这导致此类预训练模型在迁移至不用领域的摘要任务时,仍然需要较多的训练数据对模型进行微调才能达到较好的效果。为了缓解上述问题,PEGASUS模型在原始的子词遮盖损失的基础上,增加了完整句子遮盖损失,即将输入文档中的随机几个完整句子进行遮盖,让模型复原。

具体地,如上图所示,PEGASUS采用编码器-解码器架构(标准transformer架构)。模型对输入采用两种遮盖,一种是BERT采用的子词遮盖,用【mask2】表示,让模型的编码器还原被遮盖的子词(该类损失在消融实验中被证明对下游任务无性能增益,因此在最终的PEGASUS模型中并未采用)。另一种是GSG,用【mask1】表示,即让解码器生成输入中被遮盖的随机完整句子。针对此损失,作者同时提出三种可选方案,包括Random(随机选择m个句子)、Lead(选择前m个句子)、Ind-Orig(根据重要性分数选择m个句子)。其中,重要性分数具体通过计算每句话与文档中其它句子集合的ROUGE分数得到。可以认为,该策略选择能够很大程度代表文档中其它句子的句子作为遮盖对象。下图展示了三种选句子方案的一个例子,所选句子分别被标记为绿色、红棕色、蓝色。实验表明,采用第三种句子选择策略的模型能够取得最优性能。

以下我们简要介绍如何在EasyNLP框架中使用PEGASUS以及其他文本摘要模型。

用户可以直接参考GitHub()上的说明安装EasyNLP算法框架。

在具体的文本摘要场景中,需要用户提供下游任务的训练与验证数据,为tsv文件。对于文本摘要任务,这一文件包含以制表符\ 分隔的两列数据,第一列是摘要列,第二列为原文列。样例如下:

湖北:“四上企业”复工率已达93.8% 央视网消息:4月1日,记者从湖北省新冠肺炎疫情防控工作新闻发布会上获悉,在各方面共同努力下,湖北省复工复产工作取得了阶段性成效。截至3月31日,湖北省“四上企业”包括规模以上工业、规模以上服务业法人单位等的复工率已达93.8%,复岗率69.3%。武汉市的复工率、复岗率也分别达到了85.4%、40.4%。责任编辑:王诗尧

下列文件为已经完成预处理的新闻标题生成训练和验证数据,可用于测试:

https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/generation/title_gen.zip

由于PEGASUS原文产出的模型仅支持英文,为了方便中文社区用户的使用,我们基于mT5的模型架构预训练了一个针对中文新闻标题摘要的模型mT5,并将其集成进EasyNLP的模型库中。同时,我们还集成了IDEA机构预训练的文本摘要中文模型Randeng(可以认为是中文版的PEGASUS),便于用户探索不同模型的性能。以下汇总了EasyNLP中可用的模型,并对比模型在上述数据集上的性能表现。推荐用户选择前两个模型进行文本摘要,后三个模型进行新闻标题生成。

中文新闻标题(Rouge1/2/L)论文标题摘要(Rouge1/2/L)
hfl/randeng-238M-Summary-Chinese59.66/46.26/55.9554.55/39.37/50.69
hfl/randeng-523M-Summary-Chinese62.86/49.67/58.8953.83/39.17/49.92
alibaba-pai/mt5-title-generation-zh-275m62.35/48.63/58.9654.28/40.26/50.55
alibaba-pai/randeng-238M-Summary-Chinese-tuned64.31/51.80/60.9758.83/45.28/55.72
alibaba-pai/randeng-523M-Summary-Chinese-tuned64.76/51.65/61.0659.27/45.58/55.92

在新闻标题生成任务中,我们采用以下命令对模型进行训练。用户可以根据超参数‘save_checkpoint_steps’来决定保存模型的步数,框架在此时会对训练的模型进行评测,会根据模型在验证集上的表现决定是否更新保存的模型参数。其中,运行的main.py文件在EasyNLP/examples/appzoo_tutorials/sequence_generation目录下,同时需要将训练和验证集数据放到该目录下。可以在‘user_defined_parameters’超参数下的‘pretrain_model_name_or_path’指定上述表格中的模型。

python main.py \\      --mode train \\      --app_name=sequence_generation \\      --worker_gpu=1 \\      --tables=https://zhuanlan.zhihu.com/p/cn_train.tsv,https://zhuanlan.zhihu.com/p/cn_dev.tsv  \\      --input_schema=title_tokens:str:1,content_tokens:str:1 \\      --first_sequence=content_tokens \\      --second_sequence=title_tokens \\      --label_name=title_tokens \\      --checkpoint_dir=https://zhuanlan.zhihu.com/p/finetuned_zh_model \\      --micro_batch_size=8 \\      --sequence_length=512 \\      --epoch_num=1  \\      --save_checkpoint_steps=150 \\      --export_tf_checkpoint_type none \\      --user_defined_parameters 'pretrain_model_name_or_path=alibaba-pai/mt5-title-generation-zh language=zh copy=false max_encoder_length=512 min_decoder_length=12 max_decoder_length=32 no_repeat_ngram_size=2 num_beams=5 num_return_sequences=5'  

另外,用户可以利用以下命令使用模型进行摘要生成,模型的路径由‘checkpoint_dir’指定。用户可以通过‘append_cols’指定在输出文件中添加输入列,如果不指定则填none。

python main.py \\      --mode=predict \\      --app_name=sequence_generation \\      --worker_gpu=1 \\      --tables=https://zhuanlan.zhihu.com/p/cn_dev.tsv  \\      --outputs=https://zhuanlan.zhihu.com/p/cn.preds.txt \\      --input_schema=title:str:1,content:str:1,title_tokens:str:1,content_tokens:str:1,tag:str:1 \\      --output_schema=predictions,beams \\      --append_cols=content,title,tag \\      --first_sequence=content_tokens \\      --checkpoint_dir=https://zhuanlan.zhihu.com/p/finetuned_zh_model \\      --micro_batch_size=32 \\      --sequence_length=512 \\      --user_defined_parameters 'language=zh copy=false max_encoder_length=512 min_decoder_length=12 max_decoder_length=32 no_repeat_ngram_size=2 num_beams=5 num_return_sequences=5'  

以下为模型对近期热点事件预测的几条样例,每条样例包含5列数据(以制表符\ 隔开),分别为预测的摘要列(新闻标题)、beam search的5条候选(用||隔开)、输入的原文、输入的新闻标签。其中后三列是从对应的输入数据中直接拷贝过来。由于新闻文本过长,以下仅展示每条样例的前四列结果。

**费德勒告别信:未来我还会打更多的网球** 费德勒告别信:未来我还会打更多的网球||费德勒告别信:未来我还会打更多网球||费德勒告别信:未来我还会打更多网球但不是在大满贯或巡回赛||费德勒告别信:未来我还会打更多的网球||详讯:费德勒宣布退役,并告别信 **一代传奇落幕!网球天王费德勒宣布退役** 央视网消息:北京时间9月15日晚,网球天王罗杰-费德勒在个人社媒上宣布退役。41岁的费德勒是男子网坛历史最伟大球员之一,曾103次斩获单打冠军,大满贯单打夺冠20次(澳网6冠、法网1冠、温网8冠、美网5冠),共计310周位于男单世界第一。附费德勒告别信:在这些年网球给我的所有礼物中,最棒的毫无疑问是我一路上所遇到的人:我的朋友、我的竞争对手、以及最重要的球迷,是他们给予了这项运动生命。今天,我想和大家分享一些消息。正如你们中的许多人所知道的,过去三年中,我遇到了受伤和手术的挑战。......  **台风“梅花”将在大连沿海登陆将逐步变性为温带气旋** 台风“梅花”将在大连沿海登陆将逐步变性为温带气旋||台风“梅花”将在大连沿海登陆后逐渐变性为温带气旋||台风“梅花”将在大连沿海登陆将逐渐变性为温带气旋||台风“梅花”将在大连沿海登陆后变性为温带气旋||台风“梅花”将在大连沿海登陆后逐渐变性 **台风“梅花”将于16日傍晚前后在辽宁大连沿海登陆** 记者9月16日从辽宁省大连市气象部门获悉,今年第12号台风“梅花”将于16日傍晚前后在大连市旅顺口区至庄河市一带沿海登陆,之后逐渐变性为温带气旋。  受台风“梅花”影响,14日8时至16日10时,大连全市平均降雨量为132毫米,最大降雨量出现在金普新区大李家街道正明寺村,为283.6毫米;一小时最大降雨量出现在长海县广鹿岛镇,为49.4毫米......

EasyNLP模型库中同样集成了英文文本摘要模型,包括PEGASUS和BRIO。以下表格展示了两个模型在英文文本摘要数据上的性能表现。用户同样可以使用上述代码对模型进行训练和预测。需要注意的是,EasyNLP默认的是对中文的处理,因此,当需要处理英文文本时,需要在‘user_defined_parameters’中指定language为en,如不提供,则默认为中文(zh)。

英文文本摘要(Rouge1/2/L)
alibaba-pai/pegasus-summary-generation-en37.79/18.69/35.44
hfl/brio-cnndm-uncased41.46/23.34/38.91

训练过程如下:

wget http://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/generation/en_train.tsv  wget http://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/generation/en_dev.tsv    python main.py \\      --mode train \\      --app_name=sequence_generation \\      --worker_gpu=1 \\      --tables=https://zhuanlan.zhihu.com/p/en_train.tsv,https://zhuanlan.zhihu.com/p/en_dev.tsv  \\      --input_schema=title:str:1,content:str:1 \\      --first_sequence=content \\      --second_sequence=title \\      --label_name=title \\      --checkpoint_dir=https://zhuanlan.zhihu.com/p/finetuned_en_model \\      --micro_batch_size=1 \\      --sequence_length=512 \\      --epoch_num 1 \\      --save_checkpoint_steps=500 \\      --export_tf_checkpoint_type none \\      --user_defined_parameters 'language=en pretrain_model_name_or_path=alibaba-pai/pegasus-summary-generation-en copy=false max_encoder_length=512 min_decoder_length=64 max_decoder

FlyAI小课堂:Github 项目推荐 | 深度学习入门教程

git fetch,git完整教程,git tutorial,git-flow

DeepLearning Tutorial

一. 入门资料

完备的 AI 学习路线,最详细的中英文资源整理

AiLearning: 机器学习 - MachineLearning - ML、深度学习 - DeepLearning - DL、自然语言处理 NL

数学基础

  • 矩阵微积分
  • 机器学习的数学基础
  • CS229线性代数与概率论基础

机器学习基础

快速入门

  • 推荐顺序由前到后
  • 机器学习算法地图
  • 机器学习 吴恩达 Coursera个人笔记 && 视频(含官方笔记)
  • CS229 课程讲义中文翻译 && 机器学习 吴恩达 cs229个人笔记 && 官网(笔记) && 视频(中文字幕)
  • 百页机器学习

深入理解

  • 推荐顺序由前到后
  • 《统计学习方法》李航
  • 《模式识别与机器学习》 Christopher Bishop
  • 《机器学习》 周志华
  • 《机器学习实战》 PelerHarrington
  • 机器学习与深度学习书单

深度学习基础

快速入门

  • 推荐顺序由前到后
  • 深度学习思维导图 && 深度学习算法地图
  • 《斯坦福大学深度学习基础教程》 Andrew Ng(吴恩达)
  • 深度学习 吴恩达 个人笔记 && 视频
  • MIT深度学习基础-2019视频课程
  • 台湾大学(NTU)李宏毅教授课程
  • 图解深度学习_Grokking-Deep-Learning
  • 《神经网络与深度学习》 Michael Nielsen
  • CS321-Hinton
  • CS230: Deep Learning
  • CS294-112

计算机视觉

  • CS231 李飞飞 已授权个人翻译笔记 && 视频
  • 计算机视觉研究方向

自然语言处理

  • CS224n: Natural Language Processing with Deep Learning
  • NLP上手教程
  • NLP入门推荐书目(2019版)

深度强化学习

  • CS234: Reinforcement Learning

深入理解

  • 《深度学习》 Yoshua Bengio.Ian GoodFellow
  • 《自然语言处理》Jacob Eisenstein
  • 《强化学习》 && 第二版
  • hangdong的深度学习博客,论文推荐
  • Practical Deep Learning for Coders, v3
  • 《Tensorflow实战Google深度学习框架》 郑泽宇 顾思宇

一些书单

  • 2019年最新-深度学习、生成对抗、Pytorch优秀教材推荐

工程能力

推荐大家可以多在FlyAI竞赛服务平台多参加训练和竞赛,以此来提升自己的能力。FlyAI是为AI开发者提供数据竞赛并支持GPU离线训练的一站式服务平台。每周免费提供项目开源算法样例,支持算法能力变现以及快速的迭代算法模型。

  • 如何系统地学习算法? && LeetCode && leetcode题解 && 《算法导论》中算法的C++实现
  • 机器学习算法实战
  • 深度学习框架
  • 如何成为一名算法工程师 && 从小白到入门算法,我的经验分享给你~ && 我的研究生这三年
  • 《AI算法工程师手册》
  • 如何准备算法工程师面试,斩获一线互联网公司机器学习岗offer?
  • 【完结】深度学习CV算法工程师从入门到初级面试有多远,大概是25篇文章的距离
  • 计算机相关技术面试必备 && 面试算法笔记-中文
  • 算法工程师面试
  • 深度学习面试题目
  • 深度学习500问
  • AI算法岗求职攻略
  • Kaggle实战
    • 常用算法:
      • Feature Engineering:continue variable && categorical variable
      • Classic machine learning algorithm:LR, KNN, SVM, Random Forest, GBDT(XGBoost&&LightGBM), Factorization Machine, Field-aware Factorization Machine, Neural Network
      • Cross validation, model selection:grid search, random search, hyper-opt
      • Ensemble learning
    • Kaggle 项目实战(教程)=文档 + 代码 + 视频
    • Kaggle入门系列:(一)机器学习环境搭建 && Kaggle入门系列:(二)Kaggle简介 && Kaggle入门系列(三)Titanic初试身手
    • 从 0 到 1 走进 Kaggle
    • Kaggle 入门指南
    • 一个框架解决几乎所有机器学习问题 && Approaching (Almost) Any Machine Learning Problem | Abhishek Thakur
    • 分分钟带你杀入Kaggle Top 1%
    • 如何达到Kaggle竞赛top 2%?这里有一篇特征探索经验帖
    • 如何在 Kaggle 首战中进入前 10%?
  • 大数据&机器学习相关竞赛推荐

二. 神经网络模型概览

  • 1. 一文看懂25个神经网络模型
  • 2. DNN概述论文:详解前馈、卷积和循环神经网络技术
  • 3. colah's blog
  • 4. Model Zoom
  • 5. DNN概述
  • 6. 从基本原理到梯度下降,小白都能看懂的神经网络教程
  • GitHub上的机器学习/深度学习综述项目合集

CNN

发展史

  • 1. 94页论文综述卷积神经网络:从基础技术到研究前景
  • 2. 从LeNet-5到DenseNet
  • 3. CNN图像分割简史:从R-CNN到Mask R-CNN(译)
  • 4. 深度学习之目标检测的前世今生(Mask R-CNN)
  • 5. 纵览轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
  • 6. 深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD
  • 7. 图像语义分割(Semantic segmentation) Survey
  • 7. 从RCNN到SSD,这应该是最全的一份目标检测算法盘点
  • 8. 图像语义分割(Semantic segmentation) Survey
  • 9. 语义分割 发展综述
  • 深度学习分类网络
  • 深度学习笔记(十一)网络 Inception, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv
  • CNN网络结构的发展
  • 卷积神经网络结构演变(form Hubel and Wiesel to SENet)
  • 从VGG到NASNet,一文概览图像分类网络
  • From RCNN to YOLO:上,下
  • 后 R-CNN时代, Faster R-CNN、SSD、YOLO 各类变体统治下的目标检测综述:Faster R-CNN系列胜了吗?
  • 目标检测-20种模型的原味代码汇总
  • 目标检测算法综述三部曲
    • 基于深度学习的目标检测算法综述(一)
    • 基于深度学习的目标检测算法综述(二)
    • 基于深度学习的目标检测算法综述(三)
  • 如何走近深度学习人脸识别?你需要这篇超长综述 | 附开源代码
  • 人脸检测和识别算法综述
    • 人脸检测算法综述
    • 人脸检测背景介绍和发展现状
    • 人脸识别算法演化史
    • CascadeCNN
    • MTCNN
    • awesome-Face_Recognition
    • 异质人脸识别研究综述
    • 老板来了:人脸识别+手机推送,老板来了你立刻知道。&& 手把手教你用Python实现人脸识别 && 人脸识别项目,网络模型,损失函数,数据集相关总结
    • 基于深度学习的人脸识别技术综述 && 如何走近深度学习人脸识别?你需要这篇超长综述 && 人脸识别损失函数综述(附开源实现)
  • 深度学习图像超分辨率综述
  • 目标检测进化史
  • 一文看尽21篇目标检测最新论文(腾讯/Google/商汤/旷视/清华/浙大/CMU/华科/中科院等
  • Anchor-Free目标检测算法: 第一篇:arxiv2015_baidu_DenseBox, 如何评价最新的anchor-free目标检测模型FoveaBox?, FCOS: 最新的one-stage逐像素目标检测算法 && 最新的Anchor-Free目标检测模型FCOS,现已开源! && 中科院牛津华为诺亚提出CenterNet,one-stage detector可达47AP,已开源! && AnchorFreeDetection
  • 目标检测算法综述之FPN优化篇
  • 聊聊Anchor的"前世今生"(上)&&聊聊Anchor的"前世今生"(下)
  • 【CVPR2019正式公布】行人重识别论文,2019 行人再识别年度进展回顾
  • 2019CVPR文本检测综述
  • 从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程
  • 【CVPR2019正式公布】行人重识别论文
  • 自然场景文本检测识别技术综述
  • Awesome-Image-Colorization
  • Awesome-Edge-Detection-Papers
  • OCR文字处理
  • awesome-point-cloud-analysis
  • Graph Neural Network(GNN)综述
  • 小样本学习(Few-shot Learning)综述
  • 超全深度学习细粒度图像分析:项目、综述、教程一网打尽
  • 图像检索的十年上、下

教程

  • 卷积神经网络工作原理
  • 「七夕的礼物」: 一日搞懂卷积神经网络
  • A Comprehensive Introduction to Different Types of Convolutions in Deep Learning && 翻译:上、下
  • 变形卷积核、可分离卷积
  • 对深度可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解
  • 各种卷积
  • 卷积有多少种?一文读懂深度学习中的各种卷积
  • 反卷积
  • Convolution Network及其变种(反卷积、扩展卷积、因果卷积、图卷积)
  • 如何评价最新的Octave Convolution?
  • 深度学习基础--卷积类型
  • Dilated/Atrous conv 空洞卷积/多孔卷积
  • CNN模型之ShuffleNet
  • 一文简述ResNet及其多种变体
  • ResNet解析
  • 将CNN引入目标检测的开山之作:R-CNN
  • 深度学习(十八)基于R-CNN的物体检测
  • R-CNN论文详解
  • 深度学习(六十四)Faster R-CNN物体检测
  • 先理解Mask R-CNN的工作原理,然后构建颜色填充器应用
  • 实例分割--Mask RCNN详解(ROI Align / Loss Function)
  • 语义分割卷积神经网络快速入门
  • 图像语义分割的工作原理和CNN架构变迁
  • CapsNet入门系列
    • CapsNet入门系列之一:胶囊网络背后的直觉
    • CapsNet入门系列之二:胶囊如何工作
    • CapsNet入门系列之三:囊间动态路由算法
    • CapsNet入门系列之四:胶囊网络架构
  • YOLO
  • 目标检测|YOLOv2原理与实现(附YOLOv3)
  • 目标检测模型YOLO v3问世
  • Attention, 1,2,3,4,5
  • 一文读懂卷积神经网络中的1x1卷积核
  • 目标检测之CornerNet, 1, 2, 3
  • 目标检测的性能评价指标 && NMS和计算mAP时的置信度阈值和IoU阈值 && 白话mAP
  • 人群计数, 1, 2, 3
  • RelationNetwork
  • ShuffleNet V2和四个网络架构设计准则
  • 【Tensorflow】tf.nn.depthwise_conv2d如何实现深度卷积?
  • Tensorflow】tf.nn.atrous_conv2d如何实现空洞卷积?
  • 【Tensorflow】tf.nn.separable_conv2d如何实现深度可分卷积?
  • 【TensorFlow】tf.nn.conv2d_transpose是怎样实现反卷积的?
  • 何恺明大神的「Focal Loss」,如何更好地理解?
  • CNN 模型所需的计算力(flops)和参数(parameters)数量是怎么计算的?

Action

  • 先读懂CapsNet架构然后用TensorFlow实现
  • TensorFlow Object Detection API 教程
    • TensorFlow 对象检测 API 教程1
    • TensorFlow 对象检测 API 教程2
    • TensorFlow 对象检测 API 教程3
    • TensorFlow 对象检测 API 教程 4
    • TensorFlow 对象检测 API 教程5
  • 在TensorFlow+Keras环境下使用RoI池化一步步实现注意力机制
  • mxnet如何查看参数数量 && mxnet查看FLOPS

GAN

  • 苏剑林博客,讲解得淋漓尽致

发展史

  • 千奇百怪的GAN变体
  • The GAN Landscape:Losses, Architectures, Regularization, and Normalization
  • 深度学习新星:GAN的基本原理、应用和走向
  • GAN生成图像综述

教程

  • 1. GAN原理学习笔记
  • 2. 极端图像压缩的对抗生成网络
    • Basic
    • Improving