CNN卷积神经网络
卷积神经网络与传统网络的区别:
一个是三维的,一个是二维的
整体架构
卷积的计算方法:
先把图像分为一个个不同的小区域,然后在通过权重矩阵,算出每一个小区域的值
计算方法: 特征矩阵 * 权重矩阵
卷积一般需要做三次以上:
堆叠的卷积层:
卷积的参数
步长
卷积核尺寸
卷积核尺寸越小,我们所得到的特征越明显,卷积核尺寸越大,我们得到特征越模糊,一般最小卷积核的尺寸就是3 * 3的
边缘填充
我们在计算卷积的时候,越到边缘的地方,它的影响越小,如果想要改变这个现状,我们需要进行边缘填充
从这个步长为2的卷积中,我们可以看出,边缘的数据,只进行了一次乘法,而中间的数据进行了两次乘法,这时候边缘和中间的数据,对最后的影响就会不同,我们可以通过边缘填充来消除这个影响
由图中可以看出灰色的为边缘填充的部分,紫色的为我们的目标地址,
卷积计算公式
卷积参数共享,一般一个卷积核使用同一套参数即可,不用每一个区域我们都要改变参数
池化层
当我们采集的特征过多的时候,这时候我们可以使用池化层来进行特征压缩:
框选每一个区域,得到其中特征最明显 ...
气温预测
通过前天,昨天,和历史上这一天的最高温度,和今天实际的最高温低来进行回归模型的建立
先导包
12345678import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport torchimport torch.optim as optimimport warningswarnings.filterwarnings("ignore")%matplotlib inline
读取一下数据
1234features = pd.read_csv("data/temps.csv")# 展示一下数据features.head()
year
month
day
week
temp_2
temp_1
average
actual
friend
0
2016
1
...
PyTorch
使用神经网络最重要的一件事情就是:他可以帮我们把反向传播全部计算好
Tenser 常见的格式:
scalar
通常就是一个数值
1x = tensor(42, )
vector
例如:[-5. , 2. , 0. ],在深度学习中通常指特征,例如词向量特征,某一维度特征等
1v = tensor([1.5, -0.5, 3.0])
matrix
一般计算的都是矩阵,通常是多维的
1M = tensor([1., 2. ],[3., 4.])
n-dimensional tensor
基本使用方法
创建一个矩阵
1x = torch.empty(5,3)
12345tensor([[-2.1607e-32, 3.9797e-43, -2.1607e-32], [ 3.9797e-43, -2.1607e-32, 3.9797e-43], [-2.1607e-32, 3.9797e-43, -2.1606e-32], [ 3.9797e-43, -2.1606e-32, 3.9797e-4 ...
深度学习
基本流程:
数据的获取
特征工程 最核心
建立模型
评估与应用
特征工程的作用:
数据特征决定了模型的上限
预处理和特征提取是最核心的
算法和参数的选择,只是为了逼近这个上限
特征如何提取:
传统特征提取方法:
深度学习的目的 :能够自动的提取特征
图像分类
给定一张图片,计算机能够自动的识别该图像中的某一部分属于那个类别
图像的表示 :计算机眼中的图像是一串串数字
计算机视觉-图像分类面临的挑战:
照射角度
形状改变
部分遮蔽
背景混入
机器学习常规套路:
收集数据并给定标签
训练一个分类器
测试,评估
k临近算法:
计算已知类别数据集中的点与当前点的距离
按照距离依次排序
选取与当前点距离最小的K个点
确定前K个点所在类别的出现概率
返回前K个点出现频率最高的类别作为当前点预测分类
缺点:
被分类的对象会受背景主导,不能够聚焦到我们所关注的主体上
神经网络基础
f() 表示一个函数, W表示每个类别的权重, x 表示目标图像的所有像素点, b表示对每个类别进行微调
运算结果:
从图中可以看出,猫被分为了狗类,导致这种情况 ...
第一章(基本符号)
print
print函数能够直接输入到文件中:
123f = open("笔记.txt", "w")print("Hello World", file = f)
制表符
\n 换行
\t 一个tab键,占四个字节, 如果这四个字节中前面的占用了,则补充为四个字节, 如果没占用则新开辟四个字节的位置
\r 回车,会把在回车之前的字符全部删掉
\b 退格,删除前一个字符
元字符
让制表符不起作用----引号中有什么就输出什么
1print(r"hello\nworld") === hello\nworld
输出字符串的时候最后一个字符不能是 ‘\’, 可以是‘\’
第二章
二进制和字符编码
二进制 -->ASCII -->GB2312–>GBK–>GB18030–>Unicode
二进制 -->ASCII -->其他国家的字符编码–>Unicode几乎包含了全世界所有的字符–>UTF-8
标识符和保留字
保留字不能再命名的 ...
文档扫描OCR识别
文档扫描
引入库
1234import imutilsimport numpy as npimport argparseimport cv2
设置参数
12345# 设置参数# 这里设置的参数是控制台参数ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="Path to the image to be scanned")args = vars(ap.parse_args())
定义函数
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788# 图像显示函数def cv_show(name, img): ...
人工智能
未读 银行卡数字识别
该程序主要是依靠模板匹配来进行数字识别的
模板图像
待匹配的银行卡
这里银行卡中的数字和我们模板中的数字是同一个类型
模板操作
首先导入我们所需要的包:
1234from imutils import contoursimport numpy as npimport argparseimport cv2
配置我们所需要的参数:
12345ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required=True, help="path to input image")ap.add_argument("-t", "--template", required=True, help="path to template OCR-A image")# 这里是让参数转换成字典args = vars(ap.parse_args())
设置绘图函数
12345# 绘图展示def ...
OpenCv简单应用
基本操作
图像读取:
12345# 图像读取有两种格式# 1.cv2.IMREAD_COLOR 彩色图像# 2.cv2.IMREAD_GRAYSCALE 灰色图像img = cv2.imread("图像路径", 图像读取格式)img.shape # === 例(414,500, 3)
该方法返回值是一个 numpy 数组, 是一个三维数组
其含义分别是 y(竖直 h),x(水平 w), BGR(三原色), 在opencv中的色彩是BGR 不是RGB
图像的显示
12345cv2.imshow("窗口名称", 图像数据)# 窗口等待时间 如果设置为0的话则需要手动关闭 cv2.waitKey(0)# 使用此方法可以在等待结束之后关闭窗口,cv2.destoryAllWindows()
视频的读取
cv2.VideoCapture可以捕捉摄像头,用数字来控制不同的设备,例如0,1
如果是视频文件,直接指定好路径即可
123456789101112131415161718192021222 ...
matplotlib的使用
特点
能够将数据进行可视化,更直观的呈现
使数据更加直观,根据有说服力
导入方式:
1234567891011from matplotlib import pyplot as plt # 产生数据x = range(2,26,2)y = [15,13,14.5,17,20,25,26,26,24,22,18,15]# 开始作图plt.plot(x, y)plt.scatter(x, y)# 展示图plt.show()
可以实现的方法:
设置图片大小(高清无码大图)
1234fig = plt.figure(figsize=(20,8), dpi = 80)# figure 是图形的意思,在这里指的是我们画的图# 通过实例化一个figure并且传递参数,就能够在后台自动使用该figure实例# 在图像模糊的时候可以传入dpi参数,让图片更清晰
保存到本地
123plt.plot()# 开始保存,一定要在图像画完之后在保存plt.savefig("图片想要保存的路径")
描述信息,x轴y轴,这个图的信息
123plt.xla ...
需要准备的东西:
python基础, html, css
web请求过程分析
服务器的渲染:在服务器那边直接把数据和html整合在一起,统一返回给浏览器
在页面源代码中可以看到数据
客户端渲染:
第一次请求只要一个html骨架,第二次请求拿到数据,进行数据展示
在页面源代码中看不到数据
HTTP协议(超文本传输协议)
Http协议吧一条信息分为三大块内容,无论是请求还是相应都是三大块
请求:
1. 请求行 -> 请求方式 请求url地址 协议
2. 请求头 -> 放一些服务器要使用的附加信息
3. 请求体 -> 一般放一些请求参数
相应
1. 状态行 -> 协议 状态码
2. 响应头 -> 放一些客户端要使用的一些附加信息
3. 响应体 -> 服务器返回的真正客户端要使用的内容(Html, json)等
请求头中最常见的一些重要内容(爬虫需要):
User-Agent:请求载体的身份标识(用啥发送的请求)
Referer:防盗链(这次请求是从哪个页面来的,反爬会用到)
cookie:本地字符串数据信息(用户登录信息,反爬的t ...