GitHub重磅开源!《计算机视觉实战演练:算法与应用》代码数据集在线学习

Posted Charmve

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GitHub重磅开源!《计算机视觉实战演练:算法与应用》代码数据集在线学习相关的知识,希望对你有一定的参考价值。

图片

https://github.com/Charmve/computer-vision-in-action

 

就在过去的七八年时间里,深度学习给世界带来了惊喜,推动了计算机视觉、自然语言处理、自动语音识别、强化学习和统计建模等领域的快速发展。而计算机视觉又是受益颇深的一个领域,在诸多场景下收到了很好的效果。

本次作者在GitHub开放《计算机视觉实战演练:算法与应用》,包含从入门到进阶的详细实战教程、代码和数据集。更特别的是,由于作者长期关注AI前沿技术发展,在知乎和公众号上发布了大量cv顶会论文解读,本项目中也将其写成详细章节,如:transformer、注意力机制、迁移学习、生成对抗学习等方法。

本开源项目代表了我们的一种尝试:我们将教给读者概念、背景知识和代码;我们将在同一个地方阐述剖析问题所需的批判性思维、解决问题所需的数学知识,以及实现解决方案所需的工程技能。

我们的目标是创建一个为实现以下目标的统一计算机视觉学习资源:

  • 所有人均可在网上免费获取;
  • 提供足够的技术深度,从而帮助读者实际成为计算机视觉应用科学家:既理解数学原理,又能够实现并不断改进方法;
  • 包含可运行的代码,为读者展示如何在实际中解决问题。这样不仅直接将数学公式对应成实际代码,而且可以修改代码、观察结果并及时获取经验;
  • 允许我们和整个社区不断快速迭代内容,从而紧跟仍在高速发展的计算机视觉领域;
  • 由包含有关技术细节问答的论坛作为补充,使大家可以相互答疑并交换经验。

 

图片

  • 第一部分包括基础知识和预备知识chap_introduction 提供深度学习的入门课程。然后在 chap_preliminaries 中,将快速向你介绍实践计算机视觉所需的前提条件,例如如何存储和处理数据,以及如何应用基于线性代数、微积分和概率基本概念的各种数值运算,涵盖了深度学习的最基本概念和技术,例如线性回归、多层感知机和正则化。

  • 第二部分时本书涉及的计算机视觉基础理论,核心部分为神经网络模型。包括神经网络、卷积神经网络、循环神经网络理论讲解,以图像分类、模型拟合与优化作为其代码的实战项目。在模型拟合和优化章节中,着重分享梯度下降、随机梯度下降、动量法、AdaBoost等方法。

  • 接下来的七章集中讨论现代计算机视觉技术实战。描述了计算机视觉的经典卷积神经网络PyTorch实现,并为我们随后实现更复杂的模型奠定了基础。接下来,在chap_cnn 和 chap_modern_cnn 中,我们介绍了卷积神经网络(convolutional neural network,CNN),这是构成大多数现代计算机视觉系统骨干的强大工具。随后,在 chap_rnn 和chap_modern_rnn 中,我们引入了循环神经网络(recurrent neural network,RNN),这是一种利用数据中的时间或序列结构的模型,通常用于自然语言处理和时间序列预测,但在计算机视觉领域也表现出惊奇的效果。在chap_attention 中,我们介绍了一类新的模型,它采用了一种称为注意力机制的技术,最近它们已经开始在自然语言处理中取代循环神经网络。这一部分将帮助你快速了解大多数现代深度学习应用背后的基本工具。

  • 该部分以项目为实战指导,给出详细的项目指导书和代码实现,更为特别的是,给出了notebook可以直接在线运行,跑通结果,免去了本地运行环境的搭建复杂性。于此同时,为了方便读者在本地调试,作者建立了一个名为 L0CV 的第三方包,可以直接在代码中 import L0CV 后使用。

  • 第三部分讨论最近几年出现的“网红”模型,诸如:Transformer、Attention、知识蒸馏、迁移学习、生成对抗模型等。这部分也是此份资料的力挺之作。首先,在 chap_optimization 中,我们讨论了用于训练深度学习模型的几种常用优化算法。

 

