深度学习算法

深度学习算法

  • 1. 各种网络框架及其联系
    • 1.1 两阶段与一阶段区别
      • 1.1.1 detectron算法框架套路:
      • 1.1.2 multi-stage
      • 1.1.3 two-stage 算法
      • 1.1.4 one-stage 算法
  • 2. 常用算法
    • 2.1 SS(选择性搜索算法,Selective Search)
  • 3. 神经元模型
  • 4. 神经网络分类
    • 4.1 前馈神经网络

深度学习比较典型的应用领域,包括人脸识别,物体识别,语音识别,以及自然语言处理(机器翻译),风格转换,图像生成六种。在深度学习中,现在效果最好的是在图片,视频,音频领域,也就是对应的人脸识别,物体识别,语音识别,深度学习针对图片,视频,音频领域数据类型应用效果最好,跟传统方法相比提升了30~50%。
分类:根据学习环境不同,神经网络的学习方式可分为监督学习和非监督学习。

1. 各种网络框架及其联系

深度学习算法_第1张图片

1.1 两阶段与一阶段区别

1.1.1 detectron算法框架套路:

深度学习算法_第2张图片

1.1.2 multi-stage

深度学习算法_第3张图片
最早期的检测算法 (主要为R-CNN、SPPNet) 都属于multi-stage系。这个时候的Selective Search、Feature extraction、location regressor、cls SVM是分成多个stage来各自单独train的。故谓之曰“multi-stage”:

1.1.3 two-stage 算法

深度学习算法_第4张图片
到了Fast R-CNN的时候,Feature extraction、location regressor、cls SVM都被整合到了一个network里面,可以实现这三个task一起train了。由于生成RP的task还需要另外train,故谓之曰“two-stage”:
到了Faster R-CNN中,虽然RPN的出现使得四个task可以一起被train,但由于要生成RP,依然被归类为“two-stage”。

1.1.4 one-stage 算法

深度学习算法_第5张图片
在YOLOv1中,“生成RP”这一任务被直接丢弃了。因此,整个算法只剩下了一个stage,故谓之曰“one-stage”:

2. 常用算法

2.1 SS(选择性搜索算法,Selective Search)

链接:https://blog.csdn.net/weixin_43694096/article/details/121610856
code:

%matplotlib inline
from keras.preprocessing import image
import skimage.data
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
import selectivesearch
import numpy as np
import cv2
 
# 加载图片数据
#img = skimage.data.checkerboard() 
img_path =r'D:\CV\datasets\mypic\2.png'
img = image.load_img(img_path, target_size=(480, 600))#(h,w)
img = image.img_to_array(img)
img=img.astype('uint8')
 
img_lbl, regions = selectivesearch.selective_search(img, scale=500, sigma=0.9, min_size=20)
 
#计算一共分割了多少个原始候选区域
temp = set()
for i in range(img_lbl.shape[0]):
    for j in range(img_lbl.shape[1]):    
        temp.add(img_lbl[i,j,3]) 
print(len(temp))
 
print(len(regions))#计算利用Selective Search算法得到了多少个候选区域
 
#创建一个集合 元素list(左上角x,左上角y,,)
candidates = set()
for r in regions:
    if r['rect'] in candidates:#排除重复的候选区
        continue
    if r['size'] < 500:#排除小于 2000 pixels的候选区域(并不是bounding box中的区域大小)  
        continue
    x, y, w, h = r['rect']
    if w / h > 2 or h / w > 2: #排除扭曲的候选区域边框  即只保留近似正方形的
        continue
    candidates.add(r['rect'])
    
for x, y, w, h in candidates:
    #print(x, y, w, h)
    cv2.rectangle(img, (x, y), ( x+w,y+h), (0, 0, 255), 1) 
    
plt.figure(figsize=(12,10))
plt.imshow(img)
plt.axis('off')
plt.savefig('ss.png')
plt.show()

3. 神经元模型

深度学习算法_第6张图片
深度学习算法_第7张图片

4. 神经网络分类

神经网络可以分为三种主要类型:前馈神经网络、反馈神经网络和图神经网络。

4.1 前馈神经网络

前馈神经⽹络(feedforward neural network)是⼀种简单的神经⽹络,也被称为多层感知机(multi-layer perceptron,简称MLP),其中不同的神经元属于不同的层,由输⼊层-隐藏层-输出层构成,信号从输⼊层往输出层单向传递,中间⽆反馈,其⽬的是为了拟合某个函数,由⼀个有向⽆环图表⽰,如下:
深度学习算法_第8张图片

前馈神经⽹络中包含激活函数(sigmoid函数、tanh函数等)、损失函数(均⽅差损失函数、交叉熵损失函数等)、优化算法(BP算法)等。常⽤的模型结构有:卷积神经⽹络、全连接神经⽹络、BP神经⽹络、RBF神经⽹络、感知机等。
下面介绍下经典的卷积神经网络:
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积运算且具有深度结构的前馈神经网络(Feedforward Neural Networks)。相比早期的BP神经网络,卷积神经网络最重要的特性在于“局部感知”与“参数共享”。
整体架构:输入层——卷积层——池化层——全连接层——输出层

你可能感兴趣的:(深度学习,深度学习)