一、CNN基础
CNN由输入层和输出层以及多个隐藏层组成,隐藏层可分为卷积层,池化层,RELU层和全连通层
输入层:一般是二位向量,可以有高度,比如,RGB图像
卷积层:层的参数由一组可学习的滤波器filter或内核kernels组成,它具有更小的感受野,延伸到输入容积的整个深度。简单来说,卷积层是用来对输入层进行卷积,提取更高层次的特征
池化层:下采样,作用是减小数据处理量的同时保留有用信息,通常池化层是每个邻域四个像素中最大值变为一个像素(max_pooling)。因为卷积已经提取出特征,相邻邻域的特征是类似,近乎不变,这时池化层只是选出最能表征特征的像素,缩减了数据量,同时保留了特征。池化层的通用可以描述为模糊图像,丢掉了一些不是那么重要的特征
全连通层:是一个常规的神经网络,他的作用是对经过多次卷积层和多次池化层所得出的高级特征进行全连接,算出最后的预测值
输出层:对结果的预测值,一般会加一个softmax层
二、深度学习入门
1.从感知机到神经网络
感知机,手动人工指定网络参数,典型的为:与门,非门,与非门,异或门等。激活函数为阶跃函数
神经网络:自动通过大量的训练数据训练出网络的参数。激活函数为其他激活函数,eg:sigmod函数
2.激活函数
阶跃函数:激活函数以阈值为界,达到一定的阈值就切换输出,这样的激活函数叫做阶跃函数。感知机使用阶跃函数作为激活函数
神经网络是使用其他激活函数
2.1 sigmod函数
三、神经网络
1.思想
在提高泛化能力的同时避免过拟合是机器学习的重点
2.损失函数:
损失函数(loss function)。损失函数可以使用任意函数,
但一般用均方误差和交叉熵误差等。
2.1. 均方误差
2.2. 交叉熵误差
四、alexnet
https://blog.csdn.net/chenyuping333/article/details/82178335
五、VGG16
http://www.cnblogs.com/love6tao/p/9021325.html
VGG16+SSD结构图https://www.cnblogs.com/xuanyuyt/p/7447111.html
六、Resnet
https://blog.csdn.net/lanran2/article/details/79057994
七、faster rcnn中Roi pooling层的个人理解
https://blog.csdn.net/gbyy42299/article/details/80352418
八、Faster R-CNN - 目标检测详解
https://blog.csdn.net/zziahgf/article/details/79311275
九、MXNET
Mxnet windows预编译版本下载地址 https://github.com/yajiedesign/mxnet/releases
Mxnet windows源码也在上面的GitHub里
编译过程按照GitHub上说明即可,opencv采用2.4.xx Python最好采用3.5及以上 其他都用最新的就行
一些常用的模型的训练和使用的代码都在example文件夹中,使用说明在对应的GitHub上,比较详细
mxnet最新结构gluon中文学习教程
上面有中文版的教学文档,既有深度学习的基本知识,又有gluon的Python使用教程。
mxnet讨论区
mxnet预训练模型下载(非gluon接口,需要使用gluon接口的预训练模型的话,阅读上面的教程,可以直接在运行时下载,没有对应的网页)
十、学习率
从自己和其他人一般的经验来看,学习率可以设置为3、1、0.5、0.1、0.05、0.01、0.005,0.005、0.0001、0.00001具体需结合实际情况对比判断,小的学习率收敛慢,但能将loss值降到更低。
https://blog.csdn.net/hzqgangtiexia/article/details/80509211