卷积神经网络CN1 初学者碰到疑惑时可结合下面参考自行解决疑惑,确保项目能够顺利推进。
参考:本文将根据自己的毕设期间的学习经历进行总结。本文内容大纲如下
- 图像识别/卷积神经网络基础
https://www.bilibili.com/video/BV1NJ41167vp?spm_id_from=333.999.0.0
https://www.bilibili.com/video/BV1b7411T7DA?spm_id_from=333.999.0.0- 使用pytorch/tensorflow搭建Lenet
https://www.bilibili.com/video/BV187411T7Ye?spm_id_from=333.999.0.0- 深度学习-目标检测篇
https://www.bilibili.com/video/BV1vz4y1R72D?spm_id_from=333.999.0.0- 目标检测网络评价指标mAP和FPS
https://www.bilibili.com/video/BV1ez4y1X7g2?spm_id_from=333.999.0.0- 训练集PASCAL-VOC/COCO讲解以及制作自己的训练集/测试集
https://www.bilibili.com/video/BV1kV411k7D8?spm_id_from=333.999.0.0- yolo 理论讲解
https://www.bilibili.com/video/BV1yi4y1g7ro?spm_id_from=333.999.0.0- yolo1论文解读 https://zhuanlan.zhihu.com/p/70387154
yolo2论文解读 https://zhuanlan.zhihu.com/p/74540100
yolo3论文解读 https://zhuanlan.zhihu.com/p/76802514- yolo 代码实操
https://www.bilibili.com/video/BV1t54y1C7ra?spm_id_from=333.999.0.0- yolo github源码
https://github.com/WZMIAOMIAO/deep-learning-for-image-processing- “TED李飞飞 我们教计算机理解图像” https://www.bilibili.com/video/BV1RW411D78Z?spm_id_from=333.337.search-card.all.click
- “吴恩达 机器学习1-9” https://www.bilibili.com/video/BV164411b7dx?spm_id_from=333.999.0.0
- “神经元介绍” https://blog.51cto.com/u_15067247/4236471
- “卷积核如何工作” https://blog.csdn.net/weixin_41297324/article/details/88991222
- “池化层如何工作” https://blog.csdn.net/weixin_38145317/article/details/89310404
- 卷积神经网络基础知识
- 卷积神经网络损失函数计算
- pytorch官方小教程Lenet搭建
- 目标检测网络
- mAP值评估网络
- 如何制作自己的数据集
- yolo网络理论
- yolo网络实践。
1998年,LeCun用BP算法训练LeNet5网络。
2006年,Hinton提出Deep Learning概念。
2012年,Hinton和Krizhevsky提出AlexNet网络,成功实践了Deep Learning。
1.2 卷积神经网络层次 1.2.1 卷积神经网络层次分类
卷积神经网络按照其结构特点可以分为3个层:全连接层,卷积层,池化层。其中全连接层类似于神经网络,用于根据输入特征计算最终输出;卷积层用于提取特征;池化层用于对特征图进行稀疏处理,减少数据运算量。
1.2.2 全连接层
1.2.2.1 神经元
全连接层类似于神经网络。而前向传播在模仿神经元的机制,如下图,即是根据输入的3个feature和1个bias,经过parameters/weights和activation处理得到1个输出y。
文章图片
1.2.2.2 BP算法
将每个神经元全连接后形成全连接层,BP(back propagation)算法包括信号前向传播和误差反向传播两个过程,即:
- 计算误差输入时候按从输入到输出方向进行。
- 调整权值时从输出到输入方向进行。
1.2.3.1 目的、组成与流程 卷积神经网络的目的是实现特征的提取。卷积层的主要组成有input volume(输入特征矩阵),filter(卷积核/滤波器),out volume(输出特征矩阵)。
他的流程即:使用与输入特征矩阵channel(深度)相同的卷积核,在输入特征上的每一层进行扫描,做相乘再相加操作。最终输出深度等于卷积核个数的输出特征矩阵。
如下图,即使用1个 7 ? 7 ? 3 7*7*3 7?7?3的输入特征矩阵,2个 3 ? 3 ? 3 3*3*3 3?3?3的卷积核,得到1个 3 ? 3 ? 2 3*3*2 3?3?2的输出特征矩阵。
文章图片
1.2.3.2 卷积层特性与优势 卷积的特性具有:局部感知机制和权值共享。
卷积的优势主要在于他和神经网络的对比,比如输入 1280 ? 720 1280*720 1280?720的灰度图片,在hidder layer中有1000个神经元。对于普通的神经网络需要的参数有 1280 ? 720 ? 1000 = 921 , 600 , 000 1280*720*1000 = 921,600,000 1280?720?1000=921,600,000 parameters。但是对于卷积神经网络,假设layer采用1000个 5 ? 5 5*5 5?5卷积核,则所需要的参数是 5 ? 5 ? 1000 = 25 , 000 5*5*1000 = 25,000 5?5?1000=25,000 parameters。参数量大大减少。
1.2.3.3 卷积核的特点与计算
- 卷积核的深度与输入特征矩阵的深度相同
- 激活函数,如sigmoid函数,relu函数是为了引入非线性因素,使具备解决非线性问题的能力。
s i g m o i d f u n c t i o n : f ( x ) = 1 1 + e ? x sigmoid function:f(x) = \frac {1}{1+e^{-x}} sigmoidfunction:f(x)=1+e?x1?
(图片)
R E L U f u n c t i o n : f ( x ) = M a x ( 0 , x ) RELUfunction:f(x) = Max(0, x) RELUfunction:f(x)=Max(0,x)
(图片) - 输出特征矩阵计算
- 输出特征矩阵的深度与卷积核个数相同
- 输出特征矩阵的计算 N = ( W ? F + 2 ? P ) / S + 1 N = (W-F+2*P)/S + 1 N=(W?F+2?P)/S+1
输入特征矩阵大小 W ? W W*W W?W
卷积核大小 F ? F F*F F?F
步长S
补充的padding像素P
(e.g图片)
1.2.4.1 目的与流程 【深度学习|毕设-卷积神经网络/深度学习/yolo】池化层的目的是对特征图进行稀疏处理,减少运算量。常见的有MaxPooling下采样层,AveragePooling下采样层。池化层会将输入特征值减少,常见的池化层的流程如下:
文章图片
1.2.4.2 特点
- 没有训练参数(parameters/weights)
- 只改变特征矩阵的w和h,不改变深度channel
- 一般poolsize,即filter大小和步长(stride)相同
推荐阅读
- 机器学习|目标检测网络-yolo
- 论文里SOTA性能的理解
- 深度学习|卷积神经网络CNN5
- python|python实现对图片的处理--图像处理课设
- CSCC11机器学习求解
- diss验证码系列|《Diss验证码》——Python验证码破解(图像字符验证码识别(1-入门))
- 大数据|一次关于架构的“嘴炮”
- 计算机视觉|计算机视觉之浅析RGB/HSV与inRange函数
- OpenCV实战|OpenCV 图像分割--Kmean聚类