深度学习|毕设-卷积神经网络/深度学习/yolo

卷积神经网络CN1 初学者碰到疑惑时可结合下面参考自行解决疑惑,确保项目能够顺利推进。

参考:
  1. 图像识别/卷积神经网络基础
    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
  2. 使用pytorch/tensorflow搭建Lenet
    https://www.bilibili.com/video/BV187411T7Ye?spm_id_from=333.999.0.0
  3. 深度学习-目标检测篇
    https://www.bilibili.com/video/BV1vz4y1R72D?spm_id_from=333.999.0.0
  4. 目标检测网络评价指标mAP和FPS
    https://www.bilibili.com/video/BV1ez4y1X7g2?spm_id_from=333.999.0.0
  5. 训练集PASCAL-VOC/COCO讲解以及制作自己的训练集/测试集
    https://www.bilibili.com/video/BV1kV411k7D8?spm_id_from=333.999.0.0
  6. yolo 理论讲解
    https://www.bilibili.com/video/BV1yi4y1g7ro?spm_id_from=333.999.0.0
  7. yolo1论文解读 https://zhuanlan.zhihu.com/p/70387154
    yolo2论文解读 https://zhuanlan.zhihu.com/p/74540100
    yolo3论文解读 https://zhuanlan.zhihu.com/p/76802514
  8. yolo 代码实操
    https://www.bilibili.com/video/BV1t54y1C7ra?spm_id_from=333.999.0.0
  9. yolo github源码
    https://github.com/WZMIAOMIAO/deep-learning-for-image-processing
  10. “TED李飞飞 我们教计算机理解图像” https://www.bilibili.com/video/BV1RW411D78Z?spm_id_from=333.337.search-card.all.click
  11. “吴恩达 机器学习1-9” https://www.bilibili.com/video/BV164411b7dx?spm_id_from=333.999.0.0
  12. “神经元介绍” https://blog.51cto.com/u_15067247/4236471
  13. “卷积核如何工作” https://blog.csdn.net/weixin_41297324/article/details/88991222
  14. “池化层如何工作” https://blog.csdn.net/weixin_38145317/article/details/89310404
本文将根据自己的毕设期间的学习经历进行总结。本文内容大纲如下
  • 卷积神经网络基础知识
  • 卷积神经网络损失函数计算
  • pytorch官方小教程Lenet搭建
  • 目标检测网络
  • mAP值评估网络
  • 如何制作自己的数据集
  • yolo网络理论
  • yolo网络实践。
1 卷积神经网络基础知识 1.1 卷积神经网络发展 1985/1986年,Hinton提出back propagation反向传播算法。
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。
深度学习|毕设-卷积神经网络/深度学习/yolo
文章图片

1.2.2.2 BP算法
将每个神经元全连接后形成全连接层,BP(back propagation)算法包括信号前向传播和误差反向传播两个过程,即:
  • 计算误差输入时候按从输入到输出方向进行。
  • 调整权值时从输出到输入方向进行。
1.2.3 卷积层(卷积神经网路CNN独特网络结构)
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的输出特征矩阵。
深度学习|毕设-卷积神经网络/深度学习/yolo
文章图片

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)
    (图片)
  • 输出特征矩阵计算
  1. 输出特征矩阵的深度与卷积核个数相同
  2. 输出特征矩阵的计算 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.2.4.1 目的与流程 【深度学习|毕设-卷积神经网络/深度学习/yolo】池化层的目的是对特征图进行稀疏处理,减少运算量。常见的有MaxPooling下采样层,AveragePooling下采样层。池化层会将输入特征值减少,常见的池化层的流程如下:
深度学习|毕设-卷积神经网络/深度学习/yolo
文章图片

1.2.4.2 特点
  1. 没有训练参数(parameters/weights)
  2. 只改变特征矩阵的w和h,不改变深度channel
  3. 一般poolsize,即filter大小和步长(stride)相同

    推荐阅读