深度学习在图像领域的各层面都取得了骄人的成绩,包括分割、识别等高级任务,以及去噪、二值化、超分辨率等低级任务。在语音以及自然语言处理等方面也在快速发展。总结一下深度学习技术关键要点。
数据收集与扩充
数据是深度学习成功的重要因素,并且随着各种深度学习框架的普及,数据越来越成为最重要的门槛。数据一般有2种来源,其一是来自于业务场景的真实数据(包括人工标注的数据),其二是模拟真实场景仿造的数据。真实数据昂贵不易获得,很多时候就需要产生大量的模拟数据以满足深度学习的要求。模拟数据因尽可能的接近真实数据的分布情况。在图像领域,产生模拟数据的手段包括但不限于如下技术:
- 旋转
- 剪切
- 翻转
- 缩放
- 加噪声
- 水印
- 有损压缩(JPEG、Mpeg等)
基础深度学习模型
应该理解并能编程实现基础的深度学习模型(可参考:EasyCNN,EasyTF),包括如下基础模型:
- MLP
- CNN
LSTM
需要理解高级深度学习模型,并能够通过通用框架(如TensorFlow、Keras等)实现AlexNet
- VGG
- GoogleNet (Inception v1-v4, Xception)
- ResNet
- Network-in-network
- SqueezeNet
- E-Net
- R-CNN、SSD、YOLO
- Stack RNN/LSTM/GRU
- Seq2Seq
- CRNN
在训练深度学习模型的时候,有时候各种trick能起到很好的效果。应该了解其大致作用和原理。
- Dropout
- Batch Normalization
- Local Response Normalization
- L1/L2正则化
- 各种Operator
在现代深度学习框架中,普遍都有Operator这样的抽象概念,需要了解一些重要的OP的原理和推导。
- Conv
- Pool
- RNN/LSTM
- Element-wise op
- Softmax
-CTC
参数初始化
参数初始化,了解其作用即可。
- xavier
- constant
- gaussian
- uniform
- bilinear
激活函数
激活函数,了解其作用即可。
Sigmoid
Tanh
RELU
Leaky ReLU
ELU
Maxout
损失函数
不同的任务选用不同的损失函数。
Absolute loss
Square loss
Log loss
Cross-Entroy loss
Zeor-one loss
Hinge loss
Perceptron loss
Exponential loss
CTC loss
优化方法
优化方法影响模型精度和模型收敛速度,一般选择SGD+Momentum。
**SGD
Momentum**
Nesterov
Adagrad
Adadelta
RMSprop
Adam
Adamax
Nadam
框架实现
框架用多了,自然就了解框架的大概模块和原理了。也可以尝试自己实现一遍框架,这时候不只是考量深度学习基本知识,还考验工程架构能力。
- 框架设计
- 计算图与其优化
- 数据并行与模型并行
- 分布式
- 理论与实际
深度学习发展非常快,隔不了几个月就有新概念,一般关注一下相关的新闻和最新的论文即可。一些实际问题在踩坑和交流的过程中会有答案。
- Zero-center
- 梯度消失
- 梯度爆炸
- 如何调参
- Finetune
- 增强学习
- 模型压缩
- 速度优化(low bit)
应用
各种深度学习的应用,“没有做不到,只有想不到”。
OCR
语音识别
自然语言处理
风格转移
人脸定位 & 人脸识别
手势识别
物体追踪
图像检索
超分辨率重建
去噪&去马赛克