└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # 大鱼AI🐟 :深度学习之计算机视觉斯坦福大学CS231n课程集训营 2 | ### 视频课程主讲:斯坦福李飞飞团队 3 | ### 先修课程:斯坦福机器学习(吴恩达) 4 | ### 这门课的宗旨就是:从机器学习者成为计算机视觉算法工程师,参加Kaggle比赛证明自己 5 | 6 | ## 课程资料 7 | 1. [课程主页](http://cs231n.stanford.edu/) 8 | 2. [英文笔记](http://cs231n.github.io/) 9 | 2. [中文笔记](https://zhuanlan.zhihu.com/p/21930884) 10 | 3. [课程视频](https://www.bilibili.com/video/av17204303/) 11 | 4. 实验环境推荐使用Linux或者Mac系统,以下环境搭建方法皆适用: 12 | [Docker环境配置](https://github.com/ufoym/deepo) 13 | [本地环境配置](https://github.com/learning511/cs224n-learning-camp/blob/master/environment.md) 14 | 5. [作业链接](https://github.com/sharedeeply/cs231n-camp/tree/master/assignment/assignment1) 15 | 6. [作业参考](https://github.com/sharedeeply/cs231n-assignment-solution) 16 | 7. [课程课件](https://github.com/sharedeeply/cs231n-camp/tree/master/slides) 17 | 18 | 19 | #### 重要🔥🔥一些的资源: 20 | 1. [深度学习斯坦福教程](http://deeplearning.stanford.edu/wiki/index.php/UFLDL%E6%95%99%E7%A8%8B) 21 | 2. [廖雪峰python3教程](https://www.liaoxuefeng.com/article/001432619295115c918a094d8954bd493037b03d27bf9a9000) 22 | 3. [github教程](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000) 23 | 4. [莫烦机器学习教程](https://morvanzhou.github.io/tutorials) 24 | 5. [深度学习经典论文](https://github.com/floodsung/Deep-Learning-Papers-Reading-Roadmap.git) 25 | 6. [斯坦福cs229代码(机器学习算法python徒手实现)](https://github.com/nsoojin/coursera-ml-py.git) 26 | 7. [导师博客(机器学习深度学习专题)](https://blog.csdn.net/dukuku5038/column/info/28693) 27 | 8. [AI比赛经验+开源代码汇总](https://blog.csdn.net/dukuku5038/article/details/84195750) 28 | 29 | ## 前言 30 | 视觉! 31 | 32 | ## 知识要求(学习的过程中可以遇到问题后再复习) 33 | - 了解python基础知识 34 | - 了解高等数学、概率论、线性代数知识 35 | - 了解基础机器学习算法:梯度下降、线性回归、逻辑回归、Softmax、SVM、PAC(先修课程斯坦福cs229 或者周志华西瓜书) 36 | - 具有英语4级水平(深度学习学习材料、论文基本都是英文,**一定要阅读英文原文,进步和提高的速度会加快!!!!**) 37 | 38 | ## 知识工具 39 | 为了让大家逐渐适应英文阅读,复习材料我们有中英两个版本,**但是推荐大家读英文** 40 | ### 数学工具 41 | #### 斯坦福资料: 42 | - [线性代数](http://web.stanford.edu/class/cs224n/readings/cs229-linalg.pdf) 43 | - [概率论](http://web.stanford.edu/class/cs224n/readings/cs229-prob.pdf) 44 | - [凸函数优化](http://web.stanford.edu/class/cs224n/readings/cs229-cvxopt.pdf) 45 | - [随机梯度下降算法](http://cs231n.github.io/optimization-1/) 46 | #### 中文资料: 47 | - [机器学习中的数学基本知识](https://www.cnblogs.com/steven-yang/p/6348112.html) 48 | - [统计学习方法](http://vdisk.weibo.com/s/vfFpMc1YgPOr) 49 | **大学数学课本(从故纸堆里翻出来^_^)** 50 | 51 | ### 编程工具 52 | #### 斯坦福资料: 53 | - [Python复习](http://web.stanford.edu/class/cs224n/lectures/python-review.pdf) 54 | - [TensorFlow教程](https://github.com/open-source-for-science/TensorFlow-Course#why-use-tensorflow) 55 | #### 中文资料: 56 | - [廖雪峰python3教程](https://www.liaoxuefeng.com/article/001432619295115c918a094d8954bd493037b03d27bf9a9000) 57 | - [莫烦TensorFlow教程](https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/) 58 | 59 | ## 学习安排 60 | 每周具体时间划分为4个部分: 61 | - 1部分安排周一到周二 62 | - 2部分安排在周四到周五 63 | - 3部分安排在周日 64 | - 4部分作业是本周任何时候空余时间 65 | - 周日晚上提交作业运行截图 66 | - 周三、周六休息^_^ 67 | 68 | #### 作业提交指南: 69 | 训练营的作业自检系统已经正式上线啦!只需将作业发送到训练营公共邮箱即可,训练营以打卡为主,不用提交作业。以下为注意事项: 70 | <0> 课程资料:[链接](https://pan.baidu.com/s/1p1J9kyoNZIwqCRmaX6lvoQ) 密码:zwjr 71 | <1> 训练营代码公共邮箱:cs224n@163.com 72 | <2> 每周做作业,作业提交时间点:一整个Assignment代码全部完成后再提交 73 | <3> 将每次作业压缩成zip文件,文件名为“NLP学期+学号+作业编号”,例如第二期学员:"NLP020037-01.zip" 74 | <4> 注意不要改变作业中的《方法名》《类名》不然会检测失败!! 75 | <5> [查询自己成绩:](https://shimo.im/sheet/fUz1SurlKPgAMecw/RIDOC) 76 |   77 | ## 教程 78 | ### week 1 79 | **知识点复习** 80 | **学习组队** 81 | **比赛观摩** 82 | 1. 了解计算机视觉综述,历史背景和课程大纲 83 | - slides: [lecture01](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture01.pdf) 84 | - 观看视频 p1, p2 和 p3 85 | 86 | 2. 学习数据驱动的方法, 理解 KNN 算法,初步学习线性分类器 87 | - slides: [lecture02](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture02.pdf) 88 | - 观看视频 p4 p5 和 p6 89 | - 学习 [图像分类笔记上](https://zhuanlan.zhihu.com/p/20894041?refer=intelligentunit) 90 | - 学习 [图像分类笔记下](https://zhuanlan.zhihu.com/p/20900216) 91 | - 学习 [线性分类笔记上](https://zhuanlan.zhihu.com/p/20918580?refer=intelligentunit) 92 | 93 | 3. 掌握本门课 python 编程的基本功 94 | - 阅读 python 和 numpy [教程](https://zhuanlan.zhihu.com/p/20878530?refer=intelligentunit)和[代码](https://github.com/sharedeeply/cs231n-camp/blob/master/tutorial/python_numpy_tutorial.ipynb) 95 | 96 | 4. 作业 97 | - (热身)写一个矩阵的类,实现矩阵乘法,只能使用 python 的类(class)和列表(list) 98 | - 完成assignment1 中的 `knn.ipynb` 99 | - 作业详解:[knn.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment1/knn.md) 100 | 101 | **作业 Week1:**: 102 | 制定自己的学习计划,开通自己的学习博客,注册自己的github 103 | 104 | 105 | ### Week2 106 | 1. 深入理解线性分类器的原理 107 | - slides: [lecture03](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture03.pdf) 108 | - 观看视频 p7 109 | - 学习[线性分类笔记中](https://zhuanlan.zhihu.com/p/20945670?refer=intelligentunit) 110 | - 学习[线性分类笔记下](https://zhuanlan.zhihu.com/p/21102293) 111 | 112 | 2. 学习损失函数以及梯度下降的相关知识 113 | - slides: [lecture03](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture03.pdf) 114 | - 观看视频 p8 115 | - 学习[最优化笔记](https://zhuanlan.zhihu.com/p/21360434?refer=intelligentunit) 116 | 117 | 3. 掌握矩阵求导的基本方法 118 | - 根据[资料](https://zhuanlan.zhihu.com/p/25063314),学习矩阵求导的基本技巧,看多少内容取决于个人需要 119 | 120 | 4. 作业 121 | - 简述 KNN 和线性分类器的优劣, 打卡上传知知识圈 122 | - 完成assignment1 中 `svm.ipynb` 123 | - 作业详解:[svm.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment1/svm.md) 124 | 125 | 126 | ### Week3 127 | 1. 学习掌握深度学习的基石: 反向传播算法 128 | - slides: [lecture04](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture04.pdf) 129 | - 观看视频 p9 130 | - 学习[反向传播算法的笔记](https://zhuanlan.zhihu.com/p/21407711?refer=intelligentunit) 131 | 132 | 2. 理解神经网络的结构和原理 133 | - slides: [lecture04](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture04.pdf) 134 | - 观看视频 p10 135 | 136 | 3. 深入理解反向传播算法 137 | - 阅读反向传播算法的[数学补充](http://cs231n.stanford.edu/handouts/derivatives.pdf)和[例子](http://cs231n.stanford.edu/handouts/linear-backprop.pdf) 138 | 139 | 4. 作业 140 | - 完成 assignment1 中的 `softmax.ipynb` 141 | - 完成 assignment1 中的 `two_layer_net.ipynb` 142 | - 作业详解1:[Softmax.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment1/Softmax.md) 143 | - 作业详解2:[two_layer_net.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment1/two_layer_net.md) 144 | 145 | ### Week4 146 | 1. 掌握 PyTorch 中的基本操作 147 | - 学习 pytorch 的[入门基础](https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html) 148 | 149 | 2. 了解 kaggle 比赛的流程,并完成第一次的成绩提交 150 | - 了解比赛[房价预测](https://www.kaggle.com/c/house-prices-advanced-regression-techniques) 151 | - 学习[模板代码](https://github.com/L1aoXingyu/kaggle-house-price) 152 | 153 | 3. 学习深度学习的系统[项目模板](https://github.com/L1aoXingyu/PyTorch-Project-Template) 154 | 155 | 4. 作业 156 | - 完成 assignment1 中的 `features.ipynb` 157 | - 修改房价预测的代码,在知识圈上提交 kaggle 的成绩 158 | - 作业详解:[features.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment1/features.md) 159 | 160 | 161 | ### Week5 162 | 1. 理解 CNN 中的卷积 163 | - slides: [lecture05](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture05.pdf) 164 | - 观看视频 p11, p12 165 | 166 | 2. 理解 CNN 中的 pooling 167 | - slides: [lecture05](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture05.pdf) 168 | - 观看视频 p13 169 | - 学习[卷积神经网络笔记](https://zhuanlan.zhihu.com/p/22038289?refer=intelligentunit) 170 | 171 | 3. 完成 CNN 的第一个应用练习,人脸关键点检测 172 | - 阅读 facial keypoint [小项目](https://github.com/udacity/P1_Facial_Keypoints) 173 | - [参考代码](https://github.com/L1aoXingyu/P1_Facial_Keypoints) 174 | 175 | 4. 作业 176 | - 思考一下卷积神经网络对比传统神经网络的优势在哪里?为什么更适合处理图像问题,知识圈打卡上传 177 | - 完成 assignment2 中 `FullyConnectedNets.ipynb` 178 | - 作业详解:[FullyConnectedNets1.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment2/FullyConnectedNets1.md) 179 | - 作业详解:[FullyConnectedNets2.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment2/FullyConnectedNets2.md) 180 | 181 | 182 | ### Week6 183 | 1. 理解激活函数,权重初始化,batchnorm 对网络训练的影响 184 | - slides: [lecture06](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture06.pdf) 185 | - 观看视频 p14 186 | - 学习[神经网络笔记1](https://zhuanlan.zhihu.com/p/21462488?refer=intelligentunit) 187 | 188 | 2. 深入理解 BatchNormalization 189 | - slides: [lecture06](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture06.pdf) 190 | - 观看视频 p15 191 | - 学习[神经网络笔记2](https://zhuanlan.zhihu.com/p/21560667?refer=intelligentunit) 192 | 193 | 3. 总结回顾和理解深度学习中 normalize 的技巧 194 | - 阅读文章 [深度学习中的 normalization 方法](https://zhuanlan.zhihu.com/p/33173246) 195 | 196 | 4. 作业 197 | - 完成 assignment2 中 `BatchNormalization.ipynb` 198 | - 完成 assignment2 中 `Dropout.ipynb` 199 | - 作业详解:[BatchNormalization.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment2/BatchNormalization.md) 200 | - 作业详解:[Dropout.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment2/FullyConnectedNets2.md) 201 | 202 | 203 | ### Week7 204 | 1. 理解更 fancy 的优化方法,更多的 normalize 以及正则化和迁移学习对网络训练的影响 205 | - slides: [lecture07](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture07.pdf) 206 | - 观看视频 p16, p17 和 p18 207 | - 学习[神经网络笔记3](https://zhuanlan.zhihu.com/p/21741716?refer=intelligentunit) 208 | 209 | 2. 了解第二次的 kaggle 比赛 cifar10 分类 210 | - 报名 cifar10 [比赛](https://www.kaggle.com/c/cifar-10) 211 | - 学习[模板代码](https://github.com/L1aoXingyu/kaggle-cifar10) 212 | 213 | 3. 全面的理解深度学习中的优化算法 214 | - 阅读优化算法的[笔记](https://zhuanlan.zhihu.com/p/22252270) 215 | 216 | 4. 作业 217 | - 完成 assignment2 中 `ConvolutionNetworks.ipynb` 218 | - 修改 cifar10 的网络结构,在知识圈上提交 kaggle 成绩 219 | - 作业详解:[ConvolutionNetworks](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment2/ConvolutionNetworks.md) 220 | 221 | ### Week8 222 | 1. 了解主流深度学习框架之间的区别与联系 223 | - slides: [lecture08](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture08.pdf) 224 | - 观看视频 p19 225 | 226 | 2. 了解经典的网络结构 227 | - slides: [lecture09](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture09.pdf) 228 | - 观看视频 p20 229 | 230 | 3. 理解卷积神经网络的最新进展 231 | - 学习笔记[变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作](https://zhuanlan.zhihu.com/p/28749411) 232 | 233 | 4. 作业 234 | - 完成 assignment2 中的 `PyTorch.ipynb` 235 | - 学习[模板代码](https://github.com/L1aoXingyu/kaggle-plant-seeding), 尝试更大的网络结构完成 kaggle 比赛[种子类型识别](https://www.kaggle.com/c/plant-seedlings-classification)的比赛,在知识圈上提交 kaggle 成绩 236 | - 作业详解:[Pytorch.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment2/PyTorch.md) 237 | 238 | 239 | ### Week9 240 | 1. 掌握 RNN 和 LSTM 的基本知识 241 | - slides: [lecture10](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture10.pdf) 242 | - 观看视频 p21 243 | 244 | 2. 了解语言模型和 image caption 的基本方法 245 | - slides: [lecture10](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture10.pdf) 246 | - 观看视频 p22 和 p23 247 | 248 | 3. 更深入的理解循环神经网络的内部原理 249 | - 学习blog [Understanding LSTM Networks](https://colah.github.io/posts/2015-08-Understanding-LSTMs/), [中文版本](https://www.jianshu.com/p/9dc9f41f0b29) 250 | 251 | 4. 作业 252 | - 完成 assignment3 中的 `RNN_Captioning.ipynb` 253 | - 完成 assignment3 中的 `LSTM_Captioning.ipynb` 254 | - 完成 coco 数据集上的 [image caption 小项目](https://github.com/udacity/CVND---Image-Captioning-Project),[参考代码](https://github.com/L1aoXingyu/image-caption-project) 255 | - 作业详解:[RNN_Captioning.md](https://github.com/sharedeeply/cs231n-camp/blob/master/resource/assignment/assignment3/RNN_Captioning.md) 256 | 257 | 258 | ### Week10 259 | 1. 学习计算机视觉中的语义分割问题 260 | - slides: [lecture11](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture11.pdf) 261 | - 观看视频 p24 262 | 263 | 2. 学习计算机视觉中的目标检测问题 264 | - slides: [lecture11](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture11.pdf) 265 | - 观看视频 p25 和 p26 266 | 267 | 3. 了解目标检测中的常见算法 268 | - 学习目标检测的[笔记](https://blog.csdn.net/v_JULY_v/article/details/80170182#commentBox) 269 | 270 | 4. 作业 271 | - 阅读论文 [Fully Convolutional Networks for Semantic Segmentation](https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Long_Fully_Convolutional_Networks_2015_CVPR_paper.pdf) 和[中文笔记](https://zhuanlan.zhihu.com/p/30195134) 272 | - (可选) FCN 的[复现代码](https://github.com/L1aoXingyu/fcn.pytorch)理解 273 | 274 | ### Week11 275 | 1. 理解卷积背后的原理 276 | - slides: [lecture13](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture13.pdf) 277 | - 观看视频 p27 278 | 279 | 2. 学习 deep dream 和 风格迁移等有趣应用 280 | - slides: [lecture13](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture13.pdf) 281 | - 观看视频 p28 282 | 283 | 3. 了解无监督学习和生成模型 284 | - slides: [lecture12](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture12.pdf) 285 | - 观看视频 p29 286 | 287 | 4. 作业 288 | - 完成 assignment3 中的 `NetworkVisualization-PyTorch.ipynb` 289 | - 阅读论文 [SSD: Single Shot MultiBox Detector](https://arxiv.org/abs/1512.02325) 和一个详细的[讲解](https://docs.google.com/presentation/d/1rtfeV_VmdGdZD5ObVVpPDPIODSDxKnFSU0bsN_rgZXc/pub?start=false&loop=false&delayms=3000&slide=id.g178a005570_0_20175) 290 | - (可选) SSD 的[复现代码](https://github.com/L1aoXingyu/ssd.pytorch)理解 291 | 292 | ### Week12 293 | 1. 掌握自动编码器和生成对抗网络的基本原理 294 | - slides: [lecture12](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture12.pdf) 295 | - 观看视频 p30 和 p31 296 | 297 | 2. 了解强化学习的基本概念 298 | - slides: [lecture14](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture14.pdf) 299 | - 观看视频 p32 300 | 301 | 3. 学习强化学习中的 q learning 和 actor-critic 算法 302 | - slides: [lecture14](https://github.com/sharedeeply/cs231n-camp/tree/master/slides/cs231n_2018_lecture14.pdf) 303 | - 观看视频 p33 304 | 305 | 4. 作业 306 | - 完成 assignment3 中的 `GANs-PyTorch.ipynb` 307 | - 完成 assignment3 中的 `StyleTransfer-PyTorch.ipynb` 308 | 309 | --------------------------------------------------------------------------------