# UMich EECS 498-007 / 598-005: Deep Learning for Computer Vision

## 课程简介

- 所属大学：UMich
- 先修要求：Python基础，矩阵论(熟悉矩阵求导即可)，微积分
- 编程语言：Python
- 课程难度：🌟🌟🌟🌟
- 预计学时：60～80 小时

UMich 的 Computer Vision 课，课程视频和作业质量极高，涵盖的主题非常全，同时 Assignments 的难度由浅及深，覆盖了 CV 主流模型发展的全阶段，是一门非常好的 Computer Vision 入门课。

你在每个 Assignment 里会跟随 Handouts 搭建与训练 Lectures 中提到的模型/框架。

你不需要有任何的深度学习框架的使用经验，在开始的 Assignment 里，这门课会从零开始教导每个学生如何使用 Pytorch，后续也可以当成工具书，随时翻阅。

同时由于每个 Assignment 之间涉及到的主题都不同，你在递进式的 Assignment 中不仅可以亲身体会到 CV 主流模型的发展历程，领略到不同的模型和训练的方法对最终效果/准确率的影响，同时也能 Hands On 地实现它们。

在 A1 中，你会学习 Pytorch 和 Google Colab 的使用。

在 A2 中你会亲自搭建 Linear Classifier 以及一个两层的神经网络，最后你有机会亲自接触 MNIST 数据集并在此基础上训练并评估你搭建起的神经网络。

在 A3 中，你会接触到最为经典的 Convolutional Neural Network (A.K.A. CNN)，亲自感受卷积神经网络的魅力。

而在 A4 中，你将实际触及搭建物体检测模型的全流程，同时跟随 Handout 实现两篇论文中的 One-Stage Detector 和 Two-Stage Detector。

到了 A5，就是从 CNN 到 RNN 的时刻了，你将有机会亲自搭建起两种不同的基于注意力的模型，RNNs (Vanilla RNN & LSTM) 和大名鼎鼎的 Transfomer。

在最后一个 Assignment（A6）中，你将有机会实现两种更为 Fancy 的模型，VAE 和 GAN，并应用在 MINST 数据集上。最后，你会实现网络可视化和风格迁移这两个非常酷炫的功能。

在 Assignments 之外，你还可以自己实现一个 Mini-Project，亲自搭建起一个完整的深度学习 Pipeline，具体可以参考课程主页。

课程所涉及的资源，如 Lectures/Notes/Assignments 都是开源的，美中不足的是 Autograder 只对本校 Enrolled 的学生开放，但因为在提供的 `*.ipynb`（也就是 Handout） 中已经可以确定实现的正确性，以及预期的结果，所以我个人觉得 Autograder 的缺失没有任何影响。

值得一提的是，这门课的主讲教授 Justin Johnson 正是 Fei-Fei Li 的博士毕业生，现在在 UMich 当 Assistant Professor。

而现在开源的 2017 年版本的 Stanford CS231N 的主讲人就是 Justin Johnson。

同时因为 CS231N 主要是由 Justin Johnson 和 Andrej Karpathy 建设起来的，这门课也沿用了 CS231N 的一些材料，所以学过 CS231N 的同学可能会觉得这门课的某些材料比较熟悉。

最后，我推荐每一个 Enroll 这门课的同学都去看一看 Youtube 上面的 Lectures，Justin Johnson 的讲课方式和内容都非常清晰和易懂，是非常棒的参考。

## 课程资源

- 课程网站：<https://web.eecs.umich.edu/~justincj/teaching/eecs498/WI2022/>
- 课程视频：<https://www.youtube.com/playlist?list=PL5-TkQAfAZFbzxjBHtzdVCWE0Zbhomg7r>
- 课程教材：仅有推荐教材，链接：<https://www.deeplearningbook.org/>
- 课程作业：见课程主页，6 个 Assignment 和一个 Mini-Project