代码

🏷️sec_code

本书的大部分章节都以可执行代码为特色,因为我们相信交互式学习体验在深度学习中的重要性。目前,某些直觉只能通过试错、小幅调整代码并观察结果来发展。理想情况下,一个优雅的数学理论可能会精确地告诉我们如何调整代码以达到期望的结果。不幸的是,这种优雅的理论目前还没有出现。尽管我们尽了最大努力,但仍然缺乏对各种技术的正式解释,这既是因为描述这些模型的数学可能非常困难,也是因为对这些主题的认真研究最近才进入高潮。我们希望随着深度学习理论的发展,这本书的未来版本将能够在当前版本无法提供的地方提供见解。

有时,为了避免不必要的重复,我们将本书中经常导入和引用的函数、类等封装在L0CV包中。对于要保存到包中的任何代码块,比如一个函数、一个类或者多个导入,我们都会标记为#@save。我们在 sec_L0CV 中提供了这些函数和类的详细描述。L0CV软件包是轻量级的,仅需要以下软件包和模块作为依赖项:

#@tab all#@saveimport collectionsfrom collections import defaultdictfrom IPython import displayimport mathfrom matplotlib import pyplot as pltimport osimport pandas as pdimport randomimport reimport shutilimport sysimport tarfileimport timeimport requestsimport zipfileimport hashlibL0CV = sys.modules[__name__]

下面是我们如何从PyTorch导入模块。

tensorflow 本书中的大部分代码都是基于TensorFlow的。TensorFlow是一个开源的深度学习框架,在研究界和产业界都非常受欢迎。本书中的所有代码都在最新版本的TensorFlow下通过了测试。但是,由于深度学习的快速发展,一些在印刷版中代码可能在TensorFlow的未来版本无法正常工作。

但是,我们计划使在线版本保持最新。如果你遇到任何此类问题,请查看 chap_installation 以更新你的代码和运行时环境。

下面是我们如何从TensorFlow导入模块。

#@savefrom mxnet import autograd, context, gluon, image, init, np, npxfrom mxnet.gluon import nn, rnn​​​​​​
#@tab pytorch#@saveimport numpy as npimport torchimport torchvisionfrom torch import nnfrom torch.nn import functional as Ffrom torch.utils import datafrom torchvision import transformsfrom PIL import Image
#@tab tensorflow#@saveimport numpy as npimport tensorflow as tf

章节示例

图片

图片

目标受众

本书面向学生(本科生或研究生)、工程师和研究人员,他们希望扎实掌握深度学习的实用技术。因为我们从头开始解释每个概念,所以不需要过往的深度学习或机器学习背景。全面解释深度学习的方法需要一些数学和编程,但我们只假设你了解一些基础知识,包括线性代数、微积分、概率和非常基础的Python编程。此外,在附录中,我们提供了本书所涵盖的大多数数学知识的复习。大多数时候,我们会优先考虑直觉和想法,而不是数学的严谨性。有许多很棒的书可以引导感兴趣的读者走得更远。Bela Bollobas的《线性分析》 Bollobas.1999 对线性代数和函数分析进行了深入的研究Wasserman.2013 是一本很好的统计学指南。如果你以前没有使用过Python语言,那么你可能想要仔细阅读这个Python教程。

论坛

与本书相关,我们已经启动了一个论坛,在 Discuss.L0CV 。当你对本书的任何一节有疑问时,你可以在每一节的末尾找到相关的讨论页链接。

 

GitHub项目地址

https://github.com/Charmve/computer-vision-in-action

 

加群请备注:姓名+学校/公司+方向

以上是关于GitHub重磅开源!《计算机视觉实战演练:算法与应用》代码数据集在线学习的主要内容,如果未能解决你的问题,请参考以下文章

GitHub开源在线学习资料《计算机视觉实战演练:算法与应用》

GitHub开源在线学习资料《计算机视觉实战演练:算法与应用》

变分自编码器的原理与项目实战

变分自编码器的原理与项目实战

Transformer 原理讲解以及在 CV 领域的应用

Transformer 原理讲解以及在 CV 领域的应